binutils/binutils: fixup version strings 1.12
author"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Sep 11 18:18:53 2011 +0200 (2011-09-11)
branch1.12
changeset 2683046489451f59
parent 2682 61764da7b962
child 2684 59aa9212b8d5
binutils/binutils: fixup version strings

Recently, all binutils versions have been renamed after a GPL compliance
issue was found and fixed in binutils;
http://sourceware.org/ml/binutils/2011-08/msg00198.html

Although legacy symlinks have been put in place, we should now use
the new, real version strings.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
(transplanted from 346263a0711510a7ac953b1523b6607a1ca53caf)
config/binutils/binutils.in
patches/binutils/2.16.1/100-bfd-hash-tweak.patch
patches/binutils/2.16.1/110-psignal.patch
patches/binutils/2.16.1/120-skip-comments.patch
patches/binutils/2.16.1/130-callahan.patch
patches/binutils/2.16.1/140-cross-gprof.patch
patches/binutils/2.16.1/150-stabs-tweak.patch
patches/binutils/2.16.1/160-i386-no-divide-comment.patch
patches/binutils/2.16.1a/100-bfd-hash-tweak.patch
patches/binutils/2.16.1a/110-psignal.patch
patches/binutils/2.16.1a/120-skip-comments.patch
patches/binutils/2.16.1a/130-callahan.patch
patches/binutils/2.16.1a/140-cross-gprof.patch
patches/binutils/2.16.1a/150-stabs-tweak.patch
patches/binutils/2.16.1a/160-i386-no-divide-comment.patch
patches/binutils/2.17/100-uclibc-conf.patch
patches/binutils/2.17/110-arm-eabi-conf.patch
patches/binutils/2.17/120-makeinfo-version.patch
patches/binutils/2.17/130-ld_makefile_patch.patch
patches/binutils/2.17/140-better_file_error.patch
patches/binutils/2.17/150-check_ldrunpath_length.patch
patches/binutils/2.17/160-mips-ELF_MAXPAGESIZE-4K.patch
patches/binutils/2.17/170-bfd-hash-tweak.patch
patches/binutils/2.17/180-psignal.patch
patches/binutils/2.17/190-skip-comments.patch
patches/binutils/2.17/200-cross-gprof.patch
patches/binutils/2.17/210-i386-no-divide-comment.patch
patches/binutils/2.17a/100-uclibc-conf.patch
patches/binutils/2.17a/110-arm-eabi-conf.patch
patches/binutils/2.17a/120-makeinfo-version.patch
patches/binutils/2.17a/130-ld_makefile_patch.patch
patches/binutils/2.17a/140-better_file_error.patch
patches/binutils/2.17a/150-check_ldrunpath_length.patch
patches/binutils/2.17a/160-mips-ELF_MAXPAGESIZE-4K.patch
patches/binutils/2.17a/170-bfd-hash-tweak.patch
patches/binutils/2.17a/180-psignal.patch
patches/binutils/2.17a/190-skip-comments.patch
patches/binutils/2.17a/200-cross-gprof.patch
patches/binutils/2.17a/210-i386-no-divide-comment.patch
patches/binutils/2.18/100-makeinfo-version.patch
patches/binutils/2.18/110-enable-dash-v2.patch
patches/binutils/2.18/120-i386-no-divide-comment.patch
patches/binutils/2.18/130-avr32-atmel-v1.0.1.patch
patches/binutils/2.18a/100-makeinfo-version.patch
patches/binutils/2.18a/110-enable-dash-v2.patch
patches/binutils/2.18a/120-i386-no-divide-comment.patch
patches/binutils/2.18a/130-avr32-atmel-v1.0.1.patch
patches/binutils/2.19.1/100-ppc64-pie.patch
patches/binutils/2.19.1/110-RPATH_ENVVAR-smack.patch
patches/binutils/2.19.1/120-sh-targets.patch
patches/binutils/2.19.1/130-check_ldrunpath_length.patch
patches/binutils/2.19.1/140-pt-pax-flags-20081101.patch
patches/binutils/2.19.1/150-warn-textrel.patch
patches/binutils/2.19.1/160-use-new-ld-dtags.patch
patches/binutils/2.19.1/170-use-relro.patch
patches/binutils/2.19.1/180-libiberty-pic.patch
patches/binutils/2.19.1/190-mips64-defaultemul.patch
patches/binutils/2.19.1a/100-ppc64-pie.patch
patches/binutils/2.19.1a/110-RPATH_ENVVAR-smack.patch
patches/binutils/2.19.1a/120-sh-targets.patch
patches/binutils/2.19.1a/130-check_ldrunpath_length.patch
patches/binutils/2.19.1a/140-pt-pax-flags-20081101.patch
patches/binutils/2.19.1a/150-warn-textrel.patch
patches/binutils/2.19.1a/160-use-new-ld-dtags.patch
patches/binutils/2.19.1a/170-use-relro.patch
patches/binutils/2.19.1a/180-libiberty-pic.patch
patches/binutils/2.19.1a/190-mips64-defaultemul.patch
patches/binutils/2.20.1/100-ppc64-pie.patch
patches/binutils/2.20.1/110-RPATH_ENVVAR-smack.patch
patches/binutils/2.20.1/120-sh-targets.patch
patches/binutils/2.20.1/130-ld-sysroot.patch
patches/binutils/2.20.1/140-check_ldrunpath_length.patch
patches/binutils/2.20.1/150-pt-pax-flags-20090909.patch
patches/binutils/2.20.1/160-amd64-32bit-path.patch
patches/binutils/2.20.1/170-warn-textrel.patch
patches/binutils/2.20.1/190-use-new-ld-dtags.patch
patches/binutils/2.20.1/200-document-new-dtags-behaviour.patch
patches/binutils/2.20.1/220-use-relro.patch
patches/binutils/2.20.1/230-libiberty-pic.patch
patches/binutils/2.20.1/240-ld_makefile.patch
patches/binutils/2.20.1/250-arm-eabi-conf.patch
patches/binutils/2.20.1/270-better_file_error.patch
patches/binutils/2.20.1/280-unexport_LD_LIBRARY_PATH.patch
patches/binutils/2.20.1/290-ld-stub-crash.patch
patches/binutils/2.20.1/300-mips64-defaultemul.patch
patches/binutils/2.20.1a/100-ppc64-pie.patch
patches/binutils/2.20.1a/110-RPATH_ENVVAR-smack.patch
patches/binutils/2.20.1a/120-sh-targets.patch
patches/binutils/2.20.1a/130-ld-sysroot.patch
patches/binutils/2.20.1a/140-check_ldrunpath_length.patch
patches/binutils/2.20.1a/150-pt-pax-flags-20090909.patch
patches/binutils/2.20.1a/160-amd64-32bit-path.patch
patches/binutils/2.20.1a/170-warn-textrel.patch
patches/binutils/2.20.1a/190-use-new-ld-dtags.patch
patches/binutils/2.20.1a/200-document-new-dtags-behaviour.patch
patches/binutils/2.20.1a/220-use-relro.patch
patches/binutils/2.20.1a/230-libiberty-pic.patch
patches/binutils/2.20.1a/240-ld_makefile.patch
patches/binutils/2.20.1a/250-arm-eabi-conf.patch
patches/binutils/2.20.1a/270-better_file_error.patch
patches/binutils/2.20.1a/280-unexport_LD_LIBRARY_PATH.patch
patches/binutils/2.20.1a/290-ld-stub-crash.patch
patches/binutils/2.20.1a/300-mips64-defaultemul.patch
     1.1 --- a/config/binutils/binutils.in	Sun Sep 11 18:26:12 2011 +0200
     1.2 +++ b/config/binutils/binutils.in	Sun Sep 11 18:18:53 2011 +0200
     1.3 @@ -8,29 +8,29 @@
     1.4  # Don't remove next line
     1.5  # CT_INSERT_VERSION_BELOW
     1.6  
     1.7 -config BINUTILS_V_2_20_1
     1.8 +config BINUTILS_V_2_20_1a
     1.9      bool
    1.10 -    prompt "2.20.1"
    1.11 +    prompt "2.20.1a"
    1.12      select BINUTILS_2_20_or_later
    1.13  
    1.14 -config BINUTILS_V_2_19_1
    1.15 +config BINUTILS_V_2_19_1a
    1.16      bool
    1.17 -    prompt "2.19.1"
    1.18 +    prompt "2.19.1a"
    1.19      select BINUTILS_2_19_or_later
    1.20  
    1.21 -config BINUTILS_V_2_18
    1.22 +config BINUTILS_V_2_18a
    1.23      bool
    1.24 -    prompt "2.18"
    1.25 +    prompt "2.18a"
    1.26      select BINUTILS_2_18_or_later
    1.27  
    1.28 -config BINUTILS_V_2_17
    1.29 +config BINUTILS_V_2_17a
    1.30      bool
    1.31 -    prompt "2.17 (OBSOLETE)"
    1.32 +    prompt "2.17a (OBSOLETE)"
    1.33      depends on OBSOLETE
    1.34  
    1.35 -config BINUTILS_V_2_16_1
    1.36 +config BINUTILS_V_2_16_1a
    1.37      bool
    1.38 -    prompt "2.16.1 (OBSOLETE)"
    1.39 +    prompt "2.16.1a (OBSOLETE)"
    1.40      depends on OBSOLETE
    1.41  
    1.42  endchoice
    1.43 @@ -39,11 +39,11 @@
    1.44      string
    1.45  # Don't remove next line
    1.46  # CT_INSERT_VERSION_STRING_BELOW
    1.47 -    default "2.20.1" if BINUTILS_V_2_20_1
    1.48 -    default "2.19.1" if BINUTILS_V_2_19_1
    1.49 -    default "2.18" if BINUTILS_V_2_18
    1.50 -    default "2.17" if BINUTILS_V_2_17
    1.51 -    default "2.16.1" if BINUTILS_V_2_16_1
    1.52 +    default "2.20.1a" if BINUTILS_V_2_20_1a
    1.53 +    default "2.19.1a" if BINUTILS_V_2_19_1a
    1.54 +    default "2.18a" if BINUTILS_V_2_18a
    1.55 +    default "2.17a" if BINUTILS_V_2_17a
    1.56 +    default "2.16.1a" if BINUTILS_V_2_16_1a
    1.57  
    1.58  config BINUTILS_2_21_or_later
    1.59      bool
     2.1 --- a/patches/binutils/2.16.1/100-bfd-hash-tweak.patch	Sun Sep 11 18:26:12 2011 +0200
     2.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.3 @@ -1,23 +0,0 @@
     2.4 -Signed-off-by: dank@kegel.com
     2.5 -
     2.6 -Raising the size of the hash table is a noticable win when linking 
     2.7 -at least one large app.  
     2.8 -
     2.9 -There was a patch,
    2.10 -http://sources.redhat.com/ml/binutils/2004-06/msg00165.html
    2.11 -to do this dynamically.  No idea why that didn't make it in.
    2.12 -So this tiny change to raise the default size is just
    2.13 -a stopgap for now.
    2.14 -
    2.15 -
    2.16 ---- binutils-2.16.1/bfd/hash.c.old	2006-03-02 23:01:39.000000000 -0800
    2.17 -+++ binutils-2.16.1/bfd/hash.c	2006-03-02 23:01:58.000000000 -0800
    2.18 -@@ -300,7 +300,7 @@
    2.19 - */
    2.20 - 
    2.21 - /* The default number of entries to use when creating a hash table.  */
    2.22 --#define DEFAULT_SIZE 4051
    2.23 -+#define DEFAULT_SIZE 32749
    2.24 - static size_t bfd_default_hash_table_size = DEFAULT_SIZE;
    2.25 - 
    2.26 - /* Create a new hash table, given a number of entries.  */
     3.1 --- a/patches/binutils/2.16.1/110-psignal.patch	Sun Sep 11 18:26:12 2011 +0200
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,40 +0,0 @@
     3.4 -Make psignal prototype in libiberty match that in glibc.
     3.5 -
     3.6 -Fixes:
     3.7 -
     3.8 -gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c: In function `psignal':
     3.9 -gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:563: argument `signo' doesn't match prototype
    3.10 -/usr/include/signal.h:131: prototype declaration
    3.11 -gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:563: argument `message' doesn't match prototype
    3.12 -/usr/include/signal.h:131: prototype declaration
    3.13 -gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:568: warning: comparison between signed and unsigned
    3.14 -mprotect... make[1]: *** [strsignal.o] Error 1
    3.15 -make[1]: Leaving directory `/export/hda3/dkegel/queue/jobdir.produser_cpsm17/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.1.3/build-binutils/libiberty'
    3.16 -make: *** [all-libiberty] Error 2
    3.17 -
    3.18 -when building on red hat 7.1
    3.19 -though it's a bit of a mystery why libiberty's psignal is being compiled at
    3.20 -all, since red hat 7.1's glibc supports psignal (hence the error message)
    3.21 -
    3.22 ---- binutils-2.15/libiberty/strsignal.c.old	2005-04-18 13:57:40.000000000 -0700
    3.23 -+++ binutils-2.15/libiberty/strsignal.c	2005-04-18 13:59:09.000000000 -0700
    3.24 -@@ -544,7 +544,7 @@
    3.25 - 
    3.26 - /*
    3.27 - 
    3.28 --@deftypefn Supplemental void psignal (unsigned @var{signo}, char *@var{message})
    3.29 -+@deftypefn Supplemental void psignal (int @var{signo}, const char *@var{message})
    3.30 - 
    3.31 - Print @var{message} to the standard error, followed by a colon,
    3.32 - followed by the description of the signal specified by @var{signo},
    3.33 -@@ -557,9 +557,7 @@
    3.34 - #ifndef HAVE_PSIGNAL
    3.35 - 
    3.36 - void
    3.37 --psignal (signo, message)
    3.38 --  unsigned signo;
    3.39 --  char *message;
    3.40 -+psignal (int signo, const char *message)
    3.41 - {
    3.42 -   if (signal_names == NULL)
    3.43 -     {
     4.1 --- a/patches/binutils/2.16.1/120-skip-comments.patch	Sun Sep 11 18:26:12 2011 +0200
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,95 +0,0 @@
     4.4 -[removed first hunk so it would apply to 2.16.1 - copyright date already updated - dank]
     4.5 -
     4.6 -Retrieved from http://sources.redhat.com/ml/binutils/2004-04/msg00646.html
     4.7 -Fixes
     4.8 -localealias.s:544: Error: junk at end of line, first unrecognized character is `,' 
     4.9 -when building glibc-2.3.2 with gcc-3.4.0 and binutils-2.15.90.0.3
    4.10 -
    4.11 -Paths adjusted to match crosstool's patcher.
    4.12 -
    4.13 -Message-Id: m3n052qw2g.fsf@whitebox.m5r.de
    4.14 -From: Andreas Schwab <schwab at suse dot de>
    4.15 -To: Nathan Sidwell <nathan at codesourcery dot com>
    4.16 -Cc: Ian Lance Taylor <ian at wasabisystems dot com>, binutils at sources dot redhat dot com
    4.17 -Date: Fri, 23 Apr 2004 22:27:19 +0200
    4.18 -Subject: Re: demand_empty_rest_of_line and ignore_rest_of_line
    4.19 -
    4.20 -Nathan Sidwell <nathan@codesourcery.com> writes:
    4.21 -
    4.22 -> Index: read.c
    4.23 -> ===================================================================
    4.24 -> RCS file: /cvs/src/src/gas/read.c,v
    4.25 -> retrieving revision 1.76
    4.26 -> diff -c -3 -p -r1.76 read.c
    4.27 -> *** read.c	12 Mar 2004 17:48:12 -0000	1.76
    4.28 -> --- read.c	18 Mar 2004 09:56:05 -0000
    4.29 -> *************** read_a_source_file (char *name)
    4.30 -> *** 1053,1059 ****
    4.31 ->   #endif
    4.32 ->   	  input_line_pointer--;
    4.33 ->   	  /* Report unknown char as ignored.  */
    4.34 -> ! 	  ignore_rest_of_line ();
    4.35 ->   	}
    4.36 ->   
    4.37 ->   #ifdef md_after_pass_hook
    4.38 -> --- 1053,1059 ----
    4.39 ->   #endif
    4.40 ->   	  input_line_pointer--;
    4.41 ->   	  /* Report unknown char as ignored.  */
    4.42 -> ! 	  demand_empty_rest_of_line ();
    4.43 ->   	}
    4.44 ->   
    4.45 ->   #ifdef md_after_pass_hook
    4.46 -
    4.47 -This means that the unknown character is no longer ignored, despite the
    4.48 -comment.  As a side effect a line starting with a line comment character
    4.49 -not followed by APP in NO_APP mode now triggers an error instead of just a
    4.50 -warning, breaking builds of glibc on m68k-linux.  Earlier in
    4.51 -read_a_source_file where #APP is handled there is another comment that
    4.52 -claims that unknown comments are ignored, when in fact they aren't (only
    4.53 -the initial line comment character is skipped).
    4.54 -
    4.55 -Note that the presence of #APP will mess up the line counters, but
    4.56 -that appears to be difficult to fix.
    4.57 -
    4.58 -Andreas.
    4.59 -
    4.60 -2004-04-23  Andreas Schwab  <schwab@suse.de>
    4.61 -
    4.62 -	* read.c (read_a_source_file): Ignore unknown text after line
    4.63 -	comment character.  Fix misleading comment.
    4.64 -
    4.65 ---- binutils/gas/read.c.~1.78.~	2004-04-23 08:58:23.000000000 +0200
    4.66 -+++ binutils/gas/read.c	2004-04-23 21:49:01.000000000 +0200
    4.67 -@@ -950,10 +950,14 @@ read_a_source_file (char *name)
    4.68 - 	      unsigned int new_length;
    4.69 - 	      char *tmp_buf = 0;
    4.70 - 
    4.71 --	      bump_line_counters ();
    4.72 - 	      s = input_line_pointer;
    4.73 - 	      if (strncmp (s, "APP\n", 4))
    4.74 --		continue;	/* We ignore it */
    4.75 -+		{
    4.76 -+		  /* We ignore it */
    4.77 -+		  ignore_rest_of_line ();
    4.78 -+		  continue;
    4.79 -+		}
    4.80 -+	      bump_line_counters ();
    4.81 - 	      s += 4;
    4.82 - 
    4.83 - 	      sb_new (&sbuf);
    4.84 -@@ -1052,7 +1056,7 @@ read_a_source_file (char *name)
    4.85 - 	    continue;
    4.86 - #endif
    4.87 - 	  input_line_pointer--;
    4.88 --	  /* Report unknown char as ignored.  */
    4.89 -+	  /* Report unknown char as error.  */
    4.90 - 	  demand_empty_rest_of_line ();
    4.91 - 	}
    4.92 - 
    4.93 -
    4.94 --- 
    4.95 -Andreas Schwab, SuSE Labs, schwab@suse.de
    4.96 -SuSE Linux AG, Maxfeldstra&#xC3;e 5, 90409 N&#xC3;rnberg, Germany
    4.97 -Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
    4.98 -"And now for something completely different."
     5.1 --- a/patches/binutils/2.16.1/130-callahan.patch	Sun Sep 11 18:26:12 2011 +0200
     5.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.3 @@ -1,693 +0,0 @@
     5.4 -Signed-off-by: dank@kegel.com
     5.5 -Fixes ld speed issue. 
     5.6 -See http://weblogs.mozillazine.org/roc/archives/2005/02/optimizing_gnu.html
     5.7 -See thread "Re: optimizations for 3x speedup in ld",
     5.8 -http://sources.redhat.com/ml/binutils/2005-03/msg00847.html
     5.9 -
    5.10 -Wildcard section matching enhancement, backported from the binutils CVS tree.
    5.11 -Here's the CVS log comment from the original change to ldlang.c:
    5.12 -
    5.13 -revision 1.177
    5.14 -date: 2005/04/06 15:33:02;  author: jakub;  state: Exp;  lines: +438 -51
    5.15 -2005-04-06  Jakub Jelinek  <jakub@redhat.com>
    5.16 -
    5.17 -        * ldlang.c: Formatting.
    5.18 -        (walk_wild_consider_section): Remember return value from wildcardp.
    5.19 -        (is_simple_wild): Use strcspn instead of 2 strpbrk calls and strlen.
    5.20 -        (wild_spec_can_overlap): Use strcspn instead of strpbrk and strlen.
    5.21 -
    5.22 -2005-04-06  Robert O'Callahan  <rocallahan@novell.com>
    5.23 -
    5.24 -        * ld.h (lean_section_userdata_type): Remove.
    5.25 -        (fat_section_userdata_type): Remove file field.
    5.26 -        (SECTION_USERDATA_SIZE): Remove.
    5.27 -        * ldlang.c (init_os): Eliminate initialization of unused
    5.28 -        lean_section_userdata_type.
    5.29 -
    5.30 -        * ldlang.h (callback_t, walk_wild_section_handler_t): New
    5.31 -        typedefs.
    5.32 -        (struct lang_wild_statement_struct): Add walk_wild_section_handler
    5.33 -        and handler_data fields.
    5.34 -        * ldlang.c (callback_t): Removed.
    5.35 -        (walk_wild_consider_section, walk_wild_section_general,
    5.36 -        section_iterator_callback, find_section, is_simple_wild,
    5.37 -        match_simple_wild, walk_wild_section_specs1_wild0,
    5.38 -        walk_wild_section_specs1_wild1, walk_wild_section_specs2_wild1,
    5.39 -        walk_wild_section_specs3_wild2, walk_wild_section_specs4_wild2,
    5.40 -        wild_spec_can_overlap, analyze_walk_wild_section_handler): New
    5.41 -        functions.
    5.42 -        (lang_add_wild): Call analyze_walk_wild_section_handler.
    5.43 -        (walk_wild_section): Renamed to walk_wild_section_general and
    5.44 -        created a wrapper function.
    5.45 -        (section_iterator_callback_data): New typedef.
    5.46 -
    5.47 -
    5.48 -Index: src/ld/ld.h
    5.49 -===================================================================
    5.50 -RCS file: /cvs/src/src/ld/ld.h,v
    5.51 -retrieving revision 1.26
    5.52 -retrieving revision 1.27
    5.53 -diff -u -r1.26 -r1.27
    5.54 ---- binutils/ld/ld.h.old	16 Mar 2005 21:52:42 -0000	1.26
    5.55 -+++ binutils/ld/ld.h	6 Apr 2005 15:33:02 -0000	1.27
    5.56 -@@ -1,6 +1,6 @@
    5.57 - /* ld.h -- general linker header file
    5.58 -    Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
    5.59 --   2001, 2002, 2003, 2004
    5.60 -+   2001, 2002, 2003, 2004, 2005
    5.61 -    Free Software Foundation, Inc.
    5.62 - 
    5.63 -    This file is part of GLD, the Gnu Linker.
    5.64 -@@ -89,28 +89,15 @@
    5.65 -   struct map_symbol_def *next;
    5.66 - };
    5.67 - 
    5.68 --/* Extra information we hold on sections */
    5.69 --typedef struct lean_user_section_struct {
    5.70 --  /* For output sections: pointer to the section where this data will go.  */
    5.71 --  struct lang_input_statement_struct *file;
    5.72 --} lean_section_userdata_type;
    5.73 --
    5.74 - /* The initial part of fat_user_section_struct has to be idential with
    5.75 -    lean_user_section_struct.  */
    5.76 - typedef struct fat_user_section_struct {
    5.77 --  /* For output sections: pointer to the section where this data will go.  */
    5.78 --  struct lang_input_statement_struct *file;
    5.79 -   /* For input sections, when writing a map file: head / tail of a linked
    5.80 -      list of hash table entries for symbols defined in this section.  */
    5.81 -   struct map_symbol_def *map_symbol_def_head;
    5.82 -   struct map_symbol_def **map_symbol_def_tail;
    5.83 - } fat_section_userdata_type;
    5.84 - 
    5.85 --#define SECTION_USERDATA_SIZE \
    5.86 -- (command_line.reduce_memory_overheads \
    5.87 --  ? sizeof (lean_section_userdata_type) \
    5.88 --  : sizeof (fat_section_userdata_type))
    5.89 --
    5.90 - #define get_userdata(x) ((x)->userdata)
    5.91 - 
    5.92 - #define BYTE_SIZE	(1)
    5.93 -Index: src/ld/ldlang.c
    5.94 -===================================================================
    5.95 -RCS file: /cvs/src/src/ld/ldlang.c,v
    5.96 -retrieving revision 1.176
    5.97 -retrieving revision 1.177
    5.98 -diff -u -r1.176 -r1.177
    5.99 ---- binutils/ld/ldlang.c.old	18 Mar 2005 13:56:26 -0000	1.176
   5.100 -+++ binutils/ld/ldlang.c	6 Apr 2005 15:33:02 -0000	1.177
   5.101 -@@ -84,9 +84,6 @@
   5.102 - static void lang_record_phdrs (void);
   5.103 - static void lang_do_version_exports_section (void);
   5.104 - 
   5.105 --typedef void (*callback_t) (lang_wild_statement_type *, struct wildcard_list *,
   5.106 --			    asection *, lang_input_statement_type *, void *);
   5.107 --
   5.108 - /* Exported variables.  */
   5.109 - lang_output_section_statement_type *abs_output_section;
   5.110 - lang_statement_list_type lang_output_section_statement;
   5.111 -@@ -155,21 +152,71 @@
   5.112 - 
   5.113 - /* Generic traversal routines for finding matching sections.  */
   5.114 - 
   5.115 -+/* Try processing a section against a wildcard.  This just calls
   5.116 -+   the callback unless the filename exclusion list is present
   5.117 -+   and excludes the file.  It's hardly ever present so this
   5.118 -+   function is very fast.  */
   5.119 -+
   5.120 -+static void
   5.121 -+walk_wild_consider_section (lang_wild_statement_type *ptr,
   5.122 -+			    lang_input_statement_type *file,
   5.123 -+			    asection *s,
   5.124 -+			    struct wildcard_list *sec,
   5.125 -+			    callback_t callback,
   5.126 -+			    void *data)
   5.127 -+{
   5.128 -+  bfd_boolean skip = FALSE;
   5.129 -+  struct name_list *list_tmp;
   5.130 -+
   5.131 -+  /* Don't process sections from files which were
   5.132 -+     excluded.  */
   5.133 -+  for (list_tmp = sec->spec.exclude_name_list;
   5.134 -+       list_tmp;
   5.135 -+       list_tmp = list_tmp->next)
   5.136 -+    {
   5.137 -+      bfd_boolean is_wildcard = wildcardp (list_tmp->name);
   5.138 -+      if (is_wildcard)
   5.139 -+	skip = fnmatch (list_tmp->name, file->filename, 0) == 0;
   5.140 -+      else
   5.141 -+	skip = strcmp (list_tmp->name, file->filename) == 0;
   5.142 -+
   5.143 -+      /* If this file is part of an archive, and the archive is
   5.144 -+	 excluded, exclude this file.  */
   5.145 -+      if (! skip && file->the_bfd != NULL
   5.146 -+	  && file->the_bfd->my_archive != NULL
   5.147 -+	  && file->the_bfd->my_archive->filename != NULL)
   5.148 -+	{
   5.149 -+	  if (is_wildcard)
   5.150 -+	    skip = fnmatch (list_tmp->name,
   5.151 -+			    file->the_bfd->my_archive->filename,
   5.152 -+			    0) == 0;
   5.153 -+	  else
   5.154 -+	    skip = strcmp (list_tmp->name,
   5.155 -+			   file->the_bfd->my_archive->filename) == 0;
   5.156 -+	}
   5.157 -+
   5.158 -+      if (skip)
   5.159 -+	break;
   5.160 -+    }
   5.161 -+
   5.162 -+  if (!skip)
   5.163 -+    (*callback) (ptr, sec, s, file, data);
   5.164 -+}
   5.165 -+
   5.166 -+/* Lowest common denominator routine that can handle everything correctly,
   5.167 -+   but slowly.  */
   5.168 -+
   5.169 - static void
   5.170 --walk_wild_section (lang_wild_statement_type *ptr,
   5.171 --		   lang_input_statement_type *file,
   5.172 --		   callback_t callback,
   5.173 --		   void *data)
   5.174 -+walk_wild_section_general (lang_wild_statement_type *ptr,
   5.175 -+			   lang_input_statement_type *file,
   5.176 -+			   callback_t callback,
   5.177 -+			   void *data)
   5.178 - {
   5.179 -   asection *s;
   5.180 --
   5.181 --  if (file->just_syms_flag)
   5.182 --    return;
   5.183 -+  struct wildcard_list *sec;
   5.184 - 
   5.185 -   for (s = file->the_bfd->sections; s != NULL; s = s->next)
   5.186 -     {
   5.187 --      struct wildcard_list *sec;
   5.188 --
   5.189 -       sec = ptr->section_list;
   5.190 -       if (sec == NULL)
   5.191 - 	(*callback) (ptr, sec, s, file, data);
   5.192 -@@ -177,39 +224,8 @@
   5.193 -       while (sec != NULL)
   5.194 - 	{
   5.195 - 	  bfd_boolean skip = FALSE;
   5.196 --	  struct name_list *list_tmp;
   5.197 - 
   5.198 --	  /* Don't process sections from files which were
   5.199 --	     excluded.  */
   5.200 --	  for (list_tmp = sec->spec.exclude_name_list;
   5.201 --	       list_tmp;
   5.202 --	       list_tmp = list_tmp->next)
   5.203 --	    {
   5.204 --	      if (wildcardp (list_tmp->name))
   5.205 --		skip = fnmatch (list_tmp->name, file->filename, 0) == 0;
   5.206 --	      else
   5.207 --		skip = strcmp (list_tmp->name, file->filename) == 0;
   5.208 --
   5.209 --	      /* If this file is part of an archive, and the archive is
   5.210 --		 excluded, exclude this file.  */
   5.211 --	      if (! skip && file->the_bfd != NULL
   5.212 --		  && file->the_bfd->my_archive != NULL
   5.213 --		  && file->the_bfd->my_archive->filename != NULL)
   5.214 --		{
   5.215 --		  if (wildcardp (list_tmp->name))
   5.216 --		    skip = fnmatch (list_tmp->name,
   5.217 --				    file->the_bfd->my_archive->filename,
   5.218 --				    0) == 0;
   5.219 --		  else
   5.220 --		    skip = strcmp (list_tmp->name,
   5.221 --				   file->the_bfd->my_archive->filename) == 0;
   5.222 --		}
   5.223 --
   5.224 --	      if (skip)
   5.225 --		break;
   5.226 --	    }
   5.227 --
   5.228 --	  if (!skip && sec->spec.name != NULL)
   5.229 -+	  if (sec->spec.name != NULL)
   5.230 - 	    {
   5.231 - 	      const char *sname = bfd_get_section_name (file->the_bfd, s);
   5.232 - 
   5.233 -@@ -220,13 +236,381 @@
   5.234 - 	    }
   5.235 - 
   5.236 - 	  if (!skip)
   5.237 --	    (*callback) (ptr, sec, s, file, data);
   5.238 -+	    walk_wild_consider_section (ptr, file, s, sec, callback, data);
   5.239 - 
   5.240 - 	  sec = sec->next;
   5.241 - 	}
   5.242 -     }
   5.243 - }
   5.244 - 
   5.245 -+/* Routines to find a single section given its name.  If there's more
   5.246 -+   than one section with that name, we report that.  */
   5.247 -+
   5.248 -+typedef struct
   5.249 -+{
   5.250 -+  asection *found_section;
   5.251 -+  bfd_boolean multiple_sections_found;
   5.252 -+} section_iterator_callback_data;
   5.253 -+
   5.254 -+static bfd_boolean
   5.255 -+section_iterator_callback (bfd *bfd ATTRIBUTE_UNUSED, asection *s, void *data)
   5.256 -+{
   5.257 -+  section_iterator_callback_data *d = data;
   5.258 -+
   5.259 -+  if (d->found_section != NULL)
   5.260 -+    {
   5.261 -+      d->multiple_sections_found = TRUE;
   5.262 -+      return TRUE;
   5.263 -+    }
   5.264 -+
   5.265 -+  d->found_section = s;
   5.266 -+  return FALSE;
   5.267 -+}
   5.268 -+
   5.269 -+static asection *
   5.270 -+find_section (lang_input_statement_type *file,
   5.271 -+	      struct wildcard_list *sec,
   5.272 -+	      bfd_boolean *multiple_sections_found)
   5.273 -+{
   5.274 -+  section_iterator_callback_data cb_data = { NULL, FALSE };
   5.275 -+
   5.276 -+  bfd_get_section_by_name_if (file->the_bfd, sec->spec.name, 
   5.277 -+			      section_iterator_callback, &cb_data);
   5.278 -+  *multiple_sections_found = cb_data.multiple_sections_found;
   5.279 -+  return cb_data.found_section;
   5.280 -+}
   5.281 -+
   5.282 -+/* Code for handling simple wildcards without going through fnmatch,
   5.283 -+   which can be expensive because of charset translations etc.  */
   5.284 -+
   5.285 -+/* A simple wild is a literal string followed by a single '*',
   5.286 -+   where the literal part is at least 4 characters long.  */
   5.287 -+
   5.288 -+static bfd_boolean
   5.289 -+is_simple_wild (const char *name)
   5.290 -+{
   5.291 -+  size_t len = strcspn (name, "*?[");
   5.292 -+  return len >= 4 && name[len] == '*' && name[len + 1] == '\0';
   5.293 -+}
   5.294 -+
   5.295 -+static bfd_boolean
   5.296 -+match_simple_wild (const char *pattern, const char *name)
   5.297 -+{
   5.298 -+  /* The first four characters of the pattern are guaranteed valid
   5.299 -+     non-wildcard characters.  So we can go faster.  */
   5.300 -+  if (pattern[0] != name[0] || pattern[1] != name[1]
   5.301 -+      || pattern[2] != name[2] || pattern[3] != name[3])
   5.302 -+    return FALSE;
   5.303 -+
   5.304 -+  pattern += 4;
   5.305 -+  name += 4;
   5.306 -+  while (*pattern != '*')
   5.307 -+    if (*name++ != *pattern++)
   5.308 -+      return FALSE;
   5.309 -+
   5.310 -+  return TRUE;
   5.311 -+}
   5.312 -+
   5.313 -+/* Specialized, optimized routines for handling different kinds of
   5.314 -+   wildcards */
   5.315 -+
   5.316 -+static void
   5.317 -+walk_wild_section_specs1_wild0 (lang_wild_statement_type *ptr,
   5.318 -+				lang_input_statement_type *file,
   5.319 -+				callback_t callback,
   5.320 -+				void *data)
   5.321 -+{
   5.322 -+  /* We can just do a hash lookup for the section with the right name.
   5.323 -+     But if that lookup discovers more than one section with the name
   5.324 -+     (should be rare), we fall back to the general algorithm because
   5.325 -+     we would otherwise have to sort the sections to make sure they
   5.326 -+     get processed in the bfd's order.  */
   5.327 -+  bfd_boolean multiple_sections_found;
   5.328 -+  struct wildcard_list *sec0 = ptr->handler_data[0];
   5.329 -+  asection *s0 = find_section (file, sec0, &multiple_sections_found);
   5.330 -+
   5.331 -+  if (multiple_sections_found)
   5.332 -+    walk_wild_section_general (ptr, file, callback, data);
   5.333 -+  else if (s0)
   5.334 -+    walk_wild_consider_section (ptr, file, s0, sec0, callback, data);
   5.335 -+}
   5.336 -+
   5.337 -+static void
   5.338 -+walk_wild_section_specs1_wild1 (lang_wild_statement_type *ptr,
   5.339 -+				lang_input_statement_type *file,
   5.340 -+				callback_t callback,
   5.341 -+				void *data)
   5.342 -+{
   5.343 -+  asection *s;
   5.344 -+  struct wildcard_list *wildsec0 = ptr->handler_data[0];
   5.345 -+
   5.346 -+  for (s = file->the_bfd->sections; s != NULL; s = s->next)
   5.347 -+    {
   5.348 -+      const char *sname = bfd_get_section_name (file->the_bfd, s);
   5.349 -+      bfd_boolean skip = !match_simple_wild (wildsec0->spec.name, sname);
   5.350 -+
   5.351 -+      if (!skip)
   5.352 -+	walk_wild_consider_section (ptr, file, s, wildsec0, callback, data);
   5.353 -+    }
   5.354 -+}
   5.355 -+
   5.356 -+static void
   5.357 -+walk_wild_section_specs2_wild1 (lang_wild_statement_type *ptr,
   5.358 -+				lang_input_statement_type *file,
   5.359 -+				callback_t callback,
   5.360 -+				void *data)
   5.361 -+{
   5.362 -+  asection *s;
   5.363 -+  struct wildcard_list *sec0 = ptr->handler_data[0];
   5.364 -+  struct wildcard_list *wildsec1 = ptr->handler_data[1];
   5.365 -+  bfd_boolean multiple_sections_found;
   5.366 -+  asection *s0 = find_section (file, sec0, &multiple_sections_found);
   5.367 -+
   5.368 -+  if (multiple_sections_found)
   5.369 -+    {
   5.370 -+      walk_wild_section_general (ptr, file, callback, data);
   5.371 -+      return;
   5.372 -+    }
   5.373 -+
   5.374 -+  /* Note that if the section was not found, s0 is NULL and
   5.375 -+     we'll simply never succeed the s == s0 test below.  */
   5.376 -+  for (s = file->the_bfd->sections; s != NULL; s = s->next)
   5.377 -+    {
   5.378 -+      /* Recall that in this code path, a section cannot satisfy more
   5.379 -+	 than one spec, so if s == s0 then it cannot match
   5.380 -+	 wildspec1.  */
   5.381 -+      if (s == s0)
   5.382 -+	walk_wild_consider_section (ptr, file, s, sec0, callback, data);
   5.383 -+      else
   5.384 -+	{
   5.385 -+	  const char *sname = bfd_get_section_name (file->the_bfd, s);
   5.386 -+	  bfd_boolean skip = !match_simple_wild (wildsec1->spec.name, sname);
   5.387 -+
   5.388 -+	  if (!skip)
   5.389 -+	    walk_wild_consider_section (ptr, file, s, wildsec1, callback,
   5.390 -+					data);
   5.391 -+	}
   5.392 -+    }
   5.393 -+}
   5.394 -+
   5.395 -+static void
   5.396 -+walk_wild_section_specs3_wild2 (lang_wild_statement_type *ptr,
   5.397 -+				lang_input_statement_type *file,
   5.398 -+				callback_t callback,
   5.399 -+				void *data)
   5.400 -+{
   5.401 -+  asection *s;
   5.402 -+  struct wildcard_list *sec0 = ptr->handler_data[0];
   5.403 -+  struct wildcard_list *wildsec1 = ptr->handler_data[1];
   5.404 -+  struct wildcard_list *wildsec2 = ptr->handler_data[2];
   5.405 -+  bfd_boolean multiple_sections_found;
   5.406 -+  asection *s0 = find_section (file, sec0, &multiple_sections_found);
   5.407 -+
   5.408 -+  if (multiple_sections_found)
   5.409 -+    {
   5.410 -+      walk_wild_section_general (ptr, file, callback, data);
   5.411 -+      return;
   5.412 -+    }
   5.413 -+
   5.414 -+  for (s = file->the_bfd->sections; s != NULL; s = s->next)
   5.415 -+    {
   5.416 -+      if (s == s0)
   5.417 -+	walk_wild_consider_section (ptr, file, s, sec0, callback, data);
   5.418 -+      else
   5.419 -+	{
   5.420 -+	  const char *sname = bfd_get_section_name (file->the_bfd, s);
   5.421 -+	  bfd_boolean skip = !match_simple_wild (wildsec1->spec.name, sname);
   5.422 -+
   5.423 -+	  if (!skip)
   5.424 -+	    walk_wild_consider_section (ptr, file, s, wildsec1, callback, data);
   5.425 -+	  else
   5.426 -+	    {
   5.427 -+	      skip = !match_simple_wild (wildsec2->spec.name, sname);
   5.428 -+	      if (!skip)
   5.429 -+		walk_wild_consider_section (ptr, file, s, wildsec2, callback,
   5.430 -+					    data);
   5.431 -+	    }
   5.432 -+	}
   5.433 -+    }
   5.434 -+}
   5.435 -+
   5.436 -+static void
   5.437 -+walk_wild_section_specs4_wild2 (lang_wild_statement_type *ptr,
   5.438 -+				lang_input_statement_type *file,
   5.439 -+				callback_t callback,
   5.440 -+				void *data)
   5.441 -+{
   5.442 -+  asection *s;
   5.443 -+  struct wildcard_list *sec0 = ptr->handler_data[0];
   5.444 -+  struct wildcard_list *sec1 = ptr->handler_data[1];
   5.445 -+  struct wildcard_list *wildsec2 = ptr->handler_data[2];
   5.446 -+  struct wildcard_list *wildsec3 = ptr->handler_data[3];
   5.447 -+  bfd_boolean multiple_sections_found;
   5.448 -+  asection *s0 = find_section (file, sec0, &multiple_sections_found), *s1;
   5.449 -+
   5.450 -+  if (multiple_sections_found)
   5.451 -+    {
   5.452 -+      walk_wild_section_general (ptr, file, callback, data);
   5.453 -+      return;
   5.454 -+    }
   5.455 -+
   5.456 -+  s1 = find_section (file, sec1, &multiple_sections_found);
   5.457 -+  if (multiple_sections_found)
   5.458 -+    {
   5.459 -+      walk_wild_section_general (ptr, file, callback, data);
   5.460 -+      return;
   5.461 -+    }
   5.462 -+
   5.463 -+  for (s = file->the_bfd->sections; s != NULL; s = s->next)
   5.464 -+    {
   5.465 -+      if (s == s0)
   5.466 -+	walk_wild_consider_section (ptr, file, s, sec0, callback, data);
   5.467 -+      else
   5.468 -+	if (s == s1)
   5.469 -+	  walk_wild_consider_section (ptr, file, s, sec1, callback, data);
   5.470 -+	else
   5.471 -+	  {
   5.472 -+	    const char *sname = bfd_get_section_name (file->the_bfd, s);
   5.473 -+	    bfd_boolean skip = !match_simple_wild (wildsec2->spec.name,
   5.474 -+						   sname);
   5.475 -+
   5.476 -+	    if (!skip)
   5.477 -+	      walk_wild_consider_section (ptr, file, s, wildsec2, callback,
   5.478 -+					  data);
   5.479 -+	    else
   5.480 -+	      {
   5.481 -+		skip = !match_simple_wild (wildsec3->spec.name, sname);
   5.482 -+		if (!skip)
   5.483 -+		  walk_wild_consider_section (ptr, file, s, wildsec3,
   5.484 -+					      callback, data);
   5.485 -+	      }
   5.486 -+	  }
   5.487 -+    }
   5.488 -+}
   5.489 -+
   5.490 -+static void
   5.491 -+walk_wild_section (lang_wild_statement_type *ptr,
   5.492 -+		   lang_input_statement_type *file,
   5.493 -+		   callback_t callback,
   5.494 -+		   void *data)
   5.495 -+{
   5.496 -+  if (file->just_syms_flag)
   5.497 -+    return;
   5.498 -+
   5.499 -+  (*ptr->walk_wild_section_handler) (ptr, file, callback, data);
   5.500 -+}
   5.501 -+
   5.502 -+/* Returns TRUE when name1 is a wildcard spec that might match
   5.503 -+   something name2 can match.  We're conservative: we return FALSE
   5.504 -+   only if the prefixes of name1 and name2 are different up to the
   5.505 -+   first wildcard character.  */
   5.506 -+
   5.507 -+static bfd_boolean
   5.508 -+wild_spec_can_overlap (const char *name1, const char *name2)
   5.509 -+{
   5.510 -+  size_t prefix1_len = strcspn (name1, "?*[");
   5.511 -+  size_t prefix2_len = strcspn (name2, "?*[");
   5.512 -+  size_t min_prefix_len;
   5.513 -+
   5.514 -+  /* Note that if there is no wildcard character, then we treat the
   5.515 -+     terminating 0 as part of the prefix.  Thus ".text" won't match
   5.516 -+     ".text." or ".text.*", for example.  */
   5.517 -+  if (name1[prefix1_len] == '\0')
   5.518 -+    prefix1_len++;
   5.519 -+  if (name2[prefix2_len] == '\0')
   5.520 -+    prefix2_len++;
   5.521 -+
   5.522 -+  min_prefix_len = prefix1_len < prefix2_len ? prefix1_len : prefix2_len;
   5.523 -+
   5.524 -+  return memcmp (name1, name2, min_prefix_len) == 0;
   5.525 -+}
   5.526 -+
   5.527 -+/* Select specialized code to handle various kinds of wildcard
   5.528 -+   statements.  */
   5.529 -+
   5.530 -+static void
   5.531 -+analyze_walk_wild_section_handler (lang_wild_statement_type *ptr)
   5.532 -+{
   5.533 -+  int sec_count = 0;
   5.534 -+  int wild_name_count = 0;
   5.535 -+  struct wildcard_list *sec;
   5.536 -+  int signature;
   5.537 -+  int data_counter;
   5.538 -+
   5.539 -+  ptr->walk_wild_section_handler = walk_wild_section_general;
   5.540 -+
   5.541 -+  /* Count how many wildcard_specs there are, and how many of those
   5.542 -+     actually use wildcards in the name.  Also, bail out if any of the
   5.543 -+     wildcard names are NULL. (Can this actually happen?
   5.544 -+     walk_wild_section used to test for it.)  And bail out if any
   5.545 -+     of the wildcards are more complex than a simple string
   5.546 -+     ending in a single '*'.  */
   5.547 -+  for (sec = ptr->section_list; sec != NULL; sec = sec->next)
   5.548 -+    {
   5.549 -+      ++sec_count;
   5.550 -+      if (sec->spec.name == NULL)
   5.551 -+	return;
   5.552 -+      if (wildcardp (sec->spec.name))
   5.553 -+	{
   5.554 -+	  ++wild_name_count;
   5.555 -+	  if (!is_simple_wild (sec->spec.name))
   5.556 -+	    return;
   5.557 -+	}
   5.558 -+    }
   5.559 -+
   5.560 -+  /* The zero-spec case would be easy to optimize but it doesn't
   5.561 -+     happen in practice.  Likewise, more than 4 specs doesn't
   5.562 -+     happen in practice.  */
   5.563 -+  if (sec_count == 0 || sec_count > 4)
   5.564 -+    return;
   5.565 -+
   5.566 -+  /* Check that no two specs can match the same section.  */
   5.567 -+  for (sec = ptr->section_list; sec != NULL; sec = sec->next)
   5.568 -+    {
   5.569 -+      struct wildcard_list *sec2;
   5.570 -+      for (sec2 = sec->next; sec2 != NULL; sec2 = sec2->next)
   5.571 -+	{
   5.572 -+	  if (wild_spec_can_overlap (sec->spec.name, sec2->spec.name))
   5.573 -+	    return;
   5.574 -+	}
   5.575 -+    }
   5.576 -+
   5.577 -+  signature = (sec_count << 8) + wild_name_count;
   5.578 -+  switch (signature)
   5.579 -+    {
   5.580 -+    case 0x0100:
   5.581 -+      ptr->walk_wild_section_handler = walk_wild_section_specs1_wild0;
   5.582 -+      break;
   5.583 -+    case 0x0101:
   5.584 -+      ptr->walk_wild_section_handler = walk_wild_section_specs1_wild1;
   5.585 -+      break;
   5.586 -+    case 0x0201:
   5.587 -+      ptr->walk_wild_section_handler = walk_wild_section_specs2_wild1;
   5.588 -+      break;
   5.589 -+    case 0x0302:
   5.590 -+      ptr->walk_wild_section_handler = walk_wild_section_specs3_wild2;
   5.591 -+      break;
   5.592 -+    case 0x0402:
   5.593 -+      ptr->walk_wild_section_handler = walk_wild_section_specs4_wild2;
   5.594 -+      break;
   5.595 -+    default:
   5.596 -+      return;
   5.597 -+    }
   5.598 -+
   5.599 -+  /* Now fill the data array with pointers to the specs, first the
   5.600 -+     specs with non-wildcard names, then the specs with wildcard
   5.601 -+     names.  It's OK to process the specs in different order from the
   5.602 -+     given order, because we've already determined that no section
   5.603 -+     will match more than one spec.  */
   5.604 -+  data_counter = 0;
   5.605 -+  for (sec = ptr->section_list; sec != NULL; sec = sec->next)
   5.606 -+    if (!wildcardp (sec->spec.name))
   5.607 -+      ptr->handler_data[data_counter++] = sec;
   5.608 -+  for (sec = ptr->section_list; sec != NULL; sec = sec->next)
   5.609 -+    if (wildcardp (sec->spec.name))
   5.610 -+      ptr->handler_data[data_counter++] = sec;
   5.611 -+}
   5.612 -+
   5.613 - /* Handle a wild statement for a single file F.  */
   5.614 - 
   5.615 - static void
   5.616 -@@ -1175,17 +1559,12 @@
   5.617 - static void
   5.618 - init_os (lang_output_section_statement_type *s)
   5.619 - {
   5.620 --  lean_section_userdata_type *new;
   5.621 --
   5.622 -   if (s->bfd_section != NULL)
   5.623 -     return;
   5.624 - 
   5.625 -   if (strcmp (s->name, DISCARD_SECTION_NAME) == 0)
   5.626 -     einfo (_("%P%F: Illegal use of `%s' section\n"), DISCARD_SECTION_NAME);
   5.627 - 
   5.628 --  new = stat_alloc (SECTION_USERDATA_SIZE);
   5.629 --  memset (new, 0, SECTION_USERDATA_SIZE);
   5.630 --
   5.631 -   s->bfd_section = bfd_get_section_by_name (output_bfd, s->name);
   5.632 -   if (s->bfd_section == NULL)
   5.633 -     s->bfd_section = bfd_make_section (output_bfd, s->name);
   5.634 -@@ -1199,7 +1578,14 @@
   5.635 -   /* We initialize an output sections output offset to minus its own
   5.636 -      vma to allow us to output a section through itself.  */
   5.637 -   s->bfd_section->output_offset = 0;
   5.638 --  get_userdata (s->bfd_section) = new;
   5.639 -+  if (!command_line.reduce_memory_overheads)
   5.640 -+    {
   5.641 -+      fat_section_userdata_type *new
   5.642 -+	= stat_alloc (sizeof (fat_section_userdata_type));
   5.643 -+      memset (new, 0, sizeof (fat_section_userdata_type));
   5.644 -+      get_userdata (s->bfd_section) = new;
   5.645 -+    }
   5.646 -+
   5.647 - 
   5.648 -   /* If there is a base address, make sure that any sections it might
   5.649 -      mention are initialized.  */
   5.650 -@@ -4939,6 +5325,7 @@
   5.651 -   new->section_list = section_list;
   5.652 -   new->keep_sections = keep_sections;
   5.653 -   lang_list_init (&new->children);
   5.654 -+  analyze_walk_wild_section_handler (new);
   5.655 - }
   5.656 - 
   5.657 - void
   5.658 -Index: src/ld/ldlang.h
   5.659 -===================================================================
   5.660 -RCS file: /cvs/src/src/ld/ldlang.h,v
   5.661 -retrieving revision 1.44
   5.662 -retrieving revision 1.45
   5.663 -diff -u -r1.44 -r1.45
   5.664 ---- binutils/ld/ldlang.h.old	3 Mar 2005 11:51:58 -0000	1.44
   5.665 -+++ binutils/ld/ldlang.h	6 Apr 2005 15:33:03 -0000	1.45
   5.666 -@@ -298,7 +298,17 @@
   5.667 -   union lang_statement_union *file;
   5.668 - } lang_afile_asection_pair_statement_type;
   5.669 - 
   5.670 --typedef struct lang_wild_statement_struct
   5.671 -+typedef struct lang_wild_statement_struct lang_wild_statement_type;
   5.672 -+
   5.673 -+typedef void (*callback_t) (lang_wild_statement_type *, struct wildcard_list *,
   5.674 -+			    asection *, lang_input_statement_type *, void *);
   5.675 -+
   5.676 -+typedef void (*walk_wild_section_handler_t) (lang_wild_statement_type *,
   5.677 -+					     lang_input_statement_type *,
   5.678 -+					     callback_t callback,
   5.679 -+					     void *data);
   5.680 -+
   5.681 -+struct lang_wild_statement_struct
   5.682 - {
   5.683 -   lang_statement_header_type header;
   5.684 -   const char *filename;
   5.685 -@@ -306,7 +316,10 @@
   5.686 -   struct wildcard_list *section_list;
   5.687 -   bfd_boolean keep_sections;
   5.688 -   lang_statement_list_type children;
   5.689 --} lang_wild_statement_type;
   5.690 -+
   5.691 -+  walk_wild_section_handler_t walk_wild_section_handler;
   5.692 -+  struct wildcard_list *handler_data[4];
   5.693 -+};
   5.694 - 
   5.695 - typedef struct lang_address_statement_struct
   5.696 - {
     6.1 --- a/patches/binutils/2.16.1/140-cross-gprof.patch	Sun Sep 11 18:26:12 2011 +0200
     6.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.3 @@ -1,22 +0,0 @@
     6.4 ---- binutils-2.15/configure.old	2004-07-21 21:36:47.000000000 -0700
     6.5 -+++ binutils-2.15/configure	2004-07-21 21:37:08.000000000 -0700
     6.6 -@@ -999,7 +999,7 @@
     6.7 - 
     6.8 - # Some tools are only suitable for building in a "native" situation.
     6.9 - # Remove these if host!=target.  
    6.10 --native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff gprof target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
    6.11 -+native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
    6.12 - 
    6.13 - # Similarly, some are only suitable for cross toolchains.
    6.14 - # Remove these if host=target.
    6.15 ---- binutils-2.15/configure.in.old	2004-07-21 21:37:19.000000000 -0700
    6.16 -+++ binutils-2.15/configure.in	2004-07-21 21:37:34.000000000 -0700
    6.17 -@@ -236,7 +236,7 @@
    6.18 - 
    6.19 - # Some tools are only suitable for building in a "native" situation.
    6.20 - # Remove these if host!=target.  
    6.21 --native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff gprof target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
    6.22 -+native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
    6.23 - 
    6.24 - # Similarly, some are only suitable for cross toolchains.
    6.25 - # Remove these if host=target.
     7.1 --- a/patches/binutils/2.16.1/150-stabs-tweak.patch	Sun Sep 11 18:26:12 2011 +0200
     7.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.3 @@ -1,28 +0,0 @@
     7.4 -Signed-off-by: dank@kegel.com
     7.5 -
     7.6 -See http://sourceware.org/ml/binutils/2005-12/msg00270.html
     7.7 -http://sourceware.org/ml/binutils-cvs/2005-12/msg00139.html
     7.8 -
     7.9 -STABS hash table size change, backported from the binutils CVS tree.  Here's
    7.10 -the CVS log comment for the original change:
    7.11 -
    7.12 -revision 1.25
    7.13 -date: 2005/12/29 10:29:23;  author: nickc;  state: Exp;  lines: +2 -3
    7.14 -(_bfd_link_section_stabs): Use bfd_hash_table_init rather than
    7.15 -bfd_hash_table_init_n(...,251) so that the size of the hash table can be
    7.16 -controlled by the user.
    7.17 -
    7.18 ---- binutils/bfd/stabs.c.old	4 May 2005 15:53:39 -0000	1.24
    7.19 -+++ binutils/bfd/stabs.c	29 Dec 2005 10:29:23 -0000	1.25
    7.20 -@@ -194,9 +194,8 @@
    7.21 - 	goto error_return;
    7.22 -       /* Make sure the first byte is zero.  */
    7.23 -       (void) _bfd_stringtab_add (sinfo->strings, "", TRUE, TRUE);
    7.24 --      if (! bfd_hash_table_init_n (&sinfo->includes,
    7.25 --				   stab_link_includes_newfunc,
    7.26 --				   251))
    7.27 -+      if (! bfd_hash_table_init (&sinfo->includes,
    7.28 -+				 stab_link_includes_newfunc))
    7.29 - 	goto error_return;
    7.30 -       sinfo->stabstr = bfd_make_section_anyway (abfd, ".stabstr");
    7.31 -       if (sinfo->stabstr == NULL)
     8.1 --- a/patches/binutils/2.16.1/160-i386-no-divide-comment.patch	Sun Sep 11 18:26:12 2011 +0200
     8.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.3 @@ -1,40 +0,0 @@
     8.4 -diff -durN binutils-2.16.1.orig/gas/config/tc-i386.c binutils-2.16.1/gas/config/tc-i386.c
     8.5 ---- binutils-2.16.1.orig/gas/config/tc-i386.c	2005-04-13 19:58:42.000000000 +0200
     8.6 -+++ binutils-2.16.1/gas/config/tc-i386.c	2008-09-22 09:00:09.000000000 +0200
     8.7 -@@ -192,16 +192,10 @@
     8.8 - #endif
     8.9 - 	;
    8.10 - 
    8.11 --#if (defined (TE_I386AIX)				\
    8.12 --     || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF))	\
    8.13 --	 && !defined (TE_LINUX)				\
    8.14 -- 	 && !defined (TE_NETWARE)			\
    8.15 --	 && !defined (TE_FreeBSD)			\
    8.16 --	 && !defined (TE_NetBSD)))
    8.17 - /* This array holds the chars that always start a comment.  If the
    8.18 -    pre-processor is disabled, these aren't very useful.  */
    8.19 --const char comment_chars[] = "#/";
    8.20 --#define PREFIX_SEPARATOR '\\'
    8.21 -+const char comment_chars[] = "#";
    8.22 -+#define PREFIX_SEPARATOR '/'
    8.23 - 
    8.24 - /* This array holds the chars that only start a comment at the beginning of
    8.25 -    a line.  If the line seems to have the form '# 123 filename'
    8.26 -@@ -211,16 +205,7 @@
    8.27 -    #NO_APP at the beginning of its output.
    8.28 -    Also note that comments started like this one will always work if
    8.29 -    '/' isn't otherwise defined.  */
    8.30 --const char line_comment_chars[] = "#";
    8.31 --
    8.32 --#else
    8.33 --/* Putting '/' here makes it impossible to use the divide operator.
    8.34 --   However, we need it for compatibility with SVR4 systems.  */
    8.35 --const char comment_chars[] = "#";
    8.36 --#define PREFIX_SEPARATOR '/'
    8.37 --
    8.38 --const char line_comment_chars[] = "/#";
    8.39 --#endif
    8.40 -+const char line_comment_chars[] = "#/";
    8.41 - 
    8.42 - const char line_separator_chars[] = ";";
    8.43 - 
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/patches/binutils/2.16.1a/100-bfd-hash-tweak.patch	Sun Sep 11 18:18:53 2011 +0200
     9.3 @@ -0,0 +1,23 @@
     9.4 +Signed-off-by: dank@kegel.com
     9.5 +
     9.6 +Raising the size of the hash table is a noticable win when linking 
     9.7 +at least one large app.  
     9.8 +
     9.9 +There was a patch,
    9.10 +http://sources.redhat.com/ml/binutils/2004-06/msg00165.html
    9.11 +to do this dynamically.  No idea why that didn't make it in.
    9.12 +So this tiny change to raise the default size is just
    9.13 +a stopgap for now.
    9.14 +
    9.15 +
    9.16 +--- binutils-2.16.1/bfd/hash.c.old	2006-03-02 23:01:39.000000000 -0800
    9.17 ++++ binutils-2.16.1/bfd/hash.c	2006-03-02 23:01:58.000000000 -0800
    9.18 +@@ -300,7 +300,7 @@
    9.19 + */
    9.20 + 
    9.21 + /* The default number of entries to use when creating a hash table.  */
    9.22 +-#define DEFAULT_SIZE 4051
    9.23 ++#define DEFAULT_SIZE 32749
    9.24 + static size_t bfd_default_hash_table_size = DEFAULT_SIZE;
    9.25 + 
    9.26 + /* Create a new hash table, given a number of entries.  */
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/patches/binutils/2.16.1a/110-psignal.patch	Sun Sep 11 18:18:53 2011 +0200
    10.3 @@ -0,0 +1,40 @@
    10.4 +Make psignal prototype in libiberty match that in glibc.
    10.5 +
    10.6 +Fixes:
    10.7 +
    10.8 +gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c: In function `psignal':
    10.9 +gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:563: argument `signo' doesn't match prototype
   10.10 +/usr/include/signal.h:131: prototype declaration
   10.11 +gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:563: argument `message' doesn't match prototype
   10.12 +/usr/include/signal.h:131: prototype declaration
   10.13 +gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:568: warning: comparison between signed and unsigned
   10.14 +mprotect... make[1]: *** [strsignal.o] Error 1
   10.15 +make[1]: Leaving directory `/export/hda3/dkegel/queue/jobdir.produser_cpsm17/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.1.3/build-binutils/libiberty'
   10.16 +make: *** [all-libiberty] Error 2
   10.17 +
   10.18 +when building on red hat 7.1
   10.19 +though it's a bit of a mystery why libiberty's psignal is being compiled at
   10.20 +all, since red hat 7.1's glibc supports psignal (hence the error message)
   10.21 +
   10.22 +--- binutils-2.15/libiberty/strsignal.c.old	2005-04-18 13:57:40.000000000 -0700
   10.23 ++++ binutils-2.15/libiberty/strsignal.c	2005-04-18 13:59:09.000000000 -0700
   10.24 +@@ -544,7 +544,7 @@
   10.25 + 
   10.26 + /*
   10.27 + 
   10.28 +-@deftypefn Supplemental void psignal (unsigned @var{signo}, char *@var{message})
   10.29 ++@deftypefn Supplemental void psignal (int @var{signo}, const char *@var{message})
   10.30 + 
   10.31 + Print @var{message} to the standard error, followed by a colon,
   10.32 + followed by the description of the signal specified by @var{signo},
   10.33 +@@ -557,9 +557,7 @@
   10.34 + #ifndef HAVE_PSIGNAL
   10.35 + 
   10.36 + void
   10.37 +-psignal (signo, message)
   10.38 +-  unsigned signo;
   10.39 +-  char *message;
   10.40 ++psignal (int signo, const char *message)
   10.41 + {
   10.42 +   if (signal_names == NULL)
   10.43 +     {
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/patches/binutils/2.16.1a/120-skip-comments.patch	Sun Sep 11 18:18:53 2011 +0200
    11.3 @@ -0,0 +1,95 @@
    11.4 +[removed first hunk so it would apply to 2.16.1 - copyright date already updated - dank]
    11.5 +
    11.6 +Retrieved from http://sources.redhat.com/ml/binutils/2004-04/msg00646.html
    11.7 +Fixes
    11.8 +localealias.s:544: Error: junk at end of line, first unrecognized character is `,' 
    11.9 +when building glibc-2.3.2 with gcc-3.4.0 and binutils-2.15.90.0.3
   11.10 +
   11.11 +Paths adjusted to match crosstool's patcher.
   11.12 +
   11.13 +Message-Id: m3n052qw2g.fsf@whitebox.m5r.de
   11.14 +From: Andreas Schwab <schwab at suse dot de>
   11.15 +To: Nathan Sidwell <nathan at codesourcery dot com>
   11.16 +Cc: Ian Lance Taylor <ian at wasabisystems dot com>, binutils at sources dot redhat dot com
   11.17 +Date: Fri, 23 Apr 2004 22:27:19 +0200
   11.18 +Subject: Re: demand_empty_rest_of_line and ignore_rest_of_line
   11.19 +
   11.20 +Nathan Sidwell <nathan@codesourcery.com> writes:
   11.21 +
   11.22 +> Index: read.c
   11.23 +> ===================================================================
   11.24 +> RCS file: /cvs/src/src/gas/read.c,v
   11.25 +> retrieving revision 1.76
   11.26 +> diff -c -3 -p -r1.76 read.c
   11.27 +> *** read.c	12 Mar 2004 17:48:12 -0000	1.76
   11.28 +> --- read.c	18 Mar 2004 09:56:05 -0000
   11.29 +> *************** read_a_source_file (char *name)
   11.30 +> *** 1053,1059 ****
   11.31 +>   #endif
   11.32 +>   	  input_line_pointer--;
   11.33 +>   	  /* Report unknown char as ignored.  */
   11.34 +> ! 	  ignore_rest_of_line ();
   11.35 +>   	}
   11.36 +>   
   11.37 +>   #ifdef md_after_pass_hook
   11.38 +> --- 1053,1059 ----
   11.39 +>   #endif
   11.40 +>   	  input_line_pointer--;
   11.41 +>   	  /* Report unknown char as ignored.  */
   11.42 +> ! 	  demand_empty_rest_of_line ();
   11.43 +>   	}
   11.44 +>   
   11.45 +>   #ifdef md_after_pass_hook
   11.46 +
   11.47 +This means that the unknown character is no longer ignored, despite the
   11.48 +comment.  As a side effect a line starting with a line comment character
   11.49 +not followed by APP in NO_APP mode now triggers an error instead of just a
   11.50 +warning, breaking builds of glibc on m68k-linux.  Earlier in
   11.51 +read_a_source_file where #APP is handled there is another comment that
   11.52 +claims that unknown comments are ignored, when in fact they aren't (only
   11.53 +the initial line comment character is skipped).
   11.54 +
   11.55 +Note that the presence of #APP will mess up the line counters, but
   11.56 +that appears to be difficult to fix.
   11.57 +
   11.58 +Andreas.
   11.59 +
   11.60 +2004-04-23  Andreas Schwab  <schwab@suse.de>
   11.61 +
   11.62 +	* read.c (read_a_source_file): Ignore unknown text after line
   11.63 +	comment character.  Fix misleading comment.
   11.64 +
   11.65 +--- binutils/gas/read.c.~1.78.~	2004-04-23 08:58:23.000000000 +0200
   11.66 ++++ binutils/gas/read.c	2004-04-23 21:49:01.000000000 +0200
   11.67 +@@ -950,10 +950,14 @@ read_a_source_file (char *name)
   11.68 + 	      unsigned int new_length;
   11.69 + 	      char *tmp_buf = 0;
   11.70 + 
   11.71 +-	      bump_line_counters ();
   11.72 + 	      s = input_line_pointer;
   11.73 + 	      if (strncmp (s, "APP\n", 4))
   11.74 +-		continue;	/* We ignore it */
   11.75 ++		{
   11.76 ++		  /* We ignore it */
   11.77 ++		  ignore_rest_of_line ();
   11.78 ++		  continue;
   11.79 ++		}
   11.80 ++	      bump_line_counters ();
   11.81 + 	      s += 4;
   11.82 + 
   11.83 + 	      sb_new (&sbuf);
   11.84 +@@ -1052,7 +1056,7 @@ read_a_source_file (char *name)
   11.85 + 	    continue;
   11.86 + #endif
   11.87 + 	  input_line_pointer--;
   11.88 +-	  /* Report unknown char as ignored.  */
   11.89 ++	  /* Report unknown char as error.  */
   11.90 + 	  demand_empty_rest_of_line ();
   11.91 + 	}
   11.92 + 
   11.93 +
   11.94 +-- 
   11.95 +Andreas Schwab, SuSE Labs, schwab@suse.de
   11.96 +SuSE Linux AG, Maxfeldstra&#xC3;e 5, 90409 N&#xC3;rnberg, Germany
   11.97 +Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
   11.98 +"And now for something completely different."
    12.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2 +++ b/patches/binutils/2.16.1a/130-callahan.patch	Sun Sep 11 18:18:53 2011 +0200
    12.3 @@ -0,0 +1,693 @@
    12.4 +Signed-off-by: dank@kegel.com
    12.5 +Fixes ld speed issue. 
    12.6 +See http://weblogs.mozillazine.org/roc/archives/2005/02/optimizing_gnu.html
    12.7 +See thread "Re: optimizations for 3x speedup in ld",
    12.8 +http://sources.redhat.com/ml/binutils/2005-03/msg00847.html
    12.9 +
   12.10 +Wildcard section matching enhancement, backported from the binutils CVS tree.
   12.11 +Here's the CVS log comment from the original change to ldlang.c:
   12.12 +
   12.13 +revision 1.177
   12.14 +date: 2005/04/06 15:33:02;  author: jakub;  state: Exp;  lines: +438 -51
   12.15 +2005-04-06  Jakub Jelinek  <jakub@redhat.com>
   12.16 +
   12.17 +        * ldlang.c: Formatting.
   12.18 +        (walk_wild_consider_section): Remember return value from wildcardp.
   12.19 +        (is_simple_wild): Use strcspn instead of 2 strpbrk calls and strlen.
   12.20 +        (wild_spec_can_overlap): Use strcspn instead of strpbrk and strlen.
   12.21 +
   12.22 +2005-04-06  Robert O'Callahan  <rocallahan@novell.com>
   12.23 +
   12.24 +        * ld.h (lean_section_userdata_type): Remove.
   12.25 +        (fat_section_userdata_type): Remove file field.
   12.26 +        (SECTION_USERDATA_SIZE): Remove.
   12.27 +        * ldlang.c (init_os): Eliminate initialization of unused
   12.28 +        lean_section_userdata_type.
   12.29 +
   12.30 +        * ldlang.h (callback_t, walk_wild_section_handler_t): New
   12.31 +        typedefs.
   12.32 +        (struct lang_wild_statement_struct): Add walk_wild_section_handler
   12.33 +        and handler_data fields.
   12.34 +        * ldlang.c (callback_t): Removed.
   12.35 +        (walk_wild_consider_section, walk_wild_section_general,
   12.36 +        section_iterator_callback, find_section, is_simple_wild,
   12.37 +        match_simple_wild, walk_wild_section_specs1_wild0,
   12.38 +        walk_wild_section_specs1_wild1, walk_wild_section_specs2_wild1,
   12.39 +        walk_wild_section_specs3_wild2, walk_wild_section_specs4_wild2,
   12.40 +        wild_spec_can_overlap, analyze_walk_wild_section_handler): New
   12.41 +        functions.
   12.42 +        (lang_add_wild): Call analyze_walk_wild_section_handler.
   12.43 +        (walk_wild_section): Renamed to walk_wild_section_general and
   12.44 +        created a wrapper function.
   12.45 +        (section_iterator_callback_data): New typedef.
   12.46 +
   12.47 +
   12.48 +Index: src/ld/ld.h
   12.49 +===================================================================
   12.50 +RCS file: /cvs/src/src/ld/ld.h,v
   12.51 +retrieving revision 1.26
   12.52 +retrieving revision 1.27
   12.53 +diff -u -r1.26 -r1.27
   12.54 +--- binutils/ld/ld.h.old	16 Mar 2005 21:52:42 -0000	1.26
   12.55 ++++ binutils/ld/ld.h	6 Apr 2005 15:33:02 -0000	1.27
   12.56 +@@ -1,6 +1,6 @@
   12.57 + /* ld.h -- general linker header file
   12.58 +    Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
   12.59 +-   2001, 2002, 2003, 2004
   12.60 ++   2001, 2002, 2003, 2004, 2005
   12.61 +    Free Software Foundation, Inc.
   12.62 + 
   12.63 +    This file is part of GLD, the Gnu Linker.
   12.64 +@@ -89,28 +89,15 @@
   12.65 +   struct map_symbol_def *next;
   12.66 + };
   12.67 + 
   12.68 +-/* Extra information we hold on sections */
   12.69 +-typedef struct lean_user_section_struct {
   12.70 +-  /* For output sections: pointer to the section where this data will go.  */
   12.71 +-  struct lang_input_statement_struct *file;
   12.72 +-} lean_section_userdata_type;
   12.73 +-
   12.74 + /* The initial part of fat_user_section_struct has to be idential with
   12.75 +    lean_user_section_struct.  */
   12.76 + typedef struct fat_user_section_struct {
   12.77 +-  /* For output sections: pointer to the section where this data will go.  */
   12.78 +-  struct lang_input_statement_struct *file;
   12.79 +   /* For input sections, when writing a map file: head / tail of a linked
   12.80 +      list of hash table entries for symbols defined in this section.  */
   12.81 +   struct map_symbol_def *map_symbol_def_head;
   12.82 +   struct map_symbol_def **map_symbol_def_tail;
   12.83 + } fat_section_userdata_type;
   12.84 + 
   12.85 +-#define SECTION_USERDATA_SIZE \
   12.86 +- (command_line.reduce_memory_overheads \
   12.87 +-  ? sizeof (lean_section_userdata_type) \
   12.88 +-  : sizeof (fat_section_userdata_type))
   12.89 +-
   12.90 + #define get_userdata(x) ((x)->userdata)
   12.91 + 
   12.92 + #define BYTE_SIZE	(1)
   12.93 +Index: src/ld/ldlang.c
   12.94 +===================================================================
   12.95 +RCS file: /cvs/src/src/ld/ldlang.c,v
   12.96 +retrieving revision 1.176
   12.97 +retrieving revision 1.177
   12.98 +diff -u -r1.176 -r1.177
   12.99 +--- binutils/ld/ldlang.c.old	18 Mar 2005 13:56:26 -0000	1.176
  12.100 ++++ binutils/ld/ldlang.c	6 Apr 2005 15:33:02 -0000	1.177
  12.101 +@@ -84,9 +84,6 @@
  12.102 + static void lang_record_phdrs (void);
  12.103 + static void lang_do_version_exports_section (void);
  12.104 + 
  12.105 +-typedef void (*callback_t) (lang_wild_statement_type *, struct wildcard_list *,
  12.106 +-			    asection *, lang_input_statement_type *, void *);
  12.107 +-
  12.108 + /* Exported variables.  */
  12.109 + lang_output_section_statement_type *abs_output_section;
  12.110 + lang_statement_list_type lang_output_section_statement;
  12.111 +@@ -155,21 +152,71 @@
  12.112 + 
  12.113 + /* Generic traversal routines for finding matching sections.  */
  12.114 + 
  12.115 ++/* Try processing a section against a wildcard.  This just calls
  12.116 ++   the callback unless the filename exclusion list is present
  12.117 ++   and excludes the file.  It's hardly ever present so this
  12.118 ++   function is very fast.  */
  12.119 ++
  12.120 ++static void
  12.121 ++walk_wild_consider_section (lang_wild_statement_type *ptr,
  12.122 ++			    lang_input_statement_type *file,
  12.123 ++			    asection *s,
  12.124 ++			    struct wildcard_list *sec,
  12.125 ++			    callback_t callback,
  12.126 ++			    void *data)
  12.127 ++{
  12.128 ++  bfd_boolean skip = FALSE;
  12.129 ++  struct name_list *list_tmp;
  12.130 ++
  12.131 ++  /* Don't process sections from files which were
  12.132 ++     excluded.  */
  12.133 ++  for (list_tmp = sec->spec.exclude_name_list;
  12.134 ++       list_tmp;
  12.135 ++       list_tmp = list_tmp->next)
  12.136 ++    {
  12.137 ++      bfd_boolean is_wildcard = wildcardp (list_tmp->name);
  12.138 ++      if (is_wildcard)
  12.139 ++	skip = fnmatch (list_tmp->name, file->filename, 0) == 0;
  12.140 ++      else
  12.141 ++	skip = strcmp (list_tmp->name, file->filename) == 0;
  12.142 ++
  12.143 ++      /* If this file is part of an archive, and the archive is
  12.144 ++	 excluded, exclude this file.  */
  12.145 ++      if (! skip && file->the_bfd != NULL
  12.146 ++	  && file->the_bfd->my_archive != NULL
  12.147 ++	  && file->the_bfd->my_archive->filename != NULL)
  12.148 ++	{
  12.149 ++	  if (is_wildcard)
  12.150 ++	    skip = fnmatch (list_tmp->name,
  12.151 ++			    file->the_bfd->my_archive->filename,
  12.152 ++			    0) == 0;
  12.153 ++	  else
  12.154 ++	    skip = strcmp (list_tmp->name,
  12.155 ++			   file->the_bfd->my_archive->filename) == 0;
  12.156 ++	}
  12.157 ++
  12.158 ++      if (skip)
  12.159 ++	break;
  12.160 ++    }
  12.161 ++
  12.162 ++  if (!skip)
  12.163 ++    (*callback) (ptr, sec, s, file, data);
  12.164 ++}
  12.165 ++
  12.166 ++/* Lowest common denominator routine that can handle everything correctly,
  12.167 ++   but slowly.  */
  12.168 ++
  12.169 + static void
  12.170 +-walk_wild_section (lang_wild_statement_type *ptr,
  12.171 +-		   lang_input_statement_type *file,
  12.172 +-		   callback_t callback,
  12.173 +-		   void *data)
  12.174 ++walk_wild_section_general (lang_wild_statement_type *ptr,
  12.175 ++			   lang_input_statement_type *file,
  12.176 ++			   callback_t callback,
  12.177 ++			   void *data)
  12.178 + {
  12.179 +   asection *s;
  12.180 +-
  12.181 +-  if (file->just_syms_flag)
  12.182 +-    return;
  12.183 ++  struct wildcard_list *sec;
  12.184 + 
  12.185 +   for (s = file->the_bfd->sections; s != NULL; s = s->next)
  12.186 +     {
  12.187 +-      struct wildcard_list *sec;
  12.188 +-
  12.189 +       sec = ptr->section_list;
  12.190 +       if (sec == NULL)
  12.191 + 	(*callback) (ptr, sec, s, file, data);
  12.192 +@@ -177,39 +224,8 @@
  12.193 +       while (sec != NULL)
  12.194 + 	{
  12.195 + 	  bfd_boolean skip = FALSE;
  12.196 +-	  struct name_list *list_tmp;
  12.197 + 
  12.198 +-	  /* Don't process sections from files which were
  12.199 +-	     excluded.  */
  12.200 +-	  for (list_tmp = sec->spec.exclude_name_list;
  12.201 +-	       list_tmp;
  12.202 +-	       list_tmp = list_tmp->next)
  12.203 +-	    {
  12.204 +-	      if (wildcardp (list_tmp->name))
  12.205 +-		skip = fnmatch (list_tmp->name, file->filename, 0) == 0;
  12.206 +-	      else
  12.207 +-		skip = strcmp (list_tmp->name, file->filename) == 0;
  12.208 +-
  12.209 +-	      /* If this file is part of an archive, and the archive is
  12.210 +-		 excluded, exclude this file.  */
  12.211 +-	      if (! skip && file->the_bfd != NULL
  12.212 +-		  && file->the_bfd->my_archive != NULL
  12.213 +-		  && file->the_bfd->my_archive->filename != NULL)
  12.214 +-		{
  12.215 +-		  if (wildcardp (list_tmp->name))
  12.216 +-		    skip = fnmatch (list_tmp->name,
  12.217 +-				    file->the_bfd->my_archive->filename,
  12.218 +-				    0) == 0;
  12.219 +-		  else
  12.220 +-		    skip = strcmp (list_tmp->name,
  12.221 +-				   file->the_bfd->my_archive->filename) == 0;
  12.222 +-		}
  12.223 +-
  12.224 +-	      if (skip)
  12.225 +-		break;
  12.226 +-	    }
  12.227 +-
  12.228 +-	  if (!skip && sec->spec.name != NULL)
  12.229 ++	  if (sec->spec.name != NULL)
  12.230 + 	    {
  12.231 + 	      const char *sname = bfd_get_section_name (file->the_bfd, s);
  12.232 + 
  12.233 +@@ -220,13 +236,381 @@
  12.234 + 	    }
  12.235 + 
  12.236 + 	  if (!skip)
  12.237 +-	    (*callback) (ptr, sec, s, file, data);
  12.238 ++	    walk_wild_consider_section (ptr, file, s, sec, callback, data);
  12.239 + 
  12.240 + 	  sec = sec->next;
  12.241 + 	}
  12.242 +     }
  12.243 + }
  12.244 + 
  12.245 ++/* Routines to find a single section given its name.  If there's more
  12.246 ++   than one section with that name, we report that.  */
  12.247 ++
  12.248 ++typedef struct
  12.249 ++{
  12.250 ++  asection *found_section;
  12.251 ++  bfd_boolean multiple_sections_found;
  12.252 ++} section_iterator_callback_data;
  12.253 ++
  12.254 ++static bfd_boolean
  12.255 ++section_iterator_callback (bfd *bfd ATTRIBUTE_UNUSED, asection *s, void *data)
  12.256 ++{
  12.257 ++  section_iterator_callback_data *d = data;
  12.258 ++
  12.259 ++  if (d->found_section != NULL)
  12.260 ++    {
  12.261 ++      d->multiple_sections_found = TRUE;
  12.262 ++      return TRUE;
  12.263 ++    }
  12.264 ++
  12.265 ++  d->found_section = s;
  12.266 ++  return FALSE;
  12.267 ++}
  12.268 ++
  12.269 ++static asection *
  12.270 ++find_section (lang_input_statement_type *file,
  12.271 ++	      struct wildcard_list *sec,
  12.272 ++	      bfd_boolean *multiple_sections_found)
  12.273 ++{
  12.274 ++  section_iterator_callback_data cb_data = { NULL, FALSE };
  12.275 ++
  12.276 ++  bfd_get_section_by_name_if (file->the_bfd, sec->spec.name, 
  12.277 ++			      section_iterator_callback, &cb_data);
  12.278 ++  *multiple_sections_found = cb_data.multiple_sections_found;
  12.279 ++  return cb_data.found_section;
  12.280 ++}
  12.281 ++
  12.282 ++/* Code for handling simple wildcards without going through fnmatch,
  12.283 ++   which can be expensive because of charset translations etc.  */
  12.284 ++
  12.285 ++/* A simple wild is a literal string followed by a single '*',
  12.286 ++   where the literal part is at least 4 characters long.  */
  12.287 ++
  12.288 ++static bfd_boolean
  12.289 ++is_simple_wild (const char *name)
  12.290 ++{
  12.291 ++  size_t len = strcspn (name, "*?[");
  12.292 ++  return len >= 4 && name[len] == '*' && name[len + 1] == '\0';
  12.293 ++}
  12.294 ++
  12.295 ++static bfd_boolean
  12.296 ++match_simple_wild (const char *pattern, const char *name)
  12.297 ++{
  12.298 ++  /* The first four characters of the pattern are guaranteed valid
  12.299 ++     non-wildcard characters.  So we can go faster.  */
  12.300 ++  if (pattern[0] != name[0] || pattern[1] != name[1]
  12.301 ++      || pattern[2] != name[2] || pattern[3] != name[3])
  12.302 ++    return FALSE;
  12.303 ++
  12.304 ++  pattern += 4;
  12.305 ++  name += 4;
  12.306 ++  while (*pattern != '*')
  12.307 ++    if (*name++ != *pattern++)
  12.308 ++      return FALSE;
  12.309 ++
  12.310 ++  return TRUE;
  12.311 ++}
  12.312 ++
  12.313 ++/* Specialized, optimized routines for handling different kinds of
  12.314 ++   wildcards */
  12.315 ++
  12.316 ++static void
  12.317 ++walk_wild_section_specs1_wild0 (lang_wild_statement_type *ptr,
  12.318 ++				lang_input_statement_type *file,
  12.319 ++				callback_t callback,
  12.320 ++				void *data)
  12.321 ++{
  12.322 ++  /* We can just do a hash lookup for the section with the right name.
  12.323 ++     But if that lookup discovers more than one section with the name
  12.324 ++     (should be rare), we fall back to the general algorithm because
  12.325 ++     we would otherwise have to sort the sections to make sure they
  12.326 ++     get processed in the bfd's order.  */
  12.327 ++  bfd_boolean multiple_sections_found;
  12.328 ++  struct wildcard_list *sec0 = ptr->handler_data[0];
  12.329 ++  asection *s0 = find_section (file, sec0, &multiple_sections_found);
  12.330 ++
  12.331 ++  if (multiple_sections_found)
  12.332 ++    walk_wild_section_general (ptr, file, callback, data);
  12.333 ++  else if (s0)
  12.334 ++    walk_wild_consider_section (ptr, file, s0, sec0, callback, data);
  12.335 ++}
  12.336 ++
  12.337 ++static void
  12.338 ++walk_wild_section_specs1_wild1 (lang_wild_statement_type *ptr,
  12.339 ++				lang_input_statement_type *file,
  12.340 ++				callback_t callback,
  12.341 ++				void *data)
  12.342 ++{
  12.343 ++  asection *s;
  12.344 ++  struct wildcard_list *wildsec0 = ptr->handler_data[0];
  12.345 ++
  12.346 ++  for (s = file->the_bfd->sections; s != NULL; s = s->next)
  12.347 ++    {
  12.348 ++      const char *sname = bfd_get_section_name (file->the_bfd, s);
  12.349 ++      bfd_boolean skip = !match_simple_wild (wildsec0->spec.name, sname);
  12.350 ++
  12.351 ++      if (!skip)
  12.352 ++	walk_wild_consider_section (ptr, file, s, wildsec0, callback, data);
  12.353 ++    }
  12.354 ++}
  12.355 ++
  12.356 ++static void
  12.357 ++walk_wild_section_specs2_wild1 (lang_wild_statement_type *ptr,
  12.358 ++				lang_input_statement_type *file,
  12.359 ++				callback_t callback,
  12.360 ++				void *data)
  12.361 ++{
  12.362 ++  asection *s;
  12.363 ++  struct wildcard_list *sec0 = ptr->handler_data[0];
  12.364 ++  struct wildcard_list *wildsec1 = ptr->handler_data[1];
  12.365 ++  bfd_boolean multiple_sections_found;
  12.366 ++  asection *s0 = find_section (file, sec0, &multiple_sections_found);
  12.367 ++
  12.368 ++  if (multiple_sections_found)
  12.369 ++    {
  12.370 ++      walk_wild_section_general (ptr, file, callback, data);
  12.371 ++      return;
  12.372 ++    }
  12.373 ++
  12.374 ++  /* Note that if the section was not found, s0 is NULL and
  12.375 ++     we'll simply never succeed the s == s0 test below.  */
  12.376 ++  for (s = file->the_bfd->sections; s != NULL; s = s->next)
  12.377 ++    {
  12.378 ++      /* Recall that in this code path, a section cannot satisfy more
  12.379 ++	 than one spec, so if s == s0 then it cannot match
  12.380 ++	 wildspec1.  */
  12.381 ++      if (s == s0)
  12.382 ++	walk_wild_consider_section (ptr, file, s, sec0, callback, data);
  12.383 ++      else
  12.384 ++	{
  12.385 ++	  const char *sname = bfd_get_section_name (file->the_bfd, s);
  12.386 ++	  bfd_boolean skip = !match_simple_wild (wildsec1->spec.name, sname);
  12.387 ++
  12.388 ++	  if (!skip)
  12.389 ++	    walk_wild_consider_section (ptr, file, s, wildsec1, callback,
  12.390 ++					data);
  12.391 ++	}
  12.392 ++    }
  12.393 ++}
  12.394 ++
  12.395 ++static void
  12.396 ++walk_wild_section_specs3_wild2 (lang_wild_statement_type *ptr,
  12.397 ++				lang_input_statement_type *file,
  12.398 ++				callback_t callback,
  12.399 ++				void *data)
  12.400 ++{
  12.401 ++  asection *s;
  12.402 ++  struct wildcard_list *sec0 = ptr->handler_data[0];
  12.403 ++  struct wildcard_list *wildsec1 = ptr->handler_data[1];
  12.404 ++  struct wildcard_list *wildsec2 = ptr->handler_data[2];
  12.405 ++  bfd_boolean multiple_sections_found;
  12.406 ++  asection *s0 = find_section (file, sec0, &multiple_sections_found);
  12.407 ++
  12.408 ++  if (multiple_sections_found)
  12.409 ++    {
  12.410 ++      walk_wild_section_general (ptr, file, callback, data);
  12.411 ++      return;
  12.412 ++    }
  12.413 ++
  12.414 ++  for (s = file->the_bfd->sections; s != NULL; s = s->next)
  12.415 ++    {
  12.416 ++      if (s == s0)
  12.417 ++	walk_wild_consider_section (ptr, file, s, sec0, callback, data);
  12.418 ++      else
  12.419 ++	{
  12.420 ++	  const char *sname = bfd_get_section_name (file->the_bfd, s);
  12.421 ++	  bfd_boolean skip = !match_simple_wild (wildsec1->spec.name, sname);
  12.422 ++
  12.423 ++	  if (!skip)
  12.424 ++	    walk_wild_consider_section (ptr, file, s, wildsec1, callback, data);
  12.425 ++	  else
  12.426 ++	    {
  12.427 ++	      skip = !match_simple_wild (wildsec2->spec.name, sname);
  12.428 ++	      if (!skip)
  12.429 ++		walk_wild_consider_section (ptr, file, s, wildsec2, callback,
  12.430 ++					    data);
  12.431 ++	    }
  12.432 ++	}
  12.433 ++    }
  12.434 ++}
  12.435 ++
  12.436 ++static void
  12.437 ++walk_wild_section_specs4_wild2 (lang_wild_statement_type *ptr,
  12.438 ++				lang_input_statement_type *file,
  12.439 ++				callback_t callback,
  12.440 ++				void *data)
  12.441 ++{
  12.442 ++  asection *s;
  12.443 ++  struct wildcard_list *sec0 = ptr->handler_data[0];
  12.444 ++  struct wildcard_list *sec1 = ptr->handler_data[1];
  12.445 ++  struct wildcard_list *wildsec2 = ptr->handler_data[2];
  12.446 ++  struct wildcard_list *wildsec3 = ptr->handler_data[3];
  12.447 ++  bfd_boolean multiple_sections_found;
  12.448 ++  asection *s0 = find_section (file, sec0, &multiple_sections_found), *s1;
  12.449 ++
  12.450 ++  if (multiple_sections_found)
  12.451 ++    {
  12.452 ++      walk_wild_section_general (ptr, file, callback, data);
  12.453 ++      return;
  12.454 ++    }
  12.455 ++
  12.456 ++  s1 = find_section (file, sec1, &multiple_sections_found);
  12.457 ++  if (multiple_sections_found)
  12.458 ++    {
  12.459 ++      walk_wild_section_general (ptr, file, callback, data);
  12.460 ++      return;
  12.461 ++    }
  12.462 ++
  12.463 ++  for (s = file->the_bfd->sections; s != NULL; s = s->next)
  12.464 ++    {
  12.465 ++      if (s == s0)
  12.466 ++	walk_wild_consider_section (ptr, file, s, sec0, callback, data);
  12.467 ++      else
  12.468 ++	if (s == s1)
  12.469 ++	  walk_wild_consider_section (ptr, file, s, sec1, callback, data);
  12.470 ++	else
  12.471 ++	  {
  12.472 ++	    const char *sname = bfd_get_section_name (file->the_bfd, s);
  12.473 ++	    bfd_boolean skip = !match_simple_wild (wildsec2->spec.name,
  12.474 ++						   sname);
  12.475 ++
  12.476 ++	    if (!skip)
  12.477 ++	      walk_wild_consider_section (ptr, file, s, wildsec2, callback,
  12.478 ++					  data);
  12.479 ++	    else
  12.480 ++	      {
  12.481 ++		skip = !match_simple_wild (wildsec3->spec.name, sname);
  12.482 ++		if (!skip)
  12.483 ++		  walk_wild_consider_section (ptr, file, s, wildsec3,
  12.484 ++					      callback, data);
  12.485 ++	      }
  12.486 ++	  }
  12.487 ++    }
  12.488 ++}
  12.489 ++
  12.490 ++static void
  12.491 ++walk_wild_section (lang_wild_statement_type *ptr,
  12.492 ++		   lang_input_statement_type *file,
  12.493 ++		   callback_t callback,
  12.494 ++		   void *data)
  12.495 ++{
  12.496 ++  if (file->just_syms_flag)
  12.497 ++    return;
  12.498 ++
  12.499 ++  (*ptr->walk_wild_section_handler) (ptr, file, callback, data);
  12.500 ++}
  12.501 ++
  12.502 ++/* Returns TRUE when name1 is a wildcard spec that might match
  12.503 ++   something name2 can match.  We're conservative: we return FALSE
  12.504 ++   only if the prefixes of name1 and name2 are different up to the
  12.505 ++   first wildcard character.  */
  12.506 ++
  12.507 ++static bfd_boolean
  12.508 ++wild_spec_can_overlap (const char *name1, const char *name2)
  12.509 ++{
  12.510 ++  size_t prefix1_len = strcspn (name1, "?*[");
  12.511 ++  size_t prefix2_len = strcspn (name2, "?*[");
  12.512 ++  size_t min_prefix_len;
  12.513 ++
  12.514 ++  /* Note that if there is no wildcard character, then we treat the
  12.515 ++     terminating 0 as part of the prefix.  Thus ".text" won't match
  12.516 ++     ".text." or ".text.*", for example.  */
  12.517 ++  if (name1[prefix1_len] == '\0')
  12.518 ++    prefix1_len++;
  12.519 ++  if (name2[prefix2_len] == '\0')
  12.520 ++    prefix2_len++;
  12.521 ++
  12.522 ++  min_prefix_len = prefix1_len < prefix2_len ? prefix1_len : prefix2_len;
  12.523 ++
  12.524 ++  return memcmp (name1, name2, min_prefix_len) == 0;
  12.525 ++}
  12.526 ++
  12.527 ++/* Select specialized code to handle various kinds of wildcard
  12.528 ++   statements.  */
  12.529 ++
  12.530 ++static void
  12.531 ++analyze_walk_wild_section_handler (lang_wild_statement_type *ptr)
  12.532 ++{
  12.533 ++  int sec_count = 0;
  12.534 ++  int wild_name_count = 0;
  12.535 ++  struct wildcard_list *sec;
  12.536 ++  int signature;
  12.537 ++  int data_counter;
  12.538 ++
  12.539 ++  ptr->walk_wild_section_handler = walk_wild_section_general;
  12.540 ++
  12.541 ++  /* Count how many wildcard_specs there are, and how many of those
  12.542 ++     actually use wildcards in the name.  Also, bail out if any of the
  12.543 ++     wildcard names are NULL. (Can this actually happen?
  12.544 ++     walk_wild_section used to test for it.)  And bail out if any
  12.545 ++     of the wildcards are more complex than a simple string
  12.546 ++     ending in a single '*'.  */
  12.547 ++  for (sec = ptr->section_list; sec != NULL; sec = sec->next)
  12.548 ++    {
  12.549 ++      ++sec_count;
  12.550 ++      if (sec->spec.name == NULL)
  12.551 ++	return;
  12.552 ++      if (wildcardp (sec->spec.name))
  12.553 ++	{
  12.554 ++	  ++wild_name_count;
  12.555 ++	  if (!is_simple_wild (sec->spec.name))
  12.556 ++	    return;
  12.557 ++	}
  12.558 ++    }
  12.559 ++
  12.560 ++  /* The zero-spec case would be easy to optimize but it doesn't
  12.561 ++     happen in practice.  Likewise, more than 4 specs doesn't
  12.562 ++     happen in practice.  */
  12.563 ++  if (sec_count == 0 || sec_count > 4)
  12.564 ++    return;
  12.565 ++
  12.566 ++  /* Check that no two specs can match the same section.  */
  12.567 ++  for (sec = ptr->section_list; sec != NULL; sec = sec->next)
  12.568 ++    {
  12.569 ++      struct wildcard_list *sec2;
  12.570 ++      for (sec2 = sec->next; sec2 != NULL; sec2 = sec2->next)
  12.571 ++	{
  12.572 ++	  if (wild_spec_can_overlap (sec->spec.name, sec2->spec.name))
  12.573 ++	    return;
  12.574 ++	}
  12.575 ++    }
  12.576 ++
  12.577 ++  signature = (sec_count << 8) + wild_name_count;
  12.578 ++  switch (signature)
  12.579 ++    {
  12.580 ++    case 0x0100:
  12.581 ++      ptr->walk_wild_section_handler = walk_wild_section_specs1_wild0;
  12.582 ++      break;
  12.583 ++    case 0x0101:
  12.584 ++      ptr->walk_wild_section_handler = walk_wild_section_specs1_wild1;
  12.585 ++      break;
  12.586 ++    case 0x0201:
  12.587 ++      ptr->walk_wild_section_handler = walk_wild_section_specs2_wild1;
  12.588 ++      break;
  12.589 ++    case 0x0302:
  12.590 ++      ptr->walk_wild_section_handler = walk_wild_section_specs3_wild2;
  12.591 ++      break;
  12.592 ++    case 0x0402:
  12.593 ++      ptr->walk_wild_section_handler = walk_wild_section_specs4_wild2;
  12.594 ++      break;
  12.595 ++    default:
  12.596 ++      return;
  12.597 ++    }
  12.598 ++
  12.599 ++  /* Now fill the data array with pointers to the specs, first the
  12.600 ++     specs with non-wildcard names, then the specs with wildcard
  12.601 ++     names.  It's OK to process the specs in different order from the
  12.602 ++     given order, because we've already determined that no section
  12.603 ++     will match more than one spec.  */
  12.604 ++  data_counter = 0;
  12.605 ++  for (sec = ptr->section_list; sec != NULL; sec = sec->next)
  12.606 ++    if (!wildcardp (sec->spec.name))
  12.607 ++      ptr->handler_data[data_counter++] = sec;
  12.608 ++  for (sec = ptr->section_list; sec != NULL; sec = sec->next)
  12.609 ++    if (wildcardp (sec->spec.name))
  12.610 ++      ptr->handler_data[data_counter++] = sec;
  12.611 ++}
  12.612 ++
  12.613 + /* Handle a wild statement for a single file F.  */
  12.614 + 
  12.615 + static void
  12.616 +@@ -1175,17 +1559,12 @@
  12.617 + static void
  12.618 + init_os (lang_output_section_statement_type *s)
  12.619 + {
  12.620 +-  lean_section_userdata_type *new;
  12.621 +-
  12.622 +   if (s->bfd_section != NULL)
  12.623 +     return;
  12.624 + 
  12.625 +   if (strcmp (s->name, DISCARD_SECTION_NAME) == 0)
  12.626 +     einfo (_("%P%F: Illegal use of `%s' section\n"), DISCARD_SECTION_NAME);
  12.627 + 
  12.628 +-  new = stat_alloc (SECTION_USERDATA_SIZE);
  12.629 +-  memset (new, 0, SECTION_USERDATA_SIZE);
  12.630 +-
  12.631 +   s->bfd_section = bfd_get_section_by_name (output_bfd, s->name);
  12.632 +   if (s->bfd_section == NULL)
  12.633 +     s->bfd_section = bfd_make_section (output_bfd, s->name);
  12.634 +@@ -1199,7 +1578,14 @@
  12.635 +   /* We initialize an output sections output offset to minus its own
  12.636 +      vma to allow us to output a section through itself.  */
  12.637 +   s->bfd_section->output_offset = 0;
  12.638 +-  get_userdata (s->bfd_section) = new;
  12.639 ++  if (!command_line.reduce_memory_overheads)
  12.640 ++    {
  12.641 ++      fat_section_userdata_type *new
  12.642 ++	= stat_alloc (sizeof (fat_section_userdata_type));
  12.643 ++      memset (new, 0, sizeof (fat_section_userdata_type));
  12.644 ++      get_userdata (s->bfd_section) = new;
  12.645 ++    }
  12.646 ++
  12.647 + 
  12.648 +   /* If there is a base address, make sure that any sections it might
  12.649 +      mention are initialized.  */
  12.650 +@@ -4939,6 +5325,7 @@
  12.651 +   new->section_list = section_list;
  12.652 +   new->keep_sections = keep_sections;
  12.653 +   lang_list_init (&new->children);
  12.654 ++  analyze_walk_wild_section_handler (new);
  12.655 + }
  12.656 + 
  12.657 + void
  12.658 +Index: src/ld/ldlang.h
  12.659 +===================================================================
  12.660 +RCS file: /cvs/src/src/ld/ldlang.h,v
  12.661 +retrieving revision 1.44
  12.662 +retrieving revision 1.45
  12.663 +diff -u -r1.44 -r1.45
  12.664 +--- binutils/ld/ldlang.h.old	3 Mar 2005 11:51:58 -0000	1.44
  12.665 ++++ binutils/ld/ldlang.h	6 Apr 2005 15:33:03 -0000	1.45
  12.666 +@@ -298,7 +298,17 @@
  12.667 +   union lang_statement_union *file;
  12.668 + } lang_afile_asection_pair_statement_type;
  12.669 + 
  12.670 +-typedef struct lang_wild_statement_struct
  12.671 ++typedef struct lang_wild_statement_struct lang_wild_statement_type;
  12.672 ++
  12.673 ++typedef void (*callback_t) (lang_wild_statement_type *, struct wildcard_list *,
  12.674 ++			    asection *, lang_input_statement_type *, void *);
  12.675 ++
  12.676 ++typedef void (*walk_wild_section_handler_t) (lang_wild_statement_type *,
  12.677 ++					     lang_input_statement_type *,
  12.678 ++					     callback_t callback,
  12.679 ++					     void *data);
  12.680 ++
  12.681 ++struct lang_wild_statement_struct
  12.682 + {
  12.683 +   lang_statement_header_type header;
  12.684 +   const char *filename;
  12.685 +@@ -306,7 +316,10 @@
  12.686 +   struct wildcard_list *section_list;
  12.687 +   bfd_boolean keep_sections;
  12.688 +   lang_statement_list_type children;
  12.689 +-} lang_wild_statement_type;
  12.690 ++
  12.691 ++  walk_wild_section_handler_t walk_wild_section_handler;
  12.692 ++  struct wildcard_list *handler_data[4];
  12.693 ++};
  12.694 + 
  12.695 + typedef struct lang_address_statement_struct
  12.696 + {
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/patches/binutils/2.16.1a/140-cross-gprof.patch	Sun Sep 11 18:18:53 2011 +0200
    13.3 @@ -0,0 +1,22 @@
    13.4 +--- binutils-2.15/configure.old	2004-07-21 21:36:47.000000000 -0700
    13.5 ++++ binutils-2.15/configure	2004-07-21 21:37:08.000000000 -0700
    13.6 +@@ -999,7 +999,7 @@
    13.7 + 
    13.8 + # Some tools are only suitable for building in a "native" situation.
    13.9 + # Remove these if host!=target.  
   13.10 +-native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff gprof target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   13.11 ++native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   13.12 + 
   13.13 + # Similarly, some are only suitable for cross toolchains.
   13.14 + # Remove these if host=target.
   13.15 +--- binutils-2.15/configure.in.old	2004-07-21 21:37:19.000000000 -0700
   13.16 ++++ binutils-2.15/configure.in	2004-07-21 21:37:34.000000000 -0700
   13.17 +@@ -236,7 +236,7 @@
   13.18 + 
   13.19 + # Some tools are only suitable for building in a "native" situation.
   13.20 + # Remove these if host!=target.  
   13.21 +-native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff gprof target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   13.22 ++native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   13.23 + 
   13.24 + # Similarly, some are only suitable for cross toolchains.
   13.25 + # Remove these if host=target.
    14.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2 +++ b/patches/binutils/2.16.1a/150-stabs-tweak.patch	Sun Sep 11 18:18:53 2011 +0200
    14.3 @@ -0,0 +1,28 @@
    14.4 +Signed-off-by: dank@kegel.com
    14.5 +
    14.6 +See http://sourceware.org/ml/binutils/2005-12/msg00270.html
    14.7 +http://sourceware.org/ml/binutils-cvs/2005-12/msg00139.html
    14.8 +
    14.9 +STABS hash table size change, backported from the binutils CVS tree.  Here's
   14.10 +the CVS log comment for the original change:
   14.11 +
   14.12 +revision 1.25
   14.13 +date: 2005/12/29 10:29:23;  author: nickc;  state: Exp;  lines: +2 -3
   14.14 +(_bfd_link_section_stabs): Use bfd_hash_table_init rather than
   14.15 +bfd_hash_table_init_n(...,251) so that the size of the hash table can be
   14.16 +controlled by the user.
   14.17 +
   14.18 +--- binutils/bfd/stabs.c.old	4 May 2005 15:53:39 -0000	1.24
   14.19 ++++ binutils/bfd/stabs.c	29 Dec 2005 10:29:23 -0000	1.25
   14.20 +@@ -194,9 +194,8 @@
   14.21 + 	goto error_return;
   14.22 +       /* Make sure the first byte is zero.  */
   14.23 +       (void) _bfd_stringtab_add (sinfo->strings, "", TRUE, TRUE);
   14.24 +-      if (! bfd_hash_table_init_n (&sinfo->includes,
   14.25 +-				   stab_link_includes_newfunc,
   14.26 +-				   251))
   14.27 ++      if (! bfd_hash_table_init (&sinfo->includes,
   14.28 ++				 stab_link_includes_newfunc))
   14.29 + 	goto error_return;
   14.30 +       sinfo->stabstr = bfd_make_section_anyway (abfd, ".stabstr");
   14.31 +       if (sinfo->stabstr == NULL)
    15.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.2 +++ b/patches/binutils/2.16.1a/160-i386-no-divide-comment.patch	Sun Sep 11 18:18:53 2011 +0200
    15.3 @@ -0,0 +1,40 @@
    15.4 +diff -durN binutils-2.16.1.orig/gas/config/tc-i386.c binutils-2.16.1/gas/config/tc-i386.c
    15.5 +--- binutils-2.16.1.orig/gas/config/tc-i386.c	2005-04-13 19:58:42.000000000 +0200
    15.6 ++++ binutils-2.16.1/gas/config/tc-i386.c	2008-09-22 09:00:09.000000000 +0200
    15.7 +@@ -192,16 +192,10 @@
    15.8 + #endif
    15.9 + 	;
   15.10 + 
   15.11 +-#if (defined (TE_I386AIX)				\
   15.12 +-     || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF))	\
   15.13 +-	 && !defined (TE_LINUX)				\
   15.14 +- 	 && !defined (TE_NETWARE)			\
   15.15 +-	 && !defined (TE_FreeBSD)			\
   15.16 +-	 && !defined (TE_NetBSD)))
   15.17 + /* This array holds the chars that always start a comment.  If the
   15.18 +    pre-processor is disabled, these aren't very useful.  */
   15.19 +-const char comment_chars[] = "#/";
   15.20 +-#define PREFIX_SEPARATOR '\\'
   15.21 ++const char comment_chars[] = "#";
   15.22 ++#define PREFIX_SEPARATOR '/'
   15.23 + 
   15.24 + /* This array holds the chars that only start a comment at the beginning of
   15.25 +    a line.  If the line seems to have the form '# 123 filename'
   15.26 +@@ -211,16 +205,7 @@
   15.27 +    #NO_APP at the beginning of its output.
   15.28 +    Also note that comments started like this one will always work if
   15.29 +    '/' isn't otherwise defined.  */
   15.30 +-const char line_comment_chars[] = "#";
   15.31 +-
   15.32 +-#else
   15.33 +-/* Putting '/' here makes it impossible to use the divide operator.
   15.34 +-   However, we need it for compatibility with SVR4 systems.  */
   15.35 +-const char comment_chars[] = "#";
   15.36 +-#define PREFIX_SEPARATOR '/'
   15.37 +-
   15.38 +-const char line_comment_chars[] = "/#";
   15.39 +-#endif
   15.40 ++const char line_comment_chars[] = "#/";
   15.41 + 
   15.42 + const char line_separator_chars[] = ";";
   15.43 + 
    16.1 --- a/patches/binutils/2.17/100-uclibc-conf.patch	Sun Sep 11 18:26:12 2011 +0200
    16.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.3 @@ -1,149 +0,0 @@
    16.4 -diff -dur binutils-2.17.old/bfd/configure binutils-2.17/bfd/configure
    16.5 ---- binutils-2.17.old/bfd/configure	2006-06-23 20:17:03.000000000 +0200
    16.6 -+++ binutils-2.17/bfd/configure	2007-05-01 18:26:03.000000000 +0200
    16.7 -@@ -3576,7 +3576,7 @@
    16.8 -   ;;
    16.9 - 
   16.10 - # This must be Linux ELF.
   16.11 --linux-gnu*)
   16.12 -+linux-gnu*|linux-uclibc*)
   16.13 -   lt_cv_deplibs_check_method=pass_all
   16.14 -   ;;
   16.15 - 
   16.16 -diff -dur binutils-2.17.old/binutils/configure binutils-2.17/binutils/configure
   16.17 ---- binutils-2.17.old/binutils/configure	2006-04-06 23:49:29.000000000 +0200
   16.18 -+++ binutils-2.17/binutils/configure	2007-05-01 18:26:03.000000000 +0200
   16.19 -@@ -3411,7 +3411,7 @@
   16.20 -   ;;
   16.21 - 
   16.22 - # This must be Linux ELF.
   16.23 --linux-gnu*)
   16.24 -+linux-gnu*|linux-uclibc*)
   16.25 -   lt_cv_deplibs_check_method=pass_all
   16.26 -   ;;
   16.27 - 
   16.28 -diff -dur binutils-2.17.old/configure binutils-2.17/configure
   16.29 ---- binutils-2.17.old/configure	2006-04-06 23:49:25.000000000 +0200
   16.30 -+++ binutils-2.17/configure	2007-05-01 18:26:03.000000000 +0200
   16.31 -@@ -1276,7 +1276,7 @@
   16.32 -   am33_2.0-*-linux*)
   16.33 -     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   16.34 -     ;;
   16.35 --  sh-*-linux*)
   16.36 -+  sh*-*-linux*)
   16.37 -     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   16.38 -     ;;    
   16.39 -   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
   16.40 -@@ -1584,7 +1584,7 @@
   16.41 -   romp-*-*)
   16.42 -     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
   16.43 -     ;;
   16.44 --  sh-*-* | sh64-*-*)
   16.45 -+  sh*-*-* | sh64-*-*)
   16.46 -     case "${host}" in
   16.47 -       i[3456789]86-*-vsta) ;; # don't add gprof back in
   16.48 -       i[3456789]86-*-go32*) ;; # don't add gprof back in
   16.49 -diff -dur binutils-2.17.old/configure.in binutils-2.17/configure.in
   16.50 ---- binutils-2.17.old/configure.in	2006-06-23 20:19:53.000000000 +0200
   16.51 -+++ binutils-2.17/configure.in	2007-05-01 18:26:03.000000000 +0200
   16.52 -@@ -468,7 +468,7 @@
   16.53 -   am33_2.0-*-linux*)
   16.54 -     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   16.55 -     ;;
   16.56 --  sh-*-linux*)
   16.57 -+  sh*-*-linux*)
   16.58 -     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   16.59 -     ;;    
   16.60 -   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
   16.61 -@@ -776,7 +776,7 @@
   16.62 -   romp-*-*)
   16.63 -     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
   16.64 -     ;;
   16.65 --  sh-*-* | sh64-*-*)
   16.66 -+  sh*-*-* | sh64-*-*)
   16.67 -     case "${host}" in
   16.68 -       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
   16.69 -       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
   16.70 -diff -dur binutils-2.17.old/gas/configure binutils-2.17/gas/configure
   16.71 ---- binutils-2.17.old/gas/configure	2006-04-06 23:49:31.000000000 +0200
   16.72 -+++ binutils-2.17/gas/configure	2007-05-01 18:26:03.000000000 +0200
   16.73 -@@ -3411,7 +3411,7 @@
   16.74 -   ;;
   16.75 - 
   16.76 - # This must be Linux ELF.
   16.77 --linux-gnu*)
   16.78 -+linux-gnu*|linux-uclibc*)
   16.79 -   lt_cv_deplibs_check_method=pass_all
   16.80 -   ;;
   16.81 - 
   16.82 -diff -dur binutils-2.17.old/gprof/configure binutils-2.17/gprof/configure
   16.83 ---- binutils-2.17.old/gprof/configure	2006-04-06 23:49:33.000000000 +0200
   16.84 -+++ binutils-2.17/gprof/configure	2007-05-01 18:26:03.000000000 +0200
   16.85 -@@ -3414,6 +3414,11 @@
   16.86 -   lt_cv_deplibs_check_method=pass_all
   16.87 -   ;;
   16.88 - 
   16.89 -+linux-uclibc*)
   16.90 -+  lt_cv_deplibs_check_method=pass_all
   16.91 -+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
   16.92 -+  ;;
   16.93 -+
   16.94 - netbsd* | knetbsd*-gnu)
   16.95 -   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
   16.96 -     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
   16.97 -diff -dur binutils-2.17.old/ld/configure binutils-2.17/ld/configure
   16.98 ---- binutils-2.17.old/ld/configure	2006-04-11 12:36:26.000000000 +0200
   16.99 -+++ binutils-2.17/ld/configure	2007-05-01 18:26:03.000000000 +0200
  16.100 -@@ -3413,7 +3413,7 @@
  16.101 -   ;;
  16.102 - 
  16.103 - # This must be Linux ELF.
  16.104 --linux-gnu*)
  16.105 -+linux-gnu*|linux-uclibc*)
  16.106 -   lt_cv_deplibs_check_method=pass_all
  16.107 -   ;;
  16.108 - 
  16.109 -diff -dur binutils-2.17.old/libtool.m4 binutils-2.17/libtool.m4
  16.110 ---- binutils-2.17.old/libtool.m4	2005-12-27 17:37:57.000000000 +0100
  16.111 -+++ binutils-2.17/libtool.m4	2007-05-01 18:26:03.000000000 +0200
  16.112 -@@ -739,7 +739,7 @@
  16.113 -   ;;
  16.114 - 
  16.115 - # This must be Linux ELF.
  16.116 --linux-gnu*)
  16.117 -+linux-gnu*|linux-uclibc*)
  16.118 -   lt_cv_deplibs_check_method=pass_all
  16.119 -   ;;
  16.120 - 
  16.121 -diff -dur binutils-2.17.old/ltconfig binutils-2.17/ltconfig
  16.122 ---- binutils-2.17.old/ltconfig	2005-07-16 04:36:38.000000000 +0200
  16.123 -+++ binutils-2.17/ltconfig	2007-05-01 18:26:03.000000000 +0200
  16.124 -@@ -602,6 +602,7 @@
  16.125 - 
  16.126 - # Transform linux* to *-*-linux-gnu*, to support old configure scripts.
  16.127 - case $host_os in
  16.128 -+linux-uclibc*) ;;
  16.129 - linux-gnu*) ;;
  16.130 - linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
  16.131 - esac
  16.132 -@@ -1247,7 +1248,7 @@
  16.133 -   ;;
  16.134 - 
  16.135 - # This must be Linux ELF.
  16.136 --linux-gnu*)
  16.137 -+linux-gnu*|linux-uclibc*)
  16.138 -   version_type=linux
  16.139 -   need_lib_prefix=no
  16.140 -   need_version=no
  16.141 -diff -dur binutils-2.17.old/opcodes/configure binutils-2.17/opcodes/configure
  16.142 ---- binutils-2.17.old/opcodes/configure	2006-02-17 15:36:28.000000000 +0100
  16.143 -+++ binutils-2.17/opcodes/configure	2007-05-01 18:26:03.000000000 +0200
  16.144 -@@ -3579,7 +3579,7 @@
  16.145 -   ;;
  16.146 - 
  16.147 - # This must be Linux ELF.
  16.148 --linux-gnu*)
  16.149 -+linux-gnu*|linux-uclibc*)
  16.150 -   lt_cv_deplibs_check_method=pass_all
  16.151 -   ;;
  16.152 - 
    17.1 --- a/patches/binutils/2.17/110-arm-eabi-conf.patch	Sun Sep 11 18:26:12 2011 +0200
    17.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.3 @@ -1,24 +0,0 @@
    17.4 -diff -dur binutils-2.17.old/configure binutils-2.17/configure
    17.5 ---- binutils-2.17.old/configure	2007-05-01 18:26:03.000000000 +0200
    17.6 -+++ binutils-2.17/configure	2007-05-01 18:26:06.000000000 +0200
    17.7 -@@ -1305,7 +1305,7 @@
    17.8 -   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
    17.9 -     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
   17.10 -     ;;
   17.11 --  arm*-*-linux-gnueabi)
   17.12 -+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
   17.13 -     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
   17.14 -     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
   17.15 -     ;;
   17.16 -diff -dur binutils-2.17.old/configure.in binutils-2.17/configure.in
   17.17 ---- binutils-2.17.old/configure.in	2007-05-01 18:26:03.000000000 +0200
   17.18 -+++ binutils-2.17/configure.in	2007-05-01 18:26:06.000000000 +0200
   17.19 -@@ -497,7 +497,7 @@
   17.20 -   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
   17.21 -     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
   17.22 -     ;;
   17.23 --  arm*-*-linux-gnueabi)
   17.24 -+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
   17.25 -     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
   17.26 -     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
   17.27 -     ;;
    18.1 --- a/patches/binutils/2.17/120-makeinfo-version.patch	Sun Sep 11 18:26:12 2011 +0200
    18.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.3 @@ -1,16 +0,0 @@
    18.4 -diff -u binutils-2.18-orig/configure binutils-2.18/configure
    18.5 ---- binutils-2.18-orig/configure	2007-08-06 16:29:40.000000000 -0400
    18.6 -+++ binutils-2.18/configure	2007-09-27 22:41:51.000000000 -0400
    18.7 -@@ -6125,10 +6125,10 @@
    18.8 -   *" texinfo "*) MAKEINFO='$$r/$(BUILD_SUBDIR)/texinfo/makeinfo/makeinfo' ;;
    18.9 -   *)
   18.10 - 
   18.11 --    # For an installed makeinfo, we require it to be from texinfo 4.4 or
   18.12 -+    # For an installed makeinfo, we require it to be from texinfo 4.6 or
   18.13 -     # higher, else we use the "missing" dummy.
   18.14 -     if ${MAKEINFO} --version \
   18.15 --       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
   18.16 -+       | egrep 'texinfo[^0-9]*(4\.([6-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
   18.17 -       :
   18.18 -     else
   18.19 -       MAKEINFO="$MISSING makeinfo"
    19.1 --- a/patches/binutils/2.17/130-ld_makefile_patch.patch	Sun Sep 11 18:26:12 2011 +0200
    19.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.3 @@ -1,24 +0,0 @@
    19.4 -diff -dur binutils-2.17.old/ld/Makefile.am binutils-2.17/ld/Makefile.am
    19.5 ---- binutils-2.17.old/ld/Makefile.am	2006-06-03 06:45:50.000000000 +0200
    19.6 -+++ binutils-2.17/ld/Makefile.am	2007-05-01 18:26:09.000000000 +0200
    19.7 -@@ -20,7 +20,7 @@
    19.8 - # We put the scripts in the directory $(scriptdir)/ldscripts.
    19.9 - # We can't put the scripts in $(datadir) because the SEARCH_DIR
   19.10 - # directives need to be different for native and cross linkers.
   19.11 --scriptdir = $(tooldir)/lib
   19.12 -+scriptdir = $(libdir)
   19.13 - 
   19.14 - EMUL = @EMUL@
   19.15 - EMULATION_OFILES = @EMULATION_OFILES@
   19.16 -diff -dur binutils-2.17.old/ld/Makefile.in binutils-2.17/ld/Makefile.in
   19.17 ---- binutils-2.17.old/ld/Makefile.in	2006-06-03 06:45:50.000000000 +0200
   19.18 -+++ binutils-2.17/ld/Makefile.in	2007-05-01 18:26:09.000000000 +0200
   19.19 -@@ -269,7 +269,7 @@
   19.20 - # We put the scripts in the directory $(scriptdir)/ldscripts.
   19.21 - # We can't put the scripts in $(datadir) because the SEARCH_DIR
   19.22 - # directives need to be different for native and cross linkers.
   19.23 --scriptdir = $(tooldir)/lib
   19.24 -+scriptdir = $(libdir)
   19.25 - BASEDIR = $(srcdir)/..
   19.26 - BFDDIR = $(BASEDIR)/bfd
   19.27 - INCDIR = $(BASEDIR)/include
    20.1 --- a/patches/binutils/2.17/140-better_file_error.patch	Sun Sep 11 18:26:12 2011 +0200
    20.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.3 @@ -1,17 +0,0 @@
    20.4 -diff -dur binutils-2.17.old/bfd/opncls.c binutils-2.17/bfd/opncls.c
    20.5 ---- binutils-2.17.old/bfd/opncls.c	2006-03-16 13:20:16.000000000 +0100
    20.6 -+++ binutils-2.17/bfd/opncls.c	2007-05-01 18:26:11.000000000 +0200
    20.7 -@@ -158,6 +158,13 @@
    20.8 - {
    20.9 -   bfd *nbfd;
   20.10 -   const bfd_target *target_vec;
   20.11 -+  struct stat s;
   20.12 -+
   20.13 -+  if (stat (filename, &s) == 0)
   20.14 -+    if (S_ISDIR(s.st_mode)) {
   20.15 -+      bfd_set_error (bfd_error_file_not_recognized);
   20.16 -+      return NULL;
   20.17 -+    }
   20.18 - 
   20.19 -   nbfd = _bfd_new_bfd ();
   20.20 -   if (nbfd == NULL)
    21.1 --- a/patches/binutils/2.17/150-check_ldrunpath_length.patch	Sun Sep 11 18:26:12 2011 +0200
    21.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.3 @@ -1,21 +0,0 @@
    21.4 -diff -dur binutils-2.17.old/ld/emultempl/elf32.em binutils-2.17/ld/emultempl/elf32.em
    21.5 ---- binutils-2.17.old/ld/emultempl/elf32.em	2006-06-12 15:05:04.000000000 +0200
    21.6 -+++ binutils-2.17/ld/emultempl/elf32.em	2007-05-01 18:26:13.000000000 +0200
    21.7 -@@ -970,6 +970,8 @@
    21.8 - 	      && command_line.rpath == NULL)
    21.9 - 	    {
   21.10 - 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
   21.11 -+	      if ((lib_path) && (strlen (lib_path) == 0))
   21.12 -+		  lib_path = NULL;
   21.13 - 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
   21.14 - 						      force))
   21.15 - 		break;
   21.16 -@@ -1154,6 +1156,8 @@
   21.17 -   rpath = command_line.rpath;
   21.18 -   if (rpath == NULL)
   21.19 -     rpath = (const char *) getenv ("LD_RUN_PATH");
   21.20 -+  if ((rpath) && (strlen (rpath) == 0))
   21.21 -+      rpath = NULL;
   21.22 -   if (! (bfd_elf_size_dynamic_sections
   21.23 - 	 (output_bfd, command_line.soname, rpath,
   21.24 - 	  command_line.filter_shlib,
    22.1 --- a/patches/binutils/2.17/160-mips-ELF_MAXPAGESIZE-4K.patch	Sun Sep 11 18:26:12 2011 +0200
    22.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.3 @@ -1,28 +0,0 @@
    22.4 -diff -dur binutils-2.17.old/bfd/elf32-mips.c binutils-2.17/bfd/elf32-mips.c
    22.5 ---- binutils-2.17.old/bfd/elf32-mips.c	2006-03-22 10:28:13.000000000 +0100
    22.6 -+++ binutils-2.17/bfd/elf32-mips.c	2007-05-01 18:26:15.000000000 +0200
    22.7 -@@ -1617,7 +1617,9 @@
    22.8 - 
    22.9 - /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
   22.10 -    page sizes of up to that limit, so we need to respect it.  */
   22.11 --#define ELF_MAXPAGESIZE			0x10000
   22.12 -+/*#define ELF_MAXPAGESIZE			0x10000*/
   22.13 -+/* Use 4K to shrink the elf header.  NOT for general use! */
   22.14 -+#define ELF_MAXPAGESIZE			0x1000
   22.15 - #define elf32_bed			elf32_tradbed
   22.16 - 
   22.17 - /* Include the target file again for this target.  */
   22.18 -diff -dur binutils-2.17.old/bfd/elfn32-mips.c binutils-2.17/bfd/elfn32-mips.c
   22.19 ---- binutils-2.17.old/bfd/elfn32-mips.c	2005-11-23 15:04:17.000000000 +0100
   22.20 -+++ binutils-2.17/bfd/elfn32-mips.c	2007-05-01 18:26:15.000000000 +0200
   22.21 -@@ -2402,7 +2402,9 @@
   22.22 - 
   22.23 - /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
   22.24 -    page sizes of up to that limit, so we need to respect it.  */
   22.25 --#define ELF_MAXPAGESIZE			0x10000
   22.26 -+/*#define ELF_MAXPAGESIZE			0x10000*/
   22.27 -+/* Use 4K to shrink the elf header.  NOT for general use! */
   22.28 -+#define ELF_MAXPAGESIZE			0x1000
   22.29 - #define elf32_bed			elf32_tradbed
   22.30 - 
   22.31 - /* Include the target file again for this target.  */
    23.1 --- a/patches/binutils/2.17/170-bfd-hash-tweak.patch	Sun Sep 11 18:26:12 2011 +0200
    23.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.3 @@ -1,23 +0,0 @@
    23.4 -Signed-off-by: dank@kegel.com
    23.5 -
    23.6 -Raising the size of the hash table is a noticable win when linking 
    23.7 -at least one large app.  
    23.8 -
    23.9 -There was a patch,
   23.10 -http://sources.redhat.com/ml/binutils/2004-06/msg00165.html
   23.11 -to do this dynamically.  No idea why that didn't make it in.
   23.12 -So this tiny change to raise the default size is just
   23.13 -a stopgap for now.
   23.14 -
   23.15 -
   23.16 ---- binutils-2.17/bfd/hash.c.old	2006-03-02 23:01:39.000000000 -0800
   23.17 -+++ binutils-2.17/bfd/hash.c	2006-03-02 23:01:58.000000000 -0800
   23.18 -@@ -298,7 +298,7 @@
   23.19 - */
   23.20 - 
   23.21 - /* The default number of entries to use when creating a hash table.  */
   23.22 --#define DEFAULT_SIZE 4051
   23.23 -+#define DEFAULT_SIZE 32749
   23.24 - static size_t bfd_default_hash_table_size = DEFAULT_SIZE;
   23.25 - 
   23.26 - /* Create a new hash table, given a number of entries.  */
    24.1 --- a/patches/binutils/2.17/180-psignal.patch	Sun Sep 11 18:26:12 2011 +0200
    24.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.3 @@ -1,29 +0,0 @@
    24.4 -Make psignal prototype in libiberty match that in glibc.
    24.5 -
    24.6 -Fixes:
    24.7 -
    24.8 -gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c: In function `psignal':
    24.9 -gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:563: argument `signo' doesn't match prototype
   24.10 -/usr/include/signal.h:131: prototype declaration
   24.11 -gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:563: argument `message' doesn't match prototype
   24.12 -/usr/include/signal.h:131: prototype declaration
   24.13 -gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:568: warning: comparison between signed and unsigned
   24.14 -mprotect... make[1]: *** [strsignal.o] Error 1
   24.15 -make[1]: Leaving directory `/export/hda3/dkegel/queue/jobdir.produser_cpsm17/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.1.3/build-binutils/libiberty'
   24.16 -make: *** [all-libiberty] Error 2
   24.17 -
   24.18 -when building on red hat 7.1
   24.19 -though it's a bit of a mystery why libiberty's psignal is being compiled at
   24.20 -all, since red hat 7.1's glibc supports psignal (hence the error message)
   24.21 -
   24.22 ---- binutils-2.17/libiberty/strsignal.c.old	2005-04-18 13:57:40.000000000 -0700
   24.23 -+++ binutils-2.17/libiberty/strsignal.c	2005-04-18 13:59:09.000000000 -0700
   24.24 -@@ -536,7 +536,7 @@
   24.25 - 
   24.26 - /*
   24.27 - 
   24.28 --@deftypefn Supplemental void psignal (unsigned @var{signo}, char *@var{message})
   24.29 -+@deftypefn Supplemental void psignal (int @var{signo}, const char *@var{message})
   24.30 - 
   24.31 - Print @var{message} to the standard error, followed by a colon,
   24.32 - followed by the description of the signal specified by @var{signo},
    25.1 --- a/patches/binutils/2.17/190-skip-comments.patch	Sun Sep 11 18:26:12 2011 +0200
    25.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.3 @@ -1,95 +0,0 @@
    25.4 -[removed first hunk so it would apply to 2.16.1 - copyright date already updated - dank]
    25.5 -
    25.6 -Retrieved from http://sources.redhat.com/ml/binutils/2004-04/msg00646.html
    25.7 -Fixes
    25.8 -localealias.s:544: Error: junk at end of line, first unrecognized character is `,' 
    25.9 -when building glibc-2.3.2 with gcc-3.4.0 and binutils-2.15.90.0.3
   25.10 -
   25.11 -Paths adjusted to match crosstool's patcher.
   25.12 -
   25.13 -Message-Id: m3n052qw2g.fsf@whitebox.m5r.de
   25.14 -From: Andreas Schwab <schwab at suse dot de>
   25.15 -To: Nathan Sidwell <nathan at codesourcery dot com>
   25.16 -Cc: Ian Lance Taylor <ian at wasabisystems dot com>, binutils at sources dot redhat dot com
   25.17 -Date: Fri, 23 Apr 2004 22:27:19 +0200
   25.18 -Subject: Re: demand_empty_rest_of_line and ignore_rest_of_line
   25.19 -
   25.20 -Nathan Sidwell <nathan@codesourcery.com> writes:
   25.21 -
   25.22 -> Index: read.c
   25.23 -> ===================================================================
   25.24 -> RCS file: /cvs/src/src/gas/read.c,v
   25.25 -> retrieving revision 1.76
   25.26 -> diff -c -3 -p -r1.76 read.c
   25.27 -> *** read.c	12 Mar 2004 17:48:12 -0000	1.76
   25.28 -> --- read.c	18 Mar 2004 09:56:05 -0000
   25.29 -> *************** read_a_source_file (char *name)
   25.30 -> *** 1053,1059 ****
   25.31 ->   #endif
   25.32 ->   	  input_line_pointer--;
   25.33 ->   	  /* Report unknown char as ignored.  */
   25.34 -> ! 	  ignore_rest_of_line ();
   25.35 ->   	}
   25.36 ->   
   25.37 ->   #ifdef md_after_pass_hook
   25.38 -> --- 1053,1059 ----
   25.39 ->   #endif
   25.40 ->   	  input_line_pointer--;
   25.41 ->   	  /* Report unknown char as ignored.  */
   25.42 -> ! 	  demand_empty_rest_of_line ();
   25.43 ->   	}
   25.44 ->   
   25.45 ->   #ifdef md_after_pass_hook
   25.46 -
   25.47 -This means that the unknown character is no longer ignored, despite the
   25.48 -comment.  As a side effect a line starting with a line comment character
   25.49 -not followed by APP in NO_APP mode now triggers an error instead of just a
   25.50 -warning, breaking builds of glibc on m68k-linux.  Earlier in
   25.51 -read_a_source_file where #APP is handled there is another comment that
   25.52 -claims that unknown comments are ignored, when in fact they aren't (only
   25.53 -the initial line comment character is skipped).
   25.54 -
   25.55 -Note that the presence of #APP will mess up the line counters, but
   25.56 -that appears to be difficult to fix.
   25.57 -
   25.58 -Andreas.
   25.59 -
   25.60 -2004-04-23  Andreas Schwab  <schwab@suse.de>
   25.61 -
   25.62 -	* read.c (read_a_source_file): Ignore unknown text after line
   25.63 -	comment character.  Fix misleading comment.
   25.64 -
   25.65 ---- binutils/gas/read.c.~1.78.~	2004-04-23 08:58:23.000000000 +0200
   25.66 -+++ binutils/gas/read.c	2004-04-23 21:49:01.000000000 +0200
   25.67 -@@ -1008,10 +1008,14 @@ read_a_source_file (char *name)
   25.68 - 	      unsigned int new_length;
   25.69 - 	      char *tmp_buf = 0;
   25.70 - 
   25.71 --	      bump_line_counters ();
   25.72 - 	      s = input_line_pointer;
   25.73 - 	      if (strncmp (s, "APP\n", 4))
   25.74 --		continue;	/* We ignore it */
   25.75 -+		{
   25.76 -+		  /* We ignore it */
   25.77 -+		  ignore_rest_of_line ();
   25.78 -+		  continue;
   25.79 -+		}
   25.80 -+	      bump_line_counters ();
   25.81 - 	      s += 4;
   25.82 - 
   25.83 - 	      sb_new (&sbuf);
   25.84 -@@ -1110,7 +1110,7 @@ read_a_source_file (char *name)
   25.85 - 	    continue;
   25.86 - #endif
   25.87 - 	  input_line_pointer--;
   25.88 --	  /* Report unknown char as ignored.  */
   25.89 -+	  /* Report unknown char as error.  */
   25.90 - 	  demand_empty_rest_of_line ();
   25.91 - 	}
   25.92 - 
   25.93 -
   25.94 --- 
   25.95 -Andreas Schwab, SuSE Labs, schwab@suse.de
   25.96 -SuSE Linux AG, Maxfeldstra&#xC3;e 5, 90409 N&#xC3;rnberg, Germany
   25.97 -Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
   25.98 -"And now for something completely different."
    26.1 --- a/patches/binutils/2.17/200-cross-gprof.patch	Sun Sep 11 18:26:12 2011 +0200
    26.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.3 @@ -1,22 +0,0 @@
    26.4 ---- binutils-2.17/configure.old	2004-07-21 21:36:47.000000000 -0700
    26.5 -+++ binutils-2.17/configure	2004-07-21 21:37:08.000000000 -0700
    26.6 -@@ -1022,7 +1022,7 @@
    26.7 - 
    26.8 - # Some tools are only suitable for building in a "native" situation.
    26.9 - # Remove these if host!=target.  
   26.10 --native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff gprof target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   26.11 -+native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   26.12 - 
   26.13 - # Similarly, some are only suitable for cross toolchains.
   26.14 - # Remove these if host=target.
   26.15 ---- binutils-2.17/configure.in.old	2004-07-21 21:37:19.000000000 -0700
   26.16 -+++ binutils-2.17/configure.in	2004-07-21 21:37:34.000000000 -0700
   26.17 -@@ -227,7 +227,7 @@
   26.18 - 
   26.19 - # Some tools are only suitable for building in a "native" situation.
   26.20 - # Remove these if host!=target.  
   26.21 --native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff gprof target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   26.22 -+native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   26.23 - 
   26.24 - # Similarly, some are only suitable for cross toolchains.
   26.25 - # Remove these if host=target.
    27.1 --- a/patches/binutils/2.17/210-i386-no-divide-comment.patch	Sun Sep 11 18:26:12 2011 +0200
    27.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.3 @@ -1,64 +0,0 @@
    27.4 -diff -durN binutils-2.17.orig/gas/config/tc-i386.c binutils-2.17/gas/config/tc-i386.c
    27.5 ---- binutils-2.17.orig/gas/config/tc-i386.c	2006-04-07 08:40:57.000000000 +0200
    27.6 -+++ binutils-2.17/gas/config/tc-i386.c	2008-09-22 09:06:07.000000000 +0200
    27.7 -@@ -196,24 +196,10 @@
    27.8 - #endif
    27.9 - 	;
   27.10 - 
   27.11 --#if (defined (TE_I386AIX)				\
   27.12 --     || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF))	\
   27.13 --	 && !defined (TE_GNU)				\
   27.14 --	 && !defined (TE_LINUX)				\
   27.15 -- 	 && !defined (TE_NETWARE)			\
   27.16 --	 && !defined (TE_FreeBSD)			\
   27.17 --	 && !defined (TE_NetBSD)))
   27.18 - /* This array holds the chars that always start a comment.  If the
   27.19 --   pre-processor is disabled, these aren't very useful.  The option
   27.20 --   --divide will remove '/' from this list.  */
   27.21 --const char *i386_comment_chars = "#/";
   27.22 --#define SVR4_COMMENT_CHARS 1
   27.23 --#define PREFIX_SEPARATOR '\\'
   27.24 --
   27.25 --#else
   27.26 -+   pre-processor is disabled, these aren't very useful.  */
   27.27 - const char *i386_comment_chars = "#";
   27.28 - #define PREFIX_SEPARATOR '/'
   27.29 --#endif
   27.30 - 
   27.31 - /* This array holds the chars that only start a comment at the beginning of
   27.32 -    a line.  If the line seems to have the form '# 123 filename'
   27.33 -@@ -5486,20 +5472,6 @@
   27.34 -       break;
   27.35 - 
   27.36 -     case OPTION_DIVIDE:
   27.37 --#ifdef SVR4_COMMENT_CHARS
   27.38 --      {
   27.39 --	char *n, *t;
   27.40 --	const char *s;
   27.41 --
   27.42 --	n = (char *) xmalloc (strlen (i386_comment_chars) + 1);
   27.43 --	t = n;
   27.44 --	for (s = i386_comment_chars; *s != '\0'; s++)
   27.45 --	  if (*s != '/')
   27.46 --	    *t++ = *s;
   27.47 --	*t = '\0';
   27.48 --	i386_comment_chars = n;
   27.49 --      }
   27.50 --#endif
   27.51 -       break;
   27.52 - 
   27.53 -     default:
   27.54 -@@ -5525,13 +5497,8 @@
   27.55 -   fprintf (stream, _("\
   27.56 -   -s                      ignored\n"));
   27.57 - #endif
   27.58 --#ifdef SVR4_COMMENT_CHARS
   27.59 --  fprintf (stream, _("\
   27.60 --  --divide                do not treat `/' as a comment character\n"));
   27.61 --#else
   27.62 -   fprintf (stream, _("\
   27.63 -   --divide                ignored\n"));
   27.64 --#endif
   27.65 - }
   27.66 - 
   27.67 - #if ((defined (OBJ_MAYBE_COFF) && defined (OBJ_MAYBE_AOUT)) \
    28.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.2 +++ b/patches/binutils/2.17a/100-uclibc-conf.patch	Sun Sep 11 18:18:53 2011 +0200
    28.3 @@ -0,0 +1,149 @@
    28.4 +diff -dur binutils-2.17.old/bfd/configure binutils-2.17/bfd/configure
    28.5 +--- binutils-2.17.old/bfd/configure	2006-06-23 20:17:03.000000000 +0200
    28.6 ++++ binutils-2.17/bfd/configure	2007-05-01 18:26:03.000000000 +0200
    28.7 +@@ -3576,7 +3576,7 @@
    28.8 +   ;;
    28.9 + 
   28.10 + # This must be Linux ELF.
   28.11 +-linux-gnu*)
   28.12 ++linux-gnu*|linux-uclibc*)
   28.13 +   lt_cv_deplibs_check_method=pass_all
   28.14 +   ;;
   28.15 + 
   28.16 +diff -dur binutils-2.17.old/binutils/configure binutils-2.17/binutils/configure
   28.17 +--- binutils-2.17.old/binutils/configure	2006-04-06 23:49:29.000000000 +0200
   28.18 ++++ binutils-2.17/binutils/configure	2007-05-01 18:26:03.000000000 +0200
   28.19 +@@ -3411,7 +3411,7 @@
   28.20 +   ;;
   28.21 + 
   28.22 + # This must be Linux ELF.
   28.23 +-linux-gnu*)
   28.24 ++linux-gnu*|linux-uclibc*)
   28.25 +   lt_cv_deplibs_check_method=pass_all
   28.26 +   ;;
   28.27 + 
   28.28 +diff -dur binutils-2.17.old/configure binutils-2.17/configure
   28.29 +--- binutils-2.17.old/configure	2006-04-06 23:49:25.000000000 +0200
   28.30 ++++ binutils-2.17/configure	2007-05-01 18:26:03.000000000 +0200
   28.31 +@@ -1276,7 +1276,7 @@
   28.32 +   am33_2.0-*-linux*)
   28.33 +     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   28.34 +     ;;
   28.35 +-  sh-*-linux*)
   28.36 ++  sh*-*-linux*)
   28.37 +     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   28.38 +     ;;    
   28.39 +   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
   28.40 +@@ -1584,7 +1584,7 @@
   28.41 +   romp-*-*)
   28.42 +     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
   28.43 +     ;;
   28.44 +-  sh-*-* | sh64-*-*)
   28.45 ++  sh*-*-* | sh64-*-*)
   28.46 +     case "${host}" in
   28.47 +       i[3456789]86-*-vsta) ;; # don't add gprof back in
   28.48 +       i[3456789]86-*-go32*) ;; # don't add gprof back in
   28.49 +diff -dur binutils-2.17.old/configure.in binutils-2.17/configure.in
   28.50 +--- binutils-2.17.old/configure.in	2006-06-23 20:19:53.000000000 +0200
   28.51 ++++ binutils-2.17/configure.in	2007-05-01 18:26:03.000000000 +0200
   28.52 +@@ -468,7 +468,7 @@
   28.53 +   am33_2.0-*-linux*)
   28.54 +     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   28.55 +     ;;
   28.56 +-  sh-*-linux*)
   28.57 ++  sh*-*-linux*)
   28.58 +     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   28.59 +     ;;    
   28.60 +   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
   28.61 +@@ -776,7 +776,7 @@
   28.62 +   romp-*-*)
   28.63 +     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
   28.64 +     ;;
   28.65 +-  sh-*-* | sh64-*-*)
   28.66 ++  sh*-*-* | sh64-*-*)
   28.67 +     case "${host}" in
   28.68 +       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
   28.69 +       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
   28.70 +diff -dur binutils-2.17.old/gas/configure binutils-2.17/gas/configure
   28.71 +--- binutils-2.17.old/gas/configure	2006-04-06 23:49:31.000000000 +0200
   28.72 ++++ binutils-2.17/gas/configure	2007-05-01 18:26:03.000000000 +0200
   28.73 +@@ -3411,7 +3411,7 @@
   28.74 +   ;;
   28.75 + 
   28.76 + # This must be Linux ELF.
   28.77 +-linux-gnu*)
   28.78 ++linux-gnu*|linux-uclibc*)
   28.79 +   lt_cv_deplibs_check_method=pass_all
   28.80 +   ;;
   28.81 + 
   28.82 +diff -dur binutils-2.17.old/gprof/configure binutils-2.17/gprof/configure
   28.83 +--- binutils-2.17.old/gprof/configure	2006-04-06 23:49:33.000000000 +0200
   28.84 ++++ binutils-2.17/gprof/configure	2007-05-01 18:26:03.000000000 +0200
   28.85 +@@ -3414,6 +3414,11 @@
   28.86 +   lt_cv_deplibs_check_method=pass_all
   28.87 +   ;;
   28.88 + 
   28.89 ++linux-uclibc*)
   28.90 ++  lt_cv_deplibs_check_method=pass_all
   28.91 ++  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
   28.92 ++  ;;
   28.93 ++
   28.94 + netbsd* | knetbsd*-gnu)
   28.95 +   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
   28.96 +     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
   28.97 +diff -dur binutils-2.17.old/ld/configure binutils-2.17/ld/configure
   28.98 +--- binutils-2.17.old/ld/configure	2006-04-11 12:36:26.000000000 +0200
   28.99 ++++ binutils-2.17/ld/configure	2007-05-01 18:26:03.000000000 +0200
  28.100 +@@ -3413,7 +3413,7 @@
  28.101 +   ;;
  28.102 + 
  28.103 + # This must be Linux ELF.
  28.104 +-linux-gnu*)
  28.105 ++linux-gnu*|linux-uclibc*)
  28.106 +   lt_cv_deplibs_check_method=pass_all
  28.107 +   ;;
  28.108 + 
  28.109 +diff -dur binutils-2.17.old/libtool.m4 binutils-2.17/libtool.m4
  28.110 +--- binutils-2.17.old/libtool.m4	2005-12-27 17:37:57.000000000 +0100
  28.111 ++++ binutils-2.17/libtool.m4	2007-05-01 18:26:03.000000000 +0200
  28.112 +@@ -739,7 +739,7 @@
  28.113 +   ;;
  28.114 + 
  28.115 + # This must be Linux ELF.
  28.116 +-linux-gnu*)
  28.117 ++linux-gnu*|linux-uclibc*)
  28.118 +   lt_cv_deplibs_check_method=pass_all
  28.119 +   ;;
  28.120 + 
  28.121 +diff -dur binutils-2.17.old/ltconfig binutils-2.17/ltconfig
  28.122 +--- binutils-2.17.old/ltconfig	2005-07-16 04:36:38.000000000 +0200
  28.123 ++++ binutils-2.17/ltconfig	2007-05-01 18:26:03.000000000 +0200
  28.124 +@@ -602,6 +602,7 @@
  28.125 + 
  28.126 + # Transform linux* to *-*-linux-gnu*, to support old configure scripts.
  28.127 + case $host_os in
  28.128 ++linux-uclibc*) ;;
  28.129 + linux-gnu*) ;;
  28.130 + linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
  28.131 + esac
  28.132 +@@ -1247,7 +1248,7 @@
  28.133 +   ;;
  28.134 + 
  28.135 + # This must be Linux ELF.
  28.136 +-linux-gnu*)
  28.137 ++linux-gnu*|linux-uclibc*)
  28.138 +   version_type=linux
  28.139 +   need_lib_prefix=no
  28.140 +   need_version=no
  28.141 +diff -dur binutils-2.17.old/opcodes/configure binutils-2.17/opcodes/configure
  28.142 +--- binutils-2.17.old/opcodes/configure	2006-02-17 15:36:28.000000000 +0100
  28.143 ++++ binutils-2.17/opcodes/configure	2007-05-01 18:26:03.000000000 +0200
  28.144 +@@ -3579,7 +3579,7 @@
  28.145 +   ;;
  28.146 + 
  28.147 + # This must be Linux ELF.
  28.148 +-linux-gnu*)
  28.149 ++linux-gnu*|linux-uclibc*)
  28.150 +   lt_cv_deplibs_check_method=pass_all
  28.151 +   ;;
  28.152 + 
    29.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.2 +++ b/patches/binutils/2.17a/110-arm-eabi-conf.patch	Sun Sep 11 18:18:53 2011 +0200
    29.3 @@ -0,0 +1,24 @@
    29.4 +diff -dur binutils-2.17.old/configure binutils-2.17/configure
    29.5 +--- binutils-2.17.old/configure	2007-05-01 18:26:03.000000000 +0200
    29.6 ++++ binutils-2.17/configure	2007-05-01 18:26:06.000000000 +0200
    29.7 +@@ -1305,7 +1305,7 @@
    29.8 +   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
    29.9 +     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
   29.10 +     ;;
   29.11 +-  arm*-*-linux-gnueabi)
   29.12 ++  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
   29.13 +     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
   29.14 +     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
   29.15 +     ;;
   29.16 +diff -dur binutils-2.17.old/configure.in binutils-2.17/configure.in
   29.17 +--- binutils-2.17.old/configure.in	2007-05-01 18:26:03.000000000 +0200
   29.18 ++++ binutils-2.17/configure.in	2007-05-01 18:26:06.000000000 +0200
   29.19 +@@ -497,7 +497,7 @@
   29.20 +   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
   29.21 +     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
   29.22 +     ;;
   29.23 +-  arm*-*-linux-gnueabi)
   29.24 ++  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
   29.25 +     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
   29.26 +     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
   29.27 +     ;;
    30.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.2 +++ b/patches/binutils/2.17a/120-makeinfo-version.patch	Sun Sep 11 18:18:53 2011 +0200
    30.3 @@ -0,0 +1,16 @@
    30.4 +diff -u binutils-2.18-orig/configure binutils-2.18/configure
    30.5 +--- binutils-2.18-orig/configure	2007-08-06 16:29:40.000000000 -0400
    30.6 ++++ binutils-2.18/configure	2007-09-27 22:41:51.000000000 -0400
    30.7 +@@ -6125,10 +6125,10 @@
    30.8 +   *" texinfo "*) MAKEINFO='$$r/$(BUILD_SUBDIR)/texinfo/makeinfo/makeinfo' ;;
    30.9 +   *)
   30.10 + 
   30.11 +-    # For an installed makeinfo, we require it to be from texinfo 4.4 or
   30.12 ++    # For an installed makeinfo, we require it to be from texinfo 4.6 or
   30.13 +     # higher, else we use the "missing" dummy.
   30.14 +     if ${MAKEINFO} --version \
   30.15 +-       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
   30.16 ++       | egrep 'texinfo[^0-9]*(4\.([6-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
   30.17 +       :
   30.18 +     else
   30.19 +       MAKEINFO="$MISSING makeinfo"
    31.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.2 +++ b/patches/binutils/2.17a/130-ld_makefile_patch.patch	Sun Sep 11 18:18:53 2011 +0200
    31.3 @@ -0,0 +1,24 @@
    31.4 +diff -dur binutils-2.17.old/ld/Makefile.am binutils-2.17/ld/Makefile.am
    31.5 +--- binutils-2.17.old/ld/Makefile.am	2006-06-03 06:45:50.000000000 +0200
    31.6 ++++ binutils-2.17/ld/Makefile.am	2007-05-01 18:26:09.000000000 +0200
    31.7 +@@ -20,7 +20,7 @@
    31.8 + # We put the scripts in the directory $(scriptdir)/ldscripts.
    31.9 + # We can't put the scripts in $(datadir) because the SEARCH_DIR
   31.10 + # directives need to be different for native and cross linkers.
   31.11 +-scriptdir = $(tooldir)/lib
   31.12 ++scriptdir = $(libdir)
   31.13 + 
   31.14 + EMUL = @EMUL@
   31.15 + EMULATION_OFILES = @EMULATION_OFILES@
   31.16 +diff -dur binutils-2.17.old/ld/Makefile.in binutils-2.17/ld/Makefile.in
   31.17 +--- binutils-2.17.old/ld/Makefile.in	2006-06-03 06:45:50.000000000 +0200
   31.18 ++++ binutils-2.17/ld/Makefile.in	2007-05-01 18:26:09.000000000 +0200
   31.19 +@@ -269,7 +269,7 @@
   31.20 + # We put the scripts in the directory $(scriptdir)/ldscripts.
   31.21 + # We can't put the scripts in $(datadir) because the SEARCH_DIR
   31.22 + # directives need to be different for native and cross linkers.
   31.23 +-scriptdir = $(tooldir)/lib
   31.24 ++scriptdir = $(libdir)
   31.25 + BASEDIR = $(srcdir)/..
   31.26 + BFDDIR = $(BASEDIR)/bfd
   31.27 + INCDIR = $(BASEDIR)/include
    32.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.2 +++ b/patches/binutils/2.17a/140-better_file_error.patch	Sun Sep 11 18:18:53 2011 +0200
    32.3 @@ -0,0 +1,17 @@
    32.4 +diff -dur binutils-2.17.old/bfd/opncls.c binutils-2.17/bfd/opncls.c
    32.5 +--- binutils-2.17.old/bfd/opncls.c	2006-03-16 13:20:16.000000000 +0100
    32.6 ++++ binutils-2.17/bfd/opncls.c	2007-05-01 18:26:11.000000000 +0200
    32.7 +@@ -158,6 +158,13 @@
    32.8 + {
    32.9 +   bfd *nbfd;
   32.10 +   const bfd_target *target_vec;
   32.11 ++  struct stat s;
   32.12 ++
   32.13 ++  if (stat (filename, &s) == 0)
   32.14 ++    if (S_ISDIR(s.st_mode)) {
   32.15 ++      bfd_set_error (bfd_error_file_not_recognized);
   32.16 ++      return NULL;
   32.17 ++    }
   32.18 + 
   32.19 +   nbfd = _bfd_new_bfd ();
   32.20 +   if (nbfd == NULL)
    33.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    33.2 +++ b/patches/binutils/2.17a/150-check_ldrunpath_length.patch	Sun Sep 11 18:18:53 2011 +0200
    33.3 @@ -0,0 +1,21 @@
    33.4 +diff -dur binutils-2.17.old/ld/emultempl/elf32.em binutils-2.17/ld/emultempl/elf32.em
    33.5 +--- binutils-2.17.old/ld/emultempl/elf32.em	2006-06-12 15:05:04.000000000 +0200
    33.6 ++++ binutils-2.17/ld/emultempl/elf32.em	2007-05-01 18:26:13.000000000 +0200
    33.7 +@@ -970,6 +970,8 @@
    33.8 + 	      && command_line.rpath == NULL)
    33.9 + 	    {
   33.10 + 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
   33.11 ++	      if ((lib_path) && (strlen (lib_path) == 0))
   33.12 ++		  lib_path = NULL;
   33.13 + 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
   33.14 + 						      force))
   33.15 + 		break;
   33.16 +@@ -1154,6 +1156,8 @@
   33.17 +   rpath = command_line.rpath;
   33.18 +   if (rpath == NULL)
   33.19 +     rpath = (const char *) getenv ("LD_RUN_PATH");
   33.20 ++  if ((rpath) && (strlen (rpath) == 0))
   33.21 ++      rpath = NULL;
   33.22 +   if (! (bfd_elf_size_dynamic_sections
   33.23 + 	 (output_bfd, command_line.soname, rpath,
   33.24 + 	  command_line.filter_shlib,
    34.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    34.2 +++ b/patches/binutils/2.17a/160-mips-ELF_MAXPAGESIZE-4K.patch	Sun Sep 11 18:18:53 2011 +0200
    34.3 @@ -0,0 +1,28 @@
    34.4 +diff -dur binutils-2.17.old/bfd/elf32-mips.c binutils-2.17/bfd/elf32-mips.c
    34.5 +--- binutils-2.17.old/bfd/elf32-mips.c	2006-03-22 10:28:13.000000000 +0100
    34.6 ++++ binutils-2.17/bfd/elf32-mips.c	2007-05-01 18:26:15.000000000 +0200
    34.7 +@@ -1617,7 +1617,9 @@
    34.8 + 
    34.9 + /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
   34.10 +    page sizes of up to that limit, so we need to respect it.  */
   34.11 +-#define ELF_MAXPAGESIZE			0x10000
   34.12 ++/*#define ELF_MAXPAGESIZE			0x10000*/
   34.13 ++/* Use 4K to shrink the elf header.  NOT for general use! */
   34.14 ++#define ELF_MAXPAGESIZE			0x1000
   34.15 + #define elf32_bed			elf32_tradbed
   34.16 + 
   34.17 + /* Include the target file again for this target.  */
   34.18 +diff -dur binutils-2.17.old/bfd/elfn32-mips.c binutils-2.17/bfd/elfn32-mips.c
   34.19 +--- binutils-2.17.old/bfd/elfn32-mips.c	2005-11-23 15:04:17.000000000 +0100
   34.20 ++++ binutils-2.17/bfd/elfn32-mips.c	2007-05-01 18:26:15.000000000 +0200
   34.21 +@@ -2402,7 +2402,9 @@
   34.22 + 
   34.23 + /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
   34.24 +    page sizes of up to that limit, so we need to respect it.  */
   34.25 +-#define ELF_MAXPAGESIZE			0x10000
   34.26 ++/*#define ELF_MAXPAGESIZE			0x10000*/
   34.27 ++/* Use 4K to shrink the elf header.  NOT for general use! */
   34.28 ++#define ELF_MAXPAGESIZE			0x1000
   34.29 + #define elf32_bed			elf32_tradbed
   34.30 + 
   34.31 + /* Include the target file again for this target.  */
    35.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.2 +++ b/patches/binutils/2.17a/170-bfd-hash-tweak.patch	Sun Sep 11 18:18:53 2011 +0200
    35.3 @@ -0,0 +1,23 @@
    35.4 +Signed-off-by: dank@kegel.com
    35.5 +
    35.6 +Raising the size of the hash table is a noticable win when linking 
    35.7 +at least one large app.  
    35.8 +
    35.9 +There was a patch,
   35.10 +http://sources.redhat.com/ml/binutils/2004-06/msg00165.html
   35.11 +to do this dynamically.  No idea why that didn't make it in.
   35.12 +So this tiny change to raise the default size is just
   35.13 +a stopgap for now.
   35.14 +
   35.15 +
   35.16 +--- binutils-2.17/bfd/hash.c.old	2006-03-02 23:01:39.000000000 -0800
   35.17 ++++ binutils-2.17/bfd/hash.c	2006-03-02 23:01:58.000000000 -0800
   35.18 +@@ -298,7 +298,7 @@
   35.19 + */
   35.20 + 
   35.21 + /* The default number of entries to use when creating a hash table.  */
   35.22 +-#define DEFAULT_SIZE 4051
   35.23 ++#define DEFAULT_SIZE 32749
   35.24 + static size_t bfd_default_hash_table_size = DEFAULT_SIZE;
   35.25 + 
   35.26 + /* Create a new hash table, given a number of entries.  */
    36.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.2 +++ b/patches/binutils/2.17a/180-psignal.patch	Sun Sep 11 18:18:53 2011 +0200
    36.3 @@ -0,0 +1,29 @@
    36.4 +Make psignal prototype in libiberty match that in glibc.
    36.5 +
    36.6 +Fixes:
    36.7 +
    36.8 +gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c: In function `psignal':
    36.9 +gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:563: argument `signo' doesn't match prototype
   36.10 +/usr/include/signal.h:131: prototype declaration
   36.11 +gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:563: argument `message' doesn't match prototype
   36.12 +/usr/include/signal.h:131: prototype declaration
   36.13 +gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:568: warning: comparison between signed and unsigned
   36.14 +mprotect... make[1]: *** [strsignal.o] Error 1
   36.15 +make[1]: Leaving directory `/export/hda3/dkegel/queue/jobdir.produser_cpsm17/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.1.3/build-binutils/libiberty'
   36.16 +make: *** [all-libiberty] Error 2
   36.17 +
   36.18 +when building on red hat 7.1
   36.19 +though it's a bit of a mystery why libiberty's psignal is being compiled at
   36.20 +all, since red hat 7.1's glibc supports psignal (hence the error message)
   36.21 +
   36.22 +--- binutils-2.17/libiberty/strsignal.c.old	2005-04-18 13:57:40.000000000 -0700
   36.23 ++++ binutils-2.17/libiberty/strsignal.c	2005-04-18 13:59:09.000000000 -0700
   36.24 +@@ -536,7 +536,7 @@
   36.25 + 
   36.26 + /*
   36.27 + 
   36.28 +-@deftypefn Supplemental void psignal (unsigned @var{signo}, char *@var{message})
   36.29 ++@deftypefn Supplemental void psignal (int @var{signo}, const char *@var{message})
   36.30 + 
   36.31 + Print @var{message} to the standard error, followed by a colon,
   36.32 + followed by the description of the signal specified by @var{signo},
    37.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.2 +++ b/patches/binutils/2.17a/190-skip-comments.patch	Sun Sep 11 18:18:53 2011 +0200
    37.3 @@ -0,0 +1,95 @@
    37.4 +[removed first hunk so it would apply to 2.16.1 - copyright date already updated - dank]
    37.5 +
    37.6 +Retrieved from http://sources.redhat.com/ml/binutils/2004-04/msg00646.html
    37.7 +Fixes
    37.8 +localealias.s:544: Error: junk at end of line, first unrecognized character is `,' 
    37.9 +when building glibc-2.3.2 with gcc-3.4.0 and binutils-2.15.90.0.3
   37.10 +
   37.11 +Paths adjusted to match crosstool's patcher.
   37.12 +
   37.13 +Message-Id: m3n052qw2g.fsf@whitebox.m5r.de
   37.14 +From: Andreas Schwab <schwab at suse dot de>
   37.15 +To: Nathan Sidwell <nathan at codesourcery dot com>
   37.16 +Cc: Ian Lance Taylor <ian at wasabisystems dot com>, binutils at sources dot redhat dot com
   37.17 +Date: Fri, 23 Apr 2004 22:27:19 +0200
   37.18 +Subject: Re: demand_empty_rest_of_line and ignore_rest_of_line
   37.19 +
   37.20 +Nathan Sidwell <nathan@codesourcery.com> writes:
   37.21 +
   37.22 +> Index: read.c
   37.23 +> ===================================================================
   37.24 +> RCS file: /cvs/src/src/gas/read.c,v
   37.25 +> retrieving revision 1.76
   37.26 +> diff -c -3 -p -r1.76 read.c
   37.27 +> *** read.c	12 Mar 2004 17:48:12 -0000	1.76
   37.28 +> --- read.c	18 Mar 2004 09:56:05 -0000
   37.29 +> *************** read_a_source_file (char *name)
   37.30 +> *** 1053,1059 ****
   37.31 +>   #endif
   37.32 +>   	  input_line_pointer--;
   37.33 +>   	  /* Report unknown char as ignored.  */
   37.34 +> ! 	  ignore_rest_of_line ();
   37.35 +>   	}
   37.36 +>   
   37.37 +>   #ifdef md_after_pass_hook
   37.38 +> --- 1053,1059 ----
   37.39 +>   #endif
   37.40 +>   	  input_line_pointer--;
   37.41 +>   	  /* Report unknown char as ignored.  */
   37.42 +> ! 	  demand_empty_rest_of_line ();
   37.43 +>   	}
   37.44 +>   
   37.45 +>   #ifdef md_after_pass_hook
   37.46 +
   37.47 +This means that the unknown character is no longer ignored, despite the
   37.48 +comment.  As a side effect a line starting with a line comment character
   37.49 +not followed by APP in NO_APP mode now triggers an error instead of just a
   37.50 +warning, breaking builds of glibc on m68k-linux.  Earlier in
   37.51 +read_a_source_file where #APP is handled there is another comment that
   37.52 +claims that unknown comments are ignored, when in fact they aren't (only
   37.53 +the initial line comment character is skipped).
   37.54 +
   37.55 +Note that the presence of #APP will mess up the line counters, but
   37.56 +that appears to be difficult to fix.
   37.57 +
   37.58 +Andreas.
   37.59 +
   37.60 +2004-04-23  Andreas Schwab  <schwab@suse.de>
   37.61 +
   37.62 +	* read.c (read_a_source_file): Ignore unknown text after line
   37.63 +	comment character.  Fix misleading comment.
   37.64 +
   37.65 +--- binutils/gas/read.c.~1.78.~	2004-04-23 08:58:23.000000000 +0200
   37.66 ++++ binutils/gas/read.c	2004-04-23 21:49:01.000000000 +0200
   37.67 +@@ -1008,10 +1008,14 @@ read_a_source_file (char *name)
   37.68 + 	      unsigned int new_length;
   37.69 + 	      char *tmp_buf = 0;
   37.70 + 
   37.71 +-	      bump_line_counters ();
   37.72 + 	      s = input_line_pointer;
   37.73 + 	      if (strncmp (s, "APP\n", 4))
   37.74 +-		continue;	/* We ignore it */
   37.75 ++		{
   37.76 ++		  /* We ignore it */
   37.77 ++		  ignore_rest_of_line ();
   37.78 ++		  continue;
   37.79 ++		}
   37.80 ++	      bump_line_counters ();
   37.81 + 	      s += 4;
   37.82 + 
   37.83 + 	      sb_new (&sbuf);
   37.84 +@@ -1110,7 +1110,7 @@ read_a_source_file (char *name)
   37.85 + 	    continue;
   37.86 + #endif
   37.87 + 	  input_line_pointer--;
   37.88 +-	  /* Report unknown char as ignored.  */
   37.89 ++	  /* Report unknown char as error.  */
   37.90 + 	  demand_empty_rest_of_line ();
   37.91 + 	}
   37.92 + 
   37.93 +
   37.94 +-- 
   37.95 +Andreas Schwab, SuSE Labs, schwab@suse.de
   37.96 +SuSE Linux AG, Maxfeldstra&#xC3;e 5, 90409 N&#xC3;rnberg, Germany
   37.97 +Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
   37.98 +"And now for something completely different."
    38.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    38.2 +++ b/patches/binutils/2.17a/200-cross-gprof.patch	Sun Sep 11 18:18:53 2011 +0200
    38.3 @@ -0,0 +1,22 @@
    38.4 +--- binutils-2.17/configure.old	2004-07-21 21:36:47.000000000 -0700
    38.5 ++++ binutils-2.17/configure	2004-07-21 21:37:08.000000000 -0700
    38.6 +@@ -1022,7 +1022,7 @@
    38.7 + 
    38.8 + # Some tools are only suitable for building in a "native" situation.
    38.9 + # Remove these if host!=target.  
   38.10 +-native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff gprof target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   38.11 ++native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   38.12 + 
   38.13 + # Similarly, some are only suitable for cross toolchains.
   38.14 + # Remove these if host=target.
   38.15 +--- binutils-2.17/configure.in.old	2004-07-21 21:37:19.000000000 -0700
   38.16 ++++ binutils-2.17/configure.in	2004-07-21 21:37:34.000000000 -0700
   38.17 +@@ -227,7 +227,7 @@
   38.18 + 
   38.19 + # Some tools are only suitable for building in a "native" situation.
   38.20 + # Remove these if host!=target.  
   38.21 +-native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff gprof target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   38.22 ++native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   38.23 + 
   38.24 + # Similarly, some are only suitable for cross toolchains.
   38.25 + # Remove these if host=target.
    39.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    39.2 +++ b/patches/binutils/2.17a/210-i386-no-divide-comment.patch	Sun Sep 11 18:18:53 2011 +0200
    39.3 @@ -0,0 +1,64 @@
    39.4 +diff -durN binutils-2.17.orig/gas/config/tc-i386.c binutils-2.17/gas/config/tc-i386.c
    39.5 +--- binutils-2.17.orig/gas/config/tc-i386.c	2006-04-07 08:40:57.000000000 +0200
    39.6 ++++ binutils-2.17/gas/config/tc-i386.c	2008-09-22 09:06:07.000000000 +0200
    39.7 +@@ -196,24 +196,10 @@
    39.8 + #endif
    39.9 + 	;
   39.10 + 
   39.11 +-#if (defined (TE_I386AIX)				\
   39.12 +-     || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF))	\
   39.13 +-	 && !defined (TE_GNU)				\
   39.14 +-	 && !defined (TE_LINUX)				\
   39.15 +- 	 && !defined (TE_NETWARE)			\
   39.16 +-	 && !defined (TE_FreeBSD)			\
   39.17 +-	 && !defined (TE_NetBSD)))
   39.18 + /* This array holds the chars that always start a comment.  If the
   39.19 +-   pre-processor is disabled, these aren't very useful.  The option
   39.20 +-   --divide will remove '/' from this list.  */
   39.21 +-const char *i386_comment_chars = "#/";
   39.22 +-#define SVR4_COMMENT_CHARS 1
   39.23 +-#define PREFIX_SEPARATOR '\\'
   39.24 +-
   39.25 +-#else
   39.26 ++   pre-processor is disabled, these aren't very useful.  */
   39.27 + const char *i386_comment_chars = "#";
   39.28 + #define PREFIX_SEPARATOR '/'
   39.29 +-#endif
   39.30 + 
   39.31 + /* This array holds the chars that only start a comment at the beginning of
   39.32 +    a line.  If the line seems to have the form '# 123 filename'
   39.33 +@@ -5486,20 +5472,6 @@
   39.34 +       break;
   39.35 + 
   39.36 +     case OPTION_DIVIDE:
   39.37 +-#ifdef SVR4_COMMENT_CHARS
   39.38 +-      {
   39.39 +-	char *n, *t;
   39.40 +-	const char *s;
   39.41 +-
   39.42 +-	n = (char *) xmalloc (strlen (i386_comment_chars) + 1);
   39.43 +-	t = n;
   39.44 +-	for (s = i386_comment_chars; *s != '\0'; s++)
   39.45 +-	  if (*s != '/')
   39.46 +-	    *t++ = *s;
   39.47 +-	*t = '\0';
   39.48 +-	i386_comment_chars = n;
   39.49 +-      }
   39.50 +-#endif
   39.51 +       break;
   39.52 + 
   39.53 +     default:
   39.54 +@@ -5525,13 +5497,8 @@
   39.55 +   fprintf (stream, _("\
   39.56 +   -s                      ignored\n"));
   39.57 + #endif
   39.58 +-#ifdef SVR4_COMMENT_CHARS
   39.59 +-  fprintf (stream, _("\
   39.60 +-  --divide                do not treat `/' as a comment character\n"));
   39.61 +-#else
   39.62 +   fprintf (stream, _("\
   39.63 +   --divide                ignored\n"));
   39.64 +-#endif
   39.65 + }
   39.66 + 
   39.67 + #if ((defined (OBJ_MAYBE_COFF) && defined (OBJ_MAYBE_AOUT)) \
    40.1 --- a/patches/binutils/2.18/100-makeinfo-version.patch	Sun Sep 11 18:26:12 2011 +0200
    40.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    40.3 @@ -1,32 +0,0 @@
    40.4 -diff -u binutils-2.18-orig/configure binutils-2.18/configure
    40.5 ---- binutils-2.18-orig/configure	2007-08-06 16:29:40.000000000 -0400
    40.6 -+++ binutils-2.18/configure	2007-09-27 22:41:51.000000000 -0400
    40.7 -@@ -6125,10 +6125,10 @@
    40.8 -   *" texinfo "*) MAKEINFO='$$r/$(BUILD_SUBDIR)/texinfo/makeinfo/makeinfo' ;;
    40.9 -   *)
   40.10 - 
   40.11 --    # For an installed makeinfo, we require it to be from texinfo 4.4 or
   40.12 -+    # For an installed makeinfo, we require it to be from texinfo 4.6 or
   40.13 -     # higher, else we use the "missing" dummy.
   40.14 -     if ${MAKEINFO} --version \
   40.15 --       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
   40.16 -+       | egrep 'texinfo[^0-9]*(4\.([6-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
   40.17 -       :
   40.18 -     else
   40.19 -       MAKEINFO="$MISSING makeinfo"
   40.20 -diff -u binutils-2.18-orig/configure.ac binutils-2.18/configure.ac
   40.21 ---- binutils-2.18-orig/configure.ac	2007-08-28 16:24:26.000000000 -0400
   40.22 -+++ binutils-2.18/configure.ac	2007-09-27 22:41:00.000000000 -0400
   40.23 -@@ -2400,10 +2400,10 @@
   40.24 -   *" texinfo "*) MAKEINFO='$$r/$(BUILD_SUBDIR)/texinfo/makeinfo/makeinfo' ;;
   40.25 -   *)
   40.26 - changequote(,)
   40.27 --    # For an installed makeinfo, we require it to be from texinfo 4.4 or
   40.28 -+    # For an installed makeinfo, we require it to be from texinfo 4.6 or
   40.29 -     # higher, else we use the "missing" dummy.
   40.30 -     if ${MAKEINFO} --version \
   40.31 --       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
   40.32 -+       | egrep 'texinfo[^0-9]*(4\.([6-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
   40.33 -       :
   40.34 -     else
   40.35 -       MAKEINFO="$MISSING makeinfo"
    41.1 --- a/patches/binutils/2.18/110-enable-dash-v2.patch	Sun Sep 11 18:26:12 2011 +0200
    41.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    41.3 @@ -1,20 +0,0 @@
    41.4 -Enable using a shell other than bash.
    41.5 -Courtesy "Martin Guy" <martinwguy@yahoo.it>
    41.6 -http://sourceware.org/ml/crossgcc/2008-08/msg00037.html
    41.7 -
    41.8 ---- binutils-2.18.orig/ld/genscripts.sh	2007-08-12 20:00:07.000000000 +0100
    41.9 -+++ binutils-2.18/ld/genscripts.sh	2008-08-25 16:09:54.000000000 +0100
   41.10 -@@ -398,9 +398,11 @@
   41.11 -     . $em_script
   41.12 -     em_script=$current_script
   41.13 -   }
   41.14 --  fragment()
   41.15 -+  
   41.16 -+  alias fragment='em_lineno=$LINENO; fragment_em'
   41.17 -+  fragment_em()
   41.18 -   {
   41.19 --    local lineno=$[${BASH_LINENO[0]} + 1]
   41.20 -+    local lineno=$[$em_lineno + 1]
   41.21 -     echo >> e${EMULATION_NAME}.c "#line $lineno \"$em_script\""
   41.22 -     cat >> e${EMULATION_NAME}.c
   41.23 -   }
    42.1 --- a/patches/binutils/2.18/120-i386-no-divide-comment.patch	Sun Sep 11 18:26:12 2011 +0200
    42.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    42.3 @@ -1,64 +0,0 @@
    42.4 -diff -durN binutils-2.18.orig/gas/config/tc-i386.c binutils-2.18/gas/config/tc-i386.c
    42.5 ---- binutils-2.18.orig/gas/config/tc-i386.c	2007-08-24 16:01:22.000000000 +0200
    42.6 -+++ binutils-2.18/gas/config/tc-i386.c	2008-09-22 08:11:42.000000000 +0200
    42.7 -@@ -180,24 +180,10 @@
    42.8 - #endif
    42.9 - 	;
   42.10 - 
   42.11 --#if (defined (TE_I386AIX)				\
   42.12 --     || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF))	\
   42.13 --	 && !defined (TE_GNU)				\
   42.14 --	 && !defined (TE_LINUX)				\
   42.15 -- 	 && !defined (TE_NETWARE)			\
   42.16 --	 && !defined (TE_FreeBSD)			\
   42.17 --	 && !defined (TE_NetBSD)))
   42.18 - /* This array holds the chars that always start a comment.  If the
   42.19 --   pre-processor is disabled, these aren't very useful.  The option
   42.20 --   --divide will remove '/' from this list.  */
   42.21 --const char *i386_comment_chars = "#/";
   42.22 --#define SVR4_COMMENT_CHARS 1
   42.23 --#define PREFIX_SEPARATOR '\\'
   42.24 --
   42.25 --#else
   42.26 -+   pre-processor is disabled, these aren't very useful.  */
   42.27 - const char *i386_comment_chars = "#";
   42.28 - #define PREFIX_SEPARATOR '/'
   42.29 --#endif
   42.30 - 
   42.31 - /* This array holds the chars that only start a comment at the beginning of
   42.32 -    a line.  If the line seems to have the form '# 123 filename'
   42.33 -@@ -6061,20 +6047,6 @@
   42.34 -       break;
   42.35 - 
   42.36 -     case OPTION_DIVIDE:
   42.37 --#ifdef SVR4_COMMENT_CHARS
   42.38 --      {
   42.39 --	char *n, *t;
   42.40 --	const char *s;
   42.41 --
   42.42 --	n = (char *) xmalloc (strlen (i386_comment_chars) + 1);
   42.43 --	t = n;
   42.44 --	for (s = i386_comment_chars; *s != '\0'; s++)
   42.45 --	  if (*s != '/')
   42.46 --	    *t++ = *s;
   42.47 --	*t = '\0';
   42.48 --	i386_comment_chars = n;
   42.49 --      }
   42.50 --#endif
   42.51 -       break;
   42.52 - 
   42.53 -     case OPTION_MARCH:
   42.54 -@@ -6142,13 +6114,8 @@
   42.55 -   fprintf (stream, _("\
   42.56 -   --32/--64               generate 32bit/64bit code\n"));
   42.57 - #endif
   42.58 --#ifdef SVR4_COMMENT_CHARS
   42.59 --  fprintf (stream, _("\
   42.60 --  --divide                do not treat `/' as a comment character\n"));
   42.61 --#else
   42.62 -   fprintf (stream, _("\
   42.63 -   --divide                ignored\n"));
   42.64 --#endif
   42.65 -   fprintf (stream, _("\
   42.66 -   -march=CPU/-mtune=CPU   generate code/optimize for CPU, where CPU is one of:\n\
   42.67 -                            i386, i486, pentium, pentiumpro, pentium4, nocona,\n\
    43.1 --- a/patches/binutils/2.18/130-avr32-atmel-v1.0.1.patch	Sun Sep 11 18:26:12 2011 +0200
    43.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    43.3 @@ -1,52747 +0,0 @@
    43.4 ---- a/bfd/archures.c
    43.5 -+++ b/bfd/archures.c
    43.6 -@@ -346,6 +346,11 @@ DESCRIPTION
    43.7 - .#define bfd_mach_avr4		4
    43.8 - .#define bfd_mach_avr5		5
    43.9 - .#define bfd_mach_avr6		6
   43.10 -+.  bfd_arch_avr32,     {* Atmel AVR32 *}
   43.11 -+.#define bfd_mach_avr32_ap	7000
   43.12 -+.#define bfd_mach_avr32_uc	3000
   43.13 -+.#define bfd_mach_avr32_ucr1    3001
   43.14 -+.#define bfd_mach_avr32_ucr2    3002
   43.15 - .  bfd_arch_bfin,        {* ADI Blackfin *}
   43.16 - .#define bfd_mach_bfin          1
   43.17 - .  bfd_arch_cr16,       {* National Semiconductor CompactRISC (ie CR16). *}
   43.18 -@@ -438,6 +443,7 @@ extern const bfd_arch_info_type bfd_alph
   43.19 - extern const bfd_arch_info_type bfd_arc_arch;
   43.20 - extern const bfd_arch_info_type bfd_arm_arch;
   43.21 - extern const bfd_arch_info_type bfd_avr_arch;
   43.22 -+extern const bfd_arch_info_type bfd_avr32_arch;
   43.23 - extern const bfd_arch_info_type bfd_bfin_arch;
   43.24 - extern const bfd_arch_info_type bfd_cr16_arch;
   43.25 - extern const bfd_arch_info_type bfd_cr16c_arch;
   43.26 -@@ -509,6 +515,7 @@ static const bfd_arch_info_type * const 
   43.27 -     &bfd_arc_arch,
   43.28 -     &bfd_arm_arch,
   43.29 -     &bfd_avr_arch,
   43.30 -+    &bfd_avr32_arch,
   43.31 -     &bfd_bfin_arch,
   43.32 -     &bfd_cr16_arch,
   43.33 -     &bfd_cr16c_arch,
   43.34 ---- a/bfd/config.bfd
   43.35 -+++ b/bfd/config.bfd
   43.36 -@@ -335,6 +335,10 @@ case "${targ}" in
   43.37 -     targ_underscore=yes
   43.38 -     ;;
   43.39 - 
   43.40 -+  avr32-*-*)
   43.41 -+    targ_defvec=bfd_elf32_avr32_vec
   43.42 -+    ;;
   43.43 -+
   43.44 -   c30-*-*aout* | tic30-*-*aout*)
   43.45 -     targ_defvec=tic30_aout_vec
   43.46 -     ;;
   43.47 ---- a/bfd/configure.in
   43.48 -+++ b/bfd/configure.in
   43.49 -@@ -8,7 +8,7 @@ AC_CONFIG_SRCDIR([libbfd.c])
   43.50 - AC_CANONICAL_TARGET
   43.51 - AC_ISC_POSIX
   43.52 - 
   43.53 --AM_INIT_AUTOMAKE(bfd, 2.18)
   43.54 -+AM_INIT_AUTOMAKE(bfd, 2.18.atmel.1.0.1.avr32linux.1)
   43.55 - 
   43.56 - dnl These must be called before AM_PROG_LIBTOOL, because it may want
   43.57 - dnl to call AC_CHECK_PROG.
   43.58 -@@ -619,6 +619,7 @@ do
   43.59 -     bfd_efi_app_ia64_vec)	tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
   43.60 -     bfd_elf32_am33lin_vec)	tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
   43.61 -     bfd_elf32_avr_vec)		tb="$tb elf32-avr.lo elf32.lo $elf" ;;
   43.62 -+    bfd_elf32_avr32_vec)	tb="$tb elf32-avr32.lo elf32.lo $elf" ;;
   43.63 -     bfd_elf32_bfin_vec)		tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
   43.64 -     bfd_elf32_bfinfdpic_vec)	tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
   43.65 -     bfd_elf32_big_generic_vec) 	tb="$tb elf32-gen.lo elf32.lo $elf" ;;
   43.66 ---- /dev/null
   43.67 -+++ b/bfd/cpu-avr32.c
   43.68 -@@ -0,0 +1,51 @@
   43.69 -+/* BFD library support routines for AVR32.
   43.70 -+   Copyright 2003-2006 Atmel Corporation.
   43.71 -+
   43.72 -+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
   43.73 -+
   43.74 -+   This is part of BFD, the Binary File Descriptor library.
   43.75 -+
   43.76 -+   This program is free software; you can redistribute it and/or modify
   43.77 -+   it under the terms of the GNU General Public License as published by
   43.78 -+   the Free Software Foundation; either version 2 of the License, or
   43.79 -+   (at your option) any later version.
   43.80 -+
   43.81 -+   This program is distributed in the hope that it will be useful,
   43.82 -+   but WITHOUT ANY WARRANTY; without even the implied warranty of
   43.83 -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   43.84 -+   GNU General Public License for more details.
   43.85 -+
   43.86 -+   You should have received a copy of the GNU General Public License
   43.87 -+   along with this program; if not, write to the Free Software
   43.88 -+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
   43.89 -+
   43.90 -+#include "bfd.h"
   43.91 -+#include "sysdep.h"
   43.92 -+#include "libbfd.h"
   43.93 -+
   43.94 -+#define N(machine, print, default, next)			\
   43.95 -+  {								\
   43.96 -+    32,				/* 32 bits in a word */		\
   43.97 -+    32,				/* 32 bits in an address */	\
   43.98 -+    8,				/* 8 bits in a byte */		\
   43.99 -+    bfd_arch_avr32,		/* architecture */		\
  43.100 -+    machine,			/* machine */			\
  43.101 -+    "avr32",			/* arch name */			\
  43.102 -+    print,			/* printable name */		\
  43.103 -+    1,				/* section align power */	\
  43.104 -+    default,			/* the default machine? */	\
  43.105 -+    bfd_default_compatible,					\
  43.106 -+    bfd_default_scan,						\
  43.107 -+    next,							\
  43.108 -+  }
  43.109 -+
  43.110 -+static const bfd_arch_info_type cpu_info[] =
  43.111 -+{
  43.112 -+  N(bfd_mach_avr32_ap, "avr32:ap", FALSE, &cpu_info[1]),
  43.113 -+  N(bfd_mach_avr32_uc, "avr32:uc", FALSE, &cpu_info[2]),
  43.114 -+  N(bfd_mach_avr32_ucr1, "avr32:ucr1", FALSE, &cpu_info[3]),
  43.115 -+  N(bfd_mach_avr32_ucr2, "avr32:ucr2", FALSE, NULL),
  43.116 -+};
  43.117 -+
  43.118 -+const bfd_arch_info_type bfd_avr32_arch =
  43.119 -+  N(bfd_mach_avr32_ap, "avr32", TRUE, &cpu_info[0]);
  43.120 ---- /dev/null
  43.121 -+++ b/bfd/elf32-avr32.c
  43.122 -@@ -0,0 +1,3915 @@
  43.123 -+/* AVR32-specific support for 32-bit ELF.
  43.124 -+   Copyright 2003-2006 Atmel Corporation.
  43.125 -+
  43.126 -+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
  43.127 -+
  43.128 -+   This file is part of BFD, the Binary File Descriptor library.
  43.129 -+
  43.130 -+   This program is free software; you can redistribute it and/or modify
  43.131 -+   it under the terms of the GNU General Public License as published by
  43.132 -+   the Free Software Foundation; either version 2 of the License, or
  43.133 -+   (at your option) any later version.
  43.134 -+
  43.135 -+   This program is distributed in the hope that it will be useful,
  43.136 -+   but WITHOUT ANY WARRANTY; without even the implied warranty of
  43.137 -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  43.138 -+   GNU General Public License for more details.
  43.139 -+
  43.140 -+   You should have received a copy of the GNU General Public License
  43.141 -+   along with this program; if not, write to the Free Software
  43.142 -+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  43.143 -+
  43.144 -+#include "bfd.h"
  43.145 -+#include "sysdep.h"
  43.146 -+#include "bfdlink.h"
  43.147 -+#include "libbfd.h"
  43.148 -+#include "elf-bfd.h"
  43.149 -+#include "elf/avr32.h"
  43.150 -+#include "elf32-avr32.h"
  43.151 -+
  43.152 -+#define xDEBUG
  43.153 -+#define xRELAX_DEBUG
  43.154 -+
  43.155 -+#ifdef DEBUG
  43.156 -+# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
  43.157 -+#else
  43.158 -+# define pr_debug(fmt, args...) do { } while (0)
  43.159 -+#endif
  43.160 -+
  43.161 -+#ifdef RELAX_DEBUG
  43.162 -+# define RDBG(fmt, args...) fprintf(stderr, fmt, ##args)
  43.163 -+#else
  43.164 -+# define RDBG(fmt, args...) do { } while (0)
  43.165 -+#endif
  43.166 -+
  43.167 -+/* When things go wrong, we want it to blow up, damnit! */
  43.168 -+#undef BFD_ASSERT
  43.169 -+#undef abort
  43.170 -+#define BFD_ASSERT(expr)					\
  43.171 -+  do								\
  43.172 -+    {								\
  43.173 -+      if (!(expr))						\
  43.174 -+	{							\
  43.175 -+	  bfd_assert(__FILE__, __LINE__);			\
  43.176 -+	  abort();						\
  43.177 -+	}							\
  43.178 -+    }								\
  43.179 -+  while (0)
  43.180 -+
  43.181 -+/* The name of the dynamic interpreter. This is put in the .interp section. */
  43.182 -+#define ELF_DYNAMIC_INTERPRETER		"/lib/ld.so.1"
  43.183 -+
  43.184 -+#define AVR32_GOT_HEADER_SIZE		8
  43.185 -+#define AVR32_FUNCTION_STUB_SIZE	8
  43.186 -+
  43.187 -+#define ELF_R_INFO(x, y) ELF32_R_INFO(x, y)
  43.188 -+#define ELF_R_TYPE(x) ELF32_R_TYPE(x)
  43.189 -+#define ELF_R_SYM(x) ELF32_R_SYM(x)
  43.190 -+
  43.191 -+#define NOP_OPCODE 0xd703
  43.192 -+
  43.193 -+
  43.194 -+/* Mapping between BFD relocations and ELF relocations */
  43.195 -+
  43.196 -+static reloc_howto_type *
  43.197 -+bfd_elf32_bfd_reloc_type_lookup(bfd *abfd, bfd_reloc_code_real_type code);
  43.198 -+
  43.199 -+static reloc_howto_type *
  43.200 -+bfd_elf32_bfd_reloc_name_lookup(bfd *abfd, const char *r_name);
  43.201 -+
  43.202 -+static void
  43.203 -+avr32_info_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst);
  43.204 -+
  43.205 -+/* Generic HOWTO */
  43.206 -+#define GENH(name, align, size, bitsize, pcrel, bitpos, complain, mask)	\
  43.207 -+  HOWTO(name, align, size, bitsize, pcrel, bitpos,			\
  43.208 -+	complain_overflow_##complain, bfd_elf_generic_reloc, #name,	\
  43.209 -+	FALSE, 0, mask, pcrel)
  43.210 -+
  43.211 -+static reloc_howto_type elf_avr32_howto_table[] = {
  43.212 -+  /*   NAME		 ALN SZ BSZ PCREL  BP COMPLAIN  MASK	    */
  43.213 -+  GENH(R_AVR32_NONE,	  0, 0, 0,  FALSE, 0, dont,	0x00000000),
  43.214 -+
  43.215 -+  GENH(R_AVR32_32,	  0, 2, 32, FALSE, 0, dont,	0xffffffff),
  43.216 -+  GENH(R_AVR32_16,	  0, 1, 16, FALSE, 0, bitfield,	0x0000ffff),
  43.217 -+  GENH(R_AVR32_8,	  0, 0,  8, FALSE, 0, bitfield,	0x000000ff),
  43.218 -+  GENH(R_AVR32_32_PCREL,  0, 2, 32, TRUE,  0, signed,   0xffffffff),
  43.219 -+  GENH(R_AVR32_16_PCREL,  0, 1, 16, TRUE,  0, signed,   0x0000ffff),
  43.220 -+  GENH(R_AVR32_8_PCREL,	  0, 0,  8, TRUE,  0, signed,   0x000000ff),
  43.221 -+
  43.222 -+  /* Difference between two symbol (sym2 - sym1).  The reloc encodes
  43.223 -+     the value of sym1.  The field contains the difference before any
  43.224 -+     relaxing is done.  */
  43.225 -+  GENH(R_AVR32_DIFF32,	  0, 2, 32, FALSE, 0, dont,	0xffffffff),
  43.226 -+  GENH(R_AVR32_DIFF16,	  0, 1, 16, FALSE, 0, signed,	0x0000ffff),
  43.227 -+  GENH(R_AVR32_DIFF8,	  0, 0,  8, FALSE, 0, signed,	0x000000ff),
  43.228 -+
  43.229 -+  GENH(R_AVR32_GOT32,	  0, 2, 32, FALSE, 0, signed,	0xffffffff),
  43.230 -+  GENH(R_AVR32_GOT16,	  0, 1, 16, FALSE, 0, signed,	0x0000ffff),
  43.231 -+  GENH(R_AVR32_GOT8,	  0, 0,  8, FALSE, 0, signed,	0x000000ff),
  43.232 -+
  43.233 -+  GENH(R_AVR32_21S,	  0, 2, 21, FALSE, 0, signed,	0x1e10ffff),
  43.234 -+  GENH(R_AVR32_16U,	  0, 2, 16, FALSE, 0, unsigned,	0x0000ffff),
  43.235 -+  GENH(R_AVR32_16S,	  0, 2, 16, FALSE, 0, signed,	0x0000ffff),
  43.236 -+  GENH(R_AVR32_8S,	  0, 1,  8, FALSE, 4, signed,	0x00000ff0),
  43.237 -+  GENH(R_AVR32_8S_EXT,	  0, 2,  8, FALSE, 0, signed,	0x000000ff),
  43.238 -+
  43.239 -+  GENH(R_AVR32_22H_PCREL, 1, 2, 21, TRUE,  0, signed,	0x1e10ffff),
  43.240 -+  GENH(R_AVR32_18W_PCREL, 2, 2, 16, TRUE,  0, signed,	0x0000ffff),
  43.241 -+  GENH(R_AVR32_16B_PCREL, 0, 2, 16, TRUE,  0, signed,	0x0000ffff),
  43.242 -+  GENH(R_AVR32_16N_PCREL, 0, 2, 16, TRUE,  0, signed,	0x0000ffff),
  43.243 -+  GENH(R_AVR32_14UW_PCREL, 2, 2, 12, TRUE, 0, unsigned, 0x0000f0ff),
  43.244 -+  GENH(R_AVR32_11H_PCREL, 1, 1, 10, TRUE,  4, signed,	0x00000ff3),
  43.245 -+  GENH(R_AVR32_10UW_PCREL, 2, 2, 8, TRUE,  0, unsigned, 0x000000ff),
  43.246 -+  GENH(R_AVR32_9H_PCREL,  1, 1,  8, TRUE,  4, signed,	0x00000ff0),
  43.247 -+  GENH(R_AVR32_9UW_PCREL, 2, 1,  7, TRUE,  4, unsigned,	0x000007f0),
  43.248 -+
  43.249 -+  GENH(R_AVR32_HI16,	 16, 2, 16, FALSE, 0, dont,	0x0000ffff),
  43.250 -+  GENH(R_AVR32_LO16,	  0, 2, 16, FALSE, 0, dont,	0x0000ffff),
  43.251 -+
  43.252 -+  GENH(R_AVR32_GOTPC,	  0, 2, 32, FALSE, 0, dont,	0xffffffff),
  43.253 -+  GENH(R_AVR32_GOTCALL,   2, 2, 21, FALSE, 0, signed,	0x1e10ffff),
  43.254 -+  GENH(R_AVR32_LDA_GOT,	  2, 2, 21, FALSE, 0, signed,	0x1e10ffff),
  43.255 -+  GENH(R_AVR32_GOT21S,	  0, 2, 21, FALSE, 0, signed,	0x1e10ffff),
  43.256 -+  GENH(R_AVR32_GOT18SW,	  2, 2, 16, FALSE, 0, signed,	0x0000ffff),
  43.257 -+  GENH(R_AVR32_GOT16S,	  0, 2, 16, FALSE, 0, signed,	0x0000ffff),
  43.258 -+  GENH(R_AVR32_GOT7UW,	  2, 1,  5, FALSE, 4, unsigned, 0x000001f0),
  43.259 -+
  43.260 -+  GENH(R_AVR32_32_CPENT,  0, 2, 32, FALSE, 0, dont,	0xffffffff),
  43.261 -+  GENH(R_AVR32_CPCALL,	  2, 2, 16, TRUE,  0, signed,	0x0000ffff),
  43.262 -+  GENH(R_AVR32_16_CP,	  0, 2, 16, TRUE,  0, signed,	0x0000ffff),
  43.263 -+  GENH(R_AVR32_9W_CP,	  2, 1,  7, TRUE,  4, unsigned, 0x000007f0),
  43.264 -+
  43.265 -+  GENH(R_AVR32_RELATIVE,  0, 2, 32, FALSE, 0, signed,	0xffffffff),
  43.266 -+  GENH(R_AVR32_GLOB_DAT,  0, 2, 32, FALSE, 0, dont,	0xffffffff),
  43.267 -+  GENH(R_AVR32_JMP_SLOT,  0, 2, 32, FALSE, 0, dont,	0xffffffff),
  43.268 -+
  43.269 -+  GENH(R_AVR32_ALIGN,	  0, 1, 0,  FALSE, 0, unsigned, 0x00000000),
  43.270 -+
  43.271 -+  GENH(R_AVR32_15S,	  2, 2, 15, FALSE, 0, signed,	0x00007fff),
  43.272 -+};
  43.273 -+
  43.274 -+struct elf_reloc_map
  43.275 -+{
  43.276 -+  bfd_reloc_code_real_type bfd_reloc_val;
  43.277 -+  unsigned char elf_reloc_val;
  43.278 -+};
  43.279 -+
  43.280 -+static const struct elf_reloc_map avr32_reloc_map[] =
  43.281 -+{
  43.282 -+  { BFD_RELOC_NONE,			R_AVR32_NONE },
  43.283 -+
  43.284 -+  { BFD_RELOC_32,			R_AVR32_32 },
  43.285 -+  { BFD_RELOC_16,			R_AVR32_16 },
  43.286 -+  { BFD_RELOC_8,			R_AVR32_8 },
  43.287 -+  { BFD_RELOC_32_PCREL,			R_AVR32_32_PCREL },
  43.288 -+  { BFD_RELOC_16_PCREL,			R_AVR32_16_PCREL },
  43.289 -+  { BFD_RELOC_8_PCREL,			R_AVR32_8_PCREL },
  43.290 -+  { BFD_RELOC_AVR32_DIFF32,		R_AVR32_DIFF32 },
  43.291 -+  { BFD_RELOC_AVR32_DIFF16,		R_AVR32_DIFF16 },
  43.292 -+  { BFD_RELOC_AVR32_DIFF8,		R_AVR32_DIFF8 },
  43.293 -+  { BFD_RELOC_AVR32_GOT32,		R_AVR32_GOT32 },
  43.294 -+  { BFD_RELOC_AVR32_GOT16,		R_AVR32_GOT16 },
  43.295 -+  { BFD_RELOC_AVR32_GOT8,		R_AVR32_GOT8 },
  43.296 -+
  43.297 -+  { BFD_RELOC_AVR32_21S,		R_AVR32_21S },
  43.298 -+  { BFD_RELOC_AVR32_16U,		R_AVR32_16U },
  43.299 -+  { BFD_RELOC_AVR32_16S,		R_AVR32_16S },
  43.300 -+  { BFD_RELOC_AVR32_SUB5,		R_AVR32_16S },
  43.301 -+  { BFD_RELOC_AVR32_8S_EXT,		R_AVR32_8S_EXT },
  43.302 -+  { BFD_RELOC_AVR32_8S,			R_AVR32_8S },
  43.303 -+
  43.304 -+  { BFD_RELOC_AVR32_22H_PCREL,		R_AVR32_22H_PCREL },
  43.305 -+  { BFD_RELOC_AVR32_18W_PCREL,		R_AVR32_18W_PCREL },
  43.306 -+  { BFD_RELOC_AVR32_16B_PCREL,		R_AVR32_16B_PCREL },
  43.307 -+  { BFD_RELOC_AVR32_16N_PCREL,		R_AVR32_16N_PCREL },
  43.308 -+  { BFD_RELOC_AVR32_11H_PCREL,		R_AVR32_11H_PCREL },
  43.309 -+  { BFD_RELOC_AVR32_10UW_PCREL,		R_AVR32_10UW_PCREL },
  43.310 -+  { BFD_RELOC_AVR32_9H_PCREL,		R_AVR32_9H_PCREL },
  43.311 -+  { BFD_RELOC_AVR32_9UW_PCREL,		R_AVR32_9UW_PCREL },
  43.312 -+
  43.313 -+  { BFD_RELOC_HI16,			R_AVR32_HI16 },
  43.314 -+  { BFD_RELOC_LO16,			R_AVR32_LO16 },
  43.315 -+
  43.316 -+  { BFD_RELOC_AVR32_GOTPC,		R_AVR32_GOTPC },
  43.317 -+  { BFD_RELOC_AVR32_GOTCALL,		R_AVR32_GOTCALL },
  43.318 -+  { BFD_RELOC_AVR32_LDA_GOT,		R_AVR32_LDA_GOT },
  43.319 -+  { BFD_RELOC_AVR32_GOT21S,		R_AVR32_GOT21S },
  43.320 -+  { BFD_RELOC_AVR32_GOT18SW,		R_AVR32_GOT18SW },
  43.321 -+  { BFD_RELOC_AVR32_GOT16S,		R_AVR32_GOT16S },
  43.322 -+  /* GOT7UW should never be generated by the assembler */
  43.323 -+
  43.324 -+  { BFD_RELOC_AVR32_32_CPENT,		R_AVR32_32_CPENT },
  43.325 -+  { BFD_RELOC_AVR32_CPCALL,		R_AVR32_CPCALL },
  43.326 -+  { BFD_RELOC_AVR32_16_CP,		R_AVR32_16_CP },
  43.327 -+  { BFD_RELOC_AVR32_9W_CP,		R_AVR32_9W_CP },
  43.328 -+
  43.329 -+  { BFD_RELOC_AVR32_ALIGN,		R_AVR32_ALIGN },
  43.330 -+
  43.331 -+  { BFD_RELOC_AVR32_15S,		R_AVR32_15S },
  43.332 -+};
  43.333 -+
  43.334 -+static reloc_howto_type *
  43.335 -+bfd_elf32_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
  43.336 -+				 bfd_reloc_code_real_type code)
  43.337 -+{
  43.338 -+  unsigned int i;
  43.339 -+
  43.340 -+  for (i = 0; i < sizeof(avr32_reloc_map) / sizeof(struct elf_reloc_map); i++)
  43.341 -+    {
  43.342 -+      if (avr32_reloc_map[i].bfd_reloc_val == code)
  43.343 -+	return &elf_avr32_howto_table[avr32_reloc_map[i].elf_reloc_val];
  43.344 -+    }
  43.345 -+
  43.346 -+  return NULL;
  43.347 -+}
  43.348 -+
  43.349 -+static reloc_howto_type *
  43.350 -+bfd_elf32_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
  43.351 -+                 const char *r_name)
  43.352 -+{
  43.353 -+  unsigned int i;
  43.354 -+
  43.355 -+  for (i = 0;
  43.356 -+       i < sizeof (elf_avr32_howto_table) / sizeof (elf_avr32_howto_table[0]);
  43.357 -+       i++)
  43.358 -+    if (elf_avr32_howto_table[i].name != NULL
  43.359 -+    && strcasecmp (elf_avr32_howto_table[i].name, r_name) == 0)
  43.360 -+      return &elf_avr32_howto_table[i];
  43.361 -+
  43.362 -+  return NULL;
  43.363 -+}
  43.364 -+
  43.365 -+/* Set the howto pointer for an AVR32 ELF reloc.  */
  43.366 -+static void
  43.367 -+avr32_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
  43.368 -+		     arelent *cache_ptr,
  43.369 -+		     Elf_Internal_Rela *dst)
  43.370 -+{
  43.371 -+  unsigned int r_type;
  43.372 -+
  43.373 -+  r_type = ELF32_R_TYPE (dst->r_info);
  43.374 -+  BFD_ASSERT (r_type < (unsigned int) R_AVR32_max);
  43.375 -+  cache_ptr->howto = &elf_avr32_howto_table[r_type];
  43.376 -+}
  43.377 -+
  43.378 -+
  43.379 -+/* AVR32 ELF linker hash table and associated hash entries. */
  43.380 -+
  43.381 -+static struct bfd_hash_entry *
  43.382 -+avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
  43.383 -+			    struct bfd_hash_table *table,
  43.384 -+			    const char *string);
  43.385 -+static void
  43.386 -+avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
  43.387 -+			       struct elf_link_hash_entry *dir,
  43.388 -+			       struct elf_link_hash_entry *ind);
  43.389 -+static struct bfd_link_hash_table *
  43.390 -+avr32_elf_link_hash_table_create(bfd *abfd);
  43.391 -+
  43.392 -+/*
  43.393 -+  Try to limit memory usage to something reasonable when sorting the
  43.394 -+  GOT.  If just a couple of entries end up getting more references
  43.395 -+  than this, it won't affect performance at all, but if there are many
  43.396 -+  of them, we could end up with the wrong symbols being assigned the
  43.397 -+  first GOT entries.
  43.398 -+*/
  43.399 -+#define MAX_NR_GOT_HOLES	2048
  43.400 -+
  43.401 -+/*
  43.402 -+  AVR32 GOT entry.  We need to keep track of refcounts and offsets
  43.403 -+  simultaneously, since we need the offsets during relaxation, and we
  43.404 -+  also want to be able to drop GOT entries during relaxation. In
  43.405 -+  addition to this, we want to keep the list of GOT entries sorted so
  43.406 -+  that we can keep the most-used entries at the lowest offsets.
  43.407 -+*/
  43.408 -+struct got_entry
  43.409 -+{
  43.410 -+  struct got_entry *next;
  43.411 -+  struct got_entry **pprev;
  43.412 -+  int refcount;
  43.413 -+  bfd_signed_vma offset;
  43.414 -+};
  43.415 -+
  43.416 -+struct elf_avr32_link_hash_entry
  43.417 -+{
  43.418 -+  struct elf_link_hash_entry root;
  43.419 -+
  43.420 -+  /* Number of runtime relocations against this symbol.  */
  43.421 -+  unsigned int possibly_dynamic_relocs;
  43.422 -+
  43.423 -+  /* If there are anything but R_AVR32_GOT18 relocations against this
  43.424 -+     symbol, it means that someone may be taking the address of the
  43.425 -+     function, and we should therefore not create a stub.  */
  43.426 -+  bfd_boolean no_fn_stub;
  43.427 -+
  43.428 -+  /* If there is a R_AVR32_32 relocation in a read-only section
  43.429 -+     against this symbol, we could be in trouble. If we're linking a
  43.430 -+     shared library or this symbol is defined in one, it means we must
  43.431 -+     emit a run-time reloc for it and that's not allowed in read-only
  43.432 -+     sections.  */
  43.433 -+  asection *readonly_reloc_sec;
  43.434 -+  bfd_vma readonly_reloc_offset;
  43.435 -+
  43.436 -+  /* Record which frag (if any) contains the symbol.  This is used
  43.437 -+     during relaxation in order to avoid having to update all symbols
  43.438 -+     whenever we move something.  For local symbols, this information
  43.439 -+     is in the local_sym_frag member of struct elf_obj_tdata.  */
  43.440 -+  struct fragment *sym_frag;
  43.441 -+};
  43.442 -+#define avr32_elf_hash_entry(ent) ((struct elf_avr32_link_hash_entry *)(ent))
  43.443 -+
  43.444 -+struct elf_avr32_link_hash_table
  43.445 -+{
  43.446 -+  struct elf_link_hash_table root;
  43.447 -+
  43.448 -+  /* Shortcuts to get to dynamic linker sections.  */
  43.449 -+  asection *sgot;
  43.450 -+  asection *srelgot;
  43.451 -+  asection *sstub;
  43.452 -+
  43.453 -+  /* We use a variation of Pigeonhole Sort to sort the GOT.  After the
  43.454 -+     initial refcounts have been determined, we initialize
  43.455 -+     nr_got_holes to the highest refcount ever seen and allocate an
  43.456 -+     array of nr_got_holes entries for got_hole.  Each GOT entry is
  43.457 -+     then stored in this array at the index given by its refcount.
  43.458 -+
  43.459 -+     When a GOT entry has its refcount decremented during relaxation,
  43.460 -+     it is moved to a lower index in the got_hole array.
  43.461 -+   */
  43.462 -+  struct got_entry **got_hole;
  43.463 -+  int nr_got_holes;
  43.464 -+
  43.465 -+  /* Dynamic relocations to local symbols.  Only used when linking a
  43.466 -+     shared library and -Bsymbolic is not given.  */
  43.467 -+  unsigned int local_dynamic_relocs;
  43.468 -+
  43.469 -+  bfd_boolean relocations_analyzed;
  43.470 -+  bfd_boolean symbols_adjusted;
  43.471 -+  bfd_boolean repeat_pass;
  43.472 -+  bfd_boolean direct_data_refs;
  43.473 -+  unsigned int relax_iteration;
  43.474 -+  unsigned int relax_pass;
  43.475 -+};
  43.476 -+#define avr32_elf_hash_table(p)				\
  43.477 -+  ((struct elf_avr32_link_hash_table *)((p)->hash))
  43.478 -+
  43.479 -+static struct bfd_hash_entry *
  43.480 -+avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
  43.481 -+			    struct bfd_hash_table *table,
  43.482 -+			    const char *string)
  43.483 -+{
  43.484 -+  struct elf_avr32_link_hash_entry *ret = avr32_elf_hash_entry(entry);
  43.485 -+
  43.486 -+  /* Allocate the structure if it hasn't already been allocated by a
  43.487 -+     subclass */
  43.488 -+  if (ret == NULL)
  43.489 -+    ret = (struct elf_avr32_link_hash_entry *)
  43.490 -+      bfd_hash_allocate(table, sizeof(struct elf_avr32_link_hash_entry));
  43.491 -+
  43.492 -+  if (ret == NULL)
  43.493 -+    return NULL;
  43.494 -+
  43.495 -+  memset(ret, 0, sizeof(struct elf_avr32_link_hash_entry));
  43.496 -+
  43.497 -+  /* Give the superclass a chance */
  43.498 -+  ret = (struct elf_avr32_link_hash_entry *)
  43.499 -+    _bfd_elf_link_hash_newfunc((struct bfd_hash_entry *)ret, table, string);
  43.500 -+
  43.501 -+  return (struct bfd_hash_entry *)ret;
  43.502 -+}
  43.503 -+
  43.504 -+/* Copy data from an indirect symbol to its direct symbol, hiding the
  43.505 -+   old indirect symbol.  Process additional relocation information.
  43.506 -+   Also called for weakdefs, in which case we just let
  43.507 -+   _bfd_elf_link_hash_copy_indirect copy the flags for us.  */
  43.508 -+
  43.509 -+static void
  43.510 -+avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
  43.511 -+			       struct elf_link_hash_entry *dir,
  43.512 -+			       struct elf_link_hash_entry *ind)
  43.513 -+{
  43.514 -+  struct elf_avr32_link_hash_entry *edir, *eind;
  43.515 -+
  43.516 -+  _bfd_elf_link_hash_copy_indirect (info, dir, ind);
  43.517 -+
  43.518 -+  if (ind->root.type != bfd_link_hash_indirect)
  43.519 -+    return;
  43.520 -+
  43.521 -+  edir = (struct elf_avr32_link_hash_entry *)dir;
  43.522 -+  eind = (struct elf_avr32_link_hash_entry *)ind;
  43.523 -+
  43.524 -+  edir->possibly_dynamic_relocs += eind->possibly_dynamic_relocs;
  43.525 -+  edir->no_fn_stub = edir->no_fn_stub || eind->no_fn_stub;
  43.526 -+}
  43.527 -+
  43.528 -+static struct bfd_link_hash_table *
  43.529 -+avr32_elf_link_hash_table_create(bfd *abfd)
  43.530 -+{
  43.531 -+  struct elf_avr32_link_hash_table *ret;
  43.532 -+
  43.533 -+  ret = bfd_zmalloc(sizeof(*ret));
  43.534 -+  if (ret == NULL)
  43.535 -+    return NULL;
  43.536 -+
  43.537 -+  if (! _bfd_elf_link_hash_table_init(&ret->root, abfd,
  43.538 -+				      avr32_elf_link_hash_newfunc,
  43.539 -+                      sizeof (struct elf_avr32_link_hash_entry)))
  43.540 -+    {
  43.541 -+      free(ret);
  43.542 -+      return NULL;
  43.543 -+    }
  43.544 -+
  43.545 -+  /* Prevent the BFD core from creating bogus got_entry pointers */
  43.546 -+  ret->root.init_got_refcount.glist = NULL;
  43.547 -+  ret->root.init_plt_refcount.glist = NULL;
  43.548 -+  ret->root.init_got_offset.glist = NULL;
  43.549 -+  ret->root.init_plt_offset.glist = NULL;
  43.550 -+
  43.551 -+  return &ret->root.root;
  43.552 -+}
  43.553 -+
  43.554 -+
  43.555 -+/* Initial analysis and creation of dynamic sections and symbols */
  43.556 -+
  43.557 -+static asection *
  43.558 -+create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
  43.559 -+		       unsigned int align_power);
  43.560 -+static struct elf_link_hash_entry *
  43.561 -+create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
  43.562 -+		      const char *name, asection *sec,
  43.563 -+		      bfd_vma offset);
  43.564 -+static bfd_boolean
  43.565 -+avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info);
  43.566 -+static bfd_boolean
  43.567 -+avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info);
  43.568 -+static bfd_boolean
  43.569 -+avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
  43.570 -+		    const Elf_Internal_Rela *relocs);
  43.571 -+static bfd_boolean
  43.572 -+avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
  43.573 -+				struct elf_link_hash_entry *h);
  43.574 -+
  43.575 -+static asection *
  43.576 -+create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
  43.577 -+		       unsigned int align_power)
  43.578 -+{
  43.579 -+  asection *sec;
  43.580 -+
  43.581 -+  sec = bfd_make_section(dynobj, name);
  43.582 -+  if (!sec
  43.583 -+      || !bfd_set_section_flags(dynobj, sec, flags)
  43.584 -+      || !bfd_set_section_alignment(dynobj, sec, align_power))
  43.585 -+    return NULL;
  43.586 -+
  43.587 -+  return sec;
  43.588 -+}
  43.589 -+
  43.590 -+static struct elf_link_hash_entry *
  43.591 -+create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
  43.592 -+		      const char *name, asection *sec,
  43.593 -+		      bfd_vma offset)
  43.594 -+{
  43.595 -+  struct bfd_link_hash_entry *bh = NULL;
  43.596 -+  struct elf_link_hash_entry *h;
  43.597 -+  const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
  43.598 -+
  43.599 -+  if (!(_bfd_generic_link_add_one_symbol
  43.600 -+	(info, dynobj, name, BSF_GLOBAL, sec, offset, NULL, FALSE,
  43.601 -+	 bed->collect, &bh)))
  43.602 -+    return NULL;
  43.603 -+
  43.604 -+  h = (struct elf_link_hash_entry *)bh;
  43.605 -+  h->def_regular = 1;
  43.606 -+  h->type = STT_OBJECT;
  43.607 -+  h->other = STV_HIDDEN;
  43.608 -+
  43.609 -+  return h;
  43.610 -+}
  43.611 -+
  43.612 -+static bfd_boolean
  43.613 -+avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info)
  43.614 -+{
  43.615 -+  struct elf_avr32_link_hash_table *htab;
  43.616 -+  flagword flags;
  43.617 -+  const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
  43.618 -+
  43.619 -+  htab = avr32_elf_hash_table(info);
  43.620 -+  flags = bed->dynamic_sec_flags;
  43.621 -+
  43.622 -+  if (htab->sgot)
  43.623 -+    return TRUE;
  43.624 -+
  43.625 -+  htab->sgot = create_dynamic_section(dynobj, ".got", flags, 2);
  43.626 -+  if (!htab->srelgot)
  43.627 -+    htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
  43.628 -+					   flags | SEC_READONLY, 2);
  43.629 -+
  43.630 -+  if (!htab->sgot || !htab->srelgot)
  43.631 -+    return FALSE;
  43.632 -+
  43.633 -+  htab->root.hgot = create_dynamic_symbol(dynobj, info, "_GLOBAL_OFFSET_TABLE_",
  43.634 -+					  htab->sgot, 0);
  43.635 -+  if (!htab->root.hgot)
  43.636 -+    return FALSE;
  43.637 -+
  43.638 -+  /* Make room for the GOT header */
  43.639 -+  htab->sgot->size += bed->got_header_size;
  43.640 -+
  43.641 -+  return TRUE;
  43.642 -+}
  43.643 -+
  43.644 -+/* (1) Create all dynamic (i.e. linker generated) sections that we may
  43.645 -+   need during the link */
  43.646 -+
  43.647 -+static bfd_boolean
  43.648 -+avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
  43.649 -+{
  43.650 -+  struct elf_avr32_link_hash_table *htab;
  43.651 -+  flagword flags;
  43.652 -+  const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
  43.653 -+
  43.654 -+  pr_debug("(1) create dynamic sections\n");
  43.655 -+
  43.656 -+  htab = avr32_elf_hash_table(info);
  43.657 -+  flags = bed->dynamic_sec_flags;
  43.658 -+
  43.659 -+  if (!avr32_elf_create_got_section (dynobj, info))
  43.660 -+    return FALSE;
  43.661 -+
  43.662 -+  if (!htab->sstub)
  43.663 -+    htab->sstub = create_dynamic_section(dynobj, ".stub",
  43.664 -+					 flags | SEC_READONLY | SEC_CODE, 2);
  43.665 -+
  43.666 -+  if (!htab->sstub)
  43.667 -+    return FALSE;
  43.668 -+
  43.669 -+  return TRUE;
  43.670 -+}
  43.671 -+
  43.672 -+/* (2) Go through all the relocs and count any potential GOT- or
  43.673 -+   PLT-references to each symbol */
  43.674 -+
  43.675 -+static bfd_boolean
  43.676 -+avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
  43.677 -+		    const Elf_Internal_Rela *relocs)
  43.678 -+{
  43.679 -+  Elf_Internal_Shdr *symtab_hdr;
  43.680 -+  struct elf_avr32_link_hash_table *htab;
  43.681 -+  struct elf_link_hash_entry **sym_hashes;
  43.682 -+  const Elf_Internal_Rela *rel, *rel_end;
  43.683 -+  struct got_entry **local_got_ents;
  43.684 -+  struct got_entry *got;
  43.685 -+  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
  43.686 -+  asection *sgot;
  43.687 -+  bfd *dynobj;
  43.688 -+
  43.689 -+  pr_debug("(2) check relocs for %s:<%s> (size 0x%lx)\n",
  43.690 -+	   abfd->filename, sec->name, sec->size);
  43.691 -+
  43.692 -+  if (info->relocatable)
  43.693 -+    return TRUE;
  43.694 -+
  43.695 -+  dynobj = elf_hash_table(info)->dynobj;
  43.696 -+  symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
  43.697 -+  sym_hashes = elf_sym_hashes(abfd);
  43.698 -+  htab = avr32_elf_hash_table(info);
  43.699 -+  local_got_ents = elf_local_got_ents(abfd);
  43.700 -+  sgot = htab->sgot;
  43.701 -+
  43.702 -+  rel_end = relocs + sec->reloc_count;
  43.703 -+  for (rel = relocs; rel < rel_end; rel++)
  43.704 -+    {
  43.705 -+      unsigned long r_symndx, r_type;
  43.706 -+      struct elf_avr32_link_hash_entry *h;
  43.707 -+
  43.708 -+      r_symndx = ELF32_R_SYM(rel->r_info);
  43.709 -+      r_type = ELF32_R_TYPE(rel->r_info);
  43.710 -+
  43.711 -+      /* Local symbols use local_got_ents, while others store the same
  43.712 -+	 information in the hash entry */
  43.713 -+      if (r_symndx < symtab_hdr->sh_info)
  43.714 -+	{
  43.715 -+	  pr_debug("  (2a) processing local symbol %lu\n", r_symndx);
  43.716 -+	  h = NULL;
  43.717 -+	}
  43.718 -+      else
  43.719 -+	{
  43.720 -+	  h = (struct elf_avr32_link_hash_entry *)
  43.721 -+	    sym_hashes[r_symndx - symtab_hdr->sh_info];
  43.722 -+	  while (h->root.type == bfd_link_hash_indirect
  43.723 -+		 || h->root.type == bfd_link_hash_warning)
  43.724 -+	    h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
  43.725 -+	  pr_debug("  (2a) processing symbol %s\n", h->root.root.root.string);
  43.726 -+	}
  43.727 -+
  43.728 -+      /* Some relocs require special sections to be created.  */
  43.729 -+      switch (r_type)
  43.730 -+	{
  43.731 -+	case R_AVR32_GOT32:
  43.732 -+	case R_AVR32_GOT16:
  43.733 -+	case R_AVR32_GOT8:
  43.734 -+	case R_AVR32_GOT21S:
  43.735 -+	case R_AVR32_GOT18SW:
  43.736 -+	case R_AVR32_GOT16S:
  43.737 -+	case R_AVR32_GOT7UW:
  43.738 -+	case R_AVR32_LDA_GOT:
  43.739 -+	case R_AVR32_GOTCALL:
  43.740 -+	  if (rel->r_addend)
  43.741 -+	    {
  43.742 -+	      if (info->callbacks->reloc_dangerous
  43.743 -+		  (info, _("Non-zero addend on GOT-relative relocation"),
  43.744 -+		   abfd, sec, rel->r_offset) == FALSE)
  43.745 -+		return FALSE;
  43.746 -+	    }
  43.747 -+	  /* fall through */
  43.748 -+	case R_AVR32_GOTPC:
  43.749 -+	  if (dynobj == NULL)
  43.750 -+	    elf_hash_table(info)->dynobj = dynobj = abfd;
  43.751 -+	  if (sgot == NULL && !avr32_elf_create_got_section(dynobj, info))
  43.752 -+	    return FALSE;
  43.753 -+	  break;
  43.754 -+	case R_AVR32_32:
  43.755 -+	  /* We may need to create .rela.dyn later on.  */
  43.756 -+	  if (dynobj == NULL
  43.757 -+	      && (info->shared || h != NULL)
  43.758 -+	      && (sec->flags & SEC_ALLOC))
  43.759 -+	    elf_hash_table(info)->dynobj = dynobj = abfd;
  43.760 -+	  break;
  43.761 -+	}
  43.762 -+
  43.763 -+      if (h != NULL && r_type != R_AVR32_GOT18SW)
  43.764 -+	h->no_fn_stub = TRUE;
  43.765 -+
  43.766 -+      switch (r_type)
  43.767 -+	{
  43.768 -+	case R_AVR32_GOT32:
  43.769 -+	case R_AVR32_GOT16:
  43.770 -+	case R_AVR32_GOT8:
  43.771 -+	case R_AVR32_GOT21S:
  43.772 -+	case R_AVR32_GOT18SW:
  43.773 -+	case R_AVR32_GOT16S:
  43.774 -+	case R_AVR32_GOT7UW:
  43.775 -+	case R_AVR32_LDA_GOT:
  43.776 -+	case R_AVR32_GOTCALL:
  43.777 -+	  if (h != NULL)
  43.778 -+	    {
  43.779 -+	      got = h->root.got.glist;
  43.780 -+	      if (!got)
  43.781 -+		{
  43.782 -+		  got = bfd_zalloc(abfd, sizeof(struct got_entry));
  43.783 -+		  if (!got)
  43.784 -+		    return FALSE;
  43.785 -+		  h->root.got.glist = got;
  43.786 -+		}
  43.787 -+	    }
  43.788 -+	  else
  43.789 -+	    {
  43.790 -+	      if (!local_got_ents)
  43.791 -+		{
  43.792 -+		  bfd_size_type size;
  43.793 -+		  bfd_size_type i;
  43.794 -+		  struct got_entry *tmp_entry;
  43.795 -+
  43.796 -+		  size = symtab_hdr->sh_info;
  43.797 -+		  size *= sizeof(struct got_entry *) + sizeof(struct got_entry);
  43.798 -+		  local_got_ents = bfd_zalloc(abfd, size);
  43.799 -+		  if (!local_got_ents)
  43.800 -+		    return FALSE;
  43.801 -+
  43.802 -+		  elf_local_got_ents(abfd) = local_got_ents;
  43.803 -+
  43.804 -+		  tmp_entry = (struct got_entry *)(local_got_ents
  43.805 -+						   + symtab_hdr->sh_info);
  43.806 -+		  for (i = 0; i < symtab_hdr->sh_info; i++)
  43.807 -+		    local_got_ents[i] = &tmp_entry[i];
  43.808 -+		}
  43.809 -+
  43.810 -+	      got = local_got_ents[r_symndx];
  43.811 -+	    }
  43.812 -+
  43.813 -+	  got->refcount++;
  43.814 -+	  if (got->refcount > htab->nr_got_holes)
  43.815 -+	    htab->nr_got_holes = got->refcount;
  43.816 -+	  break;
  43.817 -+
  43.818 -+	case R_AVR32_32:
  43.819 -+	  if ((info->shared || h != NULL)
  43.820 -+	      && (sec->flags & SEC_ALLOC))
  43.821 -+	    {
  43.822 -+	      if (htab->srelgot == NULL)
  43.823 -+		{
  43.824 -+		  htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
  43.825 -+							 bed->dynamic_sec_flags
  43.826 -+							 | SEC_READONLY, 2);
  43.827 -+		  if (htab->srelgot == NULL)
  43.828 -+		    return FALSE;
  43.829 -+		}
  43.830 -+
  43.831 -+	      if (sec->flags & SEC_READONLY
  43.832 -+		  && !h->readonly_reloc_sec)
  43.833 -+		{
  43.834 -+		  h->readonly_reloc_sec = sec;
  43.835 -+		  h->readonly_reloc_offset = rel->r_offset;
  43.836 -+		}
  43.837 -+
  43.838 -+	      if (h != NULL)
  43.839 -+		{
  43.840 -+		  pr_debug("Non-GOT reference to symbol %s\n",
  43.841 -+			   h->root.root.root.string);
  43.842 -+		  h->possibly_dynamic_relocs++;
  43.843 -+		}
  43.844 -+	      else
  43.845 -+		{
  43.846 -+		  pr_debug("Non-GOT reference to local symbol %lu\n",
  43.847 -+			   r_symndx);
  43.848 -+		  htab->local_dynamic_relocs++;
  43.849 -+		}
  43.850 -+	    }
  43.851 -+
  43.852 -+	  break;
  43.853 -+
  43.854 -+	  /* TODO: GNU_VTINHERIT and GNU_VTENTRY */
  43.855 -+	}
  43.856 -+    }
  43.857 -+
  43.858 -+  return TRUE;
  43.859 -+}
  43.860 -+
  43.861 -+/* (3) Adjust a symbol defined by a dynamic object and referenced by a
  43.862 -+   regular object.  The current definition is in some section of the
  43.863 -+   dynamic object, but we're not including those sections.  We have to
  43.864 -+   change the definition to something the rest of the link can
  43.865 -+   understand.  */
  43.866 -+
  43.867 -+static bfd_boolean
  43.868 -+avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
  43.869 -+				struct elf_link_hash_entry *h)
  43.870 -+{
  43.871 -+  struct elf_avr32_link_hash_table *htab;
  43.872 -+  struct elf_avr32_link_hash_entry *havr;
  43.873 -+  bfd *dynobj;
  43.874 -+
  43.875 -+  pr_debug("(3) adjust dynamic symbol %s\n", h->root.root.string);
  43.876 -+
  43.877 -+  htab = avr32_elf_hash_table(info);
  43.878 -+  havr = (struct elf_avr32_link_hash_entry *)h;
  43.879 -+  dynobj = elf_hash_table(info)->dynobj;
  43.880 -+
  43.881 -+  /* Make sure we know what is going on here.  */
  43.882 -+  BFD_ASSERT (dynobj != NULL
  43.883 -+	      && (h->u.weakdef != NULL
  43.884 -+		  || (h->def_dynamic
  43.885 -+		      && h->ref_regular
  43.886 -+		      && !h->def_regular)));
  43.887 -+
  43.888 -+  /* We don't want dynamic relocations in read-only sections. */
  43.889 -+  if (havr->readonly_reloc_sec)
  43.890 -+    {
  43.891 -+      if (info->callbacks->reloc_dangerous
  43.892 -+	  (info, _("dynamic relocation in read-only section"),
  43.893 -+	   havr->readonly_reloc_sec->owner, havr->readonly_reloc_sec,
  43.894 -+	   havr->readonly_reloc_offset) == FALSE)
  43.895 -+	return FALSE;
  43.896 -+    }
  43.897 -+
  43.898 -+  /* If this is a function, create a stub if possible and set the
  43.899 -+     symbol to the stub location.  */
  43.900 -+  if (0 && !havr->no_fn_stub)
  43.901 -+    {
  43.902 -+      if (!h->def_regular)
  43.903 -+	{
  43.904 -+	  asection *s = htab->sstub;
  43.905 -+
  43.906 -+	  BFD_ASSERT(s != NULL);
  43.907 -+
  43.908 -+	  h->root.u.def.section = s;
  43.909 -+	  h->root.u.def.value = s->size;
  43.910 -+	  h->plt.offset = s->size;
  43.911 -+	  s->size += AVR32_FUNCTION_STUB_SIZE;
  43.912 -+
  43.913 -+	  return TRUE;
  43.914 -+	}
  43.915 -+    }
  43.916 -+  else if (h->type == STT_FUNC)
  43.917 -+    {
  43.918 -+      /* This will set the entry for this symbol in the GOT to 0, and
  43.919 -+	 the dynamic linker will take care of this. */
  43.920 -+      h->root.u.def.value = 0;
  43.921 -+      return TRUE;
  43.922 -+    }
  43.923 -+
  43.924 -+  /* If this is a weak symbol, and there is a real definition, the
  43.925 -+     processor independent code will have arranged for us to see the
  43.926 -+     real definition first, and we can just use the same value.  */
  43.927 -+  if (h->u.weakdef != NULL)
  43.928 -+    {
  43.929 -+      BFD_ASSERT(h->u.weakdef->root.type == bfd_link_hash_defined
  43.930 -+		 || h->u.weakdef->root.type == bfd_link_hash_defweak);
  43.931 -+      h->root.u.def.section = h->u.weakdef->root.u.def.section;
  43.932 -+      h->root.u.def.value = h->u.weakdef->root.u.def.value;
  43.933 -+      return TRUE;
  43.934 -+    }
  43.935 -+
  43.936 -+  /* This is a reference to a symbol defined by a dynamic object which
  43.937 -+     is not a function.  */
  43.938 -+
  43.939 -+  return TRUE;
  43.940 -+}
  43.941 -+
  43.942 -+
  43.943 -+/* Garbage-collection of unused sections */
  43.944 -+
  43.945 -+static asection *
  43.946 -+avr32_elf_gc_mark_hook(asection *sec,
  43.947 -+		       struct bfd_link_info *info ATTRIBUTE_UNUSED,
  43.948 -+		       Elf_Internal_Rela *rel,
  43.949 -+		       struct elf_link_hash_entry *h,
  43.950 -+		       Elf_Internal_Sym *sym)
  43.951 -+{
  43.952 -+  if (h)
  43.953 -+    {
  43.954 -+      switch (ELF32_R_TYPE(rel->r_info))
  43.955 -+	{
  43.956 -+	  /* TODO: VTINHERIT/VTENTRY */
  43.957 -+	default:
  43.958 -+	  switch (h->root.type)
  43.959 -+	    {
  43.960 -+	    case bfd_link_hash_defined:
  43.961 -+	    case bfd_link_hash_defweak:
  43.962 -+	      return h->root.u.def.section;
  43.963 -+
  43.964 -+	    case bfd_link_hash_common:
  43.965 -+	      return h->root.u.c.p->section;
  43.966 -+
  43.967 -+	    default:
  43.968 -+	      break;
  43.969 -+	    }
  43.970 -+	}
  43.971 -+    }
  43.972 -+  else
  43.973 -+    return bfd_section_from_elf_index(sec->owner, sym->st_shndx);
  43.974 -+
  43.975 -+  return NULL;
  43.976 -+}
  43.977 -+
  43.978 -+/* Update the GOT entry reference counts for the section being removed. */
  43.979 -+static bfd_boolean
  43.980 -+avr32_elf_gc_sweep_hook(bfd *abfd,
  43.981 -+			struct bfd_link_info *info ATTRIBUTE_UNUSED,
  43.982 -+			asection *sec,
  43.983 -+			const Elf_Internal_Rela *relocs)
  43.984 -+{
  43.985 -+  Elf_Internal_Shdr *symtab_hdr;
  43.986 -+  struct elf_avr32_link_hash_entry **sym_hashes;
  43.987 -+  struct got_entry **local_got_ents;
  43.988 -+  const Elf_Internal_Rela *rel, *relend;
  43.989 -+
  43.990 -+  if (!(sec->flags & SEC_ALLOC))
  43.991 -+    return TRUE;
  43.992 -+
  43.993 -+  symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
  43.994 -+  sym_hashes = (struct elf_avr32_link_hash_entry **)elf_sym_hashes(abfd);
  43.995 -+  local_got_ents = elf_local_got_ents(abfd);
  43.996 -+
  43.997 -+  relend = relocs + sec->reloc_count;
  43.998 -+  for (rel = relocs; rel < relend; rel++)
  43.999 -+    {
 43.1000 -+      unsigned long r_symndx;
 43.1001 -+      unsigned int r_type;
 43.1002 -+      struct elf_avr32_link_hash_entry *h = NULL;
 43.1003 -+
 43.1004 -+      r_symndx = ELF32_R_SYM(rel->r_info);
 43.1005 -+      if (r_symndx >= symtab_hdr->sh_info)
 43.1006 -+	{
 43.1007 -+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
 43.1008 -+	  while (h->root.root.type == bfd_link_hash_indirect
 43.1009 -+		 || h->root.root.type == bfd_link_hash_warning)
 43.1010 -+	    h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
 43.1011 -+	}
 43.1012 -+
 43.1013 -+      r_type = ELF32_R_TYPE(rel->r_info);
 43.1014 -+
 43.1015 -+      switch (r_type)
 43.1016 -+	{
 43.1017 -+	case R_AVR32_GOT32:
 43.1018 -+	case R_AVR32_GOT16:
 43.1019 -+	case R_AVR32_GOT8:
 43.1020 -+	case R_AVR32_GOT21S:
 43.1021 -+	case R_AVR32_GOT18SW:
 43.1022 -+	case R_AVR32_GOT16S:
 43.1023 -+	case R_AVR32_GOT7UW:
 43.1024 -+	case R_AVR32_LDA_GOT:
 43.1025 -+	case R_AVR32_GOTCALL:
 43.1026 -+	  if (h)
 43.1027 -+	    h->root.got.glist->refcount--;
 43.1028 -+	  else
 43.1029 -+	    local_got_ents[r_symndx]->refcount--;
 43.1030 -+	  break;
 43.1031 -+
 43.1032 -+	case R_AVR32_32:
 43.1033 -+	  if (info->shared || h)
 43.1034 -+	    {
 43.1035 -+	      if (h)
 43.1036 -+		h->possibly_dynamic_relocs--;
 43.1037 -+	      else
 43.1038 -+		avr32_elf_hash_table(info)->local_dynamic_relocs--;
 43.1039 -+	    }
 43.1040 -+
 43.1041 -+	default:
 43.1042 -+	  break;
 43.1043 -+	}
 43.1044 -+    }
 43.1045 -+
 43.1046 -+  return TRUE;
 43.1047 -+}
 43.1048 -+
 43.1049 -+/* Sizing and refcounting of dynamic sections */
 43.1050 -+
 43.1051 -+static void
 43.1052 -+insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
 43.1053 -+static void
 43.1054 -+unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
 43.1055 -+static void
 43.1056 -+ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
 43.1057 -+static bfd_boolean
 43.1058 -+assign_got_offsets(struct elf_avr32_link_hash_table *htab);
 43.1059 -+static bfd_boolean
 43.1060 -+allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info);
 43.1061 -+static bfd_boolean
 43.1062 -+avr32_elf_size_dynamic_sections (bfd *output_bfd,
 43.1063 -+				 struct bfd_link_info *info);
 43.1064 -+
 43.1065 -+static void
 43.1066 -+insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
 43.1067 -+{
 43.1068 -+  /* Any entries with got_refcount > htab->nr_got_holes end up in the
 43.1069 -+   * last pigeonhole without any sorting. We expect the number of such
 43.1070 -+   * entries to be small, so it is very unlikely to affect
 43.1071 -+   * performance.  */
 43.1072 -+  int entry = got->refcount;
 43.1073 -+
 43.1074 -+  if (entry > htab->nr_got_holes)
 43.1075 -+    entry = htab->nr_got_holes;
 43.1076 -+
 43.1077 -+  got->pprev = &htab->got_hole[entry];
 43.1078 -+  got->next = htab->got_hole[entry];
 43.1079 -+
 43.1080 -+  if (got->next)
 43.1081 -+    got->next->pprev = &got->next;
 43.1082 -+
 43.1083 -+  htab->got_hole[entry] = got;
 43.1084 -+}
 43.1085 -+
 43.1086 -+/* Decrement the refcount of a GOT entry and update its position in
 43.1087 -+   the pigeonhole array.  */
 43.1088 -+static void
 43.1089 -+unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
 43.1090 -+{
 43.1091 -+  BFD_ASSERT(got->refcount > 0);
 43.1092 -+
 43.1093 -+  if (got->next)
 43.1094 -+    got->next->pprev = got->pprev;
 43.1095 -+
 43.1096 -+  *(got->pprev) = got->next;
 43.1097 -+  got->refcount--;
 43.1098 -+  insert_got_entry(htab, got);
 43.1099 -+}
 43.1100 -+
 43.1101 -+static void
 43.1102 -+ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
 43.1103 -+{
 43.1104 -+  if (got->next)
 43.1105 -+    got->next->pprev = got->pprev;
 43.1106 -+
 43.1107 -+  *(got->pprev) = got->next;
 43.1108 -+  got->refcount++;
 43.1109 -+  insert_got_entry(htab, got);
 43.1110 -+
 43.1111 -+  BFD_ASSERT(got->refcount > 0);
 43.1112 -+}
 43.1113 -+
 43.1114 -+/* Assign offsets to all GOT entries we intend to keep.  The entries
 43.1115 -+   that are referenced most often are placed at low offsets so that we
 43.1116 -+   can use compact instructions as much as possible.
 43.1117 -+
 43.1118 -+   Returns TRUE if any offsets or the total size of the GOT changed.  */
 43.1119 -+
 43.1120 -+static bfd_boolean
 43.1121 -+assign_got_offsets(struct elf_avr32_link_hash_table *htab)
 43.1122 -+{
 43.1123 -+  struct got_entry *got;
 43.1124 -+  bfd_size_type got_size = 0;
 43.1125 -+  bfd_boolean changed = FALSE;
 43.1126 -+  bfd_signed_vma offset;
 43.1127 -+  int i;
 43.1128 -+
 43.1129 -+  /* The GOT header provides the address of the DYNAMIC segment, so
 43.1130 -+     we need that even if the GOT is otherwise empty.  */
 43.1131 -+  if (htab->root.dynamic_sections_created)
 43.1132 -+    got_size = AVR32_GOT_HEADER_SIZE;
 43.1133 -+
 43.1134 -+  for (i = htab->nr_got_holes; i > 0; i--)
 43.1135 -+    {
 43.1136 -+      got = htab->got_hole[i];
 43.1137 -+      while (got)
 43.1138 -+	{
 43.1139 -+	  if (got->refcount > 0)
 43.1140 -+	    {
 43.1141 -+	      offset = got_size;
 43.1142 -+	      if (got->offset != offset)
 43.1143 -+		{
 43.1144 -+		  RDBG("GOT offset changed: %ld -> %ld\n",
 43.1145 -+		       got->offset, offset);
 43.1146 -+		  changed = TRUE;
 43.1147 -+		}
 43.1148 -+	      got->offset = offset;
 43.1149 -+	      got_size += 4;
 43.1150 -+	    }
 43.1151 -+	  got = got->next;
 43.1152 -+	}
 43.1153 -+    }
 43.1154 -+
 43.1155 -+  if (htab->sgot->size != got_size)
 43.1156 -+    {
 43.1157 -+      RDBG("GOT size changed: %lu -> %lu\n", htab->sgot->size,
 43.1158 -+	   got_size);
 43.1159 -+      changed = TRUE;
 43.1160 -+    }
 43.1161 -+  htab->sgot->size = got_size;
 43.1162 -+
 43.1163 -+  RDBG("assign_got_offsets: total size %lu (%s)\n",
 43.1164 -+       got_size, changed ? "changed" : "no change");
 43.1165 -+
 43.1166 -+  return changed;
 43.1167 -+}
 43.1168 -+
 43.1169 -+static bfd_boolean
 43.1170 -+allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info)
 43.1171 -+{
 43.1172 -+  struct bfd_link_info *info = _info;
 43.1173 -+  struct elf_avr32_link_hash_table *htab;
 43.1174 -+  struct elf_avr32_link_hash_entry *havr;
 43.1175 -+  struct got_entry *got;
 43.1176 -+
 43.1177 -+  pr_debug("  (4b) allocate_dynrelocs: %s\n", h->root.root.string);
 43.1178 -+
 43.1179 -+  if (h->root.type == bfd_link_hash_indirect)
 43.1180 -+    return TRUE;
 43.1181 -+
 43.1182 -+  if (h->root.type == bfd_link_hash_warning)
 43.1183 -+    /* When warning symbols are created, they **replace** the "real"
 43.1184 -+       entry in the hash table, thus we never get to see the real
 43.1185 -+       symbol in a hash traversal.  So look at it now.  */
 43.1186 -+    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 43.1187 -+
 43.1188 -+  htab = avr32_elf_hash_table(info);
 43.1189 -+  havr = (struct elf_avr32_link_hash_entry *)h;
 43.1190 -+
 43.1191 -+  got = h->got.glist;
 43.1192 -+
 43.1193 -+  /* If got is NULL, the symbol is never referenced through the GOT */
 43.1194 -+  if (got && got->refcount > 0)
 43.1195 -+    {
 43.1196 -+      insert_got_entry(htab, got);
 43.1197 -+
 43.1198 -+      /* Shared libraries need relocs for all GOT entries unless the
 43.1199 -+	 symbol is forced local or -Bsymbolic is used.  Others need
 43.1200 -+	 relocs for everything that is not guaranteed to be defined in
 43.1201 -+	 a regular object.  */
 43.1202 -+      if ((info->shared
 43.1203 -+	   && !info->symbolic
 43.1204 -+	   && h->dynindx != -1)
 43.1205 -+	  || (htab->root.dynamic_sections_created
 43.1206 -+	      && h->def_dynamic
 43.1207 -+	      && !h->def_regular))
 43.1208 -+	htab->srelgot->size += sizeof(Elf32_External_Rela);
 43.1209 -+    }
 43.1210 -+
 43.1211 -+  if (havr->possibly_dynamic_relocs
 43.1212 -+      && (info->shared
 43.1213 -+	  || (elf_hash_table(info)->dynamic_sections_created
 43.1214 -+	      && h->def_dynamic
 43.1215 -+	      && !h->def_regular)))
 43.1216 -+    {
 43.1217 -+      pr_debug("Allocating %d dynamic reloc against symbol %s...\n",
 43.1218 -+	       havr->possibly_dynamic_relocs, h->root.root.string);
 43.1219 -+      htab->srelgot->size += (havr->possibly_dynamic_relocs
 43.1220 -+			      * sizeof(Elf32_External_Rela));
 43.1221 -+    }
 43.1222 -+
 43.1223 -+  return TRUE;
 43.1224 -+}
 43.1225 -+
 43.1226 -+/* (4) Calculate the sizes of the linker-generated sections and
 43.1227 -+   allocate memory for them.  */
 43.1228 -+
 43.1229 -+static bfd_boolean
 43.1230 -+avr32_elf_size_dynamic_sections (bfd *output_bfd,
 43.1231 -+				 struct bfd_link_info *info)
 43.1232 -+{
 43.1233 -+  struct elf_avr32_link_hash_table *htab;
 43.1234 -+  bfd *dynobj;
 43.1235 -+  asection *s;
 43.1236 -+  bfd *ibfd;
 43.1237 -+  bfd_boolean relocs;
 43.1238 -+
 43.1239 -+  pr_debug("(4) size dynamic sections\n");
 43.1240 -+
 43.1241 -+  htab = avr32_elf_hash_table(info);
 43.1242 -+  dynobj = htab->root.dynobj;
 43.1243 -+  BFD_ASSERT(dynobj != NULL);
 43.1244 -+
 43.1245 -+  if (htab->root.dynamic_sections_created)
 43.1246 -+    {
 43.1247 -+      /* Initialize the contents of the .interp section to the name of
 43.1248 -+	 the dynamic loader */
 43.1249 -+      if (info->executable)
 43.1250 -+	{
 43.1251 -+	  s = bfd_get_section_by_name(dynobj, ".interp");
 43.1252 -+	  BFD_ASSERT(s != NULL);
 43.1253 -+	  s->size = sizeof(ELF_DYNAMIC_INTERPRETER);
 43.1254 -+	  s->contents = (unsigned char *)ELF_DYNAMIC_INTERPRETER;
 43.1255 -+	}
 43.1256 -+    }
 43.1257 -+
 43.1258 -+  if (htab->nr_got_holes > 0)
 43.1259 -+    {
 43.1260 -+      /* Allocate holes for the pigeonhole sort algorithm */
 43.1261 -+      pr_debug("Highest GOT refcount: %d\n", htab->nr_got_holes);
 43.1262 -+
 43.1263 -+      /* Limit the memory usage by clipping the number of pigeonholes
 43.1264 -+       * at a predefined maximum. All entries with a higher refcount
 43.1265 -+       * will end up in the last pigeonhole.  */
 43.1266 -+    if (htab->nr_got_holes >= MAX_NR_GOT_HOLES)
 43.1267 -+    {
 43.1268 -+        htab->nr_got_holes = MAX_NR_GOT_HOLES - 1;
 43.1269 -+
 43.1270 -+        pr_debug("Limiting maximum number of GOT pigeonholes to %u\n",
 43.1271 -+                    htab->nr_got_holes);
 43.1272 -+    }
 43.1273 -+      htab->got_hole = bfd_zalloc(output_bfd,
 43.1274 -+				  sizeof(struct got_entry *)
 43.1275 -+				  * (htab->nr_got_holes + 1));
 43.1276 -+      if (!htab->got_hole)
 43.1277 -+	return FALSE;
 43.1278 -+
 43.1279 -+      /* Set up .got offsets for local syms.  */
 43.1280 -+      for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next)
 43.1281 -+	{
 43.1282 -+	  struct got_entry **local_got;
 43.1283 -+	  struct got_entry **end_local_got;
 43.1284 -+	  Elf_Internal_Shdr *symtab_hdr;
 43.1285 -+	  bfd_size_type locsymcount;
 43.1286 -+
 43.1287 -+	  pr_debug("  (4a) processing file %s...\n", ibfd->filename);
 43.1288 -+
 43.1289 -+	  BFD_ASSERT(bfd_get_flavour(ibfd) == bfd_target_elf_flavour);
 43.1290 -+
 43.1291 -+	  local_got = elf_local_got_ents(ibfd);
 43.1292 -+	  if (!local_got)
 43.1293 -+	    continue;
 43.1294 -+
 43.1295 -+	  symtab_hdr = &elf_tdata(ibfd)->symtab_hdr;
 43.1296 -+	  locsymcount = symtab_hdr->sh_info;
 43.1297 -+	  end_local_got = local_got + locsymcount;
 43.1298 -+
 43.1299 -+	  for (; local_got < end_local_got; ++local_got)
 43.1300 -+	    insert_got_entry(htab, *local_got);
 43.1301 -+	}
 43.1302 -+    }
 43.1303 -+
 43.1304 -+  /* Allocate global sym .got entries and space for global sym
 43.1305 -+     dynamic relocs */
 43.1306 -+  elf_link_hash_traverse(&htab->root, allocate_dynrelocs, info);
 43.1307 -+
 43.1308 -+  /* Now that we have sorted the GOT entries, we are ready to
 43.1309 -+     assign offsets and determine the initial size of the GOT. */
 43.1310 -+  if (htab->sgot)
 43.1311 -+    assign_got_offsets(htab);
 43.1312 -+
 43.1313 -+  /* Allocate space for local sym dynamic relocs */
 43.1314 -+  BFD_ASSERT(htab->local_dynamic_relocs == 0 || info->shared);
 43.1315 -+  if (htab->local_dynamic_relocs)
 43.1316 -+    htab->srelgot->size += (htab->local_dynamic_relocs
 43.1317 -+			    * sizeof(Elf32_External_Rela));
 43.1318 -+
 43.1319 -+  /* We now have determined the sizes of the various dynamic
 43.1320 -+     sections. Allocate memory for them. */
 43.1321 -+  relocs = FALSE;
 43.1322 -+  for (s = dynobj->sections; s; s = s->next)
 43.1323 -+    {
 43.1324 -+      if ((s->flags & SEC_LINKER_CREATED) == 0)
 43.1325 -+	continue;
 43.1326 -+
 43.1327 -+      if (s == htab->sgot
 43.1328 -+	  || s == htab->sstub)
 43.1329 -+	{
 43.1330 -+	  /* Strip this section if we don't need it */
 43.1331 -+	}
 43.1332 -+      else if (strncmp (bfd_get_section_name(dynobj, s), ".rela", 5) == 0)
 43.1333 -+	{
 43.1334 -+	  if (s->size != 0)
 43.1335 -+	    relocs = TRUE;
 43.1336 -+
 43.1337 -+	  s->reloc_count = 0;
 43.1338 -+	}
 43.1339 -+      else
 43.1340 -+	{
 43.1341 -+	  /* It's not one of our sections */
 43.1342 -+	  continue;
 43.1343 -+	}
 43.1344 -+
 43.1345 -+      if (s->size == 0)
 43.1346 -+	{
 43.1347 -+	  /* Strip unneeded sections */
 43.1348 -+	  pr_debug("Stripping section %s from output...\n", s->name);
 43.1349 -+	  /* deleted function in 2.17
 43.1350 -+      _bfd_strip_section_from_output(info, s);
 43.1351 -+      */
 43.1352 -+	  continue;
 43.1353 -+	}
 43.1354 -+
 43.1355 -+      s->contents = bfd_zalloc(dynobj, s->size);
 43.1356 -+      if (s->contents == NULL)
 43.1357 -+	return FALSE;
 43.1358 -+    }
 43.1359 -+
 43.1360 -+  if (htab->root.dynamic_sections_created)
 43.1361 -+    {
 43.1362 -+      /* Add some entries to the .dynamic section.  We fill in the
 43.1363 -+	 values later, in sh_elf_finish_dynamic_sections, but we
 43.1364 -+	 must add the entries now so that we get the correct size for
 43.1365 -+	 the .dynamic section.  The DT_DEBUG entry is filled in by the
 43.1366 -+	 dynamic linker and used by the debugger.  */
 43.1367 -+#define add_dynamic_entry(TAG, VAL) _bfd_elf_add_dynamic_entry(info, TAG, VAL)
 43.1368 -+
 43.1369 -+      if (!add_dynamic_entry(DT_PLTGOT, 0))
 43.1370 -+	return FALSE;
 43.1371 -+      if (!add_dynamic_entry(DT_AVR32_GOTSZ, 0))
 43.1372 -+	return FALSE;
 43.1373 -+
 43.1374 -+      if (info->executable)
 43.1375 -+	{
 43.1376 -+	  if (!add_dynamic_entry(DT_DEBUG, 0))
 43.1377 -+	    return FALSE;
 43.1378 -+	}
 43.1379 -+      if (relocs)
 43.1380 -+	{
 43.1381 -+	  if (!add_dynamic_entry(DT_RELA, 0)
 43.1382 -+	      || !add_dynamic_entry(DT_RELASZ, 0)
 43.1383 -+	      || !add_dynamic_entry(DT_RELAENT,
 43.1384 -+				    sizeof(Elf32_External_Rela)))
 43.1385 -+	    return FALSE;
 43.1386 -+	}
 43.1387 -+    }
 43.1388 -+#undef add_dynamic_entry
 43.1389 -+
 43.1390 -+  return TRUE;
 43.1391 -+}
 43.1392 -+
 43.1393 -+
 43.1394 -+/* Access to internal relocations, section contents and symbols.
 43.1395 -+   (stolen from the xtensa port)  */
 43.1396 -+
 43.1397 -+static Elf_Internal_Rela *
 43.1398 -+retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory);
 43.1399 -+static void
 43.1400 -+pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
 43.1401 -+static void
 43.1402 -+release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
 43.1403 -+static bfd_byte *
 43.1404 -+retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory);
 43.1405 -+/*
 43.1406 -+static void
 43.1407 -+pin_contents (asection *sec, bfd_byte *contents);
 43.1408 -+*/
 43.1409 -+static void
 43.1410 -+release_contents (asection *sec, bfd_byte *contents);
 43.1411 -+static Elf_Internal_Sym *
 43.1412 -+retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory);
 43.1413 -+/*
 43.1414 -+static void
 43.1415 -+pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
 43.1416 -+*/
 43.1417 -+static void
 43.1418 -+release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
 43.1419 -+
 43.1420 -+/* During relaxation, we need to modify relocations, section contents,
 43.1421 -+   and symbol definitions, and we need to keep the original values from
 43.1422 -+   being reloaded from the input files, i.e., we need to "pin" the
 43.1423 -+   modified values in memory.  We also want to continue to observe the
 43.1424 -+   setting of the "keep-memory" flag.  The following functions wrap the
 43.1425 -+   standard BFD functions to take care of this for us.  */
 43.1426 -+
 43.1427 -+static Elf_Internal_Rela *
 43.1428 -+retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory)
 43.1429 -+{
 43.1430 -+  /* _bfd_elf_link_read_relocs knows about caching, so no need for us
 43.1431 -+     to be clever here.  */
 43.1432 -+  return _bfd_elf_link_read_relocs(abfd, sec, NULL, NULL, keep_memory);
 43.1433 -+}
 43.1434 -+
 43.1435 -+static void
 43.1436 -+pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
 43.1437 -+{
 43.1438 -+  elf_section_data (sec)->relocs = internal_relocs;
 43.1439 -+}
 43.1440 -+
 43.1441 -+static void
 43.1442 -+release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
 43.1443 -+{
 43.1444 -+  if (internal_relocs
 43.1445 -+      && elf_section_data (sec)->relocs != internal_relocs)
 43.1446 -+    free (internal_relocs);
 43.1447 -+}
 43.1448 -+
 43.1449 -+static bfd_byte *
 43.1450 -+retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory)
 43.1451 -+{
 43.1452 -+  bfd_byte *contents;
 43.1453 -+  bfd_size_type sec_size;
 43.1454 -+
 43.1455 -+  sec_size = bfd_get_section_limit (abfd, sec);
 43.1456 -+  contents = elf_section_data (sec)->this_hdr.contents;
 43.1457 -+
 43.1458 -+  if (contents == NULL && sec_size != 0)
 43.1459 -+    {
 43.1460 -+      if (!bfd_malloc_and_get_section (abfd, sec, &contents))
 43.1461 -+	{
 43.1462 -+	  if (contents)
 43.1463 -+	    free (contents);
 43.1464 -+	  return NULL;
 43.1465 -+	}
 43.1466 -+      if (keep_memory)
 43.1467 -+	elf_section_data (sec)->this_hdr.contents = contents;
 43.1468 -+    }
 43.1469 -+  return contents;
 43.1470 -+}
 43.1471 -+
 43.1472 -+/*
 43.1473 -+static void
 43.1474 -+pin_contents (asection *sec, bfd_byte *contents)
 43.1475 -+{
 43.1476 -+  elf_section_data (sec)->this_hdr.contents = contents;
 43.1477 -+}
 43.1478 -+*/
 43.1479 -+static void
 43.1480 -+release_contents (asection *sec, bfd_byte *contents)
 43.1481 -+{
 43.1482 -+  if (contents && elf_section_data (sec)->this_hdr.contents != contents)
 43.1483 -+    free (contents);
 43.1484 -+}
 43.1485 -+
 43.1486 -+static Elf_Internal_Sym *
 43.1487 -+retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory)
 43.1488 -+{
 43.1489 -+  Elf_Internal_Shdr *symtab_hdr;
 43.1490 -+  Elf_Internal_Sym *isymbuf;
 43.1491 -+  size_t locsymcount;
 43.1492 -+
 43.1493 -+  symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
 43.1494 -+  locsymcount = symtab_hdr->sh_info;
 43.1495 -+
 43.1496 -+  isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
 43.1497 -+  if (isymbuf == NULL && locsymcount != 0)
 43.1498 -+    {
 43.1499 -+      isymbuf = bfd_elf_get_elf_syms (input_bfd, symtab_hdr, locsymcount, 0,
 43.1500 -+				      NULL, NULL, NULL);
 43.1501 -+      if (isymbuf && keep_memory)
 43.1502 -+	symtab_hdr->contents = (unsigned char *) isymbuf;
 43.1503 -+    }
 43.1504 -+
 43.1505 -+  return isymbuf;
 43.1506 -+}
 43.1507 -+
 43.1508 -+/*
 43.1509 -+static void
 43.1510 -+pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
 43.1511 -+{
 43.1512 -+  elf_tdata (input_bfd)->symtab_hdr.contents = (unsigned char *)isymbuf;
 43.1513 -+}
 43.1514 -+
 43.1515 -+*/
 43.1516 -+static void
 43.1517 -+release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
 43.1518 -+{
 43.1519 -+  if (isymbuf && (elf_tdata (input_bfd)->symtab_hdr.contents
 43.1520 -+		  != (unsigned char *)isymbuf))
 43.1521 -+    free (isymbuf);
 43.1522 -+}
 43.1523 -+
 43.1524 -+/* Data structures used during relaxation. */
 43.1525 -+
 43.1526 -+enum relax_state_id {
 43.1527 -+  RS_ERROR = -1,
 43.1528 -+  RS_NONE = 0,
 43.1529 -+  RS_ALIGN,
 43.1530 -+  RS_CPENT,
 43.1531 -+  RS_PIC_CALL,
 43.1532 -+  RS_PIC_MCALL,
 43.1533 -+  RS_PIC_RCALL2,
 43.1534 -+  RS_PIC_RCALL1,
 43.1535 -+  RS_PIC_LDA,
 43.1536 -+  RS_PIC_LDW4,
 43.1537 -+  RS_PIC_LDW3,
 43.1538 -+  RS_PIC_SUB5,
 43.1539 -+  RS_NOPIC_MCALL,
 43.1540 -+  RS_NOPIC_RCALL2,
 43.1541 -+  RS_NOPIC_RCALL1,
 43.1542 -+  RS_NOPIC_LDW4,
 43.1543 -+  RS_NOPIC_LDDPC,
 43.1544 -+  RS_NOPIC_SUB5,
 43.1545 -+  RS_NOPIC_MOV2,
 43.1546 -+  RS_NOPIC_MOV1,
 43.1547 -+  RS_RCALL2,
 43.1548 -+  RS_RCALL1,
 43.1549 -+  RS_BRC2,
 43.1550 -+  RS_BRC1,
 43.1551 -+  RS_BRAL,
 43.1552 -+  RS_RJMP,
 43.1553 -+  RS_MAX,
 43.1554 -+};
 43.1555 -+
 43.1556 -+enum reference_type {
 43.1557 -+  REF_ABSOLUTE,
 43.1558 -+  REF_PCREL,
 43.1559 -+  REF_CPOOL,
 43.1560 -+  REF_GOT,
 43.1561 -+};
 43.1562 -+
 43.1563 -+struct relax_state
 43.1564 -+{
 43.1565 -+  const char *name;
 43.1566 -+  enum relax_state_id id;
 43.1567 -+  enum relax_state_id direct;
 43.1568 -+  enum relax_state_id next;
 43.1569 -+  enum relax_state_id prev;
 43.1570 -+
 43.1571 -+  enum reference_type reftype;
 43.1572 -+
 43.1573 -+  unsigned int r_type;
 43.1574 -+
 43.1575 -+  bfd_vma opcode;
 43.1576 -+  bfd_vma opcode_mask;
 43.1577 -+
 43.1578 -+  bfd_signed_vma range_min;
 43.1579 -+  bfd_signed_vma range_max;
 43.1580 -+
 43.1581 -+  bfd_size_type size;
 43.1582 -+};
 43.1583 -+
 43.1584 -+/*
 43.1585 -+ * This is for relocs that
 43.1586 -+ *   a) has an addend or is of type R_AVR32_DIFF32, and
 43.1587 -+ *   b) references a different section than it's in, and
 43.1588 -+ *   c) references a section that is relaxable
 43.1589 -+ *
 43.1590 -+ * as well as relocs that references the constant pool, in which case
 43.1591 -+ * the add_frag member points to the frag containing the constant pool
 43.1592 -+ * entry.
 43.1593 -+ *
 43.1594 -+ * Such relocs must be fixed up whenever we delete any code. Sections
 43.1595 -+ * that don't have any relocs with all of the above properties don't
 43.1596 -+ * have any additional reloc data, but sections that do will have
 43.1597 -+ * additional data for all its relocs.
 43.1598 -+ */
 43.1599 -+struct avr32_reloc_data
 43.1600 -+{
 43.1601 -+  struct fragment *add_frag;
 43.1602 -+  struct fragment *sub_frag;
 43.1603 -+};
 43.1604 -+
 43.1605 -+/*
 43.1606 -+ * A 'fragment' is a relaxable entity, that is, code may be added or
 43.1607 -+ * deleted at the end of a fragment. When this happens, all subsequent
 43.1608 -+ * fragments in the list will have their offsets updated.
 43.1609 -+ */
 43.1610 -+struct fragment
 43.1611 -+{
 43.1612 -+  enum relax_state_id state;
 43.1613 -+  enum relax_state_id initial_state;
 43.1614 -+
 43.1615 -+  Elf_Internal_Rela *rela;
 43.1616 -+  bfd_size_type size;
 43.1617 -+  bfd_vma offset;
 43.1618 -+  int size_adjust;
 43.1619 -+  int offset_adjust;
 43.1620 -+  bfd_boolean has_grown;
 43.1621 -+
 43.1622 -+  /* Only used by constant pool entries.  When this drops to zero, the
 43.1623 -+     frag is discarded (i.e. size_adjust is set to -4.)  */
 43.1624 -+  int refcount;
 43.1625 -+};
 43.1626 -+
 43.1627 -+struct avr32_relax_data
 43.1628 -+{
 43.1629 -+  unsigned int frag_count;
 43.1630 -+  struct fragment *frag;
 43.1631 -+  struct avr32_reloc_data *reloc_data;
 43.1632 -+
 43.1633 -+  /* TRUE if this section has one or more relaxable relocations */
 43.1634 -+  bfd_boolean is_relaxable;
 43.1635 -+  unsigned int iteration;
 43.1636 -+};
 43.1637 -+
 43.1638 -+struct avr32_section_data
 43.1639 -+{
 43.1640 -+  struct bfd_elf_section_data elf;
 43.1641 -+  struct avr32_relax_data relax_data;
 43.1642 -+};
 43.1643 -+
 43.1644 -+/* Relax state definitions */
 43.1645 -+
 43.1646 -+#define PIC_MOV2_OPCODE		0xe0600000
 43.1647 -+#define PIC_MOV2_MASK		0xe1e00000
 43.1648 -+#define PIC_MOV2_RANGE_MIN	(-1048576 * 4)
 43.1649 -+#define PIC_MOV2_RANGE_MAX	(1048575 * 4)
 43.1650 -+#define PIC_MCALL_OPCODE	0xf0160000
 43.1651 -+#define PIC_MCALL_MASK		0xffff0000
 43.1652 -+#define PIC_MCALL_RANGE_MIN	(-131072)
 43.1653 -+#define PIC_MCALL_RANGE_MAX	(131068)
 43.1654 -+#define RCALL2_OPCODE		0xe0a00000
 43.1655 -+#define RCALL2_MASK		0xe1ef0000
 43.1656 -+#define RCALL2_RANGE_MIN	(-2097152)
 43.1657 -+#define RCALL2_RANGE_MAX	(2097150)
 43.1658 -+#define RCALL1_OPCODE		0xc00c0000
 43.1659 -+#define RCALL1_MASK		0xf00c0000
 43.1660 -+#define RCALL1_RANGE_MIN	(-1024)
 43.1661 -+#define RCALL1_RANGE_MAX	(1022)
 43.1662 -+#define PIC_LDW4_OPCODE		0xecf00000
 43.1663 -+#define PIC_LDW4_MASK		0xfff00000
 43.1664 -+#define PIC_LDW4_RANGE_MIN	(-32768)
 43.1665 -+#define PIC_LDW4_RANGE_MAX	(32767)
 43.1666 -+#define PIC_LDW3_OPCODE		0x6c000000
 43.1667 -+#define PIC_LDW3_MASK		0xfe000000
 43.1668 -+#define PIC_LDW3_RANGE_MIN	(0)
 43.1669 -+#define PIC_LDW3_RANGE_MAX	(124)
 43.1670 -+#define SUB5_PC_OPCODE		0xfec00000
 43.1671 -+#define SUB5_PC_MASK		0xfff00000
 43.1672 -+#define SUB5_PC_RANGE_MIN	(-32768)
 43.1673 -+#define SUB5_PC_RANGE_MAX	(32767)
 43.1674 -+#define NOPIC_MCALL_OPCODE	0xf01f0000
 43.1675 -+#define NOPIC_MCALL_MASK	0xffff0000
 43.1676 -+#define NOPIC_MCALL_RANGE_MIN	PIC_MCALL_RANGE_MIN
 43.1677 -+#define NOPIC_MCALL_RANGE_MAX	PIC_MCALL_RANGE_MAX
 43.1678 -+#define NOPIC_LDW4_OPCODE	0xfef00000
 43.1679 -+#define NOPIC_LDW4_MASK		0xfff00000
 43.1680 -+#define NOPIC_LDW4_RANGE_MIN	PIC_LDW4_RANGE_MIN
 43.1681 -+#define NOPIC_LDW4_RANGE_MAX	PIC_LDW4_RANGE_MAX
 43.1682 -+#define LDDPC_OPCODE		0x48000000
 43.1683 -+#define LDDPC_MASK		0xf8000000
 43.1684 -+#define LDDPC_RANGE_MIN		0
 43.1685 -+#define LDDPC_RANGE_MAX		508
 43.1686 -+
 43.1687 -+#define NOPIC_MOV2_OPCODE  0xe0600000
 43.1688 -+#define NOPIC_MOV2_MASK        0xe1e00000
 43.1689 -+#define NOPIC_MOV2_RANGE_MIN   (-1048576)
 43.1690 -+#define NOPIC_MOV2_RANGE_MAX   (1048575)
 43.1691 -+#define NOPIC_MOV1_OPCODE  0x30000000
 43.1692 -+#define NOPIC_MOV1_MASK        0xf0000000
 43.1693 -+#define NOPIC_MOV1_RANGE_MIN   (-128)
 43.1694 -+#define NOPIC_MOV1_RANGE_MAX   (127)
 43.1695 -+
 43.1696 -+/* Only brc2 variants with cond[3] == 0 is considered, since the
 43.1697 -+   others are not relaxable.  bral is a special case and is handled
 43.1698 -+   separately.  */
 43.1699 -+#define BRC2_OPCODE		0xe0800000
 43.1700 -+#define BRC2_MASK		0xe1e80000
 43.1701 -+#define BRC2_RANGE_MIN		(-2097152)
 43.1702 -+#define BRC2_RANGE_MAX		(2097150)
 43.1703 -+#define BRC1_OPCODE		0xc0000000
 43.1704 -+#define BRC1_MASK		0xf0080000
 43.1705 -+#define BRC1_RANGE_MIN		(-256)
 43.1706 -+#define BRC1_RANGE_MAX		(254)
 43.1707 -+#define BRAL_OPCODE		0xe08f0000
 43.1708 -+#define BRAL_MASK		0xe1ef0000
 43.1709 -+#define BRAL_RANGE_MIN		BRC2_RANGE_MIN
 43.1710 -+#define BRAL_RANGE_MAX		BRC2_RANGE_MAX
 43.1711 -+#define RJMP_OPCODE		0xc0080000
 43.1712 -+#define RJMP_MASK		0xf00c0000
 43.1713 -+#define RJMP_RANGE_MIN		(-1024)
 43.1714 -+#define RJMP_RANGE_MAX		(1022)
 43.1715 -+
 43.1716 -+/* Define a relax state using the GOT  */
 43.1717 -+#define RG(id, dir, next, prev, r_type, opc, size)			\
 43.1718 -+  { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_GOT,		\
 43.1719 -+      R_AVR32_##r_type,	opc##_OPCODE, opc##_MASK,			\
 43.1720 -+      opc##_RANGE_MIN, opc##_RANGE_MAX, size }
 43.1721 -+/* Define a relax state using the Constant Pool  */
 43.1722 -+#define RC(id, dir, next, prev, r_type, opc, size)			\
 43.1723 -+  { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_CPOOL,	\
 43.1724 -+      R_AVR32_##r_type,	opc##_OPCODE, opc##_MASK,			\
 43.1725 -+      opc##_RANGE_MIN, opc##_RANGE_MAX, size }
 43.1726 -+
 43.1727 -+/* Define a relax state using pc-relative direct reference  */
 43.1728 -+#define RP(id, dir, next, prev, r_type, opc, size)			\
 43.1729 -+  { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_PCREL,	\
 43.1730 -+      R_AVR32_##r_type,	opc##_OPCODE, opc##_MASK,			\
 43.1731 -+      opc##_RANGE_MIN, opc##_RANGE_MAX, size }
 43.1732 -+
 43.1733 -+/* Define a relax state using non-pc-relative direct reference */
 43.1734 -+#define RD(id, dir, next, prev, r_type, opc, size)         \
 43.1735 -+  { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_ABSOLUTE,   \
 43.1736 -+      R_AVR32_##r_type,    opc##_OPCODE, opc##_MASK,           \
 43.1737 -+      opc##_RANGE_MIN, opc##_RANGE_MAX, size }
 43.1738 -+
 43.1739 -+/* Define a relax state that will be handled specially  */
 43.1740 -+#define RS(id, r_type, size)						\
 43.1741 -+  { "RS_"#id, RS_##id, RS_NONE, RS_NONE, RS_NONE, REF_ABSOLUTE,		\
 43.1742 -+      R_AVR32_##r_type, 0, 0, 0, 0, size }
 43.1743 -+
 43.1744 -+const struct relax_state relax_state[RS_MAX] = {
 43.1745 -+  RS(NONE, NONE, 0),
 43.1746 -+  RS(ALIGN, ALIGN, 0),
 43.1747 -+  RS(CPENT, 32_CPENT, 4),
 43.1748 -+
 43.1749 -+  RG(PIC_CALL, PIC_RCALL1, PIC_MCALL, NONE, GOTCALL, PIC_MOV2, 10),
 43.1750 -+  RG(PIC_MCALL, PIC_RCALL1, NONE, PIC_CALL, GOT18SW, PIC_MCALL, 4),
 43.1751 -+  RP(PIC_RCALL2, NONE, PIC_RCALL1, PIC_MCALL, 22H_PCREL, RCALL2, 4),
 43.1752 -+  RP(PIC_RCALL1, NONE, NONE, PIC_RCALL2, 11H_PCREL, RCALL1, 2),
 43.1753 -+
 43.1754 -+  RG(PIC_LDA, PIC_SUB5, PIC_LDW4, NONE, LDA_GOT, PIC_MOV2, 8),
 43.1755 -+  RG(PIC_LDW4, PIC_SUB5, PIC_LDW3, PIC_LDA, GOT16S, PIC_LDW4, 4),
 43.1756 -+  RG(PIC_LDW3, PIC_SUB5, NONE, PIC_LDW4, GOT7UW, PIC_LDW3, 2),
 43.1757 -+  RP(PIC_SUB5, NONE, NONE, PIC_LDW3, 16N_PCREL, SUB5_PC, 4),
 43.1758 -+
 43.1759 -+  RC(NOPIC_MCALL, NOPIC_RCALL1, NONE, NONE, CPCALL, NOPIC_MCALL, 4),
 43.1760 -+  RP(NOPIC_RCALL2, NONE, NOPIC_RCALL1, NOPIC_MCALL, 22H_PCREL, RCALL2, 4),
 43.1761 -+  RP(NOPIC_RCALL1, NONE, NONE, NOPIC_RCALL2, 11H_PCREL, RCALL1, 2),
 43.1762 -+
 43.1763 -+  RC(NOPIC_LDW4, NOPIC_MOV1, NOPIC_LDDPC, NONE, 16_CP, NOPIC_LDW4, 4),
 43.1764 -+  RC(NOPIC_LDDPC, NOPIC_MOV1, NONE, NOPIC_LDW4, 9W_CP, LDDPC, 2),
 43.1765 -+  RP(NOPIC_SUB5, NOPIC_MOV1, NONE, NOPIC_LDDPC, 16N_PCREL, SUB5_PC, 4),
 43.1766 -+  RD(NOPIC_MOV2, NONE, NOPIC_MOV1, NOPIC_SUB5, 21S, NOPIC_MOV2, 4),
 43.1767 -+  RD(NOPIC_MOV1, NONE, NONE, NOPIC_MOV2, 8S, NOPIC_MOV1, 2),
 43.1768 -+
 43.1769 -+  RP(RCALL2, NONE, RCALL1, NONE, 22H_PCREL, RCALL2, 4),
 43.1770 -+  RP(RCALL1, NONE, NONE, RCALL2, 11H_PCREL, RCALL1, 2),
 43.1771 -+  RP(BRC2, NONE, BRC1, NONE, 22H_PCREL, BRC2, 4),
 43.1772 -+  RP(BRC1, NONE, NONE, BRC2, 9H_PCREL, BRC1, 2),
 43.1773 -+  RP(BRAL, NONE, RJMP, NONE, 22H_PCREL, BRAL, 4),
 43.1774 -+  RP(RJMP, NONE, NONE, BRAL, 11H_PCREL, RJMP, 2),
 43.1775 -+};
 43.1776 -+
 43.1777 -+static bfd_boolean
 43.1778 -+avr32_elf_new_section_hook(bfd *abfd, asection *sec)
 43.1779 -+{
 43.1780 -+  struct avr32_section_data *sdata;
 43.1781 -+
 43.1782 -+  sdata = bfd_zalloc(abfd, sizeof(struct avr32_section_data));
 43.1783 -+  if (!sdata)
 43.1784 -+    return FALSE;
 43.1785 -+
 43.1786 -+  sec->used_by_bfd = sdata;
 43.1787 -+  return _bfd_elf_new_section_hook(abfd, sec);
 43.1788 -+}
 43.1789 -+
 43.1790 -+static struct avr32_relax_data *
 43.1791 -+avr32_relax_data(asection *sec)
 43.1792 -+{
 43.1793 -+  struct avr32_section_data *sdata;
 43.1794 -+
 43.1795 -+  BFD_ASSERT(sec->used_by_bfd);
 43.1796 -+
 43.1797 -+  sdata = (struct avr32_section_data *)elf_section_data(sec);
 43.1798 -+  return &sdata->relax_data;
 43.1799 -+}
 43.1800 -+
 43.1801 -+/* Link-time relaxation */
 43.1802 -+
 43.1803 -+static bfd_boolean
 43.1804 -+avr32_elf_relax_section(bfd *abfd, asection *sec,
 43.1805 -+			struct bfd_link_info *info, bfd_boolean *again);
 43.1806 -+
 43.1807 -+enum relax_pass_id {
 43.1808 -+  RELAX_PASS_SIZE_FRAGS,
 43.1809 -+  RELAX_PASS_MOVE_DATA,
 43.1810 -+};
 43.1811 -+
 43.1812 -+/* Stolen from the xtensa port */
 43.1813 -+static int
 43.1814 -+internal_reloc_compare (const void *ap, const void *bp)
 43.1815 -+{
 43.1816 -+  const Elf_Internal_Rela *a = (const Elf_Internal_Rela *) ap;
 43.1817 -+  const Elf_Internal_Rela *b = (const Elf_Internal_Rela *) bp;
 43.1818 -+
 43.1819 -+  if (a->r_offset != b->r_offset)
 43.1820 -+    return (a->r_offset - b->r_offset);
 43.1821 -+
 43.1822 -+  /* We don't need to sort on these criteria for correctness,
 43.1823 -+     but enforcing a more strict ordering prevents unstable qsort
 43.1824 -+     from behaving differently with different implementations.
 43.1825 -+     Without the code below we get correct but different results
 43.1826 -+     on Solaris 2.7 and 2.8.  We would like to always produce the
 43.1827 -+     same results no matter the host.  */
 43.1828 -+
 43.1829 -+  if (a->r_info != b->r_info)
 43.1830 -+    return (a->r_info - b->r_info);
 43.1831 -+
 43.1832 -+  return (a->r_addend - b->r_addend);
 43.1833 -+}
 43.1834 -+
 43.1835 -+static enum relax_state_id
 43.1836 -+get_pcrel22_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
 43.1837 -+			const Elf_Internal_Rela *rela)
 43.1838 -+{
 43.1839 -+  bfd_byte *contents;
 43.1840 -+  bfd_vma insn;
 43.1841 -+  enum relax_state_id rs = RS_NONE;
 43.1842 -+
 43.1843 -+  contents = retrieve_contents(abfd, sec, info->keep_memory);
 43.1844 -+  if (!contents)
 43.1845 -+    return RS_ERROR;
 43.1846 -+
 43.1847 -+  insn = bfd_get_32(abfd, contents + rela->r_offset);
 43.1848 -+  if ((insn & RCALL2_MASK) == RCALL2_OPCODE)
 43.1849 -+    rs = RS_RCALL2;
 43.1850 -+  else if ((insn & BRAL_MASK) == BRAL_OPCODE)
 43.1851 -+    /* Optimizing bral -> rjmp gets us into all kinds of
 43.1852 -+       trouble with jump tables. Better not do it.  */
 43.1853 -+    rs = RS_NONE;
 43.1854 -+  else if ((insn & BRC2_MASK) == BRC2_OPCODE)
 43.1855 -+    rs = RS_BRC2;
 43.1856 -+
 43.1857 -+  release_contents(sec, contents);
 43.1858 -+
 43.1859 -+  return rs;
 43.1860 -+}
 43.1861 -+
 43.1862 -+static enum relax_state_id
 43.1863 -+get_initial_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
 43.1864 -+			const Elf_Internal_Rela *rela)
 43.1865 -+{
 43.1866 -+  switch (ELF_R_TYPE(rela->r_info))
 43.1867 -+    {
 43.1868 -+    case R_AVR32_GOTCALL:
 43.1869 -+      return RS_PIC_CALL;
 43.1870 -+    case R_AVR32_GOT18SW:
 43.1871 -+      return RS_PIC_MCALL;
 43.1872 -+    case R_AVR32_LDA_GOT:
 43.1873 -+      return RS_PIC_LDA;
 43.1874 -+    case R_AVR32_GOT16S:
 43.1875 -+      return RS_PIC_LDW4;
 43.1876 -+    case R_AVR32_CPCALL:
 43.1877 -+      return RS_NOPIC_MCALL;
 43.1878 -+    case R_AVR32_16_CP:
 43.1879 -+      return RS_NOPIC_LDW4;
 43.1880 -+    case R_AVR32_9W_CP:
 43.1881 -+      return RS_NOPIC_LDDPC;
 43.1882 -+    case R_AVR32_ALIGN:
 43.1883 -+      return RS_ALIGN;
 43.1884 -+    case R_AVR32_32_CPENT:
 43.1885 -+      return RS_CPENT;
 43.1886 -+    case R_AVR32_22H_PCREL:
 43.1887 -+      return get_pcrel22_relax_state(abfd, sec, info, rela);
 43.1888 -+    case R_AVR32_9H_PCREL:
 43.1889 -+      return RS_BRC1;
 43.1890 -+    default:
 43.1891 -+      return RS_NONE;
 43.1892 -+    }
 43.1893 -+}
 43.1894 -+
 43.1895 -+static bfd_boolean
 43.1896 -+reloc_is_cpool_ref(const Elf_Internal_Rela *rela)
 43.1897 -+{
 43.1898 -+  switch (ELF_R_TYPE(rela->r_info))
 43.1899 -+    {
 43.1900 -+    case R_AVR32_CPCALL:
 43.1901 -+    case R_AVR32_16_CP:
 43.1902 -+    case R_AVR32_9W_CP:
 43.1903 -+      return TRUE;
 43.1904 -+    default:
 43.1905 -+      return FALSE;
 43.1906 -+    }
 43.1907 -+}
 43.1908 -+
 43.1909 -+static struct fragment *
 43.1910 -+new_frag(bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
 43.1911 -+	 struct avr32_relax_data *rd, enum relax_state_id state,
 43.1912 -+	 Elf_Internal_Rela *rela)
 43.1913 -+{
 43.1914 -+  struct fragment *frag;
 43.1915 -+  bfd_size_type r_size;
 43.1916 -+  bfd_vma r_offset;
 43.1917 -+  unsigned int i = rd->frag_count;
 43.1918 -+
 43.1919 -+  BFD_ASSERT(state >= RS_NONE && state < RS_MAX);
 43.1920 -+
 43.1921 -+  rd->frag_count++;
 43.1922 -+  frag = bfd_realloc(rd->frag, sizeof(struct fragment) * rd->frag_count);
 43.1923 -+  if (!frag)
 43.1924 -+    return NULL;
 43.1925 -+  rd->frag = frag;
 43.1926 -+
 43.1927 -+  frag += i;
 43.1928 -+  memset(frag, 0, sizeof(struct fragment));
 43.1929 -+
 43.1930 -+  if (state == RS_ALIGN)
 43.1931 -+    r_size = (((rela->r_offset + (1 << rela->r_addend) - 1)
 43.1932 -+	       & ~((1 << rela->r_addend) - 1)) - rela->r_offset);
 43.1933 -+  else
 43.1934 -+    r_size = relax_state[state].size;
 43.1935 -+
 43.1936 -+  if (rela)
 43.1937 -+    r_offset = rela->r_offset;
 43.1938 -+  else
 43.1939 -+    r_offset = sec->size;
 43.1940 -+
 43.1941 -+  if (i == 0)
 43.1942 -+    {
 43.1943 -+      frag->offset = 0;
 43.1944 -+      frag->size = r_offset + r_size;
 43.1945 -+    }
 43.1946 -+  else
 43.1947 -+    {
 43.1948 -+      frag->offset = rd->frag[i - 1].offset + rd->frag[i - 1].size;
 43.1949 -+      frag->size = r_offset + r_size - frag->offset;
 43.1950 -+    }
 43.1951 -+
 43.1952 -+  if (state != RS_CPENT)
 43.1953 -+    /* Make sure we don't discard this frag */
 43.1954 -+    frag->refcount = 1;
 43.1955 -+
 43.1956 -+  frag->initial_state = frag->state = state;
 43.1957 -+  frag->rela = rela;
 43.1958 -+
 43.1959 -+  return frag;
 43.1960 -+}
 43.1961 -+
 43.1962 -+static struct fragment *
 43.1963 -+find_frag(asection *sec, bfd_vma offset)
 43.1964 -+{
 43.1965 -+  struct fragment *first, *last;
 43.1966 -+  struct avr32_relax_data *rd = avr32_relax_data(sec);
 43.1967 -+
 43.1968 -+  if (rd->frag_count == 0)
 43.1969 -+    return NULL;
 43.1970 -+
 43.1971 -+  first = &rd->frag[0];
 43.1972 -+  last = &rd->frag[rd->frag_count - 1];
 43.1973 -+
 43.1974 -+  /* This may be a reloc referencing the end of a section.  The last
 43.1975 -+     frag will never have a reloc associated with it, so its size will
 43.1976 -+     never change, thus the offset adjustment of the last frag will
 43.1977 -+     always be the same as the offset adjustment of the end of the
 43.1978 -+     section.  */
 43.1979 -+  if (offset == sec->size)
 43.1980 -+    {
 43.1981 -+      BFD_ASSERT(last->offset + last->size == sec->size);
 43.1982 -+      BFD_ASSERT(!last->rela);
 43.1983 -+      return last;
 43.1984 -+    }
 43.1985 -+
 43.1986 -+  while (first <= last)
 43.1987 -+    {
 43.1988 -+      struct fragment *mid;
 43.1989 -+
 43.1990 -+      mid = (last - first) / 2 + first;
 43.1991 -+      if ((mid->offset + mid->size) <= offset)
 43.1992 -+	first = mid + 1;
 43.1993 -+      else if (mid->offset > offset)
 43.1994 -+	last = mid - 1;
 43.1995 -+      else
 43.1996 -+	return mid;
 43.1997 -+    }
 43.1998 -+
 43.1999 -+  return NULL;
 43.2000 -+}
 43.2001 -+
 43.2002 -+/* Look through all relocs in a section and determine if any relocs
 43.2003 -+   may be affected by relaxation in other sections.  If so, allocate
 43.2004 -+   an array of additional relocation data which links the affected
 43.2005 -+   relocations to the frag(s) where the relaxation may occur.
 43.2006 -+
 43.2007 -+   This function also links cpool references to cpool entries and
 43.2008 -+   increments the refcount of the latter when this happens.  */
 43.2009 -+
 43.2010 -+static bfd_boolean
 43.2011 -+allocate_reloc_data(bfd *abfd, asection *sec, Elf_Internal_Rela *relocs,
 43.2012 -+		    struct bfd_link_info *info)
 43.2013 -+{
 43.2014 -+  Elf_Internal_Shdr *symtab_hdr;
 43.2015 -+  Elf_Internal_Sym *isymbuf = NULL;
 43.2016 -+  struct avr32_relax_data *rd;
 43.2017 -+  unsigned int i;
 43.2018 -+  bfd_boolean ret = FALSE;
 43.2019 -+
 43.2020 -+  symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
 43.2021 -+  rd = avr32_relax_data(sec);
 43.2022 -+
 43.2023 -+  RDBG("%s<%s>: allocate_reloc_data\n", abfd->filename, sec->name);
 43.2024 -+
 43.2025 -+  for (i = 0; i < sec->reloc_count; i++)
 43.2026 -+    {
 43.2027 -+      Elf_Internal_Rela *rel = &relocs[i];
 43.2028 -+      asection *sym_sec;
 43.2029 -+      unsigned long r_symndx;
 43.2030 -+      bfd_vma sym_value;
 43.2031 -+
 43.2032 -+      if (!rel->r_addend && ELF_R_TYPE(rel->r_info) != R_AVR32_DIFF32
 43.2033 -+	  && !reloc_is_cpool_ref(rel))
 43.2034 -+	continue;
 43.2035 -+
 43.2036 -+      r_symndx = ELF_R_SYM(rel->r_info);
 43.2037 -+
 43.2038 -+      if (r_symndx < symtab_hdr->sh_info)
 43.2039 -+	{
 43.2040 -+	  Elf_Internal_Sym *isym;
 43.2041 -+
 43.2042 -+	  if (!isymbuf)
 43.2043 -+	    isymbuf = retrieve_local_syms(abfd, info->keep_memory);
 43.2044 -+	  if (!isymbuf)
 43.2045 -+	    return FALSE;
 43.2046 -+
 43.2047 -+	  isym = &isymbuf[r_symndx];
 43.2048 -+	  sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
 43.2049 -+	  sym_value = isym->st_value;
 43.2050 -+	}
 43.2051 -+      else
 43.2052 -+	{
 43.2053 -+	  struct elf_link_hash_entry *h;
 43.2054 -+
 43.2055 -+	  h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
 43.2056 -+
 43.2057 -+	  while (h->root.type == bfd_link_hash_indirect
 43.2058 -+		 || h->root.type == bfd_link_hash_warning)
 43.2059 -+	    h = (struct elf_link_hash_entry *)h->root.u.i.link;
 43.2060 -+
 43.2061 -+	  if (h->root.type != bfd_link_hash_defined
 43.2062 -+	      && h->root.type != bfd_link_hash_defweak)
 43.2063 -+	    continue;
 43.2064 -+
 43.2065 -+	  sym_sec = h->root.u.def.section;
 43.2066 -+	  sym_value = h->root.u.def.value;
 43.2067 -+	}
 43.2068 -+
 43.2069 -+      if (sym_sec && avr32_relax_data(sym_sec)->is_relaxable)
 43.2070 -+	{
 43.2071 -+	  bfd_size_type size;
 43.2072 -+	  struct fragment *frag;
 43.2073 -+
 43.2074 -+	  if (!rd->reloc_data)
 43.2075 -+	    {
 43.2076 -+	      size = sizeof(struct avr32_reloc_data) * sec->reloc_count;
 43.2077 -+	      rd->reloc_data = bfd_zalloc(abfd, size);
 43.2078 -+	      if (!rd->reloc_data)
 43.2079 -+		goto out;
 43.2080 -+	    }
 43.2081 -+
 43.2082 -+	  RDBG("[%3d] 0x%04lx: target: 0x%lx + 0x%lx",
 43.2083 -+	       i, rel->r_offset, sym_value, rel->r_addend);
 43.2084 -+
 43.2085 -+	  frag = find_frag(sym_sec, sym_value + rel->r_addend);
 43.2086 -+	  BFD_ASSERT(frag);
 43.2087 -+	  rd->reloc_data[i].add_frag = frag;
 43.2088 -+
 43.2089 -+	  RDBG(" -> %s<%s>:%04lx\n", sym_sec->owner->filename, sym_sec->name,
 43.2090 -+	       frag->rela ? frag->rela->r_offset : sym_sec->size);
 43.2091 -+
 43.2092 -+	  if (reloc_is_cpool_ref(rel))
 43.2093 -+	    {
 43.2094 -+	      BFD_ASSERT(ELF_R_TYPE(frag->rela->r_info) == R_AVR32_32_CPENT);
 43.2095 -+	      frag->refcount++;
 43.2096 -+	    }
 43.2097 -+
 43.2098 -+	  if (ELF_R_TYPE(rel->r_info) == R_AVR32_DIFF32)
 43.2099 -+	    {
 43.2100 -+	      bfd_byte *contents;
 43.2101 -+	      bfd_signed_vma diff;
 43.2102 -+
 43.2103 -+	      contents = retrieve_contents(abfd, sec, info->keep_memory);
 43.2104 -+	      if (!contents)
 43.2105 -+		goto out;
 43.2106 -+
 43.2107 -+	      diff = bfd_get_signed_32(abfd, contents + rel->r_offset);
 43.2108 -+	      frag = find_frag(sym_sec, sym_value + rel->r_addend + diff);
 43.2109 -+	      BFD_ASSERT(frag);
 43.2110 -+	      rd->reloc_data[i].sub_frag = frag;
 43.2111 -+
 43.2112 -+	      release_contents(sec, contents);
 43.2113 -+	    }
 43.2114 -+	}
 43.2115 -+    }
 43.2116 -+
 43.2117 -+  ret = TRUE;
 43.2118 -+
 43.2119 -+ out:
 43.2120 -+  release_local_syms(abfd, isymbuf);
 43.2121 -+  return ret;
 43.2122 -+}
 43.2123 -+
 43.2124 -+static bfd_boolean
 43.2125 -+global_sym_set_frag(struct elf_avr32_link_hash_entry *havr,
 43.2126 -+		    struct bfd_link_info *info ATTRIBUTE_UNUSED)
 43.2127 -+{
 43.2128 -+  struct fragment *frag;
 43.2129 -+  asection *sec;
 43.2130 -+
 43.2131 -+  if (havr->root.root.type != bfd_link_hash_defined
 43.2132 -+      && havr->root.root.type != bfd_link_hash_defweak)
 43.2133 -+    return TRUE;
 43.2134 -+
 43.2135 -+  sec = havr->root.root.u.def.section;
 43.2136 -+  if (bfd_is_const_section(sec)
 43.2137 -+      || !avr32_relax_data(sec)->is_relaxable)
 43.2138 -+    return TRUE;
 43.2139 -+
 43.2140 -+  frag = find_frag(sec, havr->root.root.u.def.value);
 43.2141 -+  if (!frag)
 43.2142 -+    {
 43.2143 -+      unsigned int i;
 43.2144 -+      struct avr32_relax_data *rd = avr32_relax_data(sec);
 43.2145 -+
 43.2146 -+      RDBG("In %s: No frag for %s <%s+%lu> (limit %lu)\n",
 43.2147 -+	   sec->owner->filename, havr->root.root.root.string,
 43.2148 -+	   sec->name, havr->root.root.u.def.value, sec->size);
 43.2149 -+      for (i = 0; i < rd->frag_count; i++)
 43.2150 -+	RDBG("    %8lu - %8lu\n", rd->frag[i].offset,
 43.2151 -+	     rd->frag[i].offset + rd->frag[i].size);
 43.2152 -+    }
 43.2153 -+  BFD_ASSERT(frag);
 43.2154 -+
 43.2155 -+  havr->sym_frag = frag;
 43.2156 -+  return TRUE;
 43.2157 -+}
 43.2158 -+
 43.2159 -+static bfd_boolean
 43.2160 -+analyze_relocations(struct bfd_link_info *info)
 43.2161 -+{
 43.2162 -+  bfd *abfd;
 43.2163 -+  asection *sec;
 43.2164 -+
 43.2165 -+  /* Divide all relaxable sections into fragments */
 43.2166 -+  for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
 43.2167 -+    {
 43.2168 -+      if (!(elf_elfheader(abfd)->e_flags & EF_AVR32_LINKRELAX))
 43.2169 -+	{
 43.2170 -+	  if (!(*info->callbacks->warning)
 43.2171 -+	      (info, _("input is not relaxable"), NULL, abfd, NULL, 0))
 43.2172 -+	    return FALSE;
 43.2173 -+	  continue;
 43.2174 -+	}
 43.2175 -+
 43.2176 -+      for (sec = abfd->sections; sec; sec = sec->next)
 43.2177 -+	{
 43.2178 -+	  struct avr32_relax_data *rd;
 43.2179 -+	  struct fragment *frag;
 43.2180 -+	  Elf_Internal_Rela *relocs;
 43.2181 -+	  unsigned int i;
 43.2182 -+	  bfd_boolean ret = TRUE;
 43.2183 -+
 43.2184 -+	  if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
 43.2185 -+	    continue;
 43.2186 -+
 43.2187 -+	  rd = avr32_relax_data(sec);
 43.2188 -+
 43.2189 -+	  relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
 43.2190 -+	  if (!relocs)
 43.2191 -+	    return FALSE;
 43.2192 -+
 43.2193 -+	  qsort(relocs, sec->reloc_count, sizeof(Elf_Internal_Rela),
 43.2194 -+		internal_reloc_compare);
 43.2195 -+
 43.2196 -+	  for (i = 0; i < sec->reloc_count; i++)
 43.2197 -+	    {
 43.2198 -+	      enum relax_state_id state;
 43.2199 -+
 43.2200 -+	      ret = FALSE;
 43.2201 -+	      state = get_initial_relax_state(abfd, sec, info, &relocs[i]);
 43.2202 -+	      if (state == RS_ERROR)
 43.2203 -+		break;
 43.2204 -+
 43.2205 -+	      if (state)
 43.2206 -+		{
 43.2207 -+		  frag = new_frag(abfd, sec, rd, state, &relocs[i]);
 43.2208 -+		  if (!frag)
 43.2209 -+		    break;
 43.2210 -+
 43.2211 -+		  pin_internal_relocs(sec, relocs);
 43.2212 -+		  rd->is_relaxable = TRUE;
 43.2213 -+		}
 43.2214 -+
 43.2215 -+	      ret = TRUE;
 43.2216 -+	    }
 43.2217 -+
 43.2218 -+	  release_internal_relocs(sec, relocs);
 43.2219 -+	  if (!ret)
 43.2220 -+	    return ret;
 43.2221 -+
 43.2222 -+	  if (rd->is_relaxable)
 43.2223 -+	    {
 43.2224 -+	      frag = new_frag(abfd, sec, rd, RS_NONE, NULL);
 43.2225 -+	      if (!frag)
 43.2226 -+		return FALSE;
 43.2227 -+	    }
 43.2228 -+	}
 43.2229 -+    }
 43.2230 -+
 43.2231 -+  /* Link each global symbol to the fragment where it's defined.  */
 43.2232 -+  elf_link_hash_traverse(elf_hash_table(info), global_sym_set_frag, info);
 43.2233 -+
 43.2234 -+  /* Do the same for local symbols. */
 43.2235 -+  for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
 43.2236 -+    {
 43.2237 -+      Elf_Internal_Sym *isymbuf, *isym;
 43.2238 -+      struct fragment **local_sym_frag;
 43.2239 -+      unsigned int i, sym_count;
 43.2240 -+
 43.2241 -+      sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
 43.2242 -+      if (sym_count == 0)
 43.2243 -+	continue;
 43.2244 -+
 43.2245 -+      local_sym_frag = bfd_zalloc(abfd, sym_count * sizeof(struct fragment *));
 43.2246 -+      if (!local_sym_frag)
 43.2247 -+	return FALSE;
 43.2248 -+      elf_tdata(abfd)->local_sym_frag = local_sym_frag;
 43.2249 -+
 43.2250 -+      isymbuf = retrieve_local_syms(abfd, info->keep_memory);
 43.2251 -+      if (!isymbuf)
 43.2252 -+	return FALSE;
 43.2253 -+
 43.2254 -+      for (i = 0; i < sym_count; i++)
 43.2255 -+	{
 43.2256 -+	  struct avr32_relax_data *rd;
 43.2257 -+	  struct fragment *frag;
 43.2258 -+	  asection *sec;
 43.2259 -+
 43.2260 -+	  isym = &isymbuf[i];
 43.2261 -+
 43.2262 -+	  sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
 43.2263 -+	  if (!sec)
 43.2264 -+	    continue;
 43.2265 -+
 43.2266 -+	  rd = avr32_relax_data(sec);
 43.2267 -+	  if (!rd->is_relaxable)
 43.2268 -+	    continue;
 43.2269 -+
 43.2270 -+	  frag = find_frag(sec, isym->st_value);
 43.2271 -+	  BFD_ASSERT(frag);
 43.2272 -+
 43.2273 -+	  local_sym_frag[i] = frag;
 43.2274 -+	}
 43.2275 -+
 43.2276 -+      release_local_syms(abfd, isymbuf);
 43.2277 -+    }
 43.2278 -+
 43.2279 -+  /* And again for relocs with addends and constant pool references */
 43.2280 -+  for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
 43.2281 -+    for (sec = abfd->sections; sec; sec = sec->next)
 43.2282 -+      {
 43.2283 -+	Elf_Internal_Rela *relocs;
 43.2284 -+	bfd_boolean ret;
 43.2285 -+
 43.2286 -+	if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
 43.2287 -+	  continue;
 43.2288 -+
 43.2289 -+	relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
 43.2290 -+	if (!relocs)
 43.2291 -+	  return FALSE;
 43.2292 -+
 43.2293 -+	ret = allocate_reloc_data(abfd, sec, relocs, info);
 43.2294 -+
 43.2295 -+	release_internal_relocs(sec, relocs);
 43.2296 -+	if (ret == FALSE)
 43.2297 -+	  return ret;
 43.2298 -+      }
 43.2299 -+
 43.2300 -+  return TRUE;
 43.2301 -+}
 43.2302 -+
 43.2303 -+static bfd_boolean
 43.2304 -+rs_is_good_enough(const struct relax_state *rs, struct fragment *frag,
 43.2305 -+		  bfd_vma symval, bfd_vma addr, struct got_entry *got,
 43.2306 -+		  struct avr32_reloc_data *ind_data,
 43.2307 -+		  bfd_signed_vma offset_adjust)
 43.2308 -+{
 43.2309 -+  bfd_signed_vma target = 0;
 43.2310 -+
 43.2311 -+  switch (rs->reftype)
 43.2312 -+    {
 43.2313 -+    case REF_ABSOLUTE:
 43.2314 -+      target = symval;
 43.2315 -+      break;
 43.2316 -+    case REF_PCREL:
 43.2317 -+      target = symval - addr;
 43.2318 -+      break;
 43.2319 -+    case REF_CPOOL:
 43.2320 -+      /* cpool frags are always in the same section and always after
 43.2321 -+	 all frags referring to it.  So it's always correct to add in
 43.2322 -+	 offset_adjust here.  */
 43.2323 -+      target = (ind_data->add_frag->offset + ind_data->add_frag->offset_adjust
 43.2324 -+		+ offset_adjust - frag->offset - frag->offset_adjust);
 43.2325 -+      break;
 43.2326 -+    case REF_GOT:
 43.2327 -+      target = got->offset;
 43.2328 -+      break;
 43.2329 -+    default:
 43.2330 -+      abort();
 43.2331 -+    }
 43.2332 -+
 43.2333 -+  if (target >= rs->range_min && target <= rs->range_max)
 43.2334 -+    return TRUE;
 43.2335 -+  else
 43.2336 -+    return FALSE;
 43.2337 -+}
 43.2338 -+
 43.2339 -+static bfd_boolean
 43.2340 -+avr32_size_frags(bfd *abfd, asection *sec, struct bfd_link_info *info)
 43.2341 -+{
 43.2342 -+  struct elf_avr32_link_hash_table *htab;
 43.2343 -+  struct avr32_relax_data *rd;
 43.2344 -+  Elf_Internal_Shdr *symtab_hdr;
 43.2345 -+  Elf_Internal_Rela *relocs = NULL;
 43.2346 -+  Elf_Internal_Sym *isymbuf = NULL;
 43.2347 -+  struct got_entry **local_got_ents;
 43.2348 -+  struct fragment **local_sym_frag;
 43.2349 -+  bfd_boolean ret = FALSE;
 43.2350 -+  bfd_signed_vma delta = 0;
 43.2351 -+  unsigned int i;
 43.2352 -+
 43.2353 -+  htab = avr32_elf_hash_table(info);
 43.2354 -+  rd = avr32_relax_data(sec);
 43.2355 -+
 43.2356 -+  if (sec == htab->sgot)
 43.2357 -+    {
 43.2358 -+      RDBG("Relaxing GOT section (vma: 0x%lx)\n",
 43.2359 -+	   sec->output_section->vma + sec->output_offset);
 43.2360 -+      if (assign_got_offsets(htab))
 43.2361 -+	htab->repeat_pass = TRUE;
 43.2362 -+      return TRUE;
 43.2363 -+    }
 43.2364 -+
 43.2365 -+  if (!rd->is_relaxable)
 43.2366 -+    return TRUE;
 43.2367 -+
 43.2368 -+  if (!sec->rawsize)
 43.2369 -+    sec->rawsize = sec->size;
 43.2370 -+
 43.2371 -+  symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
 43.2372 -+  relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
 43.2373 -+  if (!relocs)
 43.2374 -+    goto out;
 43.2375 -+
 43.2376 -+  isymbuf = retrieve_local_syms(abfd, info->keep_memory);
 43.2377 -+  if (!isymbuf)
 43.2378 -+    goto out;
 43.2379 -+
 43.2380 -+  local_got_ents = elf_local_got_ents(abfd);
 43.2381 -+  local_sym_frag = elf_tdata(abfd)->local_sym_frag;
 43.2382 -+
 43.2383 -+  RDBG("size_frags: %s<%s>\n  vma: 0x%08lx, size: 0x%08lx\n",
 43.2384 -+       abfd->filename, sec->name,
 43.2385 -+       sec->output_section->vma + sec->output_offset, sec->size);
 43.2386 -+
 43.2387 -+  for (i = 0; i < rd->frag_count; i++)
 43.2388 -+    {
 43.2389 -+      struct fragment *frag = &rd->frag[i];
 43.2390 -+      struct avr32_reloc_data *r_data = NULL, *ind_data = NULL;
 43.2391 -+      const struct relax_state *state, *next_state;
 43.2392 -+      struct fragment *target_frag = NULL;
 43.2393 -+      asection *sym_sec = NULL;
 43.2394 -+      Elf_Internal_Rela *rela;
 43.2395 -+      struct got_entry *got;
 43.2396 -+      bfd_vma symval, r_offset, addend, addr;
 43.2397 -+      bfd_signed_vma size_adjust = 0, distance;
 43.2398 -+      unsigned long r_symndx;
 43.2399 -+      bfd_boolean defined = TRUE, dynamic = FALSE;
 43.2400 -+      unsigned char sym_type;
 43.2401 -+
 43.2402 -+      frag->offset_adjust += delta;
 43.2403 -+      state = next_state = &relax_state[frag->state];
 43.2404 -+      rela = frag->rela;
 43.2405 -+
 43.2406 -+      BFD_ASSERT(state->id == frag->state);
 43.2407 -+
 43.2408 -+      RDBG("  0x%04lx%c%d: %s [size %ld]", rela ? rela->r_offset : sec->rawsize,
 43.2409 -+	   (frag->offset_adjust < 0)?'-':'+',
 43.2410 -+	   abs(frag->offset_adjust), state->name, state->size);
 43.2411 -+
 43.2412 -+      if (!rela)
 43.2413 -+	{
 43.2414 -+	  RDBG(": no reloc, ignoring\n");
 43.2415 -+	  continue;
 43.2416 -+	}
 43.2417 -+
 43.2418 -+      BFD_ASSERT((unsigned int)(rela - relocs) < sec->reloc_count);
 43.2419 -+      BFD_ASSERT(state != RS_NONE);
 43.2420 -+
 43.2421 -+      r_offset = rela->r_offset + frag->offset_adjust;
 43.2422 -+      addr = sec->output_section->vma + sec->output_offset + r_offset;
 43.2423 -+
 43.2424 -+      switch (frag->state)
 43.2425 -+	{
 43.2426 -+	case RS_ALIGN:
 43.2427 -+	  size_adjust = ((addr + (1 << rela->r_addend) - 1)
 43.2428 -+			 & ~((1 << rela->r_addend) - 1));
 43.2429 -+	  size_adjust -= (sec->output_section->vma + sec->output_offset
 43.2430 -+			  + frag->offset + frag->offset_adjust
 43.2431 -+			  + frag->size + frag->size_adjust);
 43.2432 -+
 43.2433 -+	  RDBG(": adjusting size %lu -> %lu\n", frag->size + frag->size_adjust,
 43.2434 -+	       frag->size + frag->size_adjust + size_adjust);
 43.2435 -+	  break;
 43.2436 -+
 43.2437 -+	case RS_CPENT:
 43.2438 -+	  if (frag->refcount == 0 && frag->size_adjust == 0)
 43.2439 -+	    {
 43.2440 -+	      RDBG(": discarding frag\n");
 43.2441 -+	      size_adjust = -4;
 43.2442 -+	    }
 43.2443 -+	  else if (frag->refcount > 0 && frag->size_adjust < 0)
 43.2444 -+	    {
 43.2445 -+	      RDBG(": un-discarding frag\n");
 43.2446 -+	      size_adjust = 4;
 43.2447 -+	    }
 43.2448 -+	  break;
 43.2449 -+
 43.2450 -+	default:
 43.2451 -+	  if (rd->reloc_data)
 43.2452 -+	    r_data = &rd->reloc_data[frag->rela - relocs];
 43.2453 -+
 43.2454 -+	  /* If this is a cpool reference, we want the symbol that the
 43.2455 -+	     cpool entry refers to, not the symbol for the cpool entry
 43.2456 -+	     itself, as we already know what frag it's in.  */
 43.2457 -+	  if (relax_state[frag->initial_state].reftype == REF_CPOOL)
 43.2458 -+	    {
 43.2459 -+	      Elf_Internal_Rela *irela = r_data->add_frag->rela;
 43.2460 -+
 43.2461 -+	      r_symndx = ELF_R_SYM(irela->r_info);
 43.2462 -+	      addend = irela->r_addend;
 43.2463 -+
 43.2464 -+	      /* The constant pool must be in the same section as the
 43.2465 -+		 reloc referring to it.  */
 43.2466 -+	      BFD_ASSERT((unsigned long)(irela - relocs) < sec->reloc_count);
 43.2467 -+
 43.2468 -+	      ind_data = r_data;
 43.2469 -+	      r_data = &rd->reloc_data[irela - relocs];
 43.2470 -+	    }
 43.2471 -+	  else
 43.2472 -+	    {
 43.2473 -+	      r_symndx = ELF_R_SYM(rela->r_info);
 43.2474 -+	      addend = rela->r_addend;
 43.2475 -+	    }
 43.2476 -+
 43.2477 -+	  /* Get the value of the symbol referred to by the reloc.  */
 43.2478 -+	  if (r_symndx < symtab_hdr->sh_info)
 43.2479 -+	    {
 43.2480 -+	      Elf_Internal_Sym *isym;
 43.2481 -+
 43.2482 -+	      isym = isymbuf + r_symndx;
 43.2483 -+	      symval = 0;
 43.2484 -+
 43.2485 -+	      RDBG(" local sym %lu: ", r_symndx);
 43.2486 -+
 43.2487 -+	      if (isym->st_shndx == SHN_UNDEF)
 43.2488 -+		defined = FALSE;
 43.2489 -+	      else if (isym->st_shndx == SHN_ABS)
 43.2490 -+		sym_sec = bfd_abs_section_ptr;
 43.2491 -+	      else if (isym->st_shndx == SHN_COMMON)
 43.2492 -+		sym_sec = bfd_com_section_ptr;
 43.2493 -+	      else
 43.2494 -+		sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
 43.2495 -+
 43.2496 -+	      symval = isym->st_value;
 43.2497 -+	      sym_type = ELF_ST_TYPE(isym->st_info);
 43.2498 -+	      target_frag = local_sym_frag[r_symndx];
 43.2499 -+
 43.2500 -+	      if (local_got_ents)
 43.2501 -+		got = local_got_ents[r_symndx];
 43.2502 -+	      else
 43.2503 -+		got = NULL;
 43.2504 -+	    }
 43.2505 -+	  else
 43.2506 -+	    {
 43.2507 -+	      /* Global symbol */
 43.2508 -+	      unsigned long index;
 43.2509 -+	      struct elf_link_hash_entry *h;
 43.2510 -+	      struct elf_avr32_link_hash_entry *havr;
 43.2511 -+
 43.2512 -+	      index = r_symndx - symtab_hdr->sh_info;
 43.2513 -+	      h = elf_sym_hashes(abfd)[index];
 43.2514 -+	      BFD_ASSERT(h != NULL);
 43.2515 -+
 43.2516 -+	      while (h->root.type == bfd_link_hash_indirect
 43.2517 -+		     || h->root.type == bfd_link_hash_warning)
 43.2518 -+		h = (struct elf_link_hash_entry *)h->root.u.i.link;
 43.2519 -+
 43.2520 -+	      havr = (struct elf_avr32_link_hash_entry *)h;
 43.2521 -+	      got = h->got.glist;
 43.2522 -+
 43.2523 -+	      symval = 0;
 43.2524 -+
 43.2525 -+	      RDBG(" %s: ", h->root.root.string);
 43.2526 -+
 43.2527 -+	      if (h->root.type != bfd_link_hash_defined
 43.2528 -+		  && h->root.type != bfd_link_hash_defweak)
 43.2529 -+		{
 43.2530 -+		  RDBG("(undef)");
 43.2531 -+		  defined = FALSE;
 43.2532 -+		}
 43.2533 -+	      else if ((info->shared && !info->symbolic && h->dynindx != -1)
 43.2534 -+		       || (htab->root.dynamic_sections_created
 43.2535 -+			   && h->def_dynamic && !h->def_regular))
 43.2536 -+		{
 43.2537 -+		  RDBG("(dynamic)");
 43.2538 -+		  dynamic = TRUE;
 43.2539 -+		  sym_sec = h->root.u.def.section;
 43.2540 -+		}
 43.2541 -+	      else
 43.2542 -+		{
 43.2543 -+		  sym_sec = h->root.u.def.section;
 43.2544 -+		  symval = h->root.u.def.value;
 43.2545 -+		  target_frag = havr->sym_frag;
 43.2546 -+		}
 43.2547 -+
 43.2548 -+	      sym_type = h->type;
 43.2549 -+	    }
 43.2550 -+
 43.2551 -+	  /* Thanks to elf32-ppc for this one.  */
 43.2552 -+	  if (sym_sec && sym_sec->sec_info_type == ELF_INFO_TYPE_MERGE)
 43.2553 -+	    {
 43.2554 -+	      /* At this stage in linking, no SEC_MERGE symbol has been
 43.2555 -+		 adjusted, so all references to such symbols need to be
 43.2556 -+		 passed through _bfd_merged_section_offset.  (Later, in
 43.2557 -+		 relocate_section, all SEC_MERGE symbols *except* for
 43.2558 -+		 section symbols have been adjusted.)
 43.2559 -+
 43.2560 -+	         SEC_MERGE sections are not relaxed by us, as they
 43.2561 -+	         shouldn't contain any code.  */
 43.2562 -+
 43.2563 -+	      BFD_ASSERT(!target_frag && !(r_data && r_data->add_frag));
 43.2564 -+
 43.2565 -+	      /* gas may reduce relocations against symbols in SEC_MERGE
 43.2566 -+		 sections to a relocation against the section symbol when
 43.2567 -+		 the original addend was zero.  When the reloc is against
 43.2568 -+		 a section symbol we should include the addend in the
 43.2569 -+		 offset passed to _bfd_merged_section_offset, since the
 43.2570 -+		 location of interest is the original symbol.  On the
 43.2571 -+		 other hand, an access to "sym+addend" where "sym" is not
 43.2572 -+		 a section symbol should not include the addend;  Such an
 43.2573 -+		 access is presumed to be an offset from "sym";  The
 43.2574 -+		 location of interest is just "sym".  */
 43.2575 -+	      RDBG("\n    MERGE: %s: 0x%lx+0x%lx+0x%lx -> ",
 43.2576 -+		   (sym_type == STT_SECTION)?"section":"not section",
 43.2577 -+		   sym_sec->output_section->vma + sym_sec->output_offset,
 43.2578 -+		   symval, addend);
 43.2579 -+
 43.2580 -+	      if (sym_type == STT_SECTION)
 43.2581 -+		symval += addend;
 43.2582 -+
 43.2583 -+	      symval = (_bfd_merged_section_offset
 43.2584 -+			(abfd, &sym_sec,
 43.2585 -+			 elf_section_data(sym_sec)->sec_info, symval));
 43.2586 -+
 43.2587 -+	      if (sym_type != STT_SECTION)
 43.2588 -+		symval += addend;
 43.2589 -+	    }
 43.2590 -+	  else
 43.2591 -+	    symval += addend;
 43.2592 -+
 43.2593 -+	  if (defined && !dynamic)
 43.2594 -+	    {
 43.2595 -+	      RDBG("0x%lx+0x%lx",
 43.2596 -+		   sym_sec->output_section->vma + sym_sec->output_offset,
 43.2597 -+		   symval);
 43.2598 -+	      symval += sym_sec->output_section->vma + sym_sec->output_offset;
 43.2599 -+	    }
 43.2600 -+
 43.2601 -+	  if (r_data && r_data->add_frag)
 43.2602 -+	    /* If the add_frag pointer is set, it means that this reloc
 43.2603 -+	       has an addend that may be affected by relaxation.  */
 43.2604 -+	    target_frag = r_data->add_frag;
 43.2605 -+
 43.2606 -+	  if (target_frag)
 43.2607 -+	    {
 43.2608 -+	      symval += target_frag->offset_adjust;
 43.2609 -+
 43.2610 -+	      /* If target_frag comes after this frag in the same
 43.2611 -+		 section, we should assume that it will be moved by
 43.2612 -+		 the same amount we are.  */
 43.2613 -+	      if ((target_frag - rd->frag) < (int)rd->frag_count
 43.2614 -+		  && target_frag > frag)
 43.2615 -+		symval += delta;
 43.2616 -+	    }
 43.2617 -+
 43.2618 -+	  distance = symval - addr;
 43.2619 -+
 43.2620 -+	  /* First, try to make a direct reference.  If the symbol is
 43.2621 -+	     dynamic or undefined, we must take care not to change its
 43.2622 -+	     reference type, that is, we can't make it direct.
 43.2623 -+
 43.2624 -+	     Also, it seems like some sections may actually be resized
 43.2625 -+	     after the relaxation code is done, so we can't really
 43.2626 -+	     trust that our "distance" is correct.  There's really no
 43.2627 -+	     easy solution to this problem, so we'll just disallow
 43.2628 -+	     direct references to SEC_DATA sections.
 43.2629 -+
 43.2630 -+	     Oh, and .bss isn't actually SEC_DATA, so we disallow
 43.2631 -+	     !SEC_HAS_CONTENTS as well. */
 43.2632 -+	  if (!dynamic && defined
 43.2633 -+	      && (htab->direct_data_refs
 43.2634 -+		  || (!(sym_sec->flags & SEC_DATA)
 43.2635 -+		      && (sym_sec->flags & SEC_HAS_CONTENTS)))
 43.2636 -+	      && next_state->direct)
 43.2637 -+	    {
 43.2638 -+	      next_state = &relax_state[next_state->direct];
 43.2639 -+	      RDBG(" D-> %s", next_state->name);
 43.2640 -+	    }
 43.2641 -+
 43.2642 -+	  /* Iterate backwards until we find a state that fits.  */
 43.2643 -+	  while (next_state->prev
 43.2644 -+		 && !rs_is_good_enough(next_state, frag, symval, addr,
 43.2645 -+				       got, ind_data, delta))
 43.2646 -+	    {
 43.2647 -+	      next_state = &relax_state[next_state->prev];
 43.2648 -+	      RDBG(" P-> %s", next_state->name);
 43.2649 -+	    }
 43.2650 -+
 43.2651 -+	  /* Then try to find the best possible state.  */
 43.2652 -+	  while (next_state->next)
 43.2653 -+	    {
 43.2654 -+	      const struct relax_state *candidate;
 43.2655 -+
 43.2656 -+	      candidate = &relax_state[next_state->next];
 43.2657 -+	      if (!rs_is_good_enough(candidate, frag, symval, addr, got,
 43.2658 -+				     ind_data, delta))
 43.2659 -+		break;
 43.2660 -+
 43.2661 -+	      next_state = candidate;
 43.2662 -+	      RDBG(" N-> %s", next_state->name);
 43.2663 -+	    }
 43.2664 -+
 43.2665 -+	  RDBG(" [size %ld]\n", next_state->size);
 43.2666 -+
 43.2667 -+	  BFD_ASSERT(next_state->id);
 43.2668 -+	  BFD_ASSERT(!dynamic || next_state->reftype == REF_GOT);
 43.2669 -+
 43.2670 -+	  size_adjust = next_state->size - state->size;
 43.2671 -+
 43.2672 -+	  /* There's a theoretical possibility that shrinking one frag
 43.2673 -+	     may cause another to grow, which may cause the first one to
 43.2674 -+	     grow as well, and we're back where we started.  Avoid this
 43.2675 -+	     scenario by disallowing a frag that has grown to ever
 43.2676 -+	     shrink again.  */
 43.2677 -+	  if (state->reftype == REF_GOT && next_state->reftype != REF_GOT)
 43.2678 -+	    {
 43.2679 -+	      if (frag->has_grown)
 43.2680 -+		next_state = state;
 43.2681 -+	      else
 43.2682 -+		unref_got_entry(htab, got);
 43.2683 -+	    }
 43.2684 -+	  else if (state->reftype != REF_GOT && next_state->reftype == REF_GOT)
 43.2685 -+	    {
 43.2686 -+	      ref_got_entry(htab, got);
 43.2687 -+	      frag->has_grown = TRUE;
 43.2688 -+	    }
 43.2689 -+	  else if (state->reftype == REF_CPOOL
 43.2690 -+		   && next_state->reftype != REF_CPOOL)
 43.2691 -+	    {
 43.2692 -+	      if (frag->has_grown)
 43.2693 -+		next_state = state;
 43.2694 -+	      else
 43.2695 -+		ind_data->add_frag->refcount--;
 43.2696 -+	    }
 43.2697 -+	  else if (state->reftype != REF_CPOOL
 43.2698 -+		   && next_state->reftype == REF_CPOOL)
 43.2699 -+	    {
 43.2700 -+	      ind_data->add_frag->refcount++;
 43.2701 -+	      frag->has_grown = TRUE;
 43.2702 -+	    }
 43.2703 -+	  else
 43.2704 -+	    {
 43.2705 -+	      if (frag->has_grown && size_adjust < 0)
 43.2706 -+		next_state = state;
 43.2707 -+	      else if (size_adjust > 0)
 43.2708 -+		frag->has_grown = TRUE;
 43.2709 -+	    }
 43.2710 -+
 43.2711 -+	  size_adjust = next_state->size - state->size;
 43.2712 -+	  frag->state = next_state->id;
 43.2713 -+
 43.2714 -+	  break;
 43.2715 -+	}
 43.2716 -+
 43.2717 -+      if (size_adjust)
 43.2718 -+	htab->repeat_pass = TRUE;
 43.2719 -+
 43.2720 -+      frag->size_adjust += size_adjust;
 43.2721 -+      sec->size += size_adjust;
 43.2722 -+      delta += size_adjust;
 43.2723 -+
 43.2724 -+      BFD_ASSERT((frag->offset + frag->offset_adjust
 43.2725 -+		  + frag->size + frag->size_adjust)
 43.2726 -+		 == (frag[1].offset + frag[1].offset_adjust + delta));
 43.2727 -+    }
 43.2728 -+
 43.2729 -+  ret = TRUE;
 43.2730 -+
 43.2731 -+ out:
 43.2732 -+  release_local_syms(abfd, isymbuf);
 43.2733 -+  release_internal_relocs(sec, relocs);
 43.2734 -+  return ret;
 43.2735 -+}
 43.2736 -+
 43.2737 -+static bfd_boolean
 43.2738 -+adjust_global_symbol(struct elf_avr32_link_hash_entry *havr,
 43.2739 -+		     struct bfd_link_info *info ATTRIBUTE_UNUSED)
 43.2740 -+{
 43.2741 -+  struct elf_link_hash_entry *h = &havr->root;
 43.2742 -+
 43.2743 -+  if (havr->sym_frag && (h->root.type == bfd_link_hash_defined
 43.2744 -+			 || h->root.type == bfd_link_hash_defweak))
 43.2745 -+    {
 43.2746 -+      RDBG("adjust_global_symbol: %s 0x%08lx -> 0x%08lx\n",
 43.2747 -+	   h->root.root.string, h->root.u.def.value,
 43.2748 -+	   h->root.u.def.value + havr->sym_frag->offset_adjust);
 43.2749 -+      h->root.u.def.value += havr->sym_frag->offset_adjust;
 43.2750 -+    }
 43.2751 -+  return TRUE;
 43.2752 -+}
 43.2753 -+
 43.2754 -+static bfd_boolean
 43.2755 -+adjust_syms(struct bfd_link_info *info)
 43.2756 -+{
 43.2757 -+  struct elf_avr32_link_hash_table *htab;
 43.2758 -+  bfd *abfd;
 43.2759 -+
 43.2760 -+  htab = avr32_elf_hash_table(info);
 43.2761 -+  elf_link_hash_traverse(&htab->root, adjust_global_symbol, info);
 43.2762 -+
 43.2763 -+  for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
 43.2764 -+    {
 43.2765 -+      Elf_Internal_Sym *isymbuf;
 43.2766 -+      struct fragment **local_sym_frag, *frag;
 43.2767 -+      unsigned int i, sym_count;
 43.2768 -+
 43.2769 -+      sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
 43.2770 -+      if (sym_count == 0)
 43.2771 -+	continue;
 43.2772 -+
 43.2773 -+      isymbuf = retrieve_local_syms(abfd, info->keep_memory);
 43.2774 -+      if (!isymbuf)
 43.2775 -+	return FALSE;
 43.2776 -+
 43.2777 -+      local_sym_frag = elf_tdata(abfd)->local_sym_frag;
 43.2778 -+
 43.2779 -+      for (i = 0; i < sym_count; i++)
 43.2780 -+	{
 43.2781 -+	  frag = local_sym_frag[i];
 43.2782 -+	  if (frag)
 43.2783 -+	    {
 43.2784 -+	      RDBG("adjust_local_symbol: %s[%u] 0x%08lx -> 0x%08lx\n",
 43.2785 -+		   abfd->filename, i, isymbuf[i].st_value,
 43.2786 -+		   isymbuf[i].st_value + frag->offset_adjust);
 43.2787 -+	      isymbuf[i].st_value += frag->offset_adjust;
 43.2788 -+	    }
 43.2789 -+	}
 43.2790 -+
 43.2791 -+      release_local_syms(abfd, isymbuf);
 43.2792 -+    }
 43.2793 -+
 43.2794 -+  htab->symbols_adjusted = TRUE;
 43.2795 -+  return TRUE;
 43.2796 -+}
 43.2797 -+
 43.2798 -+static bfd_boolean
 43.2799 -+adjust_relocs(bfd *abfd, asection *sec, struct bfd_link_info *info)
 43.2800 -+{
 43.2801 -+  struct avr32_relax_data *rd;
 43.2802 -+  Elf_Internal_Rela *relocs;
 43.2803 -+  Elf_Internal_Shdr *symtab_hdr;
 43.2804 -+  unsigned int i;
 43.2805 -+  bfd_boolean ret = FALSE;
 43.2806 -+
 43.2807 -+  rd = avr32_relax_data(sec);
 43.2808 -+  if (!rd->reloc_data)
 43.2809 -+    return TRUE;
 43.2810 -+
 43.2811 -+  RDBG("adjust_relocs: %s<%s> (count: %u)\n", abfd->filename, sec->name,
 43.2812 -+       sec->reloc_count);
 43.2813 -+
 43.2814 -+  relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
 43.2815 -+  if (!relocs)
 43.2816 -+    return FALSE;
 43.2817 -+
 43.2818 -+  symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
 43.2819 -+
 43.2820 -+  for (i = 0; i < sec->reloc_count; i++)
 43.2821 -+    {
 43.2822 -+      Elf_Internal_Rela *rela = &relocs[i];
 43.2823 -+      struct avr32_reloc_data *r_data = &rd->reloc_data[i];
 43.2824 -+      struct fragment *sym_frag;
 43.2825 -+      unsigned long r_symndx;
 43.2826 -+
 43.2827 -+      if (r_data->add_frag)
 43.2828 -+	{
 43.2829 -+	  r_symndx = ELF_R_SYM(rela->r_info);
 43.2830 -+
 43.2831 -+	  if (r_symndx < symtab_hdr->sh_info)
 43.2832 -+	    sym_frag = elf_tdata(abfd)->local_sym_frag[r_symndx];
 43.2833 -+	  else
 43.2834 -+	    {
 43.2835 -+	      struct elf_link_hash_entry *h;
 43.2836 -+
 43.2837 -+	      h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
 43.2838 -+
 43.2839 -+	      while (h->root.type == bfd_link_hash_indirect
 43.2840 -+		     || h->root.type == bfd_link_hash_warning)
 43.2841 -+		h = (struct elf_link_hash_entry *)h->root.u.i.link;
 43.2842 -+
 43.2843 -+	      BFD_ASSERT(h->root.type == bfd_link_hash_defined
 43.2844 -+			 || h->root.type == bfd_link_hash_defweak);
 43.2845 -+
 43.2846 -+	      sym_frag = ((struct elf_avr32_link_hash_entry *)h)->sym_frag;
 43.2847 -+	    }
 43.2848 -+
 43.2849 -+	  RDBG("    addend: 0x%08lx -> 0x%08lx\n",
 43.2850 -+	       rela->r_addend,
 43.2851 -+	       rela->r_addend + r_data->add_frag->offset_adjust
 43.2852 -+	       - (sym_frag ? sym_frag->offset_adjust : 0));
 43.2853 -+
 43.2854 -+	  /* If this is against a section symbol, we won't find any
 43.2855 -+	     sym_frag, so we'll just adjust the addend.  */
 43.2856 -+	  rela->r_addend += r_data->add_frag->offset_adjust;
 43.2857 -+	  if (sym_frag)
 43.2858 -+	    rela->r_addend -= sym_frag->offset_adjust;
 43.2859 -+
 43.2860 -+	  if (r_data->sub_frag)
 43.2861 -+	    {
 43.2862 -+	      bfd_byte *contents;
 43.2863 -+	      bfd_signed_vma diff;
 43.2864 -+
 43.2865 -+	      contents = retrieve_contents(abfd, sec, info->keep_memory);
 43.2866 -+	      if (!contents)
 43.2867 -+		goto out;
 43.2868 -+
 43.2869 -+	      /* I realize now that sub_frag is misnamed.  It's
 43.2870 -+		 actually add_frag which is subtracted in this
 43.2871 -+		 case...  */
 43.2872 -+	      diff = bfd_get_signed_32(abfd, contents + rela->r_offset);
 43.2873 -+	      diff += (r_data->sub_frag->offset_adjust
 43.2874 -+		       - r_data->add_frag->offset_adjust);
 43.2875 -+	      bfd_put_32(abfd, diff, contents + rela->r_offset);
 43.2876 -+
 43.2877 -+	      RDBG("   0x%lx: DIFF32 updated: 0x%lx\n", rela->r_offset, diff);
 43.2878 -+
 43.2879 -+	      release_contents(sec, contents);
 43.2880 -+	    }
 43.2881 -+	}
 43.2882 -+      else
 43.2883 -+	BFD_ASSERT(!r_data->sub_frag);
 43.2884 -+    }
 43.2885 -+
 43.2886 -+  ret = TRUE;
 43.2887 -+
 43.2888 -+ out:
 43.2889 -+  release_internal_relocs(sec, relocs);
 43.2890 -+  return ret;
 43.2891 -+}
 43.2892 -+
 43.2893 -+static bfd_boolean
 43.2894 -+avr32_move_data(bfd *abfd, asection *sec, struct bfd_link_info *info)
 43.2895 -+{
 43.2896 -+  struct elf_avr32_link_hash_table *htab;
 43.2897 -+  struct avr32_relax_data *rd;
 43.2898 -+  struct fragment *frag, *fragend;
 43.2899 -+  Elf_Internal_Rela *relocs = NULL;
 43.2900 -+  bfd_byte *contents = NULL;
 43.2901 -+  unsigned int i;
 43.2902 -+  bfd_boolean ret = FALSE;
 43.2903 -+
 43.2904 -+  htab = avr32_elf_hash_table(info);
 43.2905 -+  rd = avr32_relax_data(sec);
 43.2906 -+
 43.2907 -+  if (!htab->symbols_adjusted)
 43.2908 -+    if (!adjust_syms(info))
 43.2909 -+      return FALSE;
 43.2910 -+
 43.2911 -+  if (rd->is_relaxable)
 43.2912 -+    {
 43.2913 -+      /* Resize the section first, so that we can be sure that enough
 43.2914 -+	 memory is allocated in case the section has grown.  */
 43.2915 -+      if (sec->size > sec->rawsize
 43.2916 -+	  && elf_section_data(sec)->this_hdr.contents)
 43.2917 -+	{
 43.2918 -+	  /* We must not use cached data if the section has grown.  */
 43.2919 -+	  free(elf_section_data(sec)->this_hdr.contents);
 43.2920 -+	  elf_section_data(sec)->this_hdr.contents = NULL;
 43.2921 -+	}
 43.2922 -+
 43.2923 -+      relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
 43.2924 -+      if (!relocs)
 43.2925 -+	goto out;
 43.2926 -+      contents = retrieve_contents(abfd, sec, info->keep_memory);
 43.2927 -+      if (!contents)
 43.2928 -+	goto out;
 43.2929 -+
 43.2930 -+      fragend = rd->frag + rd->frag_count;
 43.2931 -+
 43.2932 -+      RDBG("move_data: %s<%s>: relocs=%p, contents=%p\n",
 43.2933 -+	   abfd->filename, sec->name, relocs, contents);
 43.2934 -+
 43.2935 -+      /* First, move the data into place. We must take care to move
 43.2936 -+	 frags in the right order so that we don't accidentally
 43.2937 -+	 overwrite parts of the next frag.  */
 43.2938 -+      for (frag = rd->frag; frag < fragend; frag++)
 43.2939 -+	{
 43.2940 -+	  RDBG("    0x%08lx%c0x%x: size 0x%lx%c0x%x\n",
 43.2941 -+	       frag->offset, frag->offset_adjust >= 0 ? '+' : '-',
 43.2942 -+	       abs(frag->offset_adjust),
 43.2943 -+	       frag->size, frag->size_adjust >= 0 ? '+' : '-',
 43.2944 -+	       abs(frag->size_adjust));
 43.2945 -+	  if (frag->offset_adjust > 0)
 43.2946 -+	    {
 43.2947 -+	      struct fragment *prev = frag - 1;
 43.2948 -+	      struct fragment *last;
 43.2949 -+
 43.2950 -+	      for (last = frag; last < fragend && last->offset_adjust > 0;
 43.2951 -+		   last++) ;
 43.2952 -+
 43.2953 -+	      if (last == fragend)
 43.2954 -+		last--;
 43.2955 -+
 43.2956 -+	      for (frag = last; frag != prev; frag--)
 43.2957 -+		{
 43.2958 -+		  if (frag->offset_adjust
 43.2959 -+		      && frag->size + frag->size_adjust > 0)
 43.2960 -+		    {
 43.2961 -+		      RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
 43.2962 -+			   frag->offset, frag->offset + frag->offset_adjust,
 43.2963 -+			   frag->size + frag->size_adjust);
 43.2964 -+		      memmove(contents + frag->offset + frag->offset_adjust,
 43.2965 -+			      contents + frag->offset,
 43.2966 -+			      frag->size + frag->size_adjust);
 43.2967 -+		    }
 43.2968 -+		}
 43.2969 -+	      frag = last;
 43.2970 -+	    }
 43.2971 -+	  else if (frag->offset_adjust && frag->size + frag->size_adjust > 0)
 43.2972 -+	    {
 43.2973 -+	      RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
 43.2974 -+		   frag->offset, frag->offset + frag->offset_adjust,
 43.2975 -+		   frag->size + frag->size_adjust);
 43.2976 -+	      memmove(contents + frag->offset + frag->offset_adjust,
 43.2977 -+		      contents + frag->offset,
 43.2978 -+		      frag->size + frag->size_adjust);
 43.2979 -+	    }
 43.2980 -+	}
 43.2981 -+
 43.2982 -+      i = 0;
 43.2983 -+
 43.2984 -+      for (frag = rd->frag; frag < fragend; frag++)
 43.2985 -+	{
 43.2986 -+	  const struct relax_state *state, *istate;
 43.2987 -+	  struct avr32_reloc_data *r_data = NULL;
 43.2988 -+
 43.2989 -+	  istate = &relax_state[frag->initial_state];
 43.2990 -+	  state = &relax_state[frag->state];
 43.2991 -+
 43.2992 -+	  if (rd->reloc_data)
 43.2993 -+	    r_data = &rd->reloc_data[frag->rela - relocs];
 43.2994 -+
 43.2995 -+	  BFD_ASSERT((long)(frag->size + frag->size_adjust) >= 0);
 43.2996 -+	  BFD_ASSERT(state->reftype != REF_CPOOL
 43.2997 -+		     || r_data->add_frag->refcount > 0);
 43.2998 -+
 43.2999 -+	  if (istate->reftype == REF_CPOOL && state->reftype != REF_CPOOL)
 43.3000 -+	    {
 43.3001 -+	      struct fragment *ifrag;
 43.3002 -+
 43.3003 -+	      /* An indirect reference through the cpool has been
 43.3004 -+		 converted to a direct reference.  We must update the
 43.3005 -+		 reloc to point to the symbol itself instead of the
 43.3006 -+		 constant pool entry.  The reloc type will be updated
 43.3007 -+		 later.  */
 43.3008 -+	      ifrag = r_data->add_frag;
 43.3009 -+	      frag->rela->r_info = ifrag->rela->r_info;
 43.3010 -+	      frag->rela->r_addend = ifrag->rela->r_addend;
 43.3011 -+
 43.3012 -+	      /* Copy the reloc data so the addend will be adjusted
 43.3013 -+		 correctly later.  */
 43.3014 -+	      *r_data = rd->reloc_data[ifrag->rela - relocs];
 43.3015 -+	    }
 43.3016 -+
 43.3017 -+	  /* Move all relocs covered by this frag.  */
 43.3018 -+	  if (frag->rela)
 43.3019 -+	    BFD_ASSERT(&relocs[i] <= frag->rela);
 43.3020 -+	  else
 43.3021 -+	    BFD_ASSERT((frag + 1) == fragend && frag->state == RS_NONE);
 43.3022 -+
 43.3023 -+	  if (frag == rd->frag)
 43.3024 -+	    BFD_ASSERT(i == 0);
 43.3025 -+	  else
 43.3026 -+	    BFD_ASSERT(&relocs[i] > frag[-1].rela);
 43.3027 -+
 43.3028 -+	  /* If non-null, frag->rela is the last relocation in the
 43.3029 -+	     fragment.  frag->rela can only be null in the last
 43.3030 -+	     fragment, so in that case, we'll just do the rest.  */
 43.3031 -+	  for (; (i < sec->reloc_count
 43.3032 -+		  && (!frag->rela || &relocs[i] <= frag->rela)); i++)
 43.3033 -+	    {
 43.3034 -+	      RDBG("[%4u] r_offset 0x%08lx -> 0x%08lx\n", i, relocs[i].r_offset,
 43.3035 -+		   relocs[i].r_offset + frag->offset_adjust);
 43.3036 -+	      relocs[i].r_offset += frag->offset_adjust;
 43.3037 -+	    }
 43.3038 -+
 43.3039 -+	  if (frag->refcount == 0)
 43.3040 -+	    {
 43.3041 -+	      /* If this frag is to be discarded, make sure we won't
 43.3042 -+		 relocate it later on.  */
 43.3043 -+	      BFD_ASSERT(frag->state == RS_CPENT);
 43.3044 -+	      frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
 43.3045 -+					    R_AVR32_NONE);
 43.3046 -+	    }
 43.3047 -+	  else if (frag->state == RS_ALIGN)
 43.3048 -+	    {
 43.3049 -+	      bfd_vma addr, addr_end;
 43.3050 -+
 43.3051 -+	      addr = frag->rela->r_offset;
 43.3052 -+	      addr_end = (frag->offset + frag->offset_adjust
 43.3053 -+			  + frag->size + frag->size_adjust);
 43.3054 -+
 43.3055 -+	      /* If the section is executable, insert NOPs.
 43.3056 -+		 Otherwise, insert zeroes.  */
 43.3057 -+	      if (sec->flags & SEC_CODE)
 43.3058 -+		{
 43.3059 -+		  if (addr & 1)
 43.3060 -+		    {
 43.3061 -+		      bfd_put_8(abfd, 0, contents + addr);
 43.3062 -+		      addr++;
 43.3063 -+		    }
 43.3064 -+
 43.3065 -+		  BFD_ASSERT(!((addr_end - addr) & 1));
 43.3066 -+
 43.3067 -+		  while (addr < addr_end)
 43.3068 -+		    {
 43.3069 -+		      bfd_put_16(abfd, NOP_OPCODE, contents + addr);
 43.3070 -+		      addr += 2;
 43.3071 -+		    }
 43.3072 -+		}
 43.3073 -+	      else
 43.3074 -+		memset(contents + addr, 0, addr_end - addr);
 43.3075 -+	    }
 43.3076 -+	  else if (state->opcode_mask)
 43.3077 -+	    {
 43.3078 -+	      bfd_vma insn;
 43.3079 -+
 43.3080 -+	      /* Update the opcode and the relocation type unless it's a
 43.3081 -+		 "special" relax state (i.e. RS_NONE, RS_ALIGN or
 43.3082 -+		 RS_CPENT.), in which case the opcode mask is zero.  */
 43.3083 -+	      insn = bfd_get_32(abfd, contents + frag->rela->r_offset);
 43.3084 -+	      insn &= ~state->opcode_mask;
 43.3085 -+	      insn |= state->opcode;
 43.3086 -+	      RDBG("    0x%lx: inserting insn %08lx\n",
 43.3087 -+		   frag->rela->r_offset, insn);
 43.3088 -+	      bfd_put_32(abfd, insn, contents + frag->rela->r_offset);
 43.3089 -+
 43.3090 -+	      frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
 43.3091 -+					      state->r_type);
 43.3092 -+	    }
 43.3093 -+
 43.3094 -+	  if ((frag + 1) == fragend)
 43.3095 -+	    BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
 43.3096 -+			+ frag->size_adjust) == sec->size);
 43.3097 -+	  else
 43.3098 -+	    BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
 43.3099 -+			+ frag->size_adjust)
 43.3100 -+		       == (frag[1].offset + frag[1].offset_adjust));
 43.3101 -+	}
 43.3102 -+    }
 43.3103 -+
 43.3104 -+  /* Adjust reloc addends and DIFF32 differences */
 43.3105 -+  if (!adjust_relocs(abfd, sec, info))
 43.3106 -+    return FALSE;
 43.3107 -+
 43.3108 -+  ret = TRUE;
 43.3109 -+
 43.3110 -+ out:
 43.3111 -+  release_contents(sec, contents);
 43.3112 -+  release_internal_relocs(sec, relocs);
 43.3113 -+  return ret;
 43.3114 -+}
 43.3115 -+
 43.3116 -+static bfd_boolean
 43.3117 -+avr32_elf_relax_section(bfd *abfd, asection *sec,
 43.3118 -+			struct bfd_link_info *info, bfd_boolean *again)
 43.3119 -+{
 43.3120 -+  struct elf_avr32_link_hash_table *htab;
 43.3121 -+  struct avr32_relax_data *rd;
 43.3122 -+
 43.3123 -+  *again = FALSE;
 43.3124 -+  if (info->relocatable)
 43.3125 -+    return TRUE;
 43.3126 -+
 43.3127 -+  htab = avr32_elf_hash_table(info);
 43.3128 -+  if ((!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
 43.3129 -+      && sec != htab->sgot)
 43.3130 -+    return TRUE;
 43.3131 -+
 43.3132 -+  if (!htab->relocations_analyzed)
 43.3133 -+    {
 43.3134 -+      if (!analyze_relocations(info))
 43.3135 -+	return FALSE;
 43.3136 -+      htab->relocations_analyzed = TRUE;
 43.3137 -+    }
 43.3138 -+
 43.3139 -+  rd = avr32_relax_data(sec);
 43.3140 -+
 43.3141 -+  if (rd->iteration != htab->relax_iteration)
 43.3142 -+    {
 43.3143 -+      if (!htab->repeat_pass)
 43.3144 -+	htab->relax_pass++;
 43.3145 -+      htab->relax_iteration++;
 43.3146 -+      htab->repeat_pass = FALSE;
 43.3147 -+    }
 43.3148 -+
 43.3149 -+  rd->iteration++;
 43.3150 -+
 43.3151 -+  switch (htab->relax_pass)
 43.3152 -+    {
 43.3153 -+    case RELAX_PASS_SIZE_FRAGS:
 43.3154 -+      if (!avr32_size_frags(abfd, sec, info))
 43.3155 -+	return FALSE;
 43.3156 -+      *again = TRUE;
 43.3157 -+      break;
 43.3158 -+    case RELAX_PASS_MOVE_DATA:
 43.3159 -+      if (!avr32_move_data(abfd, sec, info))
 43.3160 -+	return FALSE;
 43.3161 -+      break;
 43.3162 -+  }
 43.3163 -+
 43.3164 -+  return TRUE;
 43.3165 -+}
 43.3166 -+
 43.3167 -+
 43.3168 -+/* Relocation */
 43.3169 -+
 43.3170 -+static bfd_reloc_status_type
 43.3171 -+avr32_check_reloc_value(asection *sec, Elf_Internal_Rela *rela,
 43.3172 -+			bfd_signed_vma relocation, reloc_howto_type *howto);
 43.3173 -+static bfd_reloc_status_type
 43.3174 -+avr32_final_link_relocate(reloc_howto_type *howto, bfd *input_bfd,
 43.3175 -+			  asection *input_section, bfd_byte *contents,
 43.3176 -+			  Elf_Internal_Rela *rel, bfd_vma value);
 43.3177 -+static bfd_boolean
 43.3178 -+avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
 43.3179 -+			   bfd *input_bfd, asection *input_section,
 43.3180 -+			   bfd_byte *contents, Elf_Internal_Rela *relocs,
 43.3181 -+			   Elf_Internal_Sym *local_syms,
 43.3182 -+			   asection **local_sections);
 43.3183 -+
 43.3184 -+
 43.3185 -+#define symbol_address(symbol) \
 43.3186 -+  symbol->value + symbol->section->output_section->vma \
 43.3187 -+  + symbol->section->output_offset
 43.3188 -+
 43.3189 -+#define avr32_elf_insert_field(size, field, abfd, reloc_entry, data)	\
 43.3190 -+  do									\
 43.3191 -+    {									\
 43.3192 -+      unsigned long x;							\
 43.3193 -+      x = bfd_get_##size (abfd, data + reloc_entry->address);		\
 43.3194 -+      x &= ~reloc_entry->howto->dst_mask;				\
 43.3195 -+      x |= field & reloc_entry->howto->dst_mask;			\
 43.3196 -+      bfd_put_##size (abfd, (bfd_vma) x, data + reloc_entry->address);	\
 43.3197 -+    }									\
 43.3198 -+  while(0)
 43.3199 -+
 43.3200 -+static bfd_reloc_status_type
 43.3201 -+avr32_check_reloc_value(asection *sec ATTRIBUTE_UNUSED,
 43.3202 -+			Elf_Internal_Rela *rela ATTRIBUTE_UNUSED,
 43.3203 -+			bfd_signed_vma relocation,
 43.3204 -+			reloc_howto_type *howto)
 43.3205 -+{
 43.3206 -+  bfd_vma reloc_u;
 43.3207 -+
 43.3208 -+  /* We take "complain_overflow_dont" to mean "don't complain on
 43.3209 -+     alignment either". This way, we don't have to special-case
 43.3210 -+     R_AVR32_HI16 */
 43.3211 -+  if (howto->complain_on_overflow == complain_overflow_dont)
 43.3212 -+    return bfd_reloc_ok;
 43.3213 -+
 43.3214 -+  /* Check if the value is correctly aligned */
 43.3215 -+  if (relocation & ((1 << howto->rightshift) - 1))
 43.3216 -+    {
 43.3217 -+      RDBG("misaligned: %s<%s+%lx>: %s: 0x%lx (align %u)\n",
 43.3218 -+	   sec->owner->filename, sec->name, rela->r_offset,
 43.3219 -+	   howto->name, relocation, howto->rightshift);
 43.3220 -+      return bfd_reloc_overflow;
 43.3221 -+    }
 43.3222 -+
 43.3223 -+  /* Now, get rid of the unnecessary bits */
 43.3224 -+  relocation >>= howto->rightshift;
 43.3225 -+  reloc_u = (bfd_vma)relocation;
 43.3226 -+
 43.3227 -+  switch (howto->complain_on_overflow)
 43.3228 -+    {
 43.3229 -+    case complain_overflow_unsigned:
 43.3230 -+    case complain_overflow_bitfield:
 43.3231 -+      if (reloc_u > (unsigned long)((1 << howto->bitsize) - 1))
 43.3232 -+	{
 43.3233 -+	  RDBG("unsigned overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n",
 43.3234 -+	       sec->owner->filename, sec->name, rela->r_offset,
 43.3235 -+	       howto->name, reloc_u, howto->bitsize);
 43.3236 -+	  RDBG("reloc vma: 0x%lx\n",
 43.3237 -+	       sec->output_section->vma + sec->output_offset + rela->r_offset);
 43.3238 -+
 43.3239 -+	  return bfd_reloc_overflow;
 43.3240 -+	}
 43.3241 -+      break;
 43.3242 -+    case complain_overflow_signed:
 43.3243 -+      if (relocation > (1 << (howto->bitsize - 1)) - 1)
 43.3244 -+	{
 43.3245 -+	  RDBG("signed overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n",
 43.3246 -+	       sec->owner->filename, sec->name, rela->r_offset,
 43.3247 -+	       howto->name, reloc_u, howto->bitsize);
 43.3248 -+	  RDBG("reloc vma: 0x%lx\n",
 43.3249 -+	       sec->output_section->vma + sec->output_offset + rela->r_offset);
 43.3250 -+
 43.3251 -+	  return bfd_reloc_overflow;
 43.3252 -+	}
 43.3253 -+      if (relocation < -(1 << (howto->bitsize - 1)))
 43.3254 -+	{
 43.3255 -+	  RDBG("signed overflow: %s<%s+%lx>: %s: -0x%lx (size %u)\n",
 43.3256 -+	       sec->owner->filename, sec->name, rela->r_offset,
 43.3257 -+	       howto->name, -relocation, howto->bitsize);
 43.3258 -+	  RDBG("reloc vma: 0x%lx\n",
 43.3259 -+	       sec->output_section->vma + sec->output_offset + rela->r_offset);
 43.3260 -+
 43.3261 -+	  return bfd_reloc_overflow;
 43.3262 -+	}
 43.3263 -+      break;
 43.3264 -+    default:
 43.3265 -+      abort();
 43.3266 -+    }
 43.3267 -+
 43.3268 -+  return bfd_reloc_ok;
 43.3269 -+}
 43.3270 -+
 43.3271 -+
 43.3272 -+static bfd_reloc_status_type
 43.3273 -+avr32_final_link_relocate(reloc_howto_type *howto,
 43.3274 -+			  bfd *input_bfd,
 43.3275 -+			  asection *input_section,
 43.3276 -+			  bfd_byte *contents,
 43.3277 -+			  Elf_Internal_Rela *rel,
 43.3278 -+			  bfd_vma value)
 43.3279 -+{
 43.3280 -+  bfd_vma field;
 43.3281 -+  bfd_vma relocation;
 43.3282 -+  bfd_reloc_status_type status;
 43.3283 -+  bfd_byte *p = contents + rel->r_offset;
 43.3284 -+  unsigned long x;
 43.3285 -+
 43.3286 -+  pr_debug("  (6b) final link relocate\n");
 43.3287 -+
 43.3288 -+  /* Sanity check the address */
 43.3289 -+  if (rel->r_offset > input_section->size)
 43.3290 -+    {
 43.3291 -+      (*_bfd_error_handler)
 43.3292 -+	("%B: %A+0x%lx: offset out of range (section size: 0x%lx)",
 43.3293 -+	 input_bfd, input_section, rel->r_offset, input_section->size);
 43.3294 -+      return bfd_reloc_outofrange;
 43.3295 -+    }
 43.3296 -+
 43.3297 -+  relocation = value + rel->r_addend;
 43.3298 -+
 43.3299 -+  if (howto->pc_relative)
 43.3300 -+    {
 43.3301 -+      bfd_vma addr;
 43.3302 -+
 43.3303 -+      addr = input_section->output_section->vma
 43.3304 -+	+ input_section->output_offset + rel->r_offset;
 43.3305 -+      addr &= ~0UL << howto->rightshift;
 43.3306 -+      relocation -= addr;
 43.3307 -+    }
 43.3308 -+
 43.3309 -+  switch (ELF32_R_TYPE(rel->r_info))
 43.3310 -+    {
 43.3311 -+    case R_AVR32_16N_PCREL:
 43.3312 -+      /* sub reg, pc, . - (sym + addend) */
 43.3313 -+      relocation = -relocation;
 43.3314 -+      break;
 43.3315 -+    }
 43.3316 -+
 43.3317 -+  status = avr32_check_reloc_value(input_section, rel, relocation, howto);
 43.3318 -+
 43.3319 -+  relocation >>= howto->rightshift;
 43.3320 -+  if (howto->bitsize == 21)
 43.3321 -+    field = (relocation & 0xffff)
 43.3322 -+      | ((relocation & 0x10000) << 4)
 43.3323 -+      | ((relocation & 0x1e0000) << 8);
 43.3324 -+  else if (howto->bitsize == 12)
 43.3325 -+    field = (relocation & 0xff) | ((relocation & 0xf00) << 4);
 43.3326 -+  else if (howto->bitsize == 10)
 43.3327 -+    field = ((relocation & 0xff) << 4)
 43.3328 -+      | ((relocation & 0x300) >> 8);
 43.3329 -+  else
 43.3330 -+    field = relocation << howto->bitpos;
 43.3331 -+
 43.3332 -+  switch (howto->size)
 43.3333 -+    {
 43.3334 -+    case 0:
 43.3335 -+      x = bfd_get_8 (input_bfd, p);
 43.3336 -+      x &= ~howto->dst_mask;
 43.3337 -+      x |= field & howto->dst_mask;
 43.3338 -+      bfd_put_8 (input_bfd, (bfd_vma) x, p);
 43.3339 -+      break;
 43.3340 -+    case 1:
 43.3341 -+      x = bfd_get_16 (input_bfd, p);
 43.3342 -+      x &= ~howto->dst_mask;
 43.3343 -+      x |= field & howto->dst_mask;
 43.3344 -+      bfd_put_16 (input_bfd, (bfd_vma) x, p);
 43.3345 -+      break;
 43.3346 -+    case 2:
 43.3347 -+      x = bfd_get_32 (input_bfd, p);
 43.3348 -+      x &= ~howto->dst_mask;
 43.3349 -+      x |= field & howto->dst_mask;
 43.3350 -+      bfd_put_32 (input_bfd, (bfd_vma) x, p);
 43.3351 -+      break;
 43.3352 -+    default:
 43.3353 -+      abort();
 43.3354 -+    }
 43.3355 -+
 43.3356 -+  return status;
 43.3357 -+}
 43.3358 -+
 43.3359 -+/* (6) Apply relocations to the normal (non-dynamic) sections */
 43.3360 -+
 43.3361 -+static bfd_boolean
 43.3362 -+avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
 43.3363 -+			   bfd *input_bfd, asection *input_section,
 43.3364 -+			   bfd_byte *contents, Elf_Internal_Rela *relocs,
 43.3365 -+			   Elf_Internal_Sym *local_syms,
 43.3366 -+			   asection **local_sections)
 43.3367 -+{
 43.3368 -+  struct elf_avr32_link_hash_table *htab;
 43.3369 -+  Elf_Internal_Shdr *symtab_hdr;
 43.3370 -+  Elf_Internal_Rela *rel, *relend;
 43.3371 -+  struct elf_link_hash_entry **sym_hashes;
 43.3372 -+  struct got_entry **local_got_ents;
 43.3373 -+  asection *sgot;
 43.3374 -+  asection *srelgot;
 43.3375 -+
 43.3376 -+  pr_debug("(6) relocate section %s:<%s> (size 0x%lx)\n",
 43.3377 -+	   input_bfd->filename, input_section->name, input_section->size);
 43.3378 -+
 43.3379 -+  /* If we're doing a partial link, we don't have to do anything since
 43.3380 -+     we're using RELA relocations */
 43.3381 -+  if (info->relocatable)
 43.3382 -+    return TRUE;
 43.3383 -+
 43.3384 -+  htab = avr32_elf_hash_table(info);
 43.3385 -+  symtab_hdr = &elf_tdata(input_bfd)->symtab_hdr;
 43.3386 -+  sym_hashes = elf_sym_hashes(input_bfd);
 43.3387 -+  local_got_ents = elf_local_got_ents(input_bfd);
 43.3388 -+  sgot = htab->sgot;
 43.3389 -+  srelgot = htab->srelgot;
 43.3390 -+
 43.3391 -+  relend = relocs + input_section->reloc_count;
 43.3392 -+  for (rel = relocs; rel < relend; rel++)
 43.3393 -+    {
 43.3394 -+      unsigned long r_type, r_symndx;
 43.3395 -+      reloc_howto_type *howto;
 43.3396 -+      Elf_Internal_Sym *sym = NULL;
 43.3397 -+      struct elf_link_hash_entry *h = NULL;
 43.3398 -+      asection *sec = NULL;
 43.3399 -+      bfd_vma value;
 43.3400 -+      bfd_vma offset;
 43.3401 -+      bfd_reloc_status_type status;
 43.3402 -+
 43.3403 -+      r_type = ELF32_R_TYPE(rel->r_info);
 43.3404 -+      r_symndx = ELF32_R_SYM(rel->r_info);
 43.3405 -+
 43.3406 -+      if (r_type == R_AVR32_NONE
 43.3407 -+	  || r_type == R_AVR32_ALIGN
 43.3408 -+	  || r_type == R_AVR32_DIFF32
 43.3409 -+	  || r_type == R_AVR32_DIFF16
 43.3410 -+	  || r_type == R_AVR32_DIFF8)
 43.3411 -+	continue;
 43.3412 -+
 43.3413 -+      /* Sanity check */
 43.3414 -+      if (r_type > R_AVR32_max)
 43.3415 -+	{
 43.3416 -+	  bfd_set_error(bfd_error_bad_value);
 43.3417 -+	  return FALSE;
 43.3418 -+	}
 43.3419 -+
 43.3420 -+      howto = &elf_avr32_howto_table[r_type];
 43.3421 -+
 43.3422 -+      if (r_symndx < symtab_hdr->sh_info)
 43.3423 -+	{
 43.3424 -+	  sym = local_syms + r_symndx;
 43.3425 -+	  sec = local_sections[r_symndx];
 43.3426 -+
 43.3427 -+	  pr_debug("  (6a) processing %s against local symbol %lu\n",
 43.3428 -+		   howto->name, r_symndx);
 43.3429 -+
 43.3430 -+	  /* The following function changes rel->r_addend behind our back. */
 43.3431 -+	  value = _bfd_elf_rela_local_sym(output_bfd, sym, &sec, rel);
 43.3432 -+	  pr_debug("    => value: %lx, addend: %lx\n", value, rel->r_addend);
 43.3433 -+	}
 43.3434 -+      else
 43.3435 -+	{
 43.3436 -+	  if (sym_hashes == NULL)
 43.3437 -+	    return FALSE;
 43.3438 -+
 43.3439 -+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
 43.3440 -+	  while (h->root.type == bfd_link_hash_indirect
 43.3441 -+		 || h->root.type == bfd_link_hash_warning)
 43.3442 -+	    h = (struct elf_link_hash_entry *)h->root.u.i.link;
 43.3443 -+
 43.3444 -+	  pr_debug("  (6a) processing %s against symbol %s\n",
 43.3445 -+		   howto->name, h->root.root.string);
 43.3446 -+
 43.3447 -+	  if (h->root.type == bfd_link_hash_defined
 43.3448 -+	      || h->root.type == bfd_link_hash_defweak)
 43.3449 -+	    {
 43.3450 -+	      bfd_boolean dyn;
 43.3451 -+
 43.3452 -+	      dyn = htab->root.dynamic_sections_created;
 43.3453 -+	      sec = h->root.u.def.section;
 43.3454 -+
 43.3455 -+	      if (sec->output_section)
 43.3456 -+		value = (h->root.u.def.value
 43.3457 -+			 + sec->output_section->vma
 43.3458 -+			 + sec->output_offset);
 43.3459 -+	      else
 43.3460 -+		value = h->root.u.def.value;
 43.3461 -+	    }
 43.3462 -+	  else if (h->root.type == bfd_link_hash_undefweak)
 43.3463 -+	    value = 0;
 43.3464 -+	  else if (info->unresolved_syms_in_objects == RM_IGNORE
 43.3465 -+		   && ELF_ST_VISIBILITY(h->other) == STV_DEFAULT)
 43.3466 -+	    value = 0;
 43.3467 -+	  else
 43.3468 -+	    {
 43.3469 -+	      bfd_boolean err;
 43.3470 -+	      err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
 43.3471 -+		     || ELF_ST_VISIBILITY(h->other) != STV_DEFAULT);
 43.3472 -+	      if (!info->callbacks->undefined_symbol
 43.3473 -+		  (info, h->root.root.string, input_bfd,
 43.3474 -+		   input_section, rel->r_offset, err))
 43.3475 -+		return FALSE;
 43.3476 -+	      value = 0;
 43.3477 -+	    }
 43.3478 -+
 43.3479 -+	  pr_debug("    => value: %lx, addend: %lx\n", value, rel->r_addend);
 43.3480 -+	}
 43.3481 -+
 43.3482 -+      switch (r_type)
 43.3483 -+	{
 43.3484 -+	case R_AVR32_GOT32:
 43.3485 -+	case R_AVR32_GOT16:
 43.3486 -+	case R_AVR32_GOT8:
 43.3487 -+	case R_AVR32_GOT21S:
 43.3488 -+	case R_AVR32_GOT18SW:
 43.3489 -+	case R_AVR32_GOT16S:
 43.3490 -+	case R_AVR32_GOT7UW:
 43.3491 -+	case R_AVR32_LDA_GOT:
 43.3492 -+	case R_AVR32_GOTCALL:
 43.3493 -+	  BFD_ASSERT(sgot != NULL);
 43.3494 -+
 43.3495 -+	  if (h != NULL)
 43.3496 -+	    {
 43.3497 -+	      BFD_ASSERT(h->got.glist->refcount > 0);
 43.3498 -+	      offset = h->got.glist->offset;
 43.3499 -+
 43.3500 -+	      BFD_ASSERT(offset < sgot->size);
 43.3501 -+	      if (!elf_hash_table(info)->dynamic_sections_created
 43.3502 -+		  || (h->def_regular
 43.3503 -+		      && (!info->shared
 43.3504 -+			  || info->symbolic
 43.3505 -+			  || h->dynindx == -1)))
 43.3506 -+		{
 43.3507 -+		  /* This is actually a static link, or it is a
 43.3508 -+		     -Bsymbolic link and the symbol is defined
 43.3509 -+		     locally, or the symbol was forced to be local.  */
 43.3510 -+		  bfd_put_32(output_bfd, value, sgot->contents + offset);
 43.3511 -+		}
 43.3512 -+	    }
 43.3513 -+	  else
 43.3514 -+	    {
 43.3515 -+	      BFD_ASSERT(local_got_ents &&
 43.3516 -+			 local_got_ents[r_symndx]->refcount > 0);
 43.3517 -+	      offset = local_got_ents[r_symndx]->offset;
 43.3518 -+
 43.3519 -+	      /* Local GOT entries don't have relocs.  If this is a
 43.3520 -+		 shared library, the dynamic linker will add the load
 43.3521 -+		 address to the initial value at startup.  */
 43.3522 -+	      BFD_ASSERT(offset < sgot->size);
 43.3523 -+	      pr_debug("Initializing GOT entry at offset %lu: 0x%lx\n",
 43.3524 -+		       offset, value);
 43.3525 -+	      bfd_put_32 (output_bfd, value, sgot->contents + offset);
 43.3526 -+	    }
 43.3527 -+
 43.3528 -+	  value = sgot->output_offset + offset;
 43.3529 -+	  pr_debug("GOT reference: New value %lx\n", value);
 43.3530 -+	  break;
 43.3531 -+
 43.3532 -+	case R_AVR32_GOTPC:
 43.3533 -+	  /* This relocation type is for constant pool entries used in
 43.3534 -+	     the calculation "Rd = PC - (PC - GOT)", where the
 43.3535 -+	     constant pool supplies the constant (PC - GOT)
 43.3536 -+	     offset. The symbol value + addend indicates where the
 43.3537 -+	     value of PC is taken. */
 43.3538 -+	  value -= sgot->output_section->vma;
 43.3539 -+	  break;
 43.3540 -+
 43.3541 -+	case R_AVR32_32_PCREL:
 43.3542 -+	  /* We must adjust r_offset to account for discarded data in
 43.3543 -+	     the .eh_frame section.  This is probably not the right
 43.3544 -+	     way to do this, since AFAICS all other architectures do
 43.3545 -+	     it some other way.  I just can't figure out how...  */
 43.3546 -+	  {
 43.3547 -+	    bfd_vma r_offset;
 43.3548 -+
 43.3549 -+	    r_offset = _bfd_elf_section_offset(output_bfd, info,
 43.3550 -+					       input_section,
 43.3551 -+					       rel->r_offset);
 43.3552 -+	    if (r_offset == (bfd_vma)-1
 43.3553 -+		|| r_offset == (bfd_vma)-2)
 43.3554 -+	      continue;
 43.3555 -+	    rel->r_offset = r_offset;
 43.3556 -+	  }
 43.3557 -+	  break;
 43.3558 -+
 43.3559 -+	case R_AVR32_32:
 43.3560 -+	  /* We need to emit a run-time relocation in the following cases:
 43.3561 -+	       - we're creating a shared library
 43.3562 -+	       - the symbol is not defined in any regular objects
 43.3563 -+
 43.3564 -+	     Of course, sections that aren't going to be part of the
 43.3565 -+	     run-time image will not get any relocs, and undefined
 43.3566 -+	     symbols won't have any either (only weak undefined
 43.3567 -+	     symbols should get this far).  */
 43.3568 -+	  if ((info->shared
 43.3569 -+	       || (elf_hash_table(info)->dynamic_sections_created
 43.3570 -+		   && h != NULL
 43.3571 -+		   && h->def_dynamic
 43.3572 -+		   && !h->def_regular))
 43.3573 -+	      && r_symndx != 0
 43.3574 -+	      && (input_section->flags & SEC_ALLOC))
 43.3575 -+	    {
 43.3576 -+	      Elf_Internal_Rela outrel;
 43.3577 -+	      bfd_byte *loc;
 43.3578 -+	      bfd_boolean skip, relocate;
 43.3579 -+	      struct elf_avr32_link_hash_entry *avrh;
 43.3580 -+
 43.3581 -+	      pr_debug("Going to generate dynamic reloc...\n");
 43.3582 -+
 43.3583 -+	      skip = FALSE;
 43.3584 -+	      relocate = FALSE;
 43.3585 -+
 43.3586 -+	      outrel.r_offset = _bfd_elf_section_offset(output_bfd, info,
 43.3587 -+							input_section,
 43.3588 -+							rel->r_offset);
 43.3589 -+	      if (outrel.r_offset == (bfd_vma)-1)
 43.3590 -+		skip = TRUE;
 43.3591 -+	      else if (outrel.r_offset == (bfd_vma)-2)
 43.3592 -+		skip = TRUE, relocate = TRUE;
 43.3593 -+
 43.3594 -+	      outrel.r_offset += (input_section->output_section->vma
 43.3595 -+				  + input_section->output_offset);
 43.3596 -+
 43.3597 -+	      pr_debug("    ... offset %lx, dynindx %ld\n",
 43.3598 -+		       outrel.r_offset, h ? h->dynindx : -1);
 43.3599 -+
 43.3600 -+	      if (skip)
 43.3601 -+		memset(&outrel, 0, sizeof(outrel));
 43.3602 -+	      else
 43.3603 -+		{
 43.3604 -+		  avrh = (struct elf_avr32_link_hash_entry *)h;
 43.3605 -+		  /* h->dynindx may be -1 if this symbol was marked to
 43.3606 -+		     become local.  */
 43.3607 -+		  if (h == NULL
 43.3608 -+		      || ((info->symbolic || h->dynindx == -1)
 43.3609 -+			  && h->def_regular))
 43.3610 -+		    {
 43.3611 -+		      relocate = TRUE;
 43.3612 -+		      outrel.r_info = ELF32_R_INFO(0, R_AVR32_RELATIVE);
 43.3613 -+		      outrel.r_addend = value + rel->r_addend;
 43.3614 -+		      pr_debug("    ... R_AVR32_RELATIVE\n");
 43.3615 -+		    }
 43.3616 -+		  else
 43.3617 -+		    {
 43.3618 -+		      BFD_ASSERT(h->dynindx != -1);
 43.3619 -+		      relocate = TRUE;
 43.3620 -+		      outrel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
 43.3621 -+		      outrel.r_addend = rel->r_addend;
 43.3622 -+		      pr_debug("    ... R_AVR32_GLOB_DAT\n");
 43.3623 -+		    }
 43.3624 -+		}
 43.3625 -+
 43.3626 -+	      pr_debug("srelgot reloc_count: %d, size %lu\n",
 43.3627 -+		       srelgot->reloc_count, srelgot->size);
 43.3628 -+
 43.3629 -+	      loc = srelgot->contents;
 43.3630 -+	      loc += srelgot->reloc_count++ * sizeof(Elf32_External_Rela);
 43.3631 -+	      bfd_elf32_swap_reloca_out(output_bfd, &outrel, loc);
 43.3632 -+
 43.3633 -+	      BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
 43.3634 -+			 <= srelgot->size);
 43.3635 -+
 43.3636 -+	      if (!relocate)
 43.3637 -+		continue;
 43.3638 -+	    }
 43.3639 -+	  break;
 43.3640 -+	}
 43.3641 -+
 43.3642 -+      status = avr32_final_link_relocate(howto, input_bfd, input_section,
 43.3643 -+					 contents, rel, value);
 43.3644 -+
 43.3645 -+      switch (status)
 43.3646 -+	{
 43.3647 -+	case bfd_reloc_ok:
 43.3648 -+	  break;
 43.3649 -+
 43.3650 -+	case bfd_reloc_overflow:
 43.3651 -+	  {
 43.3652 -+	    const char *name;
 43.3653 -+
 43.3654 -+	    if (h != NULL)
 43.3655 -+	      name = h->root.root.string;
 43.3656 -+	    else
 43.3657 -+	      {
 43.3658 -+		name = bfd_elf_string_from_elf_section(input_bfd,
 43.3659 -+						       symtab_hdr->sh_link,
 43.3660 -+						       sym->st_name);
 43.3661 -+		if (name == NULL)
 43.3662 -+		  return FALSE;
 43.3663 -+		if (*name == '\0')
 43.3664 -+		  name = bfd_section_name(input_bfd, sec);
 43.3665 -+	      }
 43.3666 -+	    if (!((*info->callbacks->reloc_overflow)
 43.3667 -+		  (info, (h ? &h->root : NULL), name, howto->name,
 43.3668 -+		   rel->r_addend, input_bfd, input_section, rel->r_offset)))
 43.3669 -+	      return FALSE;
 43.3670 -+	  }
 43.3671 -+	  break;
 43.3672 -+
 43.3673 -+	case bfd_reloc_outofrange:
 43.3674 -+	default:
 43.3675 -+	  abort();
 43.3676 -+	}
 43.3677 -+    }
 43.3678 -+
 43.3679 -+  return TRUE;
 43.3680 -+}
 43.3681 -+
 43.3682 -+
 43.3683 -+/* Additional processing of dynamic sections after relocation */
 43.3684 -+
 43.3685 -+static bfd_boolean
 43.3686 -+avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
 43.3687 -+				struct elf_link_hash_entry *h,
 43.3688 -+				Elf_Internal_Sym *sym);
 43.3689 -+static bfd_boolean
 43.3690 -+avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info);
 43.3691 -+
 43.3692 -+
 43.3693 -+/* (7) Initialize the contents of a dynamic symbol and/or emit
 43.3694 -+   relocations for it */
 43.3695 -+
 43.3696 -+static bfd_boolean
 43.3697 -+avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
 43.3698 -+				struct elf_link_hash_entry *h,
 43.3699 -+				Elf_Internal_Sym *sym)
 43.3700 -+{
 43.3701 -+  struct elf_avr32_link_hash_table *htab;
 43.3702 -+  struct got_entry *got;
 43.3703 -+
 43.3704 -+  pr_debug("(7) finish dynamic symbol: %s\n", h->root.root.string);
 43.3705 -+
 43.3706 -+  htab = avr32_elf_hash_table(info);
 43.3707 -+  got = h->got.glist;
 43.3708 -+
 43.3709 -+  if (got && got->refcount > 0)
 43.3710 -+    {
 43.3711 -+      asection *sgot;
 43.3712 -+      asection *srelgot;
 43.3713 -+      Elf_Internal_Rela rel;
 43.3714 -+      bfd_byte *loc;
 43.3715 -+
 43.3716 -+      /* This symbol has an entry in the GOT. Set it up. */
 43.3717 -+      sgot = htab->sgot;
 43.3718 -+      srelgot = htab->srelgot;
 43.3719 -+      BFD_ASSERT(sgot && srelgot);
 43.3720 -+
 43.3721 -+      rel.r_offset = (sgot->output_section->vma
 43.3722 -+		      + sgot->output_offset
 43.3723 -+		      + got->offset);
 43.3724 -+
 43.3725 -+      /* If this is a static link, or it is a -Bsymbolic link and the
 43.3726 -+	 symbol is defined locally or was forced to be local because
 43.3727 -+	 of a version file, we just want to emit a RELATIVE reloc. The
 43.3728 -+	 entry in the global offset table will already have been
 43.3729 -+	 initialized in the relocate_section function. */
 43.3730 -+      if ((info->shared
 43.3731 -+	   && !info->symbolic
 43.3732 -+	   && h->dynindx != -1)
 43.3733 -+	  || (htab->root.dynamic_sections_created
 43.3734 -+	      && h->def_dynamic
 43.3735 -+	      && !h->def_regular))
 43.3736 -+	{
 43.3737 -+	  bfd_put_32(output_bfd, 0, sgot->contents + got->offset);
 43.3738 -+	  rel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
 43.3739 -+	  rel.r_addend = 0;
 43.3740 -+
 43.3741 -+	  pr_debug("GOT reloc R_AVR32_GLOB_DAT, dynindx: %ld\n", h->dynindx);
 43.3742 -+	  pr_debug("    srelgot reloc_count: %d, size: %lu\n",
 43.3743 -+		   srelgot->reloc_count, srelgot->size);
 43.3744 -+
 43.3745 -+	  loc = (srelgot->contents
 43.3746 -+		 + srelgot->reloc_count++ * sizeof(Elf32_External_Rela));
 43.3747 -+	  bfd_elf32_swap_reloca_out(output_bfd, &rel, loc);
 43.3748 -+
 43.3749 -+	  BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
 43.3750 -+		     <= srelgot->size);
 43.3751 -+	}
 43.3752 -+    }
 43.3753 -+
 43.3754 -+  /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute */
 43.3755 -+  if (strcmp(h->root.root.string, "_DYNAMIC") == 0
 43.3756 -+      || strcmp(h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
 43.3757 -+    sym->st_shndx = SHN_ABS;
 43.3758 -+
 43.3759 -+  return TRUE;
 43.3760 -+}
 43.3761 -+
 43.3762 -+/* (8) Do any remaining initialization of the dynamic sections */
 43.3763 -+
 43.3764 -+static bfd_boolean
 43.3765 -+avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info)
 43.3766 -+{
 43.3767 -+  struct elf_avr32_link_hash_table *htab;
 43.3768 -+  asection *sgot, *sdyn;
 43.3769 -+
 43.3770 -+  pr_debug("(8) finish dynamic sections\n");
 43.3771 -+
 43.3772 -+  htab = avr32_elf_hash_table(info);
 43.3773 -+  sgot = htab->sgot;
 43.3774 -+  sdyn = bfd_get_section_by_name(htab->root.dynobj, ".dynamic");
 43.3775 -+
 43.3776 -+  if (htab->root.dynamic_sections_created)
 43.3777 -+    {
 43.3778 -+      Elf32_External_Dyn *dyncon, *dynconend;
 43.3779 -+
 43.3780 -+      BFD_ASSERT(sdyn && sgot && sgot->size >= AVR32_GOT_HEADER_SIZE);
 43.3781 -+
 43.3782 -+      dyncon = (Elf32_External_Dyn *)sdyn->contents;
 43.3783 -+      dynconend = (Elf32_External_Dyn *)(sdyn->contents + sdyn->size);
 43.3784 -+      for (; dyncon < dynconend; dyncon++)
 43.3785 -+	{
 43.3786 -+	  Elf_Internal_Dyn dyn;
 43.3787 -+	  asection *s;
 43.3788 -+
 43.3789 -+	  bfd_elf32_swap_dyn_in(htab->root.dynobj, dyncon, &dyn);
 43.3790 -+
 43.3791 -+	  switch (dyn.d_tag)
 43.3792 -+	    {
 43.3793 -+	    default:
 43.3794 -+	      break;
 43.3795 -+
 43.3796 -+	    case DT_PLTGOT:
 43.3797 -+	      s = sgot->output_section;
 43.3798 -+	      BFD_ASSERT(s != NULL);
 43.3799 -+	      dyn.d_un.d_ptr = s->vma;
 43.3800 -+	      bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
 43.3801 -+	      break;
 43.3802 -+
 43.3803 -+	    case DT_AVR32_GOTSZ:
 43.3804 -+	      s = sgot->output_section;
 43.3805 -+	      BFD_ASSERT(s != NULL);
 43.3806 -+	      dyn.d_un.d_val = s->size;
 43.3807 -+	      bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
 43.3808 -+	      break;
 43.3809 -+	    }
 43.3810 -+	}
 43.3811 -+
 43.3812 -+      /* Fill in the first two entries in the global offset table */
 43.3813 -+      bfd_put_32(output_bfd,
 43.3814 -+		 sdyn->output_section->vma + sdyn->output_offset,
 43.3815 -+		 sgot->contents);
 43.3816 -+
 43.3817 -+      /* The runtime linker will fill this one in with the address of
 43.3818 -+	 the run-time link map */
 43.3819 -+      bfd_put_32(output_bfd, 0, sgot->contents + 4);
 43.3820 -+    }
 43.3821 -+
 43.3822 -+  if (sgot)
 43.3823 -+    elf_section_data(sgot->output_section)->this_hdr.sh_entsize = 4;
 43.3824 -+
 43.3825 -+  return TRUE;
 43.3826 -+}
 43.3827 -+
 43.3828 -+
 43.3829 -+/* AVR32-specific private ELF data */
 43.3830 -+
 43.3831 -+static bfd_boolean
 43.3832 -+avr32_elf_set_private_flags(bfd *abfd, flagword flags);
 43.3833 -+static bfd_boolean
 43.3834 -+avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd);
 43.3835 -+static bfd_boolean
 43.3836 -+avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd);
 43.3837 -+static bfd_boolean
 43.3838 -+avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr);
 43.3839 -+
 43.3840 -+static bfd_boolean
 43.3841 -+avr32_elf_set_private_flags(bfd *abfd, flagword flags)
 43.3842 -+{
 43.3843 -+  elf_elfheader(abfd)->e_flags = flags;
 43.3844 -+  elf_flags_init(abfd) = TRUE;
 43.3845 -+
 43.3846 -+  return TRUE;
 43.3847 -+}
 43.3848 -+
 43.3849 -+/* Copy backend specific data from one object module to another.  */
 43.3850 -+
 43.3851 -+static bfd_boolean
 43.3852 -+avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd)
 43.3853 -+{
 43.3854 -+  elf_elfheader(obfd)->e_flags = elf_elfheader(ibfd)->e_flags;
 43.3855 -+  return TRUE;
 43.3856 -+}
 43.3857 -+
 43.3858 -+/* Merge backend specific data from an object file to the output
 43.3859 -+   object file when linking.  */
 43.3860 -+
 43.3861 -+static bfd_boolean
 43.3862 -+avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd)
 43.3863 -+{
 43.3864 -+  flagword out_flags, in_flags;
 43.3865 -+
 43.3866 -+  pr_debug("(0) merge_private_bfd_data: %s -> %s\n",
 43.3867 -+	   ibfd->filename, obfd->filename);
 43.3868 -+
 43.3869 -+  in_flags = elf_elfheader(ibfd)->e_flags;
 43.3870 -+  out_flags = elf_elfheader(obfd)->e_flags;
 43.3871 -+
 43.3872 -+  if (elf_flags_init(obfd))
 43.3873 -+    {
 43.3874 -+      /* If one of the inputs are non-PIC, the output must be
 43.3875 -+	 considered non-PIC.  The same applies to linkrelax.  */
 43.3876 -+      if (!(in_flags & EF_AVR32_PIC))
 43.3877 -+	out_flags &= ~EF_AVR32_PIC;
 43.3878 -+      if (!(in_flags & EF_AVR32_LINKRELAX))
 43.3879 -+	out_flags &= ~EF_AVR32_LINKRELAX;
 43.3880 -+    }
 43.3881 -+  else
 43.3882 -+    {
 43.3883 -+      elf_flags_init(obfd) = TRUE;
 43.3884 -+      out_flags = in_flags;
 43.3885 -+    }
 43.3886 -+
 43.3887 -+  elf_elfheader(obfd)->e_flags = out_flags;
 43.3888 -+
 43.3889 -+  return TRUE;
 43.3890 -+}
 43.3891 -+
 43.3892 -+static bfd_boolean
 43.3893 -+avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr)
 43.3894 -+{
 43.3895 -+  FILE *file = (FILE *)ptr;
 43.3896 -+  unsigned long flags;
 43.3897 -+
 43.3898 -+  BFD_ASSERT(abfd != NULL && ptr != NULL);
 43.3899 -+
 43.3900 -+  _bfd_elf_print_private_bfd_data(abfd, ptr);
 43.3901 -+
 43.3902 -+  flags = elf_elfheader(abfd)->e_flags;
 43.3903 -+
 43.3904 -+  fprintf(file, _("private flags = %lx:"), elf_elfheader(abfd)->e_flags);
 43.3905 -+
 43.3906 -+  if (flags & EF_AVR32_PIC)
 43.3907 -+    fprintf(file, " [PIC]");
 43.3908 -+  if (flags & EF_AVR32_LINKRELAX)
 43.3909 -+    fprintf(file, " [linker relaxable]");
 43.3910 -+
 43.3911 -+  flags &= ~(EF_AVR32_PIC | EF_AVR32_LINKRELAX);
 43.3912 -+
 43.3913 -+  if (flags)
 43.3914 -+    fprintf(file, _("<Unrecognized flag bits set>"));
 43.3915 -+
 43.3916 -+  fputc('\n', file);
 43.3917 -+
 43.3918 -+  return TRUE;
 43.3919 -+}
 43.3920 -+
 43.3921 -+/* Set avr32-specific linker options.  */
 43.3922 -+void bfd_elf32_avr32_set_options(struct bfd_link_info *info,
 43.3923 -+				 int direct_data_refs)
 43.3924 -+{
 43.3925 -+  struct elf_avr32_link_hash_table *htab;
 43.3926 -+
 43.3927 -+  htab = avr32_elf_hash_table (info);
 43.3928 -+  htab->direct_data_refs = !!direct_data_refs;
 43.3929 -+}
 43.3930 -+
 43.3931 -+
 43.3932 -+
 43.3933 -+/* Understanding core dumps */
 43.3934 -+
 43.3935 -+static bfd_boolean
 43.3936 -+avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note);
 43.3937 -+static bfd_boolean
 43.3938 -+avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note);
 43.3939 -+
 43.3940 -+static bfd_boolean
 43.3941 -+avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note)
 43.3942 -+{
 43.3943 -+  /* Linux/AVR32B elf_prstatus */
 43.3944 -+  if (note->descsz != 148)
 43.3945 -+    return FALSE;
 43.3946 -+
 43.3947 -+  /* pr_cursig */
 43.3948 -+  elf_tdata(abfd)->core_signal = bfd_get_16(abfd, note->descdata + 12);
 43.3949 -+
 43.3950 -+  /* pr_pid */
 43.3951 -+  elf_tdata(abfd)->core_pid = bfd_get_32(abfd, note->descdata + 24);
 43.3952 -+
 43.3953 -+  /* Make a ".reg/999" section for pr_reg. The size is for 16
 43.3954 -+     general-purpose registers, SR and r12_orig (18 * 4 = 72).  */
 43.3955 -+  return _bfd_elfcore_make_pseudosection(abfd, ".reg", 72,
 43.3956 -+					 note->descpos + 72);
 43.3957 -+}
 43.3958 -+
 43.3959 -+static bfd_boolean
 43.3960 -+avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note)
 43.3961 -+{
 43.3962 -+  /* Linux/AVR32B elf_prpsinfo */
 43.3963 -+  if (note->descsz != 128)
 43.3964 -+    return FALSE;
 43.3965 -+
 43.3966 -+  elf_tdata(abfd)->core_program
 43.3967 -+    = _bfd_elfcore_strndup(abfd, note->descdata + 32, 16);
 43.3968 -+  elf_tdata(abfd)->core_command
 43.3969 -+    = _bfd_elfcore_strndup(abfd, note->descdata + 48, 80);
 43.3970 -+
 43.3971 -+  /* Note that for some reason, a spurious space is tacked
 43.3972 -+     onto the end of the args in some (at least one anyway)
 43.3973 -+     implementations, so strip it off if it exists.  */
 43.3974 -+
 43.3975 -+  {
 43.3976 -+    char *command = elf_tdata (abfd)->core_command;
 43.3977 -+    int n = strlen (command);
 43.3978 -+
 43.3979 -+    if (0 < n && command[n - 1] == ' ')
 43.3980 -+      command[n - 1] = '\0';
 43.3981 -+  }
 43.3982 -+
 43.3983 -+  return TRUE;
 43.3984 -+}
 43.3985 -+
 43.3986 -+
 43.3987 -+#define ELF_ARCH			bfd_arch_avr32
 43.3988 -+#define ELF_MACHINE_CODE		EM_AVR32
 43.3989 -+#define ELF_MAXPAGESIZE			0x1000
 43.3990 -+
 43.3991 -+#define TARGET_BIG_SYM			bfd_elf32_avr32_vec
 43.3992 -+#define TARGET_BIG_NAME			"elf32-avr32"
 43.3993 -+
 43.3994 -+#define elf_backend_grok_prstatus	avr32_elf_grok_prstatus
 43.3995 -+#define elf_backend_grok_psinfo		avr32_elf_grok_psinfo
 43.3996 -+
 43.3997 -+/* Only RELA relocations are used */
 43.3998 -+#define elf_backend_may_use_rel_p	0
 43.3999 -+#define elf_backend_may_use_rela_p	1
 43.4000 -+#define elf_backend_default_use_rela_p	1
 43.4001 -+#define elf_backend_rela_normal		1
 43.4002 -+#define elf_info_to_howto_rel		NULL
 43.4003 -+#define elf_info_to_howto		avr32_info_to_howto
 43.4004 -+
 43.4005 -+#define bfd_elf32_bfd_copy_private_bfd_data	avr32_elf_copy_private_bfd_data
 43.4006 -+#define bfd_elf32_bfd_merge_private_bfd_data	avr32_elf_merge_private_bfd_data
 43.4007 -+#define bfd_elf32_bfd_set_private_flags		avr32_elf_set_private_flags
 43.4008 -+#define bfd_elf32_bfd_print_private_bfd_data	avr32_elf_print_private_bfd_data
 43.4009 -+#define bfd_elf32_new_section_hook		avr32_elf_new_section_hook
 43.4010 -+
 43.4011 -+#define elf_backend_gc_mark_hook		avr32_elf_gc_mark_hook
 43.4012 -+#define elf_backend_gc_sweep_hook		avr32_elf_gc_sweep_hook
 43.4013 -+#define elf_backend_relocate_section	avr32_elf_relocate_section
 43.4014 -+#define elf_backend_copy_indirect_symbol avr32_elf_copy_indirect_symbol
 43.4015 -+#define elf_backend_create_dynamic_sections avr32_elf_create_dynamic_sections
 43.4016 -+#define bfd_elf32_bfd_link_hash_table_create avr32_elf_link_hash_table_create
 43.4017 -+#define elf_backend_adjust_dynamic_symbol avr32_elf_adjust_dynamic_symbol
 43.4018 -+#define elf_backend_size_dynamic_sections avr32_elf_size_dynamic_sections
 43.4019 -+#define elf_backend_finish_dynamic_symbol avr32_elf_finish_dynamic_symbol
 43.4020 -+#define elf_backend_finish_dynamic_sections avr32_elf_finish_dynamic_sections
 43.4021 -+
 43.4022 -+#define bfd_elf32_bfd_relax_section	avr32_elf_relax_section
 43.4023 -+
 43.4024 -+/* Find out which symbols need an entry in .got. */
 43.4025 -+#define elf_backend_check_relocs	avr32_check_relocs
 43.4026 -+#define elf_backend_can_refcount	1
 43.4027 -+#define elf_backend_can_gc_sections	1
 43.4028 -+#define elf_backend_plt_readonly	1
 43.4029 -+#define elf_backend_plt_not_loaded	1
 43.4030 -+#define elf_backend_want_plt_sym	0
 43.4031 -+#define elf_backend_plt_alignment	2
 43.4032 -+#define elf_backend_want_dynbss		0
 43.4033 -+#define elf_backend_want_got_plt	0
 43.4034 -+#define elf_backend_want_got_sym	1
 43.4035 -+#define elf_backend_got_header_size	AVR32_GOT_HEADER_SIZE
 43.4036 -+
 43.4037 -+#include "elf32-target.h"
 43.4038 ---- /dev/null
 43.4039 -+++ b/bfd/elf32-avr32.h
 43.4040 -@@ -0,0 +1,23 @@
 43.4041 -+/* AVR32-specific support for 32-bit ELF.
 43.4042 -+   Copyright 2007 Atmel Corporation.
 43.4043 -+
 43.4044 -+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
 43.4045 -+
 43.4046 -+   This file is part of BFD, the Binary File Descriptor library.
 43.4047 -+
 43.4048 -+   This program is free software; you can redistribute it and/or modify
 43.4049 -+   it under the terms of the GNU General Public License as published by
 43.4050 -+   the Free Software Foundation; either version 2 of the License, or
 43.4051 -+   (at your option) any later version.
 43.4052 -+
 43.4053 -+   This program is distributed in the hope that it will be useful,
 43.4054 -+   but WITHOUT ANY WARRANTY; without even the implied warranty of
 43.4055 -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 43.4056 -+   GNU General Public License for more details.
 43.4057 -+
 43.4058 -+   You should have received a copy of the GNU General Public License
 43.4059 -+   along with this program; if not, write to the Free Software
 43.4060 -+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 43.4061 -+
 43.4062 -+void bfd_elf32_avr32_set_options(struct bfd_link_info *info,
 43.4063 -+				 int direct_data_refs);
 43.4064 ---- a/bfd/elf-bfd.h
 43.4065 -+++ b/bfd/elf-bfd.h
 43.4066 -@@ -1400,6 +1400,10 @@ struct elf_obj_tdata
 43.4067 -      find_nearest_line.  */
 43.4068 -   struct mips_elf_find_line *find_line_info;
 43.4069 - 
 43.4070 -+  /* Used by AVR32 ELF relaxation code.  Contains an array of pointers
 43.4071 -+     for each local symbol to the fragment where it is defined.  */
 43.4072 -+  struct fragment **local_sym_frag;
 43.4073 -+
 43.4074 -   /* A place to stash dwarf1 info for this bfd.  */
 43.4075 -   struct dwarf1_debug *dwarf1_find_line_info;
 43.4076 - 
 43.4077 ---- a/bfd/Makefile.am
 43.4078 -+++ b/bfd/Makefile.am
 43.4079 -@@ -63,6 +63,7 @@ ALL_MACHINES = \
 43.4080 - 	cpu-arc.lo \
 43.4081 - 	cpu-arm.lo \
 43.4082 - 	cpu-avr.lo \
 43.4083 -+	cpu-avr32.lo \
 43.4084 - 	cpu-bfin.lo \
 43.4085 - 	cpu-cr16.lo \
 43.4086 - 	cpu-cr16c.lo \
 43.4087 -@@ -243,6 +244,7 @@ BFD32_BACKENDS = \
 43.4088 - 	elf32-arc.lo \
 43.4089 - 	elf32-arm.lo \
 43.4090 - 	elf32-avr.lo \
 43.4091 -+	elf32-avr32.lo \
 43.4092 - 	elf32-bfin.lo \
 43.4093 - 	elf32-cr16.lo \
 43.4094 - 	elf32-cr16c.lo \
 43.4095 -@@ -1328,6 +1330,10 @@ elf32-cr16.lo: elf32-cr16.c $(INCDIR)/fi
 43.4096 -   $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h elf-bfd.h \
 43.4097 -   $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
 43.4098 -   $(INCDIR)/elf/cr16.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
 43.4099 -+elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \
 43.4100 -+  $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
 43.4101 -+  $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \
 43.4102 -+  elf32-target.h
 43.4103 - elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \
 43.4104 -   $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \
 43.4105 -   $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
 43.4106 ---- a/bfd/reloc.c
 43.4107 -+++ b/bfd/reloc.c
 43.4108 -@@ -3948,6 +3948,131 @@ ENUMDOC
 43.4109 -   instructions
 43.4110 - 
 43.4111 - ENUM
 43.4112 -+  BFD_RELOC_AVR32_DIFF32
 43.4113 -+ENUMX
 43.4114 -+  BFD_RELOC_AVR32_DIFF16
 43.4115 -+ENUMX
 43.4116 -+  BFD_RELOC_AVR32_DIFF8
 43.4117 -+ENUMDOC
 43.4118 -+  Difference between two labels: L2 - L1. The value of L1 is encoded
 43.4119 -+  as sym + addend, while the initial difference after assembly is
 43.4120 -+  inserted into the object file by the assembler.
 43.4121 -+ENUM
 43.4122 -+  BFD_RELOC_AVR32_GOT32
 43.4123 -+ENUMX
 43.4124 -+  BFD_RELOC_AVR32_GOT16
 43.4125 -+ENUMX
 43.4126 -+  BFD_RELOC_AVR32_GOT8
 43.4127 -+ENUMDOC
 43.4128 -+  Reference to a symbol through the Global Offset Table. The linker
 43.4129 -+  will allocate an entry for symbol in the GOT and insert the offset
 43.4130 -+  of this entry as the relocation value.
 43.4131 -+ENUM
 43.4132 -+  BFD_RELOC_AVR32_21S
 43.4133 -+ENUMX
 43.4134 -+  BFD_RELOC_AVR32_16U
 43.4135 -+ENUMX
 43.4136 -+  BFD_RELOC_AVR32_16S
 43.4137 -+ENUMX
 43.4138 -+  BFD_RELOC_AVR32_SUB5
 43.4139 -+ENUMX
 43.4140 -+  BFD_RELOC_AVR32_8S_EXT
 43.4141 -+ENUMX
 43.4142 -+  BFD_RELOC_AVR32_8S
 43.4143 -+ENUMX
 43.4144 -+  BFD_RELOC_AVR32_15S
 43.4145 -+ENUMDOC
 43.4146 -+  Normal (non-pc-relative) code relocations. Alignment and signedness
 43.4147 -+  is indicated by the suffixes. S means signed, U means unsigned. W
 43.4148 -+  means word-aligned, H means halfword-aligned, neither means
 43.4149 -+  byte-aligned (no alignment.) SUB5 is the same relocation as 16S.
 43.4150 -+ENUM
 43.4151 -+  BFD_RELOC_AVR32_22H_PCREL
 43.4152 -+ENUMX
 43.4153 -+  BFD_RELOC_AVR32_18W_PCREL
 43.4154 -+ENUMX
 43.4155 -+  BFD_RELOC_AVR32_16B_PCREL
 43.4156 -+ENUMX
 43.4157 -+  BFD_RELOC_AVR32_16N_PCREL
 43.4158 -+ENUMX
 43.4159 -+  BFD_RELOC_AVR32_14UW_PCREL
 43.4160 -+ENUMX
 43.4161 -+  BFD_RELOC_AVR32_11H_PCREL
 43.4162 -+ENUMX
 43.4163 -+  BFD_RELOC_AVR32_10UW_PCREL
 43.4164 -+ENUMX
 43.4165 -+  BFD_RELOC_AVR32_9H_PCREL
 43.4166 -+ENUMX
 43.4167 -+  BFD_RELOC_AVR32_9UW_PCREL
 43.4168 -+ENUMDOC
 43.4169 -+  PC-relative relocations are signed if neither 'U' nor 'S' is
 43.4170 -+  specified. However, we explicitly tack on a 'B' to indicate no
 43.4171 -+  alignment, to avoid confusion with data relocs. All of these resolve
 43.4172 -+  to sym + addend - offset, except the one with 'N' (negated) suffix.
 43.4173 -+  This particular one resolves to offset - sym - addend.
 43.4174 -+ENUM
 43.4175 -+  BFD_RELOC_AVR32_GOTPC
 43.4176 -+ENUMDOC
 43.4177 -+  Subtract the link-time address of the GOT from (symbol + addend)
 43.4178 -+  and insert the result.
 43.4179 -+ENUM
 43.4180 -+  BFD_RELOC_AVR32_GOTCALL
 43.4181 -+ENUMX
 43.4182 -+  BFD_RELOC_AVR32_LDA_GOT
 43.4183 -+ENUMX
 43.4184 -+  BFD_RELOC_AVR32_GOT21S
 43.4185 -+ENUMX
 43.4186 -+  BFD_RELOC_AVR32_GOT18SW
 43.4187 -+ENUMX
 43.4188 -+  BFD_RELOC_AVR32_GOT16S
 43.4189 -+ENUMDOC
 43.4190 -+  Reference to a symbol through the GOT. The linker will allocate an
 43.4191 -+  entry for symbol in the GOT and insert the offset of this entry as
 43.4192 -+  the relocation value. addend must be zero. As usual, 'S' means
 43.4193 -+  signed, 'W' means word-aligned, etc.
 43.4194 -+ENUM
 43.4195 -+  BFD_RELOC_AVR32_32_CPENT
 43.4196 -+ENUMDOC
 43.4197 -+  32-bit constant pool entry. I don't think 8- and 16-bit entries make
 43.4198 -+  a whole lot of sense.
 43.4199 -+ENUM
 43.4200 -+  BFD_RELOC_AVR32_CPCALL
 43.4201 -+ENUMX
 43.4202 -+  BFD_RELOC_AVR32_16_CP
 43.4203 -+ENUMX
 43.4204 -+  BFD_RELOC_AVR32_9W_CP
 43.4205 -+ENUMDOC
 43.4206 -+  Constant pool references. Some of these relocations are signed,
 43.4207 -+  others are unsigned. It doesn't really matter, since the constant
 43.4208 -+  pool always comes after the code that references it.
 43.4209 -+ENUM
 43.4210 -+  BFD_RELOC_AVR32_ALIGN
 43.4211 -+ENUMDOC
 43.4212 -+  sym must be the absolute symbol. The addend specifies the alignment
 43.4213 -+  order, e.g. if addend is 2, the linker must add padding so that the
 43.4214 -+  next address is aligned to a 4-byte boundary.
 43.4215 -+ENUM
 43.4216 -+  BFD_RELOC_AVR32_14UW
 43.4217 -+ENUMX
 43.4218 -+  BFD_RELOC_AVR32_10UW
 43.4219 -+ENUMX
 43.4220 -+  BFD_RELOC_AVR32_10SW
 43.4221 -+ENUMX
 43.4222 -+  BFD_RELOC_AVR32_STHH_W
 43.4223 -+ENUMX
 43.4224 -+  BFD_RELOC_AVR32_7UW
 43.4225 -+ENUMX
 43.4226 -+  BFD_RELOC_AVR32_6S
 43.4227 -+ENUMX
 43.4228 -+  BFD_RELOC_AVR32_6UW
 43.4229 -+ENUMX
 43.4230 -+  BFD_RELOC_AVR32_4UH
 43.4231 -+ENUMX
 43.4232 -+  BFD_RELOC_AVR32_3U
 43.4233 -+ENUMDOC
 43.4234 -+  Code relocations that will never make it to the output file.
 43.4235 -+
 43.4236 -+ENUM
 43.4237 -   BFD_RELOC_390_12
 43.4238 - ENUMDOC
 43.4239 -    Direct 12 bit.
 43.4240 ---- a/bfd/targets.c
 43.4241 -+++ b/bfd/targets.c
 43.4242 -@@ -564,6 +564,7 @@ extern const bfd_target bfd_efi_app_ia32
 43.4243 - extern const bfd_target bfd_efi_app_x86_64_vec;
 43.4244 - extern const bfd_target bfd_efi_app_ia64_vec;
 43.4245 - extern const bfd_target bfd_elf32_avr_vec;
 43.4246 -+extern const bfd_target bfd_elf32_avr32_vec;
 43.4247 - extern const bfd_target bfd_elf32_bfin_vec;
 43.4248 - extern const bfd_target bfd_elf32_bfinfdpic_vec;
 43.4249 - extern const bfd_target bfd_elf32_big_generic_vec;
 43.4250 -@@ -884,6 +885,7 @@ static const bfd_target * const _bfd_tar
 43.4251 - 	&bfd_efi_app_ia64_vec,
 43.4252 - #endif
 43.4253 - 	&bfd_elf32_avr_vec,
 43.4254 -+	&bfd_elf32_avr32_vec,
 43.4255 - 	&bfd_elf32_bfin_vec,
 43.4256 - 	&bfd_elf32_bfinfdpic_vec,
 43.4257 - 
 43.4258 ---- a/binutils/Makefile.am
 43.4259 -+++ b/binutils/Makefile.am
 43.4260 -@@ -577,7 +577,7 @@ readelf.o: readelf.c sysdep.h $(INCDIR)/
 43.4261 -   $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h dwarf.h \
 43.4262 -   $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
 43.4263 -   $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/alpha.h \
 43.4264 --  $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h \
 43.4265 -+  $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h\
 43.4266 -   $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/crx.h \
 43.4267 -   $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \
 43.4268 -   $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/hppa.h \
 43.4269 ---- a/binutils/readelf.c
 43.4270 -+++ b/binutils/readelf.c
 43.4271 -@@ -21,7 +21,7 @@
 43.4272 -    along with this program; if not, write to the Free Software
 43.4273 -    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
 43.4274 -    02110-1301, USA.  */
 43.4275 --
 43.4276 -+
 43.4277 - /* The difference between readelf and objdump:
 43.4278 - 
 43.4279 -   Both programs are capable of displaying the contents of ELF format files,
 43.4280 -@@ -40,7 +40,7 @@
 43.4281 -   There is also the case that readelf can provide more information about an
 43.4282 -   ELF file than is provided by objdump.  In particular it can display DWARF
 43.4283 -   debugging information which (at the moment) objdump cannot.  */
 43.4284 --
 43.4285 -+
 43.4286 - #include "sysdep.h"
 43.4287 - #include <assert.h>
 43.4288 - #include <sys/stat.h>
 43.4289 -@@ -109,6 +109,7 @@
 43.4290 - #include "elf/arc.h"
 43.4291 - #include "elf/arm.h"
 43.4292 - #include "elf/avr.h"
 43.4293 -+#include "elf/avr32.h"
 43.4294 - #include "elf/bfin.h"
 43.4295 - #include "elf/cr16.h"
 43.4296 - #include "elf/cris.h"
 43.4297 -@@ -303,7 +304,7 @@ static void (*byte_put) (unsigned char *
 43.4298 - #define streq(a,b)	  (strcmp ((a), (b)) == 0)
 43.4299 - #define strneq(a,b,n)	  (strncmp ((a), (b), (n)) == 0)
 43.4300 - #define const_strneq(a,b) (strncmp ((a), (b), sizeof (b) - 1) == 0)
 43.4301 --
 43.4302 -+
 43.4303 - static void *
 43.4304 - get_data (void *var, FILE *file, long offset, size_t size, size_t nmemb,
 43.4305 - 	  const char *reason)
 43.4306 -@@ -614,6 +615,7 @@ guess_is_rela (unsigned long e_machine)
 43.4307 -     case EM_ALPHA:
 43.4308 -     case EM_ALTERA_NIOS2:
 43.4309 -     case EM_AVR:
 43.4310 -+    case EM_AVR32:
 43.4311 -     case EM_AVR_OLD:
 43.4312 -     case EM_BLACKFIN:
 43.4313 -     case EM_CR16:
 43.4314 -@@ -1006,6 +1008,10 @@ dump_relocations (FILE *file,
 43.4315 - 	  rtype = elf_avr_reloc_type (type);
 43.4316 - 	  break;
 43.4317 - 
 43.4318 -+	case EM_AVR32:
 43.4319 -+	  rtype = elf_avr32_reloc_type (type);
 43.4320 -+	  break;
 43.4321 -+
 43.4322 - 	case EM_OLD_SPARCV9:
 43.4323 - 	case EM_SPARC32PLUS:
 43.4324 - 	case EM_SPARCV9:
 43.4325 -@@ -1763,6 +1769,7 @@ get_machine_name (unsigned e_machine)
 43.4326 -     case EM_VAX:		return "Digital VAX";
 43.4327 -     case EM_AVR_OLD:
 43.4328 -     case EM_AVR:		return "Atmel AVR 8-bit microcontroller";
 43.4329 -+    case EM_AVR32:		return "Atmel AVR32";
 43.4330 -     case EM_CRIS:		return "Axis Communications 32-bit embedded processor";
 43.4331 -     case EM_JAVELIN:		return "Infineon Technologies 32-bit embedded cpu";
 43.4332 -     case EM_FIREPATH:		return "Element 14 64-bit DSP processor";
 43.4333 ---- a/gas/as.c
 43.4334 -+++ b/gas/as.c
 43.4335 -@@ -441,10 +441,10 @@ parse_args (int * pargc, char *** pargv)
 43.4336 -        the end of the preceeding line so that it is simpler to
 43.4337 -        selectively add and remove lines from this list.  */
 43.4338 -     {"alternate", no_argument, NULL, OPTION_ALTERNATE}
 43.4339 --    /* The entry for "a" is here to prevent getopt_long_only() from
 43.4340 --       considering that -a is an abbreviation for --alternate.  This is
 43.4341 --       necessary because -a=<FILE> is a valid switch but getopt would
 43.4342 --       normally reject it since --alternate does not take an argument.  */
 43.4343 -+    /* The next two entries are here to prevent getopt_long_only() from
 43.4344 -+       considering that -a or -al is an abbreviation for --alternate.
 43.4345 -+       This is necessary because -a=<FILE> is a valid switch but getopt
 43.4346 -+       would normally reject it since --alternate does not take an argument.  */
 43.4347 -     ,{"a", optional_argument, NULL, 'a'}
 43.4348 -     /* Handle -al=<FILE>.  */
 43.4349 -     ,{"al", optional_argument, NULL, OPTION_AL}
 43.4350 -@@ -803,8 +803,15 @@ This program has absolutely no warranty.
 43.4351 - 	case 'a':
 43.4352 - 	  if (optarg)
 43.4353 - 	    {
 43.4354 --	      if (optarg != old_argv[optind] && optarg[-1] == '=')
 43.4355 --		--optarg;
 43.4356 -+	      /* If optarg is part of the -a switch and not a separate argument
 43.4357 -+		 in its own right, then scan backwards to the just after the -a.
 43.4358 -+		 This means skipping over both '=' and 'l' which might have been
 43.4359 -+		 taken to be part of the -a switch itself.  */
 43.4360 -+	      if (optarg != old_argv[optind])
 43.4361 -+		{
 43.4362 -+		  while (optarg[-1] == '=' || optarg[-1] == 'l')
 43.4363 -+		    --optarg;
 43.4364 -+		}
 43.4365 - 
 43.4366 - 	      if (md_parse_option (optc, optarg) != 0)
 43.4367 - 		break;
 43.4368 -@@ -1234,7 +1241,7 @@ main (int argc, char ** argv)
 43.4369 -     keep_it = 0;
 43.4370 - 
 43.4371 -   if (!keep_it)
 43.4372 --    unlink_if_ordinary (out_file_name);
 43.4373 -+    unlink (out_file_name);
 43.4374 - 
 43.4375 -   input_scrub_end ();
 43.4376 - 
 43.4377 ---- /dev/null
 43.4378 -+++ b/gas/config/tc-avr32.c
 43.4379 -@@ -0,0 +1,4806 @@
 43.4380 -+/* Assembler implementation for AVR32.
 43.4381 -+   Copyright 2003-2006 Atmel Corporation.
 43.4382 -+
 43.4383 -+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
 43.4384 -+
 43.4385 -+   This file is part of GAS, the GNU Assembler.
 43.4386 -+
 43.4387 -+   GAS is free software; you can redistribute it and/or modify it
 43.4388 -+   under the terms of the GNU General Public License as published by
 43.4389 -+   the Free Software Foundation; either version 2, or (at your option)
 43.4390 -+   any later version.
 43.4391 -+
 43.4392 -+   GAS is distributed in the hope that it will be useful, but WITHOUT
 43.4393 -+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 43.4394 -+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
 43.4395 -+   License for more details.
 43.4396 -+
 43.4397 -+   You should have received a copy of the GNU General Public License
 43.4398 -+   along with GAS; see the file COPYING.  If not, write to the Free
 43.4399 -+   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 43.4400 -+   02111-1307, USA.  */
 43.4401 -+
 43.4402 -+#include <stdio.h>
 43.4403 -+#include "as.h"
 43.4404 -+#include "safe-ctype.h"
 43.4405 -+#include "subsegs.h"
 43.4406 -+#include "symcat.h"
 43.4407 -+#include "opcodes/avr32-opc.h"
 43.4408 -+#include "opcodes/avr32-asm.h"
 43.4409 -+#include "elf/avr32.h"
 43.4410 -+#include "dwarf2dbg.h"
 43.4411 -+
 43.4412 -+#define xDEBUG
 43.4413 -+#define xOPC_CONSISTENCY_CHECK
 43.4414 -+
 43.4415 -+#ifdef DEBUG
 43.4416 -+# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
 43.4417 -+#else
 43.4418 -+# define pr_debug(fmt, args...)
 43.4419 -+#endif
 43.4420 -+
 43.4421 -+/* 3 MSB of instruction word indicate group. Group 7 -> extended */
 43.4422 -+#define AVR32_COMPACT_P(opcode) ((opcode[0] & 0xe0) != 0xe0)
 43.4423 -+
 43.4424 -+#define streq(a, b)		(strcmp(a, b) == 0)
 43.4425 -+#define skip_whitespace(str)	do { while(*(str) == ' ') ++(str); } while(0)
 43.4426 -+
 43.4427 -+/* Flags given on the command line */
 43.4428 -+static int avr32_pic	= FALSE;
 43.4429 -+int linkrelax	= FALSE;
 43.4430 -+int avr32_iarcompat	= FALSE;
 43.4431 -+
 43.4432 -+/* This array holds the chars that always start a comment. */
 43.4433 -+const char comment_chars[]		= "#";
 43.4434 -+
 43.4435 -+/* This array holds the chars that only start a comment at the
 43.4436 -+   beginning of a line.  We must include '#' here because the compiler
 43.4437 -+   may produce #APP and #NO_APP in its output.  */
 43.4438 -+const char line_comment_chars[]		= "#";
 43.4439 -+
 43.4440 -+/* These may be used instead of newline (same as ';' in C).  */
 43.4441 -+const char line_separator_chars[]	= ";";
 43.4442 -+
 43.4443 -+/* Chars that can be used to separate mantissa from exponent in
 43.4444 -+   floating point numbers.  */
 43.4445 -+const char EXP_CHARS[]			= "eE";
 43.4446 -+
 43.4447 -+/* Chars that mean this number is a floating point constant.  */
 43.4448 -+const char FLT_CHARS[]			= "dD";
 43.4449 -+
 43.4450 -+/* Pre-defined "_GLOBAL_OFFSET_TABLE_"  */
 43.4451 -+symbolS *GOT_symbol;
 43.4452 -+
 43.4453 -+static struct hash_control *avr32_mnemonic_htab;
 43.4454 -+
 43.4455 -+struct avr32_ifield_data
 43.4456 -+{
 43.4457 -+  bfd_vma value;
 43.4458 -+  /* FIXME: Get rid of align_order and complain. complain is never
 43.4459 -+     used, align_order is used in one place.  Try to use the relax
 43.4460 -+     table instead.  */
 43.4461 -+  unsigned int align_order;
 43.4462 -+};
 43.4463 -+
 43.4464 -+struct avr32_insn
 43.4465 -+{
 43.4466 -+  const struct avr32_syntax *syntax;
 43.4467 -+  expressionS immediate;
 43.4468 -+  int pcrel;
 43.4469 -+  int force_extended;
 43.4470 -+  unsigned int next_slot;
 43.4471 -+  bfd_reloc_code_real_type r_type;
 43.4472 -+  struct avr32_ifield_data field_value[AVR32_MAX_FIELDS];
 43.4473 -+};
 43.4474 -+
 43.4475 -+static struct avr32_insn current_insn;
 43.4476 -+
 43.4477 -+/* The target specific pseudo-ops we support. */
 43.4478 -+static void s_rseg (int);
 43.4479 -+static void s_cpool(int);
 43.4480 -+
 43.4481 -+const pseudo_typeS md_pseudo_table[] =
 43.4482 -+{
 43.4483 -+  /* Make sure that .word is 32 bits */
 43.4484 -+  { "word", cons, 4 },
 43.4485 -+  { "file", (void (*) PARAMS ((int))) dwarf2_directive_file, 0 },
 43.4486 -+  { "loc", dwarf2_directive_loc, 0 },
 43.4487 -+
 43.4488 -+  /* .lcomm requires an explicit alignment parameter */
 43.4489 -+  { "lcomm", s_lcomm, 1 },
 43.4490 -+
 43.4491 -+  /* AVR32-specific pseudo-ops */
 43.4492 -+  { "cpool", s_cpool, 0},
 43.4493 -+
 43.4494 -+  /* IAR compatible pseudo-ops */
 43.4495 -+  { "program", s_ignore, 0 },
 43.4496 -+  { "public", s_globl, 0 },
 43.4497 -+  { "extern", s_ignore, 0 },
 43.4498 -+  { "module", s_ignore, 0 },
 43.4499 -+  { "rseg", s_rseg, 0 },
 43.4500 -+  { "dc8", cons, 1 },
 43.4501 -+  { "dc16", cons, 2 },
 43.4502 -+  { "dc32", cons, 4 },
 43.4503 -+
 43.4504 -+  { NULL, NULL, 0 }
 43.4505 -+};
 43.4506 -+
 43.4507 -+/* Questionable stuff starts here */
 43.4508 -+
 43.4509 -+enum avr32_opinfo {
 43.4510 -+  AVR32_OPINFO_NONE = BFD_RELOC_NONE,
 43.4511 -+  AVR32_OPINFO_GOT,
 43.4512 -+  AVR32_OPINFO_TLSGD,
 43.4513 -+  AVR32_OPINFO_HI,
 43.4514 -+  AVR32_OPINFO_LO,
 43.4515 -+};
 43.4516 -+
 43.4517 -+enum avr32_arch {
 43.4518 -+  ARCH_TYPE_AP,
 43.4519 -+  ARCH_TYPE_UCR1,
 43.4520 -+  ARCH_TYPE_UCR2,
 43.4521 -+};
 43.4522 -+
 43.4523 -+struct arch_type_s
 43.4524 -+{
 43.4525 -+  /* Architecture name */
 43.4526 -+  char *name;
 43.4527 -+  /* Instruction Set Architecture Flags */
 43.4528 -+  unsigned long isa_flags;
 43.4529 -+};
 43.4530 -+
 43.4531 -+struct part_type_s
 43.4532 -+{
 43.4533 -+  /* Part name */
 43.4534 -+  char *name;
 43.4535 -+  /* Architecture type */
 43.4536 -+  unsigned int arch;
 43.4537 -+};
 43.4538 -+
 43.4539 -+static struct arch_type_s arch_types[] =
 43.4540 -+{
 43.4541 -+  {"ap", AVR32_V1 | AVR32_SIMD | AVR32_DSP | AVR32_PICO},
 43.4542 -+  {"ucr1", AVR32_V1 | AVR32_DSP | AVR32_RMW},
 43.4543 -+  {"ucr2", AVR32_V1 | AVR32_V2 | AVR32_DSP | AVR32_RMW},
 43.4544 -+  {"all-insn", AVR32_V1 | AVR32_V2 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO},
 43.4545 -+  {NULL, 0}
 43.4546 -+};
 43.4547 -+
 43.4548 -+static struct part_type_s part_types[] = {
 43.4549 -+  {"ap7000", ARCH_TYPE_AP},
 43.4550 -+  {"ap7001", ARCH_TYPE_AP},
 43.4551 -+  {"ap7002", ARCH_TYPE_AP},
 43.4552 -+  {"ap7200", ARCH_TYPE_AP},
 43.4553 -+  {"uc3a0128", ARCH_TYPE_UCR2},
 43.4554 -+  {"uc3a0256", ARCH_TYPE_UCR2},
 43.4555 -+  {"uc3a0512es", ARCH_TYPE_UCR1},
 43.4556 -+  {"uc3a0512", ARCH_TYPE_UCR2},
 43.4557 -+  {"uc3a1128", ARCH_TYPE_UCR2},
 43.4558 -+  {"uc3a1256es", ARCH_TYPE_UCR1},
 43.4559 -+  {"uc3a1256", ARCH_TYPE_UCR2},
 43.4560 -+  {"uc3a1512es", ARCH_TYPE_UCR1},
 43.4561 -+  {"uc3a1512", ARCH_TYPE_UCR2},
 43.4562 -+  {"uc3a364", ARCH_TYPE_UCR2},
 43.4563 -+  {"uc3a364s", ARCH_TYPE_UCR2},
 43.4564 -+  {"uc3a3128", ARCH_TYPE_UCR2},
 43.4565 -+  {"uc3a3128s", ARCH_TYPE_UCR2},
 43.4566 -+  {"uc3a3256", ARCH_TYPE_UCR2},
 43.4567 -+  {"uc3a3256s", ARCH_TYPE_UCR2},
 43.4568 -+  {"uc3b064", ARCH_TYPE_UCR1},
 43.4569 -+  {"uc3b0128", ARCH_TYPE_UCR1},
 43.4570 -+  {"uc3b0256es", ARCH_TYPE_UCR1},
 43.4571 -+  {"uc3b0256", ARCH_TYPE_UCR1},
 43.4572 -+  {"uc3b164", ARCH_TYPE_UCR1},
 43.4573 -+  {"uc3b1128", ARCH_TYPE_UCR1},
 43.4574 -+  {"uc3b1256es", ARCH_TYPE_UCR1},
 43.4575 -+  {"uc3b1256", ARCH_TYPE_UCR1},
 43.4576 -+  {NULL, 0}
 43.4577 -+};
 43.4578 -+
 43.4579 -+/* Current architecture type.  */
 43.4580 -+static struct arch_type_s default_arch = {"all-insn", AVR32_V1 | AVR32_V2 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO };
 43.4581 -+static struct arch_type_s *avr32_arch = &default_arch;
 43.4582 -+
 43.4583 -+/* Display nicely formatted list of known part- and architecture names.  */
 43.4584 -+
 43.4585 -+static void
 43.4586 -+show_arch_list (FILE *stream)
 43.4587 -+{
 43.4588 -+  int i, x;
 43.4589 -+
 43.4590 -+  fprintf (stream, _("Known architecture names:"));
 43.4591 -+  x = 1000;
 43.4592 -+
 43.4593 -+  for (i = 0; arch_types[i].name; i++)
 43.4594 -+    {
 43.4595 -+      int len = strlen (arch_types[i].name);
 43.4596 -+
 43.4597 -+      x += len + 1;
 43.4598 -+
 43.4599 -+      if (x < 75)
 43.4600 -+	fprintf (stream, " %s", arch_types[i].name);
 43.4601 -+      else
 43.4602 -+	{
 43.4603 -+	  fprintf (stream, "\n  %s", arch_types[i].name);
 43.4604 -+	  x = len + 2;
 43.4605 -+	}
 43.4606 -+    }
 43.4607 -+
 43.4608 -+  fprintf (stream, "\n");
 43.4609 -+}
 43.4610 -+
 43.4611 -+static void
 43.4612 -+show_part_list (FILE *stream)
 43.4613 -+{
 43.4614 -+  int i, x;
 43.4615 -+
 43.4616 -+  fprintf (stream, _("Known part names:"));
 43.4617 -+  x = 1000;
 43.4618 -+
 43.4619 -+  for (i = 0; part_types[i].name; i++)
 43.4620 -+    {
 43.4621 -+      int len = strlen(part_types[i].name);
 43.4622 -+
 43.4623 -+      x += len + 1;
 43.4624 -+
 43.4625 -+      if (x < 75)
 43.4626 -+	fprintf (stream, " %s", part_types[i].name);
 43.4627 -+      else
 43.4628 -+	{
 43.4629 -+	  fprintf(stream, "\n  %s", part_types[i].name);
 43.4630 -+	  x = len + 2;
 43.4631 -+	}
 43.4632 -+    }
 43.4633 -+
 43.4634 -+  fprintf (stream, "\n");
 43.4635 -+}
 43.4636 -+
 43.4637 -+const char *md_shortopts = "";
 43.4638 -+struct option md_longopts[] =
 43.4639 -+{
 43.4640 -+#define OPTION_ARCH		(OPTION_MD_BASE)
 43.4641 -+#define OPTION_PART		(OPTION_ARCH + 1)
 43.4642 -+#define OPTION_IAR		(OPTION_PART + 1)
 43.4643 -+#define OPTION_PIC		(OPTION_IAR + 1)
 43.4644 -+#define OPTION_NOPIC		(OPTION_PIC + 1)
 43.4645 -+#define OPTION_LINKRELAX	(OPTION_NOPIC + 1)
 43.4646 -+#define OPTION_NOLINKRELAX	(OPTION_LINKRELAX + 1)
 43.4647 -+#define OPTION_DIRECT_DATA_REFS (OPTION_NOLINKRELAX + 1)
 43.4648 -+  {"march",		required_argument, NULL, OPTION_ARCH},
 43.4649 -+  {"mpart",		required_argument, NULL, OPTION_PART},
 43.4650 -+  {"iar",		no_argument, NULL, OPTION_IAR},
 43.4651 -+  {"pic",		no_argument, NULL, OPTION_PIC},
 43.4652 -+  {"no-pic",		no_argument, NULL, OPTION_NOPIC},
 43.4653 -+  {"linkrelax",		no_argument, NULL, OPTION_LINKRELAX},
 43.4654 -+  {"no-linkrelax",	no_argument, NULL, OPTION_NOLINKRELAX},
 43.4655 -+  /* deprecated alias for -mpart=xxx */
 43.4656 -+  {"mcpu",		required_argument, NULL, OPTION_PART},
 43.4657 -+  {NULL,		no_argument, NULL, 0}
 43.4658 -+};
 43.4659 -+
 43.4660 -+size_t md_longopts_size = sizeof (md_longopts);
 43.4661 -+
 43.4662 -+void
 43.4663 -+md_show_usage (FILE *stream)
 43.4664 -+{
 43.4665 -+  fprintf (stream, _("\
 43.4666 -+AVR32 options:\n\
 43.4667 -+  -march=[arch-name]      Select cpu architecture. [Default `all-insn']\n\
 43.4668 -+  -mpart=[part-name]      Select specific part. [Default `none']\n\
 43.4669 -+  --pic                   Produce Position-Independent Code\n\
 43.4670 -+  --no-pic                Don't produce Position-Independent Code\n\
 43.4671 -+  --linkrelax             Produce output suitable for linker relaxing\n\
 43.4672 -+  --no-linkrelax          Don't produce output suitable for linker relaxing\n"));
 43.4673 -+  show_arch_list(stream);
 43.4674 -+}
 43.4675 -+
 43.4676 -+int
 43.4677 -+md_parse_option (int c, char *arg ATTRIBUTE_UNUSED)
 43.4678 -+{
 43.4679 -+  switch (c)
 43.4680 -+    {
 43.4681 -+    case OPTION_ARCH:
 43.4682 -+      {
 43.4683 -+	int i;
 43.4684 -+	char *s = alloca (strlen (arg) + 1);
 43.4685 -+
 43.4686 -+	{
 43.4687 -+	  char *t = s;
 43.4688 -+	  char *arg1 = arg;
 43.4689 -+
 43.4690 -+	  do
 43.4691 -+	    *t = TOLOWER (*arg1++);
 43.4692 -+	  while (*t++);
 43.4693 -+	}
 43.4694 -+
 43.4695 -+        /* Add backward compability */
 43.4696 -+        if (strcmp ("uc", s)== 0)
 43.4697 -+          {
 43.4698 -+            as_warn("Deprecated arch `%s' specified. "
 43.4699 -+                    "Please use '-march=ucr1' instead. "
 43.4700 -+                    "Converting to arch 'ucr1'\n",
 43.4701 -+                     s);
 43.4702 -+            s="ucr1";
 43.4703 -+          }
 43.4704 -+
 43.4705 -+	for (i = 0; arch_types[i].name; ++i)
 43.4706 -+	  if (strcmp (arch_types[i].name, s) == 0)
 43.4707 -+	    break;
 43.4708 -+
 43.4709 -+	if (!arch_types[i].name)
 43.4710 -+	  {
 43.4711 -+	    show_arch_list (stderr);
 43.4712 -+	    as_fatal (_("unknown architecture: %s\n"), arg);
 43.4713 -+	  }
 43.4714 -+
 43.4715 -+        avr32_arch = &arch_types[i];
 43.4716 -+	break;
 43.4717 -+      }
 43.4718 -+    case OPTION_PART:
 43.4719 -+      {
 43.4720 -+	int i;
 43.4721 -+	char *s = alloca (strlen (arg) + 1);
 43.4722 -+	char *t = s;
 43.4723 -+	char *p = arg;
 43.4724 -+
 43.4725 -+	/* If arch type has already been set, don't bother.
 43.4726 -+	   -march= always overrides -mpart=  */
 43.4727 -+	if (avr32_arch != &default_arch)
 43.4728 -+	  break;
 43.4729 -+
 43.4730 -+	do
 43.4731 -+	  *t = TOLOWER (*p++);
 43.4732 -+	while (*t++);
 43.4733 -+
 43.4734 -+	for (i = 0; part_types[i].name; ++i)
 43.4735 -+	  if (strcmp (part_types[i].name, s) == 0)
 43.4736 -+	    break;
 43.4737 -+
 43.4738 -+	if (!part_types[i].name)
 43.4739 -+	  {
 43.4740 -+	    show_part_list (stderr);
 43.4741 -+	    as_fatal (_("unknown part: %s\n"), arg);
 43.4742 -+	  }
 43.4743 -+
 43.4744 -+	avr32_arch = &arch_types[part_types[i].arch];
 43.4745 -+	break;
 43.4746 -+      }
 43.4747 -+    case OPTION_IAR:
 43.4748 -+      avr32_iarcompat = 1;
 43.4749 -+      break;
 43.4750 -+    case OPTION_PIC:
 43.4751 -+      avr32_pic = 1;
 43.4752 -+      break;
 43.4753 -+    case OPTION_NOPIC:
 43.4754 -+      avr32_pic = 0;
 43.4755 -+      break;
 43.4756 -+    case OPTION_LINKRELAX:
 43.4757 -+      linkrelax = 1;
 43.4758 -+      break;
 43.4759 -+    case OPTION_NOLINKRELAX:
 43.4760 -+      linkrelax = 0;
 43.4761 -+      break;
 43.4762 -+    default:
 43.4763 -+      return 0;
 43.4764 -+    }
 43.4765 -+  return 1;
 43.4766 -+}
 43.4767 -+
 43.4768 -+/* Can't use symbol_new here, so have to create a symbol and then at
 43.4769 -+   a later date assign it a value. Thats what these functions do.
 43.4770 -+
 43.4771 -+   Shamelessly stolen from ARM.  */
 43.4772 -+
 43.4773 -+static void
 43.4774 -+symbol_locate (symbolS *    symbolP,
 43.4775 -+	       const char * name,	/* It is copied, the caller can modify.  */
 43.4776 -+	       segT         segment,	/* Segment identifier (SEG_<something>).  */
 43.4777 -+	       valueT       valu,	/* Symbol value.  */
 43.4778 -+	       fragS *      frag)	/* Associated fragment.  */
 43.4779 -+{
 43.4780 -+  unsigned int name_length;
 43.4781 -+  char * preserved_copy_of_name;
 43.4782 -+
 43.4783 -+  name_length = strlen (name) + 1;   /* +1 for \0.  */
 43.4784 -+  obstack_grow (&notes, name, name_length);
 43.4785 -+  preserved_copy_of_name = obstack_finish (&notes);
 43.4786 -+#ifdef STRIP_UNDERSCORE
 43.4787 -+  if (preserved_copy_of_name[0] == '_')
 43.4788 -+    preserved_copy_of_name++;
 43.4789 -+#endif
 43.4790 -+
 43.4791 -+#ifdef tc_canonicalize_symbol_name
 43.4792 -+  preserved_copy_of_name =
 43.4793 -+    tc_canonicalize_symbol_name (preserved_copy_of_name);
 43.4794 -+#endif
 43.4795 -+
 43.4796 -+  S_SET_NAME (symbolP, preserved_copy_of_name);
 43.4797 -+
 43.4798 -+  S_SET_SEGMENT (symbolP, segment);
 43.4799 -+  S_SET_VALUE (symbolP, valu);
 43.4800 -+  symbol_clear_list_pointers (symbolP);
 43.4801 -+
 43.4802 -+  symbol_set_frag (symbolP, frag);
 43.4803 -+
 43.4804 -+  /* Link to end of symbol chain.  */
 43.4805 -+  {
 43.4806 -+    extern int symbol_table_frozen;
 43.4807 -+
 43.4808 -+    if (symbol_table_frozen)
 43.4809 -+      abort ();
 43.4810 -+  }
 43.4811 -+
 43.4812 -+  symbol_append (symbolP, symbol_lastP, & symbol_rootP, & symbol_lastP);
 43.4813 -+
 43.4814 -+  obj_symbol_new_hook (symbolP);
 43.4815 -+
 43.4816 -+#ifdef tc_symbol_new_hook
 43.4817 -+  tc_symbol_new_hook (symbolP);
 43.4818 -+#endif
 43.4819 -+
 43.4820 -+#ifdef DEBUG_SYMS
 43.4821 -+  verify_symbol_chain (symbol_rootP, symbol_lastP);
 43.4822 -+#endif /* DEBUG_SYMS  */
 43.4823 -+}
 43.4824 -+
 43.4825 -+struct cpool_entry
 43.4826 -+{
 43.4827 -+  int			refcount;
 43.4828 -+  offsetT		offset;
 43.4829 -+  expressionS		exp;
 43.4830 -+};
 43.4831 -+
 43.4832 -+struct cpool
 43.4833 -+{
 43.4834 -+  struct cpool		*next;
 43.4835 -+  int			used;
 43.4836 -+  struct cpool_entry	*literals;
 43.4837 -+  unsigned int		padding;
 43.4838 -+  unsigned int		next_free_entry;
 43.4839 -+  unsigned int		id;
 43.4840 -+  symbolS		*symbol;
 43.4841 -+  segT			section;
 43.4842 -+  subsegT		sub_section;
 43.4843 -+};
 43.4844 -+
 43.4845 -+struct cpool *cpool_list = NULL;
 43.4846 -+
 43.4847 -+static struct cpool *
 43.4848 -+find_cpool(segT section, subsegT sub_section)
 43.4849 -+{
 43.4850 -+  struct cpool *pool;
 43.4851 -+
 43.4852 -+  for (pool = cpool_list; pool != NULL; pool = pool->next)
 43.4853 -+    {
 43.4854 -+      if (!pool->used
 43.4855 -+	  && pool->section == section
 43.4856 -+	  && pool->sub_section == sub_section)
 43.4857 -+	break;
 43.4858 -+    }
 43.4859 -+
 43.4860 -+  return pool;
 43.4861 -+}
 43.4862 -+
 43.4863 -+static struct cpool *
 43.4864 -+find_or_make_cpool(segT section, subsegT sub_section)
 43.4865 -+{
 43.4866 -+  static unsigned int next_cpool_id = 0;
 43.4867 -+  struct cpool *pool;
 43.4868 -+
 43.4869 -+  pool = find_cpool(section, sub_section);
 43.4870 -+
 43.4871 -+  if (!pool)
 43.4872 -+    {
 43.4873 -+      pool = xmalloc(sizeof(*pool));
 43.4874 -+      if (!pool)
 43.4875 -+	return NULL;
 43.4876 -+
 43.4877 -+      pool->used = 0;
 43.4878 -+      pool->literals = NULL;
 43.4879 -+      pool->padding = 0;
 43.4880 -+      pool->next_free_entry = 0;
 43.4881 -+      pool->section = section;
 43.4882 -+      pool->sub_section = sub_section;
 43.4883 -+      pool->next = cpool_list;
 43.4884 -+      pool->symbol = NULL;
 43.4885 -+
 43.4886 -+      cpool_list = pool;
 43.4887 -+    }
 43.4888 -+
 43.4889 -+  /* NULL symbol means that the pool is new or has just been emptied.  */
 43.4890 -+  if (!pool->symbol)
 43.4891 -+    {
 43.4892 -+      pool->symbol = symbol_create(FAKE_LABEL_NAME, undefined_section,
 43.4893 -+				   0, &zero_address_frag);
 43.4894 -+      pool->id = next_cpool_id++;
 43.4895 -+    }
 43.4896 -+
 43.4897 -+  return pool;
 43.4898 -+}
 43.4899 -+
 43.4900 -+static struct cpool *
 43.4901 -+add_to_cpool(expressionS *exp, unsigned int *index, int ref)
 43.4902 -+{
 43.4903 -+  struct cpool *pool;
 43.4904 -+  unsigned int entry;
 43.4905 -+
 43.4906 -+  pool = find_or_make_cpool(now_seg, now_subseg);
 43.4907 -+
 43.4908 -+  /* Check if this constant is already in the pool.  */
 43.4909 -+  for (entry = 0; entry < pool->next_free_entry; entry++)
 43.4910 -+    {
 43.4911 -+      if ((pool->literals[entry].exp.X_op == exp->X_op)
 43.4912 -+	  && (exp->X_op == O_constant)
 43.4913 -+	  && (pool->literals[entry].exp.X_add_number
 43.4914 -+	      == exp->X_add_number)
 43.4915 -+	  && (pool->literals[entry].exp.X_unsigned
 43.4916 -+	      == exp->X_unsigned))
 43.4917 -+	break;
 43.4918 -+
 43.4919 -+      if ((pool->literals[entry].exp.X_op == exp->X_op)
 43.4920 -+	  && (exp->X_op == O_symbol)
 43.4921 -+	  && (pool->literals[entry].exp.X_add_number
 43.4922 -+	      == exp->X_add_number)
 43.4923 -+	  && (pool->literals[entry].exp.X_add_symbol
 43.4924 -+	      == exp->X_add_symbol)
 43.4925 -+	  && (pool->literals[entry].exp.X_op_symbol
 43.4926 -+	      == exp->X_op_symbol))
 43.4927 -+	break;
 43.4928 -+    }
 43.4929 -+
 43.4930 -+  /* Create an entry if we didn't find a match */
 43.4931 -+  if (entry == pool->next_free_entry)
 43.4932 -+    {
 43.4933 -+      pool->literals = xrealloc(pool->literals,
 43.4934 -+				sizeof(struct cpool_entry) * (entry + 1));
 43.4935 -+      pool->literals[entry].exp = *exp;
 43.4936 -+      pool->literals[entry].refcount = 0;
 43.4937 -+      pool->next_free_entry++;
 43.4938 -+    }
 43.4939 -+
 43.4940 -+  if (index)
 43.4941 -+    *index = entry;
 43.4942 -+  if (ref)
 43.4943 -+    pool->literals[entry].refcount++;
 43.4944 -+
 43.4945 -+  return pool;
 43.4946 -+}
 43.4947 -+
 43.4948 -+struct avr32_operand
 43.4949 -+{
 43.4950 -+  int id;
 43.4951 -+  int is_signed;
 43.4952 -+  int is_pcrel;
 43.4953 -+  int align_order;
 43.4954 -+  int (*match)(char *str);
 43.4955 -+  void (*parse)(const struct avr32_operand *op, char *str, int opindex);
 43.4956 -+};
 43.4957 -+
 43.4958 -+static int
 43.4959 -+match_anything(char *str ATTRIBUTE_UNUSED)
 43.4960 -+{
 43.4961 -+  return 1;
 43.4962 -+}
 43.4963 -+
 43.4964 -+static int
 43.4965 -+match_intreg(char *str)
 43.4966 -+{
 43.4967 -+  int regid, ret = 1;
 43.4968 -+
 43.4969 -+  regid = avr32_parse_intreg(str);
 43.4970 -+  if (regid < 0)
 43.4971 -+    ret = 0;
 43.4972 -+
 43.4973 -+  pr_debug("match_intreg: `%s': %d\n", str, ret);
 43.4974 -+
 43.4975 -+  return ret;
 43.4976 -+}
 43.4977 -+
 43.4978 -+static int
 43.4979 -+match_intreg_predec(char *str)
 43.4980 -+{
 43.4981 -+  int regid;
 43.4982 -+
 43.4983 -+  if (str[0] != '-' || str[1] != '-')
 43.4984 -+    return 0;
 43.4985 -+
 43.4986 -+  regid = avr32_parse_intreg(str + 2);
 43.4987 -+  if (regid < 0)
 43.4988 -+    return 0;
 43.4989 -+
 43.4990 -+  return 1;
 43.4991 -+}
 43.4992 -+
 43.4993 -+static int
 43.4994 -+match_intreg_postinc(char *str)
 43.4995 -+{
 43.4996 -+  int regid, ret = 1;
 43.4997 -+  char *p, c;
 43.4998 -+
 43.4999 -+  for (p = str; *p; p++)
 43.5000 -+    if (*p == '+')
 43.5001 -+      break;
 43.5002 -+
 43.5003 -+  if (p[0] != '+' || p[1] != '+')
 43.5004 -+    return 0;
 43.5005 -+
 43.5006 -+  c = *p, *p = 0;
 43.5007 -+  regid = avr32_parse_intreg(str);
 43.5008 -+  if (regid < 0)
 43.5009 -+    ret = 0;
 43.5010 -+
 43.5011 -+  *p = c;
 43.5012 -+  return ret;
 43.5013 -+}
 43.5014 -+
 43.5015 -+static int
 43.5016 -+match_intreg_lsl(char *str)
 43.5017 -+{
 43.5018 -+  int regid, ret = 1;
 43.5019 -+  char *p, c;
 43.5020 -+
 43.5021 -+  for (p = str; *p; p++)
 43.5022 -+    if (*p == '<')
 43.5023 -+      break;
 43.5024 -+
 43.5025 -+  if (p[0] && p[1] != '<')
 43.5026 -+    return 0;
 43.5027 -+
 43.5028 -+  c = *p, *p = 0;
 43.5029 -+  regid = avr32_parse_intreg(str);
 43.5030 -+  if (regid < 0)
 43.5031 -+    ret = 0;
 43.5032 -+
 43.5033 -+  *p = c;
 43.5034 -+  return ret;
 43.5035 -+}
 43.5036 -+
 43.5037 -+static int
 43.5038 -+match_intreg_lsr(char *str)
 43.5039 -+{
 43.5040 -+  int regid, ret = 1;
 43.5041 -+  char *p, c;
 43.5042 -+
 43.5043 -+  for (p = str; *p; p++)
 43.5044 -+    if (*p == '>')
 43.5045 -+      break;
 43.5046 -+
 43.5047 -+  if (p[0] && p[1] != '>')
 43.5048 -+    return 0;
 43.5049 -+
 43.5050 -+  c = *p, *p = 0;
 43.5051 -+
 43.5052 -+  regid = avr32_parse_intreg(str);
 43.5053 -+  if (regid < 0)
 43.5054 -+    ret = 0;
 43.5055 -+
 43.5056 -+  *p = c;
 43.5057 -+  return ret;
 43.5058 -+}
 43.5059 -+
 43.5060 -+static int
 43.5061 -+match_intreg_part(char *str)
 43.5062 -+{
 43.5063 -+  int regid, ret = 1;
 43.5064 -+  char *p, c;
 43.5065 -+
 43.5066 -+  for (p = str; *p; p++)
 43.5067 -+    if (*p == ':')
 43.5068 -+      break;
 43.5069 -+
 43.5070 -+  if (p[0] != ':' || !ISPRINT(p[1]) || p[2] != '\0')
 43.5071 -+    return 0;
 43.5072 -+
 43.5073 -+  c = *p, *p = 0;
 43.5074 -+  regid = avr32_parse_intreg(str);
 43.5075 -+  if (regid < 0)
 43.5076 -+    ret = 0;
 43.5077 -+
 43.5078 -+  *p = c;
 43.5079 -+
 43.5080 -+  return ret;
 43.5081 -+}
 43.5082 -+
 43.5083 -+#define match_intreg_disp match_anything
 43.5084 -+
 43.5085 -+static int
 43.5086 -+match_intreg_index(char *str)
 43.5087 -+{
 43.5088 -+  int regid, ret = 1;
 43.5089 -+  char *p, *end, c;
 43.5090 -+
 43.5091 -+  for (p = str; *p; p++)
 43.5092 -+    if (*p == '[')
 43.5093 -+      break;
 43.5094 -+
 43.5095 -+  /* don't allow empty displacement here (it makes no sense) */
 43.5096 -+  if (p[0] != '[')
 43.5097 -+    return 0;
 43.5098 -+
 43.5099 -+  for (end = p + 1; *end; end++) ;
 43.5100 -+  if (*(--end) != ']')
 43.5101 -+    return 0;
 43.5102 -+
 43.5103 -+  c = *end, *end = 0;
 43.5104 -+  if (!match_intreg_lsl(p + 1))
 43.5105 -+    ret = 0;
 43.5106 -+  *end = c;
 43.5107 -+
 43.5108 -+  if (ret)
 43.5109 -+    {
 43.5110 -+      c = *p, *p = 0;
 43.5111 -+      regid = avr32_parse_intreg(str);
 43.5112 -+      if (regid < 0)
 43.5113 -+	ret = 0;
 43.5114 -+      *p = c;
 43.5115 -+    }
 43.5116 -+
 43.5117 -+  return ret;
 43.5118 -+}
 43.5119 -+
 43.5120 -+static int
 43.5121 -+match_intreg_xindex(char *str)
 43.5122 -+{
 43.5123 -+  int regid, ret = 1;
 43.5124 -+  char *p, *end, c;
 43.5125 -+
 43.5126 -+  for (p = str; *p; p++)
 43.5127 -+    if (*p == '[')
 43.5128 -+      break;
 43.5129 -+
 43.5130 -+  /* empty displacement makes no sense here either */
 43.5131 -+  if (p[0] != '[')
 43.5132 -+    return 0;
 43.5133 -+
 43.5134 -+  for (end = p + 1; *end; end++)
 43.5135 -+    if (*end == '<')
 43.5136 -+      break;
 43.5137 -+
 43.5138 -+  if (!streq(end, "<<2]"))
 43.5139 -+    return 0;
 43.5140 -+
 43.5141 -+  c = *end, *end = 0;
 43.5142 -+  if (!match_intreg_part(p + 1))
 43.5143 -+    ret = 0;
 43.5144 -+  *end = c;
 43.5145 -+
 43.5146 -+  if (ret)
 43.5147 -+    {
 43.5148 -+      c = *p, *p = 0;
 43.5149 -+      regid = avr32_parse_intreg(str);
 43.5150 -+      if (regid < 0)
 43.5151 -+	ret = 0;
 43.5152 -+      *p = c;
 43.5153 -+    }
 43.5154 -+
 43.5155 -+  return ret;
 43.5156 -+}
 43.5157 -+
 43.5158 -+/* The PC_UDISP_W operator may show up as a label or as a pc[disp]
 43.5159 -+   expression.  So there's no point in attempting to match this...  */
 43.5160 -+#define match_pc_disp	match_anything
 43.5161 -+
 43.5162 -+static int
 43.5163 -+match_sp(char *str)
 43.5164 -+{
 43.5165 -+  /* SP in any form will do */
 43.5166 -+  return avr32_parse_intreg(str) == AVR32_REG_SP;
 43.5167 -+}
 43.5168 -+
 43.5169 -+static int
 43.5170 -+match_sp_disp(char *str)
 43.5171 -+{
 43.5172 -+  int regid, ret = 1;
 43.5173 -+  char *p, c;
 43.5174 -+
 43.5175 -+  for (p = str; *p; p++)
 43.5176 -+    if (*p == '[')
 43.5177 -+      break;
 43.5178 -+
 43.5179 -+  /* allow empty displacement, meaning zero */
 43.5180 -+  if (p[0] == '[')
 43.5181 -+    {
 43.5182 -+      char *end;
 43.5183 -+      for (end = p + 1; *end; end++) ;
 43.5184 -+      if (end[-1] != ']')
 43.5185 -+	return 0;
 43.5186 -+    }
 43.5187 -+
 43.5188 -+  c = *p, *p = 0;
 43.5189 -+  regid = avr32_parse_intreg(str);
 43.5190 -+  if (regid != AVR32_REG_SP)
 43.5191 -+    ret = 0;
 43.5192 -+
 43.5193 -+  *p = c;
 43.5194 -+  return ret;
 43.5195 -+}
 43.5196 -+
 43.5197 -+static int
 43.5198 -+match_cpno(char *str)
 43.5199 -+{
 43.5200 -+  if (strncasecmp(str, "cp", 2) != 0)
 43.5201 -+    return 0;
 43.5202 -+  return 1;
 43.5203 -+}
 43.5204 -+
 43.5205 -+static int
 43.5206 -+match_cpreg(char *str)
 43.5207 -+{
 43.5208 -+  if (strncasecmp(str, "cr", 2) != 0)
 43.5209 -+    return 0;
 43.5210 -+  return 1;
 43.5211 -+}
 43.5212 -+
 43.5213 -+/* We allow complex expressions, and register names may show up as
 43.5214 -+   symbols.  Just make sure immediate expressions are always matched
 43.5215 -+   last.  */
 43.5216 -+#define match_const		match_anything
 43.5217 -+#define match_jmplabel		match_anything
 43.5218 -+#define match_number		match_anything
 43.5219 -+
 43.5220 -+/* Mnemonics that take reglists never accept anything else */
 43.5221 -+#define match_reglist8		match_anything
 43.5222 -+#define match_reglist9		match_anything
 43.5223 -+#define match_reglist16		match_anything
 43.5224 -+#define match_reglist_ldm	match_anything
 43.5225 -+#define match_reglist_cp8	match_anything
 43.5226 -+#define match_reglist_cpd8	match_anything
 43.5227 -+
 43.5228 -+/* Ditto for retval, jospinc and mcall */
 43.5229 -+#define match_retval		match_anything
 43.5230 -+#define match_jospinc		match_anything
 43.5231 -+#define match_mcall		match_anything
 43.5232 -+
 43.5233 -+/* COH is used to select between two different syntaxes */
 43.5234 -+static int
 43.5235 -+match_coh(char *str)
 43.5236 -+{
 43.5237 -+  return strcasecmp(str, "coh") == 0;
 43.5238 -+}
 43.5239 -+
 43.5240 -+static int
 43.5241 -+match_fpreg(char *str)
 43.5242 -+{
 43.5243 -+  unsigned long regid;
 43.5244 -+  char *endptr;
 43.5245 -+
 43.5246 -+  if ((str[0] != 'f' && str[0] != 'F')
 43.5247 -+      || (str[1] != 'r' && str[1] != 'R'))
 43.5248 -+    return 0;
 43.5249 -+
 43.5250 -+  str += 2;
 43.5251 -+  regid = strtoul(str, &endptr, 10);
 43.5252 -+  if (!*str || *endptr)
 43.5253 -+    return 0;
 43.5254 -+
 43.5255 -+  return 1;
 43.5256 -+}
 43.5257 -+
 43.5258 -+static int
 43.5259 -+match_picoreg(char *str)
 43.5260 -+{
 43.5261 -+  int regid;
 43.5262 -+
 43.5263 -+  regid = avr32_parse_picoreg(str);
 43.5264 -+  if (regid < 0)
 43.5265 -+    return 0;
 43.5266 -+  return 1;
 43.5267 -+}
 43.5268 -+
 43.5269 -+#define match_pico_reglist_w	match_anything
 43.5270 -+#define match_pico_reglist_d	match_anything
 43.5271 -+
 43.5272 -+static int
 43.5273 -+match_pico_in(char *str)
 43.5274 -+{
 43.5275 -+  unsigned long regid;
 43.5276 -+  char *end;
 43.5277 -+
 43.5278 -+  if (strncasecmp(str, "in", 2) != 0)
 43.5279 -+    return 0;
 43.5280 -+
 43.5281 -+  str += 2;
 43.5282 -+  regid = strtoul(str, &end, 10);
 43.5283 -+  if (!*str || *end)
 43.5284 -+    return 0;
 43.5285 -+
 43.5286 -+  return 1;
 43.5287 -+}
 43.5288 -+
 43.5289 -+static int
 43.5290 -+match_pico_out0(char *str)
 43.5291 -+{
 43.5292 -+  if (strcasecmp(str, "out0") != 0)
 43.5293 -+    return 0;
 43.5294 -+  return 1;
 43.5295 -+}
 43.5296 -+
 43.5297 -+static int
 43.5298 -+match_pico_out1(char *str)
 43.5299 -+{
 43.5300 -+  if (strcasecmp(str, "out1") != 0)
 43.5301 -+    return 0;
 43.5302 -+  return 1;
 43.5303 -+}
 43.5304 -+
 43.5305 -+static int
 43.5306 -+match_pico_out2(char *str)
 43.5307 -+{
 43.5308 -+  if (strcasecmp(str, "out2") != 0)
 43.5309 -+    return 0;
 43.5310 -+  return 1;
 43.5311 -+}
 43.5312 -+
 43.5313 -+static int
 43.5314 -+match_pico_out3(char *str)
 43.5315 -+{
 43.5316 -+  if (strcasecmp(str, "out3") != 0)
 43.5317 -+    return 0;
 43.5318 -+  return 1;
 43.5319 -+}
 43.5320 -+
 43.5321 -+static void parse_nothing(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 43.5322 -+			  char *str ATTRIBUTE_UNUSED,
 43.5323 -+			  int opindex ATTRIBUTE_UNUSED)
 43.5324 -+{
 43.5325 -+  /* Do nothing (this is used for "match-only" operands like COH) */
 43.5326 -+}
 43.5327 -+
 43.5328 -+static void
 43.5329 -+parse_const(const struct avr32_operand *op, char *str,
 43.5330 -+	    int opindex ATTRIBUTE_UNUSED)
 43.5331 -+{
 43.5332 -+  expressionS *exp = &current_insn.immediate;
 43.5333 -+  expressionS *sym_exp;
 43.5334 -+  int slot;
 43.5335 -+  char *save;
 43.5336 -+
 43.5337 -+  pr_debug("parse_const: `%s' (signed: %d, pcrel: %d, align: %d)\n",
 43.5338 -+	   str, op->is_signed, op->is_pcrel, op->align_order);
 43.5339 -+
 43.5340 -+  save = input_line_pointer;
 43.5341 -+  input_line_pointer = str;
 43.5342 -+
 43.5343 -+  expression(exp);
 43.5344 -+
 43.5345 -+  slot = current_insn.next_slot++;
 43.5346 -+  current_insn.field_value[slot].align_order = op->align_order;
 43.5347 -+  current_insn.pcrel = op->is_pcrel;
 43.5348 -+
 43.5349 -+  switch (exp->X_op)
 43.5350 -+    {
 43.5351 -+    case O_illegal:
 43.5352 -+      as_bad(_("illegal operand"));
 43.5353 -+      break;
 43.5354 -+    case O_absent:
 43.5355 -+      as_bad(_("missing operand"));
 43.5356 -+      break;
 43.5357 -+    case O_constant:
 43.5358 -+      pr_debug("  -> constant: %ld\n", (long)exp->X_add_number);
 43.5359 -+      current_insn.field_value[slot].value = exp->X_add_number;
 43.5360 -+      break;
 43.5361 -+    case O_uminus:
 43.5362 -+      pr_debug("  -> uminus\n");
 43.5363 -+      sym_exp = symbol_get_value_expression(exp->X_add_symbol);
 43.5364 -+      switch (sym_exp->X_op) {
 43.5365 -+      case O_subtract:
 43.5366 -+	pr_debug("     -> subtract: switching operands\n");
 43.5367 -+	exp->X_op_symbol = sym_exp->X_add_symbol;
 43.5368 -+	exp->X_add_symbol = sym_exp->X_op_symbol;
 43.5369 -+	exp->X_op = O_subtract;
 43.5370 -+	/* TODO: Remove the old X_add_symbol */
 43.5371 -+	break;
 43.5372 -+      default:
 43.5373 -+	as_bad(_("Expression too complex\n"));
 43.5374 -+	break;
 43.5375 -+      }
 43.5376 -+      break;
 43.5377 -+#if 0
 43.5378 -+    case O_subtract:
 43.5379 -+      /* Any expression subtracting a symbol from the current section
 43.5380 -+	 can be made PC-relative by adding the right offset.  */
 43.5381 -+      if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
 43.5382 -+	current_insn.pcrel = TRUE;
 43.5383 -+      pr_debug("  -> subtract: pcrel? %s\n",
 43.5384 -+	       current_insn.pcrel ? "yes" : "no");
 43.5385 -+      /* fall through */
 43.5386 -+#endif
 43.5387 -+    default:
 43.5388 -+      pr_debug("  -> (%p <%d> %p + %d)\n",
 43.5389 -+	       exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
 43.5390 -+	       exp->X_add_number);
 43.5391 -+      current_insn.field_value[slot].value = 0;
 43.5392 -+      break;
 43.5393 -+    }
 43.5394 -+
 43.5395 -+  input_line_pointer = save;
 43.5396 -+}
 43.5397 -+
 43.5398 -+static void
 43.5399 -+parse_jmplabel(const struct avr32_operand *op, char *str,
 43.5400 -+	       int opindex ATTRIBUTE_UNUSED)
 43.5401 -+{
 43.5402 -+  expressionS *exp = &current_insn.immediate;
 43.5403 -+  int slot;
 43.5404 -+  char *save;
 43.5405 -+
 43.5406 -+  pr_debug("parse_jmplabel: `%s' (signed: %d, pcrel: %d, align: %d)\n",
 43.5407 -+	   str, op->is_signed, op->is_pcrel, op->align_order);
 43.5408 -+
 43.5409 -+  save = input_line_pointer;
 43.5410 -+  input_line_pointer = str;
 43.5411 -+
 43.5412 -+  expression(exp);
 43.5413 -+
 43.5414 -+  slot = current_insn.next_slot++;
 43.5415 -+  current_insn.field_value[slot].align_order = op->align_order;
 43.5416 -+  current_insn.pcrel = TRUE;
 43.5417 -+
 43.5418 -+  switch (exp->X_op)
 43.5419 -+    {
 43.5420 -+    case O_illegal:
 43.5421 -+      as_bad(_("illegal operand"));
 43.5422 -+      break;
 43.5423 -+    case O_absent:
 43.5424 -+      as_bad(_("missing operand"));
 43.5425 -+      break;
 43.5426 -+    case O_constant:
 43.5427 -+      pr_debug("  -> constant: %ld\n", (long)exp->X_add_number);
 43.5428 -+      current_insn.field_value[slot].value = exp->X_add_number;
 43.5429 -+      current_insn.pcrel = 0;
 43.5430 -+      break;
 43.5431 -+    default:
 43.5432 -+      pr_debug("  -> (%p <%d> %p + %d)\n",
 43.5433 -+	       exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
 43.5434 -+	       exp->X_add_number);
 43.5435 -+      current_insn.field_value[slot].value = 0;
 43.5436 -+      break;
 43.5437 -+    }
 43.5438 -+
 43.5439 -+  input_line_pointer = save;
 43.5440 -+}
 43.5441 -+
 43.5442 -+static void
 43.5443 -+parse_intreg(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 43.5444 -+	     char *str, int opindex ATTRIBUTE_UNUSED)
 43.5445 -+{
 43.5446 -+  int regid, slot;
 43.5447 -+
 43.5448 -+  pr_debug("parse_intreg: `%s'\n", str);
 43.5449 -+
 43.5450 -+  regid = avr32_parse_intreg(str);
 43.5451 -+  assert(regid >= 0);
 43.5452 -+
 43.5453 -+  slot = current_insn.next_slot++;
 43.5454 -+  current_insn.field_value[slot].value = regid;
 43.5455 -+  current_insn.field_value[slot].align_order = op->align_order;
 43.5456 -+}
 43.5457 -+
 43.5458 -+static void
 43.5459 -+parse_intreg_predec(const struct avr32_operand *op, char *str, int opindex)
 43.5460 -+{
 43.5461 -+  parse_intreg(op, str + 2, opindex);
 43.5462 -+}
 43.5463 -+
 43.5464 -+static void
 43.5465 -+parse_intreg_postinc(const struct avr32_operand *op, char *str, int opindex)
 43.5466 -+{
 43.5467 -+  char *p, c;
 43.5468 -+
 43.5469 -+  pr_debug("parse_intreg_postinc: `%s'\n", str);
 43.5470 -+
 43.5471 -+  for (p = str; *p != '+'; p++) ;
 43.5472 -+
 43.5473 -+  c = *p, *p = 0;
 43.5474 -+  parse_intreg(op, str, opindex);
 43.5475 -+  *p = c;
 43.5476 -+}
 43.5477 -+
 43.5478 -+static void
 43.5479 -+parse_intreg_shift(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 43.5480 -+		   char *str, int opindex ATTRIBUTE_UNUSED)
 43.5481 -+{
 43.5482 -+  int regid, slot, shift = 0;
 43.5483 -+  char *p, c;
 43.5484 -+  char shiftop;
 43.5485 -+
 43.5486 -+  pr_debug("parse Ry<<sa: `%s'\n", str);
 43.5487 -+
 43.5488 -+  for (p = str; *p; p++)
 43.5489 -+    if (*p == '<' || *p == '>')
 43.5490 -+      break;
 43.5491 -+
 43.5492 -+  shiftop = *p;
 43.5493 -+
 43.5494 -+  c = *p, *p = 0;
 43.5495 -+  regid = avr32_parse_intreg(str);
 43.5496 -+  assert(regid >= 0);
 43.5497 -+  *p = c;
 43.5498 -+
 43.5499 -+  if (c)
 43.5500 -+    {
 43.5501 -+      if (p[0] != shiftop || p[1] != shiftop)
 43.5502 -+	as_bad(_("expected shift operator in `%s'"), p);
 43.5503 -+      else
 43.5504 -+	{
 43.5505 -+	  expressionS exp;
 43.5506 -+	  char *saved;
 43.5507 -+
 43.5508 -+	  saved = input_line_pointer;
 43.5509 -+	  input_line_pointer = p + 2;
 43.5510 -+	  expression(&exp);
 43.5511 -+	  input_line_pointer = saved;
 43.5512 -+
 43.5513 -+	  if (exp.X_op != O_constant)
 43.5514 -+	    as_bad(_("shift amount must be a numeric constant"));
 43.5515 -+	  else
 43.5516 -+	    shift = exp.X_add_number;
 43.5517 -+	}
 43.5518 -+    }
 43.5519 -+
 43.5520 -+  slot = current_insn.next_slot++;
 43.5521 -+  current_insn.field_value[slot].value = regid;
 43.5522 -+  slot = current_insn.next_slot++;
 43.5523 -+  current_insn.field_value[slot].value = shift;
 43.5524 -+}
 43.5525 -+
 43.5526 -+/* The match() function selected the right opcode, so it doesn't
 43.5527 -+   matter which way we shift any more.  */
 43.5528 -+#define parse_intreg_lsl	parse_intreg_shift
 43.5529 -+#define parse_intreg_lsr	parse_intreg_shift
 43.5530 -+
 43.5531 -+static void
 43.5532 -+parse_intreg_part(const struct avr32_operand *op, char *str,
 43.5533 -+		  int opindex ATTRIBUTE_UNUSED)
 43.5534 -+{
 43.5535 -+  static const char bparts[] = { 'b', 'l', 'u', 't' };
 43.5536 -+  static const char hparts[] = { 'b', 't' };
 43.5537 -+  unsigned int slot, sel;
 43.5538 -+  int regid;
 43.5539 -+  char *p, c;
 43.5540 -+
 43.5541 -+  pr_debug("parse reg:part `%s'\n", str);
 43.5542 -+
 43.5543 -+  for (p = str; *p; p++)
 43.5544 -+    if (*p == ':')
 43.5545 -+      break;
 43.5546 -+
 43.5547 -+  c = *p, *p = 0;
 43.5548 -+  regid = avr32_parse_intreg(str);
 43.5549 -+  assert(regid >= 0);
 43.5550 -+  *p = c;
 43.5551 -+
 43.5552 -+  assert(c == ':');
 43.5553 -+
 43.5554 -+  if (op->align_order)
 43.5555 -+    {
 43.5556 -+      for (sel = 0; sel < sizeof(hparts); sel++)
 43.5557 -+	if (TOLOWER(p[1]) == hparts[sel])
 43.5558 -+	  break;
 43.5559 -+
 43.5560 -+      if (sel >= sizeof(hparts))
 43.5561 -+	{
 43.5562 -+	  as_bad(_("invalid halfword selector `%c' (must be either b or t)"),
 43.5563 -+		 p[1]);
 43.5564 -+	  sel = 0;
 43.5565 -+	}
 43.5566 -+    }
 43.5567 -+  else
 43.5568 -+    {
 43.5569 -+      for (sel = 0; sel < sizeof(bparts); sel++)
 43.5570 -+	if (TOLOWER(p[1]) == bparts[sel])
 43.5571 -+	  break;
 43.5572 -+
 43.5573 -+      if (sel >= sizeof(bparts))
 43.5574 -+	{
 43.5575 -+	  as_bad(_("invalid byte selector `%c' (must be one of b,l,u,t)"),
 43.5576 -+		 p[1]);
 43.5577 -+	  sel = 0;
 43.5578 -+	}
 43.5579 -+    }
 43.5580 -+
 43.5581 -+  slot = current_insn.next_slot++;
 43.5582 -+  current_insn.field_value[slot].value = regid;
 43.5583 -+  slot = current_insn.next_slot++;
 43.5584 -+  current_insn.field_value[slot].value = sel;
 43.5585 -+}
 43.5586 -+
 43.5587 -+/* This is the parser for "Rp[displacement]" expressions.  In addition
 43.5588 -+   to the "official" syntax, we accept a label as a replacement for
 43.5589 -+   the register expression.  This syntax implies Rp=PC and the
 43.5590 -+   displacement is the pc-relative distance to the label.  */
 43.5591 -+static void
 43.5592 -+parse_intreg_disp(const struct avr32_operand *op, char *str, int opindex)
 43.5593 -+{
 43.5594 -+  expressionS *exp = &current_insn.immediate;
 43.5595 -+  int slot, regid;
 43.5596 -+  char *save, *p, c;
 43.5597 -+
 43.5598 -+  pr_debug("parse_intreg_disp: `%s' (signed: %d, pcrel: %d, align: %d)\n",
 43.5599 -+	   str, op->is_signed, op->is_pcrel, op->align_order);
 43.5600 -+
 43.5601 -+  for (p = str; *p; p++)
 43.5602 -+    if (*p == '[')
 43.5603 -+      break;
 43.5604 -+
 43.5605 -+  slot = current_insn.next_slot++;
 43.5606 -+
 43.5607 -+  /* First, check if we have a valid register either before '[' or as
 43.5608 -+     the sole expression.  If so, we use the Rp[disp] syntax.  */
 43.5609 -+  c = *p, *p = 0;
 43.5610 -+  regid = avr32_parse_intreg(str);
 43.5611 -+  *p = c;
 43.5612 -+
 43.5613 -+  if (regid >= 0)
 43.5614 -+    {
 43.5615 -+      current_insn.field_value[slot].value = regid;
 43.5616 -+
 43.5617 -+      slot = current_insn.next_slot++;
 43.5618 -+      current_insn.field_value[slot].align_order = op->align_order;
 43.5619 -+
 43.5620 -+      if (c == '[')
 43.5621 -+	{
 43.5622 -+	  save = input_line_pointer;
 43.5623 -+	  input_line_pointer = p + 1;
 43.5624 -+
 43.5625 -+	  expression(exp);
 43.5626 -+
 43.5627 -+	  if (*input_line_pointer != ']')
 43.5628 -+	    as_bad(_("junk after displacement expression"));
 43.5629 -+
 43.5630 -+	  input_line_pointer = save;
 43.5631 -+
 43.5632 -+	  switch (exp->X_op)
 43.5633 -+	    {
 43.5634 -+	    case O_illegal:
 43.5635 -+	      as_bad(_("illegal displacement expression"));
 43.5636 -+	      break;
 43.5637 -+	    case O_absent:
 43.5638 -+	      as_bad(_("missing displacement expression"));
 43.5639 -+	      break;
 43.5640 -+	    case O_constant:
 43.5641 -+	      pr_debug("  -> constant: %ld\n", exp->X_add_number);
 43.5642 -+	      current_insn.field_value[slot].value = exp->X_add_number;
 43.5643 -+	      break;
 43.5644 -+#if 0
 43.5645 -+	    case O_subtract:
 43.5646 -+	      if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
 43.5647 -+		current_insn.pcrel = TRUE;
 43.5648 -+	      pr_debug("  -> subtract: pcrel? %s\n",
 43.5649 -+		       current_insn.pcrel ? "yes" : "no");
 43.5650 -+	      /* fall through */
 43.5651 -+#endif
 43.5652 -+	    default:
 43.5653 -+	      pr_debug("  -> (%p <%d> %p + %d)\n",
 43.5654 -+		       exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
 43.5655 -+		       exp->X_add_number);
 43.5656 -+	      current_insn.field_value[slot].value = 0;
 43.5657 -+	    }
 43.5658 -+	}
 43.5659 -+      else
 43.5660 -+	{
 43.5661 -+	  exp->X_op = O_constant;
 43.5662 -+	  exp->X_add_number = 0;
 43.5663 -+	  current_insn.field_value[slot].value = 0;
 43.5664 -+	}
 43.5665 -+    }
 43.5666 -+  else
 43.5667 -+    {
 43.5668 -+      /* Didn't find a valid register.  Try parsing it as a label.  */
 43.5669 -+      current_insn.field_value[slot].value = AVR32_REG_PC;
 43.5670 -+      parse_jmplabel(op, str, opindex);
 43.5671 -+    }
 43.5672 -+}
 43.5673 -+
 43.5674 -+static void
 43.5675 -+parse_intreg_index(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 43.5676 -+		   char *str, int opindex ATTRIBUTE_UNUSED)
 43.5677 -+{
 43.5678 -+  int slot, regid;
 43.5679 -+  char *p, *end, c;
 43.5680 -+
 43.5681 -+  for (p = str; *p; p++)
 43.5682 -+    if (*p == '[')
 43.5683 -+      break;
 43.5684 -+
 43.5685 -+  assert(*p);
 43.5686 -+
 43.5687 -+  c = *p, *p = 0;
 43.5688 -+  regid = avr32_parse_intreg(str);
 43.5689 -+  assert(regid >= 0);
 43.5690 -+  *p = c;
 43.5691 -+
 43.5692 -+  slot = current_insn.next_slot++;
 43.5693 -+  current_insn.field_value[slot].value = regid;
 43.5694 -+
 43.5695 -+  p++;
 43.5696 -+  for (end = p; *end; end++)
 43.5697 -+    if (*end == ']' || *end == '<')
 43.5698 -+      break;
 43.5699 -+
 43.5700 -+  assert(*end);
 43.5701 -+
 43.5702 -+  c = *end, *end = 0;
 43.5703 -+  regid = avr32_parse_intreg(p);
 43.5704 -+  assert(regid >= 0);
 43.5705 -+  *end = c;
 43.5706 -+
 43.5707 -+  slot = current_insn.next_slot++;
 43.5708 -+  current_insn.field_value[slot].value = regid;
 43.5709 -+
 43.5710 -+  slot = current_insn.next_slot++;
 43.5711 -+  current_insn.field_value[slot].value = 0;
 43.5712 -+
 43.5713 -+  if (*end == '<')
 43.5714 -+    {
 43.5715 -+      expressionS exp;
 43.5716 -+      char *save;
 43.5717 -+
 43.5718 -+      p = end + 2;
 43.5719 -+      for (end = p; *end; end++)
 43.5720 -+	if (*end == ']')
 43.5721 -+	  break;
 43.5722 -+
 43.5723 -+      assert(*end == ']');
 43.5724 -+
 43.5725 -+      c = *end, *end = 0;
 43.5726 -+      save = input_line_pointer;
 43.5727 -+      input_line_pointer = p;
 43.5728 -+      expression(&exp);
 43.5729 -+
 43.5730 -+      if (*input_line_pointer)
 43.5731 -+	as_bad(_("junk after shift expression"));
 43.5732 -+
 43.5733 -+      *end = c;
 43.5734 -+      input_line_pointer = save;
 43.5735 -+
 43.5736 -+      if (exp.X_op == O_constant)
 43.5737 -+	current_insn.field_value[slot].value = exp.X_add_number;
 43.5738 -+      else
 43.5739 -+	as_bad(_("shift expression too complex"));
 43.5740 -+    }
 43.5741 -+}
 43.5742 -+
 43.5743 -+static void
 43.5744 -+parse_intreg_xindex(const struct avr32_operand *op, char *str, int opindex)
 43.5745 -+{
 43.5746 -+  int slot, regid;
 43.5747 -+  char *p, *end, c;
 43.5748 -+
 43.5749 -+  for (p = str; *p; p++)
 43.5750 -+    if (*p == '[')
 43.5751 -+      break;
 43.5752 -+
 43.5753 -+  assert(*p);
 43.5754 -+
 43.5755 -+  c = *p, *p = 0;
 43.5756 -+  regid = avr32_parse_intreg(str);
 43.5757 -+  assert(regid >= 0);
 43.5758 -+  *p = c;
 43.5759 -+
 43.5760 -+  slot = current_insn.next_slot++;
 43.5761 -+  current_insn.field_value[slot].value = regid;
 43.5762 -+
 43.5763 -+  p++;
 43.5764 -+  for (end = p; *end; end++)
 43.5765 -+    if (*end == '<')
 43.5766 -+      break;
 43.5767 -+
 43.5768 -+  assert(*end);
 43.5769 -+
 43.5770 -+  c = *end, *end = 0;
 43.5771 -+  parse_intreg_part(op, p, opindex);
 43.5772 -+  *end = c;
 43.5773 -+}
 43.5774 -+
 43.5775 -+static void
 43.5776 -+parse_pc_disp(const struct avr32_operand *op, char *str, int opindex)
 43.5777 -+{
 43.5778 -+  char *p, c;
 43.5779 -+
 43.5780 -+  for (p = str; *p; p++)
 43.5781 -+    if (*p == '[')
 43.5782 -+      break;
 43.5783 -+
 43.5784 -+  /* The lddpc instruction comes in two different syntax variants:
 43.5785 -+       lddpc reg, expression
 43.5786 -+       lddpc reg, pc[disp]
 43.5787 -+     If the operand contains a '[', we use the second form.  */
 43.5788 -+  if (*p)
 43.5789 -+    {
 43.5790 -+      int regid;
 43.5791 -+
 43.5792 -+      c = *p, *p = 0;
 43.5793 -+      regid = avr32_parse_intreg(str);
 43.5794 -+      *p = c;
 43.5795 -+      if (regid == AVR32_REG_PC)
 43.5796 -+	{
 43.5797 -+	  char *end;
 43.5798 -+
 43.5799 -+	  for (end = ++p; *end; end++) ;
 43.5800 -+	  if (*(--end) != ']')
 43.5801 -+	    as_bad(_("unrecognized form of instruction: `%s'"), str);
 43.5802 -+	  else
 43.5803 -+	    {
 43.5804 -+	      c = *end, *end = 0;
 43.5805 -+	      parse_const(op, p, opindex);
 43.5806 -+	      *end = c;
 43.5807 -+	      current_insn.pcrel = 0;
 43.5808 -+	    }
 43.5809 -+	}
 43.5810 -+      else
 43.5811 -+	as_bad(_("unrecognized form of instruction: `%s'"), str);
 43.5812 -+    }
 43.5813 -+  else
 43.5814 -+    {
 43.5815 -+      parse_jmplabel(op, str, opindex);
 43.5816 -+    }
 43.5817 -+}
 43.5818 -+
 43.5819 -+static void parse_sp(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 43.5820 -+		     char *str ATTRIBUTE_UNUSED,
 43.5821 -+		     int opindex ATTRIBUTE_UNUSED)
 43.5822 -+{
 43.5823 -+  int slot;
 43.5824 -+
 43.5825 -+  slot = current_insn.next_slot++;
 43.5826 -+  current_insn.field_value[slot].value = AVR32_REG_SP;
 43.5827 -+}
 43.5828 -+
 43.5829 -+static void
 43.5830 -+parse_sp_disp(const struct avr32_operand *op, char *str, int opindex)
 43.5831 -+{
 43.5832 -+  char *p, c;
 43.5833 -+
 43.5834 -+  for (; *str; str++)
 43.5835 -+    if (*str == '[')
 43.5836 -+      break;
 43.5837 -+
 43.5838 -+  assert(*str);
 43.5839 -+
 43.5840 -+  for (p = ++str; *p; p++)
 43.5841 -+    if (*p == ']')
 43.5842 -+      break;
 43.5843 -+
 43.5844 -+  c = *p, *p = 0;
 43.5845 -+  parse_const(op, str, opindex);
 43.5846 -+  *p = c;
 43.5847 -+}
 43.5848 -+
 43.5849 -+static void
 43.5850 -+parse_cpno(const struct avr32_operand *op ATTRIBUTE_UNUSED, char *str,
 43.5851 -+	   int opindex ATTRIBUTE_UNUSED)
 43.5852 -+{
 43.5853 -+  int slot;
 43.5854 -+
 43.5855 -+  str += 2;
 43.5856 -+  if (*str == '#')
 43.5857 -+    str++;
 43.5858 -+  if (*str < '0' || *str > '7' || str[1])
 43.5859 -+    as_bad(_("invalid coprocessor `%s'"), str);
 43.5860 -+
 43.5861 -+  slot = current_insn.next_slot++;
 43.5862 -+  current_insn.field_value[slot].value = *str - '0';
 43.5863 -+}
 43.5864 -+
 43.5865 -+static void
 43.5866 -+parse_cpreg(const struct avr32_operand *op, char *str,
 43.5867 -+	    int opindex ATTRIBUTE_UNUSED)
 43.5868 -+{
 43.5869 -+  unsigned int crid;
 43.5870 -+  int slot;
 43.5871 -+  char *endptr;
 43.5872 -+
 43.5873 -+  str += 2;
 43.5874 -+  crid = strtoul(str, &endptr, 10);
 43.5875 -+  if (*endptr || crid > 15 || crid & ((1 << op->align_order) - 1))
 43.5876 -+    as_bad(_("invalid coprocessor register `%s'"), str);
 43.5877 -+
 43.5878 -+  crid >>= op->align_order;
 43.5879 -+
 43.5880 -+  slot = current_insn.next_slot++;
 43.5881 -+  current_insn.field_value[slot].value = crid;
 43.5882 -+}
 43.5883 -+
 43.5884 -+static void
 43.5885 -+parse_number(const struct avr32_operand *op, char *str,
 43.5886 -+	     int opindex ATTRIBUTE_UNUSED)
 43.5887 -+{
 43.5888 -+  expressionS exp;
 43.5889 -+  int slot;
 43.5890 -+  char *save;
 43.5891 -+
 43.5892 -+  save = input_line_pointer;
 43.5893 -+  input_line_pointer = str;
 43.5894 -+  expression(&exp);
 43.5895 -+  input_line_pointer = save;
 43.5896 -+
 43.5897 -+  slot = current_insn.next_slot++;
 43.5898 -+  current_insn.field_value[slot].align_order = op->align_order;
 43.5899 -+
 43.5900 -+  if (exp.X_op == O_constant)
 43.5901 -+      current_insn.field_value[slot].value = exp.X_add_number;
 43.5902 -+  else
 43.5903 -+      as_bad(_("invalid numeric expression `%s'"), str);
 43.5904 -+}
 43.5905 -+
 43.5906 -+static void
 43.5907 -+parse_reglist8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 43.5908 -+	       char *str, int opindex ATTRIBUTE_UNUSED)
 43.5909 -+{
 43.5910 -+  unsigned long regmask;
 43.5911 -+  unsigned long value = 0;
 43.5912 -+  int slot;
 43.5913 -+  char *tail;
 43.5914 -+
 43.5915 -+  regmask = avr32_parse_reglist(str, &tail);
 43.5916 -+  if (*tail)
 43.5917 -+    as_bad(_("invalid register list `%s'"), str);
 43.5918 -+  else
 43.5919 -+    {
 43.5920 -+      if (avr32_make_regmask8(regmask, &value))
 43.5921 -+	as_bad(_("register list `%s' doesn't fit"), str);
 43.5922 -+    }
 43.5923 -+
 43.5924 -+  slot = current_insn.next_slot++;
 43.5925 -+  current_insn.field_value[slot].value = value;
 43.5926 -+}
 43.5927 -+
 43.5928 -+static int
 43.5929 -+parse_reglist_tail(char *str, unsigned long regmask)
 43.5930 -+{
 43.5931 -+  expressionS exp;
 43.5932 -+  char *save, *p, c;
 43.5933 -+  int regid;
 43.5934 -+
 43.5935 -+  for (p = str + 1; *p; p++)
 43.5936 -+    if (*p == '=')
 43.5937 -+      break;
 43.5938 -+
 43.5939 -+  if (!*p)
 43.5940 -+    {
 43.5941 -+      as_bad(_("invalid register list `%s'"), str);
 43.5942 -+      return -2;
 43.5943 -+    }
 43.5944 -+
 43.5945 -+  c = *p, *p = 0;
 43.5946 -+  regid = avr32_parse_intreg(str);
 43.5947 -+  *p = c;
 43.5948 -+
 43.5949 -+  if (regid != 12)
 43.5950 -+    {
 43.5951 -+      as_bad(_("invalid register list `%s'"), str);
 43.5952 -+      return -2;
 43.5953 -+    }
 43.5954 -+
 43.5955 -+  /* If we have an assignment, we must pop PC and we must _not_
 43.5956 -+     pop LR or R12 */
 43.5957 -+  if (!(regmask & (1 << AVR32_REG_PC)))
 43.5958 -+    {
 43.5959 -+      as_bad(_("return value specified for non-return instruction"));
 43.5960 -+      return -2;
 43.5961 -+    }
 43.5962 -+  else if (regmask & ((1 << AVR32_REG_R12) | (1 << AVR32_REG_LR)))
 43.5963 -+    {
 43.5964 -+      as_bad(_("can't pop LR or R12 when specifying return value"));
 43.5965 -+      return -2;
 43.5966 -+    }
 43.5967 -+
 43.5968 -+  save = input_line_pointer;
 43.5969 -+  input_line_pointer = p + 1;
 43.5970 -+  expression(&exp);
 43.5971 -+  input_line_pointer = save;
 43.5972 -+
 43.5973 -+  if (exp.X_op != O_constant
 43.5974 -+      || exp.X_add_number < -1
 43.5975 -+      || exp.X_add_number > 1)
 43.5976 -+    {
 43.5977 -+      as_bad(_("invalid return value `%s'"), str);
 43.5978 -+      return -2;
 43.5979 -+    }
 43.5980 -+
 43.5981 -+  return exp.X_add_number;
 43.5982 -+}
 43.5983 -+
 43.5984 -+static void
 43.5985 -+parse_reglist9(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 43.5986 -+	       char *str, int opindex ATTRIBUTE_UNUSED)
 43.5987 -+{
 43.5988 -+  unsigned long regmask;
 43.5989 -+  unsigned long value = 0, kbit = 0;
 43.5990 -+  int slot;
 43.5991 -+  char *tail;
 43.5992 -+
 43.5993 -+  regmask = avr32_parse_reglist(str, &tail);
 43.5994 -+  /* printf("parsed reglist16: %04lx, tail: `%s'\n", regmask, tail); */
 43.5995 -+  if (*tail)
 43.5996 -+    {
 43.5997 -+      int retval;
 43.5998 -+
 43.5999 -+      retval = parse_reglist_tail(tail, regmask);
 43.6000 -+
 43.6001 -+      switch (retval)
 43.6002 -+	{
 43.6003 -+	case -1:
 43.6004 -+	  regmask |= 1 << AVR32_REG_LR;
 43.6005 -+	  break;
 43.6006 -+	case 0:
 43.6007 -+	  break;
 43.6008 -+	case 1:
 43.6009 -+	  regmask |= 1 << AVR32_REG_R12;
 43.6010 -+	  break;
 43.6011 -+	default:
 43.6012 -+	  break;
 43.6013 -+	}
 43.6014 -+
 43.6015 -+      kbit = 1;
 43.6016 -+    }
 43.6017 -+
 43.6018 -+  if (avr32_make_regmask8(regmask, &value))
 43.6019 -+    as_bad(_("register list `%s' doesn't fit"), str);
 43.6020 -+
 43.6021 -+
 43.6022 -+  slot = current_insn.next_slot++;
 43.6023 -+  current_insn.field_value[slot].value = (value << 1) | kbit;
 43.6024 -+}
 43.6025 -+
 43.6026 -+static void
 43.6027 -+parse_reglist16(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 43.6028 -+		char *str, int opindex ATTRIBUTE_UNUSED)
 43.6029 -+{
 43.6030 -+  unsigned long regmask;
 43.6031 -+  int slot;
 43.6032 -+  char *tail;
 43.6033 -+
 43.6034 -+  regmask = avr32_parse_reglist(str, &tail);
 43.6035 -+  if (*tail)
 43.6036 -+    as_bad(_("invalid register list `%s'"), str);
 43.6037 -+
 43.6038 -+  slot = current_insn.next_slot++;
 43.6039 -+  current_insn.field_value[slot].value = regmask;
 43.6040 -+}
 43.6041 -+
 43.6042 -+static void
 43.6043 -+parse_reglist_ldm(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 43.6044 -+		  char *str, int opindex ATTRIBUTE_UNUSED)
 43.6045 -+{
 43.6046 -+  unsigned long regmask;
 43.6047 -+  int slot, rp, w_bit = 0;
 43.6048 -+  char *tail, *p, c;
 43.6049 -+
 43.6050 -+  for (p = str; *p && *p != ','; p++)
 43.6051 -+    if (*p == '+')
 43.6052 -+      break;
 43.6053 -+
 43.6054 -+  c = *p, *p = 0;
 43.6055 -+  rp = avr32_parse_intreg(str);
 43.6056 -+  *p = c;
 43.6057 -+  if (rp < 0)
 43.6058 -+    {
 43.6059 -+      as_bad(_("invalid destination register in `%s'"), str);
 43.6060 -+      return;
 43.6061 -+    }
 43.6062 -+
 43.6063 -+  if (p[0] == '+' && p[1] == '+')
 43.6064 -+    {
 43.6065 -+      w_bit = 1;
 43.6066 -+      p += 2;
 43.6067 -+    }
 43.6068 -+
 43.6069 -+  if (*p != ',')
 43.6070 -+    {
 43.6071 -+      as_bad(_("expected `,' after destination register in `%s'"), str);
 43.6072 -+      return;
 43.6073 -+    }
 43.6074 -+
 43.6075 -+  str = p + 1;
 43.6076 -+  regmask = avr32_parse_reglist(str, &tail);
 43.6077 -+  if (*tail)
 43.6078 -+    {
 43.6079 -+      int retval;
 43.6080 -+
 43.6081 -+      if (rp != AVR32_REG_SP)
 43.6082 -+	{
 43.6083 -+	  as_bad(_("junk at end of line: `%s'"), tail);
 43.6084 -+	  return;
 43.6085 -+	}
 43.6086 -+
 43.6087 -+      rp = AVR32_REG_PC;
 43.6088 -+
 43.6089 -+      retval = parse_reglist_tail(tail, regmask);
 43.6090 -+
 43.6091 -+      switch (retval)
 43.6092 -+	{
 43.6093 -+	case -1:
 43.6094 -+	  regmask |= 1 << AVR32_REG_LR;
 43.6095 -+	  break;
 43.6096 -+	case 0:
 43.6097 -+	  break;
 43.6098 -+	case 1:
 43.6099 -+	  regmask |= 1 << AVR32_REG_R12;
 43.6100 -+	  break;
 43.6101 -+	default:
 43.6102 -+	  return;
 43.6103 -+	}
 43.6104 -+    }
 43.6105 -+
 43.6106 -+  slot = current_insn.next_slot++;
 43.6107 -+  current_insn.field_value[slot].value = rp;
 43.6108 -+  slot = current_insn.next_slot++;
 43.6109 -+  current_insn.field_value[slot].value = w_bit;
 43.6110 -+  slot = current_insn.next_slot++;
 43.6111 -+  current_insn.field_value[slot].value = regmask;
 43.6112 -+}
 43.6113 -+
 43.6114 -+static void
 43.6115 -+parse_reglist_cp8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 43.6116 -+		  char *str, int opindex ATTRIBUTE_UNUSED)
 43.6117 -+{
 43.6118 -+  unsigned long regmask;
 43.6119 -+  int slot, h_bit = 0;
 43.6120 -+  char *tail;
 43.6121 -+
 43.6122 -+  regmask = avr32_parse_cpreglist(str, &tail);
 43.6123 -+  if (*tail)
 43.6124 -+    as_bad(_("junk at end of line: `%s'"), tail);
 43.6125 -+  else if (regmask & 0xffUL)
 43.6126 -+    {
 43.6127 -+      if (regmask & 0xff00UL)
 43.6128 -+	as_bad(_("register list `%s' doesn't fit"), str);
 43.6129 -+      regmask &= 0xff;
 43.6130 -+    }
 43.6131 -+  else if (regmask & 0xff00UL)
 43.6132 -+    {
 43.6133 -+      regmask >>= 8;
 43.6134 -+      h_bit = 1;
 43.6135 -+    }
 43.6136 -+  else
 43.6137 -+    as_warn(_("register list is empty"));
 43.6138 -+
 43.6139 -+  slot = current_insn.next_slot++;
 43.6140 -+  current_insn.field_value[slot].value = regmask;
 43.6141 -+  slot = current_insn.next_slot++;
 43.6142 -+  current_insn.field_value[slot].value = h_bit;
 43.6143 -+}
 43.6144 -+
 43.6145 -+static void
 43.6146 -+parse_reglist_cpd8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 43.6147 -+		   char *str, int opindex ATTRIBUTE_UNUSED)
 43.6148 -+{
 43.6149 -+  unsigned long regmask, regmask_d = 0;
 43.6150 -+  int slot, i;
 43.6151 -+  char *tail;
 43.6152 -+
 43.6153 -+  regmask = avr32_parse_cpreglist(str, &tail);
 43.6154 -+  if (*tail)
 43.6155 -+    as_bad(_("junk at end of line: `%s'"), tail);
 43.6156 -+
 43.6157 -+  for (i = 0; i < 8; i++)
 43.6158 -+    {
 43.6159 -+      if (regmask & 1)
 43.6160 -+	{
 43.6161 -+	  if (!(regmask & 2))
 43.6162 -+	    {
 43.6163 -+	      as_bad(_("register list `%s' doesn't fit"), str);
 43.6164 -+	      break;
 43.6165 -+	    }
 43.6166 -+	  regmask_d |= 1 << i;
 43.6167 -+	}
 43.6168 -+      else if (regmask & 2)
 43.6169 -+	{
 43.6170 -+	  as_bad(_("register list `%s' doesn't fit"), str);
 43.6171 -+	  break;
 43.6172 -+	}
 43.6173 -+
 43.6174 -+      regmask >>= 2;
 43.6175 -+    }
 43.6176 -+
 43.6177 -+  slot = current_insn.next_slot++;
 43.6178 -+  current_insn.field_value[slot].value = regmask_d;
 43.6179 -+}
 43.6180 -+
 43.6181 -+static void
 43.6182 -+parse_retval(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 43.6183 -+	     char *str, int opindex ATTRIBUTE_UNUSED)
 43.6184 -+{
 43.6185 -+  int regid, slot;
 43.6186 -+
 43.6187 -+  regid = avr32_parse_intreg(str);
 43.6188 -+  if (regid < 0)
 43.6189 -+    {
 43.6190 -+      expressionS exp;
 43.6191 -+      char *save;
 43.6192 -+
 43.6193 -+      regid = 0;
 43.6194 -+
 43.6195 -+      save = input_line_pointer;
 43.6196 -+      input_line_pointer = str;
 43.6197 -+      expression(&exp);
 43.6198 -+      input_line_pointer = save;
 43.6199 -+
 43.6200 -+      if (exp.X_op != O_constant)
 43.6201 -+	as_bad(_("invalid return value `%s'"), str);
 43.6202 -+      else
 43.6203 -+	switch (exp.X_add_number)
 43.6204 -+	  {
 43.6205 -+	  case -1:
 43.6206 -+	    regid = AVR32_REG_LR;
 43.6207 -+	    break;
 43.6208 -+	  case 0:
 43.6209 -+	    regid = AVR32_REG_SP;
 43.6210 -+	    break;
 43.6211 -+	  case 1:
 43.6212 -+	    regid = AVR32_REG_PC;
 43.6213 -+	    break;
 43.6214 -+	  default:
 43.6215 -+	    as_bad(_("invalid return value `%s'"), str);
 43.6216 -+	    break;
 43.6217 -+	  }
 43.6218 -+    }
 43.6219 -+
 43.6220 -+  slot = current_insn.next_slot++;
 43.6221 -+  current_insn.field_value[slot].value = regid;
 43.6222 -+}
 43.6223 -+
 43.6224 -+#define parse_mcall parse_intreg_disp
 43.6225 -+
 43.6226 -+static void
 43.6227 -+parse_jospinc(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 43.6228 -+	      char *str, int opindex ATTRIBUTE_UNUSED)
 43.6229 -+{
 43.6230 -+  expressionS exp;
 43.6231 -+  int slot;
 43.6232 -+  char *save;
 43.6233 -+
 43.6234 -+  save = input_line_pointer;
 43.6235 -+  input_line_pointer = str;
 43.6236 -+  expression(&exp);
 43.6237 -+  input_line_pointer = save;
 43.6238 -+
 43.6239 -+  slot = current_insn.next_slot++;
 43.6240 -+
 43.6241 -+  if (exp.X_op == O_constant)
 43.6242 -+    {
 43.6243 -+      if (exp.X_add_number > 0)
 43.6244 -+	exp.X_add_number--;
 43.6245 -+      current_insn.field_value[slot].value = exp.X_add_number;
 43.6246 -+    }
 43.6247 -+  else
 43.6248 -+    as_bad(_("invalid numeric expression `%s'"), str);
 43.6249 -+}
 43.6250 -+
 43.6251 -+#define parse_coh		parse_nothing
 43.6252 -+
 43.6253 -+static void
 43.6254 -+parse_fpreg(const struct avr32_operand *op,
 43.6255 -+	    char *str, int opindex ATTRIBUTE_UNUSED)
 43.6256 -+{
 43.6257 -+  unsigned long regid;
 43.6258 -+  int slot;
 43.6259 -+
 43.6260 -+  regid = strtoul(str + 2, NULL, 10);
 43.6261 -+
 43.6262 -+  if ((regid >= 16) || (regid & ((1 << op->align_order) - 1)))
 43.6263 -+    as_bad(_("invalid floating-point register `%s'"), str);
 43.6264 -+
 43.6265 -+  slot = current_insn.next_slot++;
 43.6266 -+  current_insn.field_value[slot].value = regid;
 43.6267 -+  current_insn.field_value[slot].align_order = op->align_order;
 43.6268 -+}
 43.6269 -+
 43.6270 -+static void
 43.6271 -+parse_picoreg(const struct avr32_operand *op,
 43.6272 -+	      char *str, int opindex ATTRIBUTE_UNUSED)
 43.6273 -+{
 43.6274 -+  unsigned long regid;
 43.6275 -+  int slot;
 43.6276 -+
 43.6277 -+  regid = avr32_parse_picoreg(str);
 43.6278 -+  if (regid & ((1 << op->align_order) - 1))
 43.6279 -+    as_bad(_("invalid double-word PiCo register `%s'"), str);
 43.6280 -+
 43.6281 -+  slot = current_insn.next_slot++;
 43.6282 -+  current_insn.field_value[slot].value = regid;
 43.6283 -+  current_insn.field_value[slot].align_order = op->align_order;
 43.6284 -+}
 43.6285 -+
 43.6286 -+static void
 43.6287 -+parse_pico_reglist_w(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 43.6288 -+		     char *str, int opindex ATTRIBUTE_UNUSED)
 43.6289 -+{
 43.6290 -+  unsigned long regmask;
 43.6291 -+  int slot, h_bit = 0;
 43.6292 -+  char *tail;
 43.6293 -+
 43.6294 -+  regmask = avr32_parse_pico_reglist(str, &tail);
 43.6295 -+  if (*tail)
 43.6296 -+    as_bad(_("junk at end of line: `%s'"), tail);
 43.6297 -+
 43.6298 -+  if (regmask & 0x00ffUL)
 43.6299 -+    {
 43.6300 -+      if (regmask & 0xff00UL)
 43.6301 -+	as_bad(_("register list `%s' doesn't fit"), str);
 43.6302 -+      regmask &= 0x00ffUL;
 43.6303 -+    }
 43.6304 -+  else if (regmask & 0xff00UL)
 43.6305 -+    {
 43.6306 -+      regmask >>= 8;
 43.6307 -+      h_bit = 1;
 43.6308 -+    }
 43.6309 -+  else
 43.6310 -+    as_warn(_("register list is empty"));
 43.6311 -+
 43.6312 -+  slot = current_insn.next_slot++;
 43.6313 -+  current_insn.field_value[slot].value = regmask;
 43.6314 -+  slot = current_insn.next_slot++;
 43.6315 -+  current_insn.field_value[slot].value = h_bit;
 43.6316 -+}
 43.6317 -+
 43.6318 -+static void
 43.6319 -+parse_pico_reglist_d(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 43.6320 -+		     char *str, int opindex ATTRIBUTE_UNUSED)
 43.6321 -+{
 43.6322 -+  unsigned long regmask, regmask_d = 0;
 43.6323 -+  int slot, i;
 43.6324 -+  char *tail;
 43.6325 -+
 43.6326 -+  regmask = avr32_parse_pico_reglist(str, &tail);
 43.6327 -+  if (*tail)
 43.6328 -+    as_bad(_("junk at end of line: `%s'"), tail);
 43.6329 -+
 43.6330 -+  for (i = 0; i < 8; i++)
 43.6331 -+    {
 43.6332 -+      if (regmask & 1)
 43.6333 -+	{
 43.6334 -+	  if (!(regmask & 2))
 43.6335 -+	    {
 43.6336 -+	      as_bad(_("register list `%s' doesn't fit"), str);
 43.6337 -+	      break;
 43.6338 -+	    }
 43.6339 -+	  regmask_d |= 1 << i;
 43.6340 -+	}
 43.6341 -+      else if (regmask & 2)
 43.6342 -+	{
 43.6343 -+	  as_bad(_("register list `%s' doesn't fit"), str);
 43.6344 -+	  break;
 43.6345 -+	}
 43.6346 -+
 43.6347 -+      regmask >>= 2;
 43.6348 -+    }
 43.6349 -+
 43.6350 -+  slot = current_insn.next_slot++;
 43.6351 -+  current_insn.field_value[slot].value = regmask_d;
 43.6352 -+}
 43.6353 -+
 43.6354 -+static void
 43.6355 -+parse_pico_in(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 43.6356 -+	      char *str, int opindex ATTRIBUTE_UNUSED)
 43.6357 -+{
 43.6358 -+  unsigned long regid;
 43.6359 -+  int slot;
 43.6360 -+
 43.6361 -+  regid = strtoul(str + 2, NULL, 10);
 43.6362 -+
 43.6363 -+  if (regid >= 12)
 43.6364 -+    as_bad(_("invalid PiCo IN register `%s'"), str);
 43.6365 -+
 43.6366 -+  slot = current_insn.next_slot++;
 43.6367 -+  current_insn.field_value[slot].value = regid;
 43.6368 -+  current_insn.field_value[slot].align_order = 0;
 43.6369 -+}
 43.6370 -+
 43.6371 -+#define parse_pico_out0		parse_nothing
 43.6372 -+#define parse_pico_out1		parse_nothing
 43.6373 -+#define parse_pico_out2		parse_nothing
 43.6374 -+#define parse_pico_out3		parse_nothing
 43.6375 -+
 43.6376 -+#define OP(name, sgn, pcrel, align, func) \
 43.6377 -+  { AVR32_OPERAND_##name, sgn, pcrel, align, match_##func, parse_##func }
 43.6378 -+
 43.6379 -+struct avr32_operand avr32_operand_table[] = {
 43.6380 -+  OP(INTREG, 0, 0, 0, intreg),
 43.6381 -+  OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
 43.6382 -+  OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
 43.6383 -+  OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
 43.6384 -+  OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
 43.6385 -+  OP(INTREG_BSEL, 0, 0, 0, intreg_part),
 43.6386 -+  OP(INTREG_HSEL, 0, 0, 1, intreg_part),
 43.6387 -+  OP(INTREG_SDISP, 1, 0, 0, intreg_disp),
 43.6388 -+  OP(INTREG_SDISP_H, 1, 0, 1, intreg_disp),
 43.6389 -+  OP(INTREG_SDISP_W, 1, 0, 2, intreg_disp),
 43.6390 -+  OP(INTREG_UDISP, 0, 0, 0, intreg_disp),
 43.6391 -+  OP(INTREG_UDISP_H, 0, 0, 1, intreg_disp),
 43.6392 -+  OP(INTREG_UDISP_W, 0, 0, 2, intreg_disp),
 43.6393 -+  OP(INTREG_INDEX, 0, 0, 0, intreg_index),
 43.6394 -+  OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
 43.6395 -+  OP(DWREG, 0, 0, 1, intreg),
 43.6396 -+  OP(PC_UDISP_W, 0, 1, 2, pc_disp),
 43.6397 -+  OP(SP, 0, 0, 0, sp),
 43.6398 -+  OP(SP_UDISP_W, 0, 0, 2, sp_disp),
 43.6399 -+  OP(CPNO, 0, 0, 0, cpno),
 43.6400 -+  OP(CPREG, 0, 0, 0, cpreg),
 43.6401 -+  OP(CPREG_D, 0, 0, 1, cpreg),
 43.6402 -+  OP(UNSIGNED_CONST, 0, 0, 0, const),
 43.6403 -+  OP(UNSIGNED_CONST_W, 0, 0, 2, const),
 43.6404 -+  OP(SIGNED_CONST, 1, 0, 0, const),
 43.6405 -+  OP(SIGNED_CONST_W, 1, 0, 2, const),
 43.6406 -+  OP(JMPLABEL, 1, 1, 1, jmplabel),
 43.6407 -+  OP(UNSIGNED_NUMBER, 0, 0, 0, number),
 43.6408 -+  OP(UNSIGNED_NUMBER_W, 0, 0, 2, number),
 43.6409 -+  OP(REGLIST8, 0, 0, 0, reglist8),
 43.6410 -+  OP(REGLIST9, 0, 0, 0, reglist9),
 43.6411 -+  OP(REGLIST16, 0, 0, 0, reglist16),
 43.6412 -+  OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
 43.6413 -+  OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
 43.6414 -+  OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
 43.6415 -+  OP(RETVAL, 0, 0, 0, retval),
 43.6416 -+  OP(MCALL, 1, 0, 2, mcall),
 43.6417 -+  OP(JOSPINC, 0, 0, 0, jospinc),
 43.6418 -+  OP(COH, 0, 0, 0, coh),
 43.6419 -+  OP(FPREG_S, 0, 0, 0, fpreg),
 43.6420 -+  OP(FPREG_D, 0, 0, 1, fpreg),
 43.6421 -+  OP(PICO_REG_W, 0, 0, 0, picoreg),
 43.6422 -+  OP(PICO_REG_D, 0, 0, 1, picoreg),
 43.6423 -+  OP(PICO_REGLIST_W, 0, 0, 0, pico_reglist_w),
 43.6424 -+  OP(PICO_REGLIST_D, 0, 0, 0, pico_reglist_d),
 43.6425 -+  OP(PICO_IN, 0, 0, 0, pico_in),
 43.6426 -+  OP(PICO_OUT0, 0, 0, 0, pico_out0),
 43.6427 -+  OP(PICO_OUT1, 0, 0, 0, pico_out1),
 43.6428 -+  OP(PICO_OUT2, 0, 0, 0, pico_out2),
 43.6429 -+  OP(PICO_OUT3, 0, 0, 0, pico_out3),
 43.6430 -+};
 43.6431 -+
 43.6432 -+symbolS *
 43.6433 -+md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
 43.6434 -+{
 43.6435 -+  pr_debug("md_undefined_symbol: %s\n", name);
 43.6436 -+  return 0;
 43.6437 -+}
 43.6438 -+
 43.6439 -+struct avr32_relax_type
 43.6440 -+{
 43.6441 -+  long lower_bound;
 43.6442 -+  long upper_bound;
 43.6443 -+  unsigned char align;
 43.6444 -+  unsigned char length;
 43.6445 -+  signed short next;
 43.6446 -+};
 43.6447 -+
 43.6448 -+#define EMPTY { 0, 0, 0, 0, -1 }
 43.6449 -+#define C(lower, upper, align, next)			\
 43.6450 -+  { (lower), (upper), (align), 2, AVR32_OPC_##next }
 43.6451 -+#define E(lower, upper, align)				\
 43.6452 -+  { (lower), (upper), (align), 4, -1 }
 43.6453 -+
 43.6454 -+static const struct avr32_relax_type avr32_relax_table[] =
 43.6455 -+  {
 43.6456 -+    /* 0 */
 43.6457 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6458 -+    EMPTY, EMPTY, EMPTY,
 43.6459 -+    E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0),
 43.6460 -+    EMPTY,
 43.6461 -+    /* 16 */
 43.6462 -+    EMPTY, EMPTY, EMPTY, EMPTY,
 43.6463 -+
 43.6464 -+    C(-256, 254, 1, BREQ2), C(-256, 254, 1, BRNE2),
 43.6465 -+    C(-256, 254, 1, BRCC2), C(-256, 254, 1, BRCS2),
 43.6466 -+    C(-256, 254, 1, BRGE2), C(-256, 254, 1, BRLT2),
 43.6467 -+    C(-256, 254, 1, BRMI2), C(-256, 254, 1, BRPL2),
 43.6468 -+    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
 43.6469 -+    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
 43.6470 -+    /* 32 */
 43.6471 -+    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
 43.6472 -+    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
 43.6473 -+    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
 43.6474 -+    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
 43.6475 -+    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
 43.6476 -+    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
 43.6477 -+
 43.6478 -+    EMPTY, EMPTY, EMPTY, EMPTY,
 43.6479 -+    /* 48 */
 43.6480 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6481 -+    EMPTY, EMPTY, EMPTY,
 43.6482 -+
 43.6483 -+    C(-32, 31, 0, CP_W3), E(-1048576, 1048575, 0),
 43.6484 -+
 43.6485 -+    EMPTY, EMPTY, EMPTY,
 43.6486 -+    /* 64: csrfcz */
 43.6487 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6488 -+    E(0, 65535, 0), E(0, 65535, 0),
 43.6489 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6490 -+    E(-32768, 32767, 0),
 43.6491 -+    /* 80: LD_SB2 */
 43.6492 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6493 -+
 43.6494 -+    C(0, 7, 0, LD_UB4), E(-32768, 32767, 0),
 43.6495 -+
 43.6496 -+    EMPTY,
 43.6497 -+    EMPTY, EMPTY,
 43.6498 -+
 43.6499 -+    C(0, 14, 1, LD_SH4), E(-32768, 32767, 0),
 43.6500 -+
 43.6501 -+    EMPTY, EMPTY, EMPTY,
 43.6502 -+
 43.6503 -+    C(0, 14, 1, LD_UH4),
 43.6504 -+
 43.6505 -+    /* 96: LD_UH4 */
 43.6506 -+    E(-32768, 32767, 0),
 43.6507 -+
 43.6508 -+    EMPTY, EMPTY, EMPTY, EMPTY,
 43.6509 -+
 43.6510 -+    C(0, 124, 2, LD_W4), E(-32768, 32767, 0),
 43.6511 -+
 43.6512 -+    E(0, 1020, 2),	/* LDC_D1 */
 43.6513 -+    EMPTY, EMPTY,
 43.6514 -+    E(0, 1020, 2),	/* LDC_W1 */
 43.6515 -+    EMPTY, EMPTY,
 43.6516 -+    E(0, 16380, 2),	/* LDC0_D */
 43.6517 -+    E(0, 16380, 2),	/* LDC0_W */
 43.6518 -+    EMPTY,
 43.6519 -+
 43.6520 -+    /* 112: LDCM_D_PU */
 43.6521 -+    EMPTY, EMPTY, EMPTY,
 43.6522 -+
 43.6523 -+    C(0, 508, 2, LDDPC_EXT), E(-32768, 32767, 0),
 43.6524 -+
 43.6525 -+    EMPTY,EMPTY, EMPTY,
 43.6526 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6527 -+
 43.6528 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6529 -+    /* 134: MACHH_W */
 43.6530 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6531 -+    E(-131072, 131068, 2),	/* MCALL */
 43.6532 -+    E(0, 1020, 2),		/* MFDR */
 43.6533 -+    E(0, 1020, 2),		/* MFSR */
 43.6534 -+    EMPTY, EMPTY,
 43.6535 -+
 43.6536 -+    C(-128, 127, 0, MOV2), E(-1048576, 1048575, 0),
 43.6537 -+
 43.6538 -+    EMPTY, EMPTY, EMPTY,
 43.6539 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6540 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6541 -+
 43.6542 -+    E(-128, 127, 0),		/* MOVEQ2 */
 43.6543 -+    E(-128, 127, 0),		/* MOVNE2 */
 43.6544 -+    E(-128, 127, 0),		/* MOVCC2 */
 43.6545 -+    E(-128, 127, 0),		/* 166: MOVCS2 */
 43.6546 -+    E(-128, 127, 0),		/* MOVGE2 */
 43.6547 -+    E(-128, 127, 0),		/* MOVLT2 */
 43.6548 -+    E(-128, 127, 0),		/* MOVMI2 */
 43.6549 -+    E(-128, 127, 0),		/* MOVPL2 */
 43.6550 -+    E(-128, 127, 0),		/* MOVLS2 */
 43.6551 -+    E(-128, 127, 0),		/* MOVGT2 */
 43.6552 -+    E(-128, 127, 0),		/* MOVLE2 */
 43.6553 -+    E(-128, 127, 0),		/* MOVHI2 */
 43.6554 -+    E(-128, 127, 0),		/* MOVVS2 */
 43.6555 -+    E(-128, 127, 0),		/* MOVVC2 */
 43.6556 -+    E(-128, 127, 0),		/* MOVQS2 */
 43.6557 -+    E(-128, 127, 0),		/* MOVAL2 */
 43.6558 -+
 43.6559 -+    E(0, 1020, 2),		/* MTDR */
 43.6560 -+    E(0, 1020, 2),		/* MTSR */
 43.6561 -+    EMPTY,
 43.6562 -+    EMPTY,
 43.6563 -+    E(-128, 127, 0),		/* MUL3 */
 43.6564 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6565 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6566 -+    /* 198: MVCR_W */
 43.6567 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6568 -+    E(0, 65535, 0), E(0, 65535, 0),
 43.6569 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6570 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6571 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6572 -+    /* 230: PASR_H */
 43.6573 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6574 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6575 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6576 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6577 -+    /* 262: PUNPCKSB_H */
 43.6578 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6579 -+
 43.6580 -+    C(-1024, 1022, 1, RCALL2), E(-2097152, 2097150, 1),
 43.6581 -+
 43.6582 -+    EMPTY,
 43.6583 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6584 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6585 -+    EMPTY, EMPTY, EMPTY,
 43.6586 -+
 43.6587 -+    C(-1024, 1022, 1, BRAL),
 43.6588 -+
 43.6589 -+    EMPTY, EMPTY, EMPTY,
 43.6590 -+    E(-128, 127, 0),		/* RSUB2 */
 43.6591 -+    /* 294: SATADD_H */
 43.6592 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6593 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6594 -+    E(0, 255, 0),		/* SLEEP */
 43.6595 -+    EMPTY, EMPTY,
 43.6596 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6597 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6598 -+    /* 326: ST_B2 */
 43.6599 -+    EMPTY, EMPTY,
 43.6600 -+    C(0, 7, 0, ST_B4), E(-32768, 32767, 0),
 43.6601 -+    EMPTY, EMPTY, EMPTY, EMPTY,
 43.6602 -+    E(-32768, 32767, 0),
 43.6603 -+    EMPTY, EMPTY, EMPTY,
 43.6604 -+    C(0, 14, 1, ST_H4), E(-32768, 32767, 0),
 43.6605 -+    EMPTY, EMPTY,
 43.6606 -+    EMPTY,
 43.6607 -+    C(0, 60, 2, ST_W4), E(-32768, 32767, 0),
 43.6608 -+    E(0, 1020, 2),	/* STC_D1 */
 43.6609 -+    EMPTY, EMPTY,
 43.6610 -+    E(0, 1020, 2),	/* STC_W1 */
 43.6611 -+    EMPTY, EMPTY,
 43.6612 -+    E(0, 16380, 2),	/* STC0_D */
 43.6613 -+    E(0, 16380, 2),	/* STC0_W */
 43.6614 -+
 43.6615 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6616 -+    /* 358: STDSP */
 43.6617 -+    EMPTY, EMPTY,
 43.6618 -+    E(0, 1020, 2),	/* STHH_W1 */
 43.6619 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6620 -+    EMPTY, EMPTY, EMPTY,
 43.6621 -+    E(-32768, 32767, 0),
 43.6622 -+    C(-512, 508, 2, SUB4),
 43.6623 -+    C(-128, 127, 0, SUB4), E(-1048576, 1048576, 0),
 43.6624 -+    /* SUB{cond} */
 43.6625 -+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 43.6626 -+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 43.6627 -+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 43.6628 -+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 43.6629 -+    /* SUBF{cond} */
 43.6630 -+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 43.6631 -+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 43.6632 -+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 43.6633 -+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 43.6634 -+    EMPTY,
 43.6635 -+
 43.6636 -+    /* 406: SWAP_B */
 43.6637 -+    EMPTY, EMPTY, EMPTY,
 43.6638 -+    E(0, 255, 0),	/* SYNC */
 43.6639 -+    EMPTY, EMPTY, EMPTY, EMPTY,
 43.6640 -+    /* 414: TST */
 43.6641 -+    EMPTY, EMPTY, E(-65536, 65535, 2), E(-65536, 65535, 2), E(-65536, 65535, 2), EMPTY, EMPTY, EMPTY,
 43.6642 -+    /* 422: RSUB{cond} */
 43.6643 -+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 43.6644 -+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 43.6645 -+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 43.6646 -+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 43.6647 -+    /* 436: ADD{cond} */
 43.6648 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6649 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6650 -+    /* 454: SUB{cond} */
 43.6651 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6652 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6653 -+    /* 472: AND{cond} */
 43.6654 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6655 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6656 -+    /* 486: OR{cond} */
 43.6657 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6658 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6659 -+    /* 502: EOR{cond} */
 43.6660 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6661 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6662 -+    /* 518: LD.w{cond} */
 43.6663 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6664 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6665 -+    /* 534: LD.sh{cond} */
 43.6666 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6667 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6668 -+    /* 550: LD.uh{cond} */
 43.6669 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6670 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6671 -+    /* 566: LD.sb{cond} */
 43.6672 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6673 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6674 -+    /* 582: LD.ub{cond} */
 43.6675 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6676 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6677 -+    /* 596: ST.w{cond} */
 43.6678 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6679 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6680 -+    /* 614: ST.h{cond} */
 43.6681 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6682 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6683 -+    /* 630: ST.b{cond} */
 43.6684 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6685 -+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 43.6686 -+    /* 646: movh */
 43.6687 -+    E(0, 65535, 0)
 43.6688 -+  };
 43.6689 -+
 43.6690 -+#undef E
 43.6691 -+#undef C
 43.6692 -+#undef EMPTY
 43.6693 -+
 43.6694 -+#define AVR32_RS_NONE (-1)
 43.6695 -+
 43.6696 -+#define avr32_rs_size(state) (avr32_relax_table[(state)].length)
 43.6697 -+#define avr32_rs_align(state) (avr32_relax_table[(state)].align)
 43.6698 -+#define relax_more(state) (avr32_relax_table[(state)].next)
 43.6699 -+
 43.6700 -+#define opc_initial_substate(opc) ((opc)->id)
 43.6701 -+
 43.6702 -+static int need_relax(int subtype, offsetT distance)
 43.6703 -+{
 43.6704 -+  offsetT upper_bound, lower_bound;
 43.6705 -+
 43.6706 -+  upper_bound = avr32_relax_table[subtype].upper_bound;
 43.6707 -+  lower_bound = avr32_relax_table[subtype].lower_bound;
 43.6708 -+
 43.6709 -+  if (distance & ((1 << avr32_rs_align(subtype)) - 1))
 43.6710 -+    return 1;
 43.6711 -+  if ((distance > upper_bound) || (distance < lower_bound))
 43.6712 -+    return 1;
 43.6713 -+
 43.6714 -+  return 0;
 43.6715 -+}
 43.6716 -+
 43.6717 -+enum {
 43.6718 -+  LDA_SUBTYPE_MOV1,
 43.6719 -+  LDA_SUBTYPE_MOV2,
 43.6720 -+  LDA_SUBTYPE_SUB,
 43.6721 -+  LDA_SUBTYPE_LDDPC,
 43.6722 -+  LDA_SUBTYPE_LDW,
 43.6723 -+  LDA_SUBTYPE_GOTLOAD,
 43.6724 -+  LDA_SUBTYPE_GOTLOAD_LARGE,
 43.6725 -+};
 43.6726 -+
 43.6727 -+enum {
 43.6728 -+  CALL_SUBTYPE_RCALL1,
 43.6729 -+  CALL_SUBTYPE_RCALL2,
 43.6730 -+  CALL_SUBTYPE_MCALL_CP,
 43.6731 -+  CALL_SUBTYPE_MCALL_GOT,
 43.6732 -+  CALL_SUBTYPE_MCALL_LARGE,
 43.6733 -+};
 43.6734 -+
 43.6735 -+#define LDA_INITIAL_SIZE	(avr32_pic ? 4 : 2)
 43.6736 -+#define CALL_INITIAL_SIZE	2
 43.6737 -+
 43.6738 -+#define need_reloc(sym, seg, pcrel)					\
 43.6739 -+  (!(S_IS_DEFINED(sym)							\
 43.6740 -+     && ((pcrel && S_GET_SEGMENT(sym) == seg)				\
 43.6741 -+	 || (!pcrel && S_GET_SEGMENT(sym) == absolute_section)))	\
 43.6742 -+   || S_FORCE_RELOC(sym, 1))
 43.6743 -+
 43.6744 -+/* Return an initial guess of the length by which a fragment must grow to
 43.6745 -+   hold a branch to reach its destination.
 43.6746 -+   Also updates fr_type/fr_subtype as necessary.
 43.6747 -+
 43.6748 -+   Called just before doing relaxation.
 43.6749 -+   Any symbol that is now undefined will not become defined.
 43.6750 -+   The guess for fr_var is ACTUALLY the growth beyond fr_fix.
 43.6751 -+   Whatever we do to grow fr_fix or fr_var contributes to our returned value.
 43.6752 -+   Although it may not be explicit in the frag, pretend fr_var starts with a
 43.6753 -+   0 value.  */
 43.6754 -+
 43.6755 -+static int
 43.6756 -+avr32_default_estimate_size_before_relax (fragS *fragP, segT segment)
 43.6757 -+{
 43.6758 -+  int growth = 0;
 43.6759 -+
 43.6760 -+  assert(fragP);
 43.6761 -+  assert(fragP->fr_symbol);
 43.6762 -+
 43.6763 -+  if (fragP->tc_frag_data.force_extended
 43.6764 -+      || need_reloc(fragP->fr_symbol, segment, fragP->tc_frag_data.pcrel))
 43.6765 -+    {
 43.6766 -+      int largest_state = fragP->fr_subtype;
 43.6767 -+      while (relax_more(largest_state) != AVR32_RS_NONE)
 43.6768 -+	largest_state = relax_more(largest_state);
 43.6769 -+      growth = avr32_rs_size(largest_state) - fragP->fr_var;
 43.6770 -+    }
 43.6771 -+  else
 43.6772 -+    {
 43.6773 -+      growth = avr32_rs_size(fragP->fr_subtype) - fragP->fr_var;
 43.6774 -+    }
 43.6775 -+
 43.6776 -+  pr_debug("%s:%d: md_estimate_size_before_relax: %d\n",
 43.6777 -+	   fragP->fr_file, fragP->fr_line, growth);
 43.6778 -+
 43.6779 -+  return growth;
 43.6780 -+}
 43.6781 -+
 43.6782 -+static int
 43.6783 -+avr32_lda_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
 43.6784 -+{
 43.6785 -+  return fragP->fr_var - LDA_INITIAL_SIZE;
 43.6786 -+}
 43.6787 -+
 43.6788 -+static int
 43.6789 -+avr32_call_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
 43.6790 -+{
 43.6791 -+  return fragP->fr_var - CALL_INITIAL_SIZE;
 43.6792 -+}
 43.6793 -+
 43.6794 -+static int
 43.6795 -+avr32_cpool_estimate_size_before_relax(fragS *fragP,
 43.6796 -+				       segT segment ATTRIBUTE_UNUSED)
 43.6797 -+{
 43.6798 -+  return fragP->fr_var;
 43.6799 -+}
 43.6800 -+
 43.6801 -+/* This macro may be defined to relax a frag. GAS will call this with the
 43.6802 -+ * segment, the frag, and the change in size of all previous frags;
 43.6803 -+ * md_relax_frag should return the change in size of the frag. */
 43.6804 -+static long
 43.6805 -+avr32_default_relax_frag (segT segment, fragS *fragP, long stretch)
 43.6806 -+{
 43.6807 -+  int state, next_state;
 43.6808 -+  symbolS *symbolP;	/* The target symbol */
 43.6809 -+  long growth = 0;
 43.6810 -+
 43.6811 -+  state = next_state = fragP->fr_subtype;
 43.6812 -+
 43.6813 -+  symbolP = fragP->fr_symbol;
 43.6814 -+
 43.6815 -+  if (fragP->tc_frag_data.force_extended
 43.6816 -+      || need_reloc(symbolP, segment, fragP->tc_frag_data.pcrel))
 43.6817 -+    {
 43.6818 -+      /* Symbol must be resolved by the linker. Emit the largest
 43.6819 -+	 possible opcode. */
 43.6820 -+      while (relax_more(next_state) != AVR32_RS_NONE)
 43.6821 -+	next_state = relax_more(next_state);
 43.6822 -+    }
 43.6823 -+  else
 43.6824 -+    {
 43.6825 -+      addressT address;	/* The address of fragP */
 43.6826 -+      addressT target;	/* The address of the target symbol */
 43.6827 -+      offsetT distance;	/* The distance between the insn and the symbol */
 43.6828 -+      fragS *sym_frag;
 43.6829 -+
 43.6830 -+      address = fragP->fr_address;
 43.6831 -+      target = fragP->fr_offset;
 43.6832 -+      symbolP = fragP->fr_symbol;
 43.6833 -+      sym_frag = symbol_get_frag(symbolP);
 43.6834 -+
 43.6835 -+      address += fragP->fr_fix - fragP->fr_var;
 43.6836 -+      target += S_GET_VALUE(symbolP);
 43.6837 -+
 43.6838 -+      if (stretch != 0
 43.6839 -+	  && sym_frag->relax_marker != fragP->relax_marker
 43.6840 -+	  && S_GET_SEGMENT(symbolP) == segment)
 43.6841 -+	/* if it was correctly aligned before, make sure it stays aligned */
 43.6842 -+	target += stretch & (~0UL << avr32_rs_align(state));
 43.6843 -+
 43.6844 -+      if (fragP->tc_frag_data.pcrel)
 43.6845 -+	distance = target - (address & (~0UL << avr32_rs_align(state)));
 43.6846 -+      else
 43.6847 -+	distance = target;
 43.6848 -+
 43.6849 -+      pr_debug("%s:%d: relax more? 0x%x - 0x%x = 0x%x (%d), align %d\n",
 43.6850 -+	       fragP->fr_file, fragP->fr_line, target, address,
 43.6851 -+	       distance, distance, avr32_rs_align(state));
 43.6852 -+
 43.6853 -+      if (need_relax(state, distance))
 43.6854 -+	{
 43.6855 -+	  if (relax_more(state) != AVR32_RS_NONE)
 43.6856 -+	    next_state = relax_more(state);
 43.6857 -+	  pr_debug("%s:%d: relax more %d -> %d (%d - %d, align %d)\n",
 43.6858 -+		   fragP->fr_file, fragP->fr_line, state, next_state,
 43.6859 -+		   target, address, avr32_rs_align(state));
 43.6860 -+	}
 43.6861 -+    }
 43.6862 -+
 43.6863 -+  growth = avr32_rs_size(next_state) - avr32_rs_size(state);
 43.6864 -+  fragP->fr_subtype = next_state;
 43.6865 -+
 43.6866 -+  pr_debug("%s:%d: md_relax_frag: growth=%d, subtype=%d, opc=0x%08lx\n",
 43.6867 -+	   fragP->fr_file, fragP->fr_line, growth, fragP->fr_subtype,
 43.6868 -+	   avr32_opc_table[next_state].value);
 43.6869 -+
 43.6870 -+  return growth;
 43.6871 -+}
 43.6872 -+
 43.6873 -+static long
 43.6874 -+avr32_lda_relax_frag(segT segment, fragS *fragP, long stretch)
 43.6875 -+{
 43.6876 -+  struct cpool *pool= NULL;
 43.6877 -+  unsigned int entry = 0;
 43.6878 -+  addressT address, target;
 43.6879 -+  offsetT distance;
 43.6880 -+  symbolS *symbolP;
 43.6881 -+  fragS *sym_frag;
 43.6882 -+  long old_size, new_size;
 43.6883 -+
 43.6884 -+  symbolP = fragP->fr_symbol;
 43.6885 -+  old_size = fragP->fr_var;
 43.6886 -+  if (!avr32_pic)
 43.6887 -+    {
 43.6888 -+      pool = fragP->tc_frag_data.pool;
 43.6889 -+      entry = fragP->tc_frag_data.pool_entry;
 43.6890 -+    }
 43.6891 -+
 43.6892 -+  address = fragP->fr_address;
 43.6893 -+  address += fragP->fr_fix - LDA_INITIAL_SIZE;
 43.6894 -+
 43.6895 -+  if (!S_IS_DEFINED(symbolP) || S_FORCE_RELOC(symbolP, 1))
 43.6896 -+    goto relax_max;
 43.6897 -+
 43.6898 -+  target = fragP->fr_offset;
 43.6899 -+  sym_frag = symbol_get_frag(symbolP);
 43.6900 -+  target += S_GET_VALUE(symbolP);
 43.6901 -+
 43.6902 -+  if (sym_frag->relax_marker != fragP->relax_marker
 43.6903 -+      && S_GET_SEGMENT(symbolP) == segment)
 43.6904 -+    target += stretch;
 43.6905 -+
 43.6906 -+  distance = target - address;
 43.6907 -+
 43.6908 -+  pr_debug("lda_relax_frag: target: %d, address: %d, var: %d\n",
 43.6909 -+	   target, address, fragP->fr_var);
 43.6910 -+
 43.6911 -+  if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
 43.6912 -+      && target <= 127 && (offsetT)target >= -128)
 43.6913 -+    {
 43.6914 -+      if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
 43.6915 -+	  || fragP->fr_subtype == LDA_SUBTYPE_LDW)
 43.6916 -+	pool->literals[entry].refcount--;
 43.6917 -+      new_size = 2;
 43.6918 -+      fragP->fr_subtype = LDA_SUBTYPE_MOV1;
 43.6919 -+    }
 43.6920 -+  else if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
 43.6921 -+	   && target <= 1048575 && (offsetT)target >= -1048576)
 43.6922 -+    {
 43.6923 -+      if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
 43.6924 -+	  || fragP->fr_subtype == LDA_SUBTYPE_LDW)
 43.6925 -+	pool->literals[entry].refcount--;
 43.6926 -+      new_size = 4;
 43.6927 -+      fragP->fr_subtype = LDA_SUBTYPE_MOV2;
 43.6928 -+    }
 43.6929 -+  else if (!linkrelax && S_GET_SEGMENT(symbolP) == segment
 43.6930 -+	   /* the field will be negated, so this is really -(-32768)
 43.6931 -+	      and -(32767) */
 43.6932 -+	   && distance <= 32768 && distance >= -32767)
 43.6933 -+    {
 43.6934 -+      if (!avr32_pic
 43.6935 -+	  && (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
 43.6936 -+	      || fragP->fr_subtype == LDA_SUBTYPE_LDW))
 43.6937 -+	pool->literals[entry].refcount--;
 43.6938 -+      new_size = 4;
 43.6939 -+      fragP->fr_subtype = LDA_SUBTYPE_SUB;
 43.6940 -+    }
 43.6941 -+  else
 43.6942 -+    {
 43.6943 -+    relax_max:
 43.6944 -+      if (avr32_pic)
 43.6945 -+	{
 43.6946 -+	  if (linkrelax)
 43.6947 -+	    {
 43.6948 -+	      new_size = 8;
 43.6949 -+	      fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD_LARGE;
 43.6950 -+	    }
 43.6951 -+	  else
 43.6952 -+	    {
 43.6953 -+	      new_size = 4;
 43.6954 -+	      fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD;
 43.6955 -+	    }
 43.6956 -+	}
 43.6957 -+      else
 43.6958 -+	{
 43.6959 -+	  if (fragP->fr_subtype != LDA_SUBTYPE_LDDPC
 43.6960 -+	      && fragP->fr_subtype != LDA_SUBTYPE_LDW)
 43.6961 -+	    pool->literals[entry].refcount++;
 43.6962 -+
 43.6963 -+	  sym_frag = symbol_get_frag(pool->symbol);
 43.6964 -+	  target = (sym_frag->fr_address + sym_frag->fr_fix
 43.6965 -+		    + pool->padding + pool->literals[entry].offset);
 43.6966 -+
 43.6967 -+	  pr_debug("cpool sym address: 0x%lx\n",
 43.6968 -+		   sym_frag->fr_address + sym_frag->fr_fix);
 43.6969 -+
 43.6970 -+	  know(pool->section == segment);
 43.6971 -+
 43.6972 -+	  if (sym_frag->relax_marker != fragP->relax_marker)
 43.6973 -+	    target += stretch;
 43.6974 -+
 43.6975 -+	  distance = target - address;
 43.6976 -+	  if (distance <= 508 && distance >= 0)
 43.6977 -+	    {
 43.6978 -+	      new_size = 2;
 43.6979 -+	      fragP->fr_subtype = LDA_SUBTYPE_LDDPC;
 43.6980 -+	    }
 43.6981 -+	  else
 43.6982 -+	    {
 43.6983 -+	      new_size = 4;
 43.6984 -+	      fragP->fr_subtype = LDA_SUBTYPE_LDW;
 43.6985 -+	    }
 43.6986 -+
 43.6987 -+	  pr_debug("lda_relax_frag (cpool): target=0x%lx, address=0x%lx, refcount=%d\n",
 43.6988 -+		   target, address, pool->literals[entry].refcount);
 43.6989 -+	}
 43.6990 -+    }
 43.6991 -+
 43.6992 -+  fragP->fr_var = new_size;
 43.6993 -+
 43.6994 -+  pr_debug("%s:%d: lda: relax pass done. subtype: %d, growth: %ld\n",
 43.6995 -+	   fragP->fr_file, fragP->fr_line,
 43.6996 -+	   fragP->fr_subtype, new_size - old_size);
 43.6997 -+
 43.6998 -+  return new_size - old_size;
 43.6999 -+}
 43.7000 -+
 43.7001 -+static long
 43.7002 -+avr32_call_relax_frag(segT segment, fragS *fragP, long stretch)
 43.7003 -+{
 43.7004 -+  struct cpool *pool = NULL;
 43.7005 -+  unsigned int entry = 0;
 43.7006 -+  addressT address, target;
 43.7007 -+  offsetT distance;
 43.7008 -+  symbolS *symbolP;
 43.7009 -+  fragS *sym_frag;
 43.7010 -+  long old_size, new_size;
 43.7011 -+
 43.7012 -+  symbolP = fragP->fr_symbol;
 43.7013 -+  old_size = fragP->fr_var;
 43.7014 -+  if (!avr32_pic)
 43.7015 -+    {
 43.7016 -+      pool = fragP->tc_frag_data.pool;
 43.7017 -+      entry = fragP->tc_frag_data.pool_entry;
 43.7018 -+    }
 43.7019 -+
 43.7020 -+  address = fragP->fr_address;
 43.7021 -+  address += fragP->fr_fix - CALL_INITIAL_SIZE;
 43.7022 -+
 43.7023 -+  if (need_reloc(symbolP, segment, 1))
 43.7024 -+    {
 43.7025 -+      pr_debug("call: must emit reloc\n");
 43.7026 -+      goto relax_max;
 43.7027 -+    }
 43.7028 -+
 43.7029 -+  target = fragP->fr_offset;
 43.7030 -+  sym_frag = symbol_get_frag(symbolP);
 43.7031 -+  target += S_GET_VALUE(symbolP);
 43.7032 -+
 43.7033 -+  if (sym_frag->relax_marker != fragP->relax_marker
 43.7034 -+      && S_GET_SEGMENT(symbolP) == segment)
 43.7035 -+    target += stretch;
 43.7036 -+
 43.7037 -+  distance = target - address;
 43.7038 -+
 43.7039 -+  if (distance <= 1022 && distance >= -1024)
 43.7040 -+    {
 43.7041 -+      pr_debug("call: distance is %d, emitting short rcall\n", distance);
 43.7042 -+      if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
 43.7043 -+	pool->literals[entry].refcount--;
 43.7044 -+      new_size = 2;
 43.7045 -+      fragP->fr_subtype = CALL_SUBTYPE_RCALL1;
 43.7046 -+    }
 43.7047 -+  else if (distance <= 2097150 && distance >= -2097152)
 43.7048 -+    {
 43.7049 -+      pr_debug("call: distance is %d, emitting long rcall\n", distance);
 43.7050 -+      if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
 43.7051 -+	pool->literals[entry].refcount--;
 43.7052 -+      new_size = 4;
 43.7053 -+      fragP->fr_subtype = CALL_SUBTYPE_RCALL2;
 43.7054 -+    }
 43.7055 -+  else
 43.7056 -+    {
 43.7057 -+      pr_debug("call: distance %d too far, emitting something big\n", distance);
 43.7058 -+
 43.7059 -+    relax_max:
 43.7060 -+      if (avr32_pic)
 43.7061 -+	{
 43.7062 -+	  if (linkrelax)
 43.7063 -+	    {
 43.7064 -+	      new_size = 10;
 43.7065 -+	      fragP->fr_subtype = CALL_SUBTYPE_MCALL_LARGE;
 43.7066 -+	    }
 43.7067 -+	  else
 43.7068 -+	    {
 43.7069 -+	      new_size = 4;
 43.7070 -+	      fragP->fr_subtype = CALL_SUBTYPE_MCALL_GOT;
 43.7071 -+	    }
 43.7072 -+	}
 43.7073 -+      else
 43.7074 -+	{
 43.7075 -+	  if (fragP->fr_subtype != CALL_SUBTYPE_MCALL_CP)
 43.7076 -+	    pool->literals[entry].refcount++;
 43.7077 -+
 43.7078 -+	  new_size = 4;
 43.7079 -+	  fragP->fr_subtype = CALL_SUBTYPE_MCALL_CP;
 43.7080 -+	}
 43.7081 -+    }
 43.7082 -+
 43.7083 -+  fragP->fr_var = new_size;
 43.7084 -+
 43.7085 -+  pr_debug("%s:%d: call: relax pass done, growth: %d, fr_var: %d\n",
 43.7086 -+	   fragP->fr_file, fragP->fr_line,
 43.7087 -+	   new_size - old_size, fragP->fr_var);
 43.7088 -+
 43.7089 -+  return new_size - old_size;
 43.7090 -+}
 43.7091 -+
 43.7092 -+static long
 43.7093 -+avr32_cpool_relax_frag(segT segment ATTRIBUTE_UNUSED,
 43.7094 -+		       fragS *fragP,
 43.7095 -+		       long stretch ATTRIBUTE_UNUSED)
 43.7096 -+{
 43.7097 -+  struct cpool *pool;
 43.7098 -+  addressT address;
 43.7099 -+  long old_size, new_size;
 43.7100 -+  unsigned int entry;
 43.7101 -+
 43.7102 -+  pool = fragP->tc_frag_data.pool;
 43.7103 -+  address = fragP->fr_address + fragP->fr_fix;
 43.7104 -+  old_size = fragP->fr_var;
 43.7105 -+  new_size = 0;
 43.7106 -+
 43.7107 -+  for (entry = 0; entry < pool->next_free_entry; entry++)
 43.7108 -+    {
 43.7109 -+      if (pool->literals[entry].refcount > 0)
 43.7110 -+	{
 43.7111 -+	  pool->literals[entry].offset = new_size;
 43.7112 -+	  new_size += 4;
 43.7113 -+	}
 43.7114 -+    }
 43.7115 -+
 43.7116 -+  fragP->fr_var = new_size;
 43.7117 -+
 43.7118 -+  return new_size - old_size;
 43.7119 -+}
 43.7120 -+
 43.7121 -+/* *fragP has been relaxed to its final size, and now needs to have
 43.7122 -+   the bytes inside it modified to conform to the new size.
 43.7123 -+
 43.7124 -+   Called after relaxation is finished.
 43.7125 -+   fragP->fr_type == rs_machine_dependent.
 43.7126 -+   fragP->fr_subtype is the subtype of what the address relaxed to.  */
 43.7127 -+
 43.7128 -+static void
 43.7129 -+avr32_default_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
 43.7130 -+			    segT segment ATTRIBUTE_UNUSED,
 43.7131 -+			    fragS *fragP)
 43.7132 -+{
 43.7133 -+  const struct avr32_opcode *opc;
 43.7134 -+  const struct avr32_ifield *ifield;
 43.7135 -+  bfd_reloc_code_real_type r_type;
 43.7136 -+  symbolS *symbolP;
 43.7137 -+  fixS *fixP;
 43.7138 -+  bfd_vma value;
 43.7139 -+  int subtype;
 43.7140 -+
 43.7141 -+  opc = &avr32_opc_table[fragP->fr_subtype];
 43.7142 -+  ifield = opc->fields[opc->var_field];
 43.7143 -+  symbolP = fragP->fr_symbol;
 43.7144 -+  subtype = fragP->fr_subtype;
 43.7145 -+  r_type = opc->reloc_type;
 43.7146 -+
 43.7147 -+  /* Clear the opcode bits and the bits belonging to the relaxed
 43.7148 -+     field.  We assume all other fields stay the same.  */
 43.7149 -+  value = bfd_getb32(fragP->fr_opcode);
 43.7150 -+  value &= ~(opc->mask | ifield->mask);
 43.7151 -+
 43.7152 -+  /* Insert the new opcode */
 43.7153 -+  value |= opc->value;
 43.7154 -+  bfd_putb32(value, fragP->fr_opcode);
 43.7155 -+
 43.7156 -+  fragP->fr_fix += opc->size - fragP->fr_var;
 43.7157 -+
 43.7158 -+  if (fragP->tc_frag_data.reloc_info != AVR32_OPINFO_NONE)
 43.7159 -+    {
 43.7160 -+      switch (fragP->tc_frag_data.reloc_info)
 43.7161 -+	{
 43.7162 -+	case AVR32_OPINFO_HI:
 43.7163 -+	  r_type = BFD_RELOC_HI16;
 43.7164 -+	  break;
 43.7165 -+	case AVR32_OPINFO_LO:
 43.7166 -+	  r_type = BFD_RELOC_LO16;
 43.7167 -+	  break;
 43.7168 -+	case AVR32_OPINFO_GOT:
 43.7169 -+	  switch (r_type)
 43.7170 -+	    {
 43.7171 -+	    case BFD_RELOC_AVR32_18W_PCREL:
 43.7172 -+	      r_type = BFD_RELOC_AVR32_GOT18SW;
 43.7173 -+	      break;
 43.7174 -+	    case BFD_RELOC_AVR32_16S:
 43.7175 -+	      r_type = BFD_RELOC_AVR32_GOT16S;
 43.7176 -+	      break;
 43.7177 -+	    default:
 43.7178 -+	      BAD_CASE(r_type);
 43.7179 -+	      break;
 43.7180 -+	    }
 43.7181 -+	  break;
 43.7182 -+	default:
 43.7183 -+	  BAD_CASE(fragP->tc_frag_data.reloc_info);
 43.7184 -+	  break;
 43.7185 -+	}
 43.7186 -+    }
 43.7187 -+
 43.7188 -+  pr_debug("%s:%d: convert_frag: new %s fixup\n",
 43.7189 -+	   fragP->fr_file, fragP->fr_line,
 43.7190 -+	   bfd_get_reloc_code_name(r_type));
 43.7191 -+
 43.7192 -+#if 1
 43.7193 -+  fixP = fix_new_exp(fragP, fragP->fr_fix - opc->size, opc->size,
 43.7194 -+		     &fragP->tc_frag_data.exp,
 43.7195 -+		     fragP->tc_frag_data.pcrel, r_type);
 43.7196 -+#else
 43.7197 -+  fixP = fix_new(fragP, fragP->fr_fix - opc->size, opc->size, symbolP,
 43.7198 -+		 fragP->fr_offset, fragP->tc_frag_data.pcrel, r_type);
 43.7199 -+#endif
 43.7200 -+
 43.7201 -+  /* Revert fix_new brain damage. "dot_value" is the value of PC at
 43.7202 -+     the point of the fixup, relative to the frag address.  fix_new()
 43.7203 -+     and friends think they are only being called during the assembly
 43.7204 -+     pass, not during relaxation or similar, so fx_dot_value, fx_file
 43.7205 -+     and fx_line are all initialized to the wrong value.  But we don't
 43.7206 -+     know the size of the fixup until now, so we really can't live up
 43.7207 -+     to the assumptions these functions make about the target.  What
 43.7208 -+     do these functions think the "where" and "frag" argument mean
 43.7209 -+     anyway?  */
 43.7210 -+  fixP->fx_dot_value = fragP->fr_fix - opc->size;
 43.7211 -+  fixP->fx_file = fragP->fr_file;
 43.7212 -+  fixP->fx_line = fragP->fr_line;
 43.7213 -+
 43.7214 -+  fixP->tc_fix_data.ifield = ifield;
 43.7215 -+  fixP->tc_fix_data.align = avr32_rs_align(subtype);
 43.7216 -+  fixP->tc_fix_data.min = avr32_relax_table[subtype].lower_bound;
 43.7217 -+  fixP->tc_fix_data.max = avr32_relax_table[subtype].upper_bound;
 43.7218 -+}
 43.7219 -+
 43.7220 -+static void
 43.7221 -+avr32_lda_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
 43.7222 -+		       segT segment ATTRIBUTE_UNUSED,
 43.7223 -+		       fragS *fragP)
 43.7224 -+{
 43.7225 -+  const struct avr32_opcode *opc;
 43.7226 -+  const struct avr32_ifield *ifield;
 43.7227 -+  bfd_reloc_code_real_type r_type;
 43.7228 -+  expressionS exp;
 43.7229 -+  struct cpool *pool;
 43.7230 -+  fixS *fixP;
 43.7231 -+  bfd_vma value;
 43.7232 -+  int regid, pcrel = 0, align = 0;
 43.7233 -+  char *p;
 43.7234 -+
 43.7235 -+  r_type = BFD_RELOC_NONE;
 43.7236 -+  regid = fragP->tc_frag_data.reloc_info;
 43.7237 -+  p = fragP->fr_opcode;
 43.7238 -+  exp.X_add_symbol = fragP->fr_symbol;
 43.7239 -+  exp.X_add_number = fragP->fr_offset;
 43.7240 -+  exp.X_op = O_symbol;
 43.7241 -+
 43.7242 -+  pr_debug("%s:%d: lda_convert_frag, subtype: %d, fix: %d, var: %d, regid: %d\n",
 43.7243 -+	   fragP->fr_file, fragP->fr_line,
 43.7244 -+	   fragP->fr_subtype, fragP->fr_fix, fragP->fr_var, regid);
 43.7245 -+
 43.7246 -+  switch (fragP->fr_subtype)
 43.7247 -+    {
 43.7248 -+    case LDA_SUBTYPE_MOV1:
 43.7249 -+      opc = &avr32_opc_table[AVR32_OPC_MOV1];
 43.7250 -+      opc->fields[0]->insert(opc->fields[0], p, regid);
 43.7251 -+      ifield = opc->fields[1];
 43.7252 -+      r_type = opc->reloc_type;
 43.7253 -+      break;
 43.7254 -+    case LDA_SUBTYPE_MOV2:
 43.7255 -+      opc = &avr32_opc_table[AVR32_OPC_MOV2];
 43.7256 -+      opc->fields[0]->insert(opc->fields[0], p, regid);
 43.7257 -+      ifield = opc->fields[1];
 43.7258 -+      r_type = opc->reloc_type;
 43.7259 -+      break;
 43.7260 -+    case LDA_SUBTYPE_SUB:
 43.7261 -+      opc = &avr32_opc_table[AVR32_OPC_SUB5];
 43.7262 -+      opc->fields[0]->insert(opc->fields[0], p, regid);
 43.7263 -+      opc->fields[1]->insert(opc->fields[1], p, AVR32_REG_PC);
 43.7264 -+      ifield = opc->fields[2];
 43.7265 -+      r_type = BFD_RELOC_AVR32_16N_PCREL;
 43.7266 -+
 43.7267 -+      /* Pretend that SUB5 isn't a "negated" pcrel expression for now.
 43.7268 -+	 We'll have to fix it up later when we know whether to
 43.7269 -+	 generate a reloc for it (in which case the linker will negate
 43.7270 -+	 it, so we shouldn't). */
 43.7271 -+      pcrel = 1;
 43.7272 -+      break;
 43.7273 -+    case LDA_SUBTYPE_LDDPC:
 43.7274 -+      opc = &avr32_opc_table[AVR32_OPC_LDDPC];
 43.7275 -+      align = 2;
 43.7276 -+      r_type = BFD_RELOC_AVR32_9W_CP;
 43.7277 -+      goto cpool_common;
 43.7278 -+    case LDA_SUBTYPE_LDW:
 43.7279 -+      opc = &avr32_opc_table[AVR32_OPC_LDDPC_EXT];
 43.7280 -+      r_type = BFD_RELOC_AVR32_16_CP;
 43.7281 -+    cpool_common:
 43.7282 -+      opc->fields[0]->insert(opc->fields[0], p, regid);
 43.7283 -+      ifield = opc->fields[1];
 43.7284 -+      pool = fragP->tc_frag_data.pool;
 43.7285 -+      exp.X_add_symbol = pool->symbol;
 43.7286 -+      exp.X_add_number = pool->literals[fragP->tc_frag_data.pool_entry].offset;
 43.7287 -+      pcrel = 1;
 43.7288 -+      break;
 43.7289 -+    case LDA_SUBTYPE_GOTLOAD_LARGE:
 43.7290 -+      /* ld.w Rd, r6[Rd << 2] (last) */
 43.7291 -+      opc = &avr32_opc_table[AVR32_OPC_LD_W5];
 43.7292 -+      bfd_putb32(opc->value, p + 4);
 43.7293 -+      opc->fields[0]->insert(opc->fields[0], p + 4, regid);
 43.7294 -+      opc->fields[1]->insert(opc->fields[1], p + 4, 6);
 43.7295 -+      opc->fields[2]->insert(opc->fields[2], p + 4, regid);
 43.7296 -+      opc->fields[3]->insert(opc->fields[3], p + 4, 2);
 43.7297 -+
 43.7298 -+      /* mov Rd, (got_offset / 4) */
 43.7299 -+      opc = &avr32_opc_table[AVR32_OPC_MOV2];
 43.7300 -+      opc->fields[0]->insert(opc->fields[0], p, regid);
 43.7301 -+      ifield = opc->fields[1];
 43.7302 -+      r_type = BFD_RELOC_AVR32_LDA_GOT;
 43.7303 -+      break;
 43.7304 -+    case LDA_SUBTYPE_GOTLOAD:
 43.7305 -+      opc = &avr32_opc_table[AVR32_OPC_LD_W4];
 43.7306 -+      opc->fields[0]->insert(opc->fields[0], p, regid);
 43.7307 -+      opc->fields[1]->insert(opc->fields[1], p, 6);
 43.7308 -+      ifield = opc->fields[2];
 43.7309 -+      if (r_type == BFD_RELOC_NONE)
 43.7310 -+	r_type = BFD_RELOC_AVR32_GOT16S;
 43.7311 -+      break;
 43.7312 -+    default:
 43.7313 -+      BAD_CASE(fragP->fr_subtype);
 43.7314 -+    }
 43.7315 -+
 43.7316 -+  value = bfd_getb32(p);
 43.7317 -+  value &= ~(opc->mask | ifield->mask);
 43.7318 -+  value |= opc->value;
 43.7319 -+  bfd_putb32(value, p);
 43.7320 -+
 43.7321 -+  fragP->fr_fix += fragP->fr_var - LDA_INITIAL_SIZE;
 43.7322 -+
 43.7323 -+  if (fragP->fr_next
 43.7324 -+      && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
 43.7325 -+	  != fragP->fr_fix))
 43.7326 -+    {
 43.7327 -+      fprintf(stderr, "LDA frag: fr_fix is wrong! fragP->fr_var = %ld, r_type = %s\n",
 43.7328 -+	      fragP->fr_var, bfd_get_reloc_code_name(r_type));
 43.7329 -+      abort();
 43.7330 -+    }
 43.7331 -+
 43.7332 -+  fixP = fix_new_exp(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
 43.7333 -+		     &exp, pcrel, r_type);
 43.7334 -+
 43.7335 -+  /* Revert fix_new brain damage. "dot_value" is the value of PC at
 43.7336 -+     the point of the fixup, relative to the frag address.  fix_new()
 43.7337 -+     and friends think they are only being called during the assembly
 43.7338 -+     pass, not during relaxation or similar, so fx_dot_value, fx_file
 43.7339 -+     and fx_line are all initialized to the wrong value.  But we don't
 43.7340 -+     know the size of the fixup until now, so we really can't live up
 43.7341 -+     to the assumptions these functions make about the target.  What
 43.7342 -+     do these functions think the "where" and "frag" argument mean
 43.7343 -+     anyway?  */
 43.7344 -+  fixP->fx_dot_value = fragP->fr_fix - opc->size;
 43.7345 -+  fixP->fx_file = fragP->fr_file;
 43.7346 -+  fixP->fx_line = fragP->fr_line;
 43.7347 -+
 43.7348 -+  fixP->tc_fix_data.ifield = ifield;
 43.7349 -+  fixP->tc_fix_data.align = align;
 43.7350 -+  /* these are only used if the fixup can actually be resolved */
 43.7351 -+  fixP->tc_fix_data.min = -32768;
 43.7352 -+  fixP->tc_fix_data.max = 32767;
 43.7353 -+}
 43.7354 -+
 43.7355 -+static void
 43.7356 -+avr32_call_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
 43.7357 -+		       segT segment ATTRIBUTE_UNUSED,
 43.7358 -+		       fragS *fragP)
 43.7359 -+{
 43.7360 -+  const struct avr32_opcode *opc = NULL;
 43.7361 -+  const struct avr32_ifield *ifield;
 43.7362 -+  bfd_reloc_code_real_type r_type;
 43.7363 -+  symbolS *symbol;
 43.7364 -+  offsetT offset;
 43.7365 -+  fixS *fixP;
 43.7366 -+  bfd_vma value;
 43.7367 -+  int pcrel = 0, align = 0;
 43.7368 -+  char *p;
 43.7369 -+
 43.7370 -+  symbol = fragP->fr_symbol;
 43.7371 -+  offset = fragP->fr_offset;
 43.7372 -+  r_type = BFD_RELOC_NONE;
 43.7373 -+  p = fragP->fr_opcode;
 43.7374 -+
 43.7375 -+  pr_debug("%s:%d: call_convert_frag, subtype: %d, fix: %d, var: %d\n",
 43.7376 -+	   fragP->fr_file, fragP->fr_line,
 43.7377 -+	   fragP->fr_subtype, fragP->fr_fix, fragP->fr_var);
 43.7378 -+
 43.7379 -+  switch (fragP->fr_subtype)
 43.7380 -+    {
 43.7381 -+    case CALL_SUBTYPE_RCALL1:
 43.7382 -+      opc = &avr32_opc_table[AVR32_OPC_RCALL1];
 43.7383 -+      /* fall through */
 43.7384 -+    case CALL_SUBTYPE_RCALL2:
 43.7385 -+      if (!opc)
 43.7386 -+	opc = &avr32_opc_table[AVR32_OPC_RCALL2];
 43.7387 -+      ifield = opc->fields[0];
 43.7388 -+      r_type = opc->reloc_type;
 43.7389 -+      pcrel = 1;
 43.7390 -+      align = 1;
 43.7391 -+      break;
 43.7392 -+    case CALL_SUBTYPE_MCALL_CP:
 43.7393 -+      opc = &avr32_opc_table[AVR32_OPC_MCALL];
 43.7394 -+      opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_PC);
 43.7395 -+      ifield = opc->fields[1];
 43.7396 -+      r_type = BFD_RELOC_AVR32_CPCALL;
 43.7397 -+      symbol = fragP->tc_frag_data.pool->symbol;
 43.7398 -+      offset = fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].offset;
 43.7399 -+      assert(fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].refcount > 0);
 43.7400 -+      pcrel = 1;
 43.7401 -+      align = 2;
 43.7402 -+      break;
 43.7403 -+    case CALL_SUBTYPE_MCALL_GOT:
 43.7404 -+      opc = &avr32_opc_table[AVR32_OPC_MCALL];
 43.7405 -+      opc->fields[0]->insert(opc->fields[0], p, 6);
 43.7406 -+      ifield = opc->fields[1];
 43.7407 -+      r_type = BFD_RELOC_AVR32_GOT18SW;
 43.7408 -+      break;
 43.7409 -+    case CALL_SUBTYPE_MCALL_LARGE:
 43.7410 -+      assert(fragP->fr_var == 10);
 43.7411 -+      /* ld.w lr, r6[lr << 2] */
 43.7412 -+      opc = &avr32_opc_table[AVR32_OPC_LD_W5];
 43.7413 -+      bfd_putb32(opc->value, p + 4);
 43.7414 -+      opc->fields[0]->insert(opc->fields[0], p + 4, AVR32_REG_LR);
 43.7415 -+      opc->fields[1]->insert(opc->fields[1], p + 4, 6);
 43.7416 -+      opc->fields[2]->insert(opc->fields[2], p + 4, AVR32_REG_LR);
 43.7417 -+      opc->fields[3]->insert(opc->fields[3], p + 4, 2);
 43.7418 -+
 43.7419 -+      /* icall lr */
 43.7420 -+      opc = &avr32_opc_table[AVR32_OPC_ICALL];
 43.7421 -+      bfd_putb16(opc->value >> 16, p + 8);
 43.7422 -+      opc->fields[0]->insert(opc->fields[0], p + 8, AVR32_REG_LR);
 43.7423 -+
 43.7424 -+      /* mov lr, (got_offset / 4) */
 43.7425 -+      opc = &avr32_opc_table[AVR32_OPC_MOV2];
 43.7426 -+      opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_LR);
 43.7427 -+      ifield = opc->fields[1];
 43.7428 -+      r_type = BFD_RELOC_AVR32_GOTCALL;
 43.7429 -+      break;
 43.7430 -+    default:
 43.7431 -+      BAD_CASE(fragP->fr_subtype);
 43.7432 -+    }
 43.7433 -+
 43.7434 -+  /* Insert the opcode and clear the variable ifield */
 43.7435 -+  value = bfd_getb32(p);
 43.7436 -+  value &= ~(opc->mask | ifield->mask);
 43.7437 -+  value |= opc->value;
 43.7438 -+  bfd_putb32(value, p);
 43.7439 -+
 43.7440 -+  fragP->fr_fix += fragP->fr_var - CALL_INITIAL_SIZE;
 43.7441 -+
 43.7442 -+  if (fragP->fr_next
 43.7443 -+      && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
 43.7444 -+	  != fragP->fr_fix))
 43.7445 -+    {
 43.7446 -+      fprintf(stderr, "%s:%d: fr_fix %lu is wrong! fr_var=%lu, r_type=%s\n",
 43.7447 -+	      fragP->fr_file, fragP->fr_line,
 43.7448 -+	      fragP->fr_fix, fragP->fr_var, bfd_get_reloc_code_name(r_type));
 43.7449 -+      fprintf(stderr, "fr_fix should be %ld. next frag is %s:%d\n",
 43.7450 -+	      (offsetT)(fragP->fr_next->fr_address - fragP->fr_address),
 43.7451 -+	      fragP->fr_next->fr_file, fragP->fr_next->fr_line);
 43.7452 -+    }
 43.7453 -+
 43.7454 -+  fixP = fix_new(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
 43.7455 -+		 symbol, offset, pcrel, r_type);
 43.7456 -+
 43.7457 -+  /* Revert fix_new brain damage. "dot_value" is the value of PC at
 43.7458 -+     the point of the fixup, relative to the frag address.  fix_new()
 43.7459 -+     and friends think they are only being called during the assembly
 43.7460 -+     pass, not during relaxation or similar, so fx_dot_value, fx_file
 43.7461 -+     and fx_line are all initialized to the wrong value.  But we don't
 43.7462 -+     know the size of the fixup until now, so we really can't live up
 43.7463 -+     to the assumptions these functions make about the target.  What
 43.7464 -+     do these functions think the "where" and "frag" argument mean
 43.7465 -+     anyway?  */
 43.7466 -+  fixP->fx_dot_value = fragP->fr_fix - opc->size;
 43.7467 -+  fixP->fx_file = fragP->fr_file;
 43.7468 -+  fixP->fx_line = fragP->fr_line;
 43.7469 -+
 43.7470 -+  fixP->tc_fix_data.ifield = ifield;
 43.7471 -+  fixP->tc_fix_data.align = align;
 43.7472 -+  /* these are only used if the fixup can actually be resolved */
 43.7473 -+  fixP->tc_fix_data.min = -2097152;
 43.7474 -+  fixP->tc_fix_data.max = 2097150;
 43.7475 -+}
 43.7476 -+
 43.7477 -+static void
 43.7478 -+avr32_cpool_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
 43.7479 -+			 segT segment ATTRIBUTE_UNUSED,
 43.7480 -+			 fragS *fragP)
 43.7481 -+{
 43.7482 -+  struct cpool *pool;
 43.7483 -+  addressT address;
 43.7484 -+  unsigned int entry;
 43.7485 -+  char *p;
 43.7486 -+  char sym_name[20];
 43.7487 -+
 43.7488 -+  /* Did we get rid of the frag altogether? */
 43.7489 -+  if (!fragP->fr_var)
 43.7490 -+    return;
 43.7491 -+
 43.7492 -+  pool = fragP->tc_frag_data.pool;
 43.7493 -+  address = fragP->fr_address + fragP->fr_fix;
 43.7494 -+  p = fragP->fr_literal + fragP->fr_fix;
 43.7495 -+
 43.7496 -+  sprintf(sym_name, "$$cp_\002%x", pool->id);
 43.7497 -+  symbol_locate(pool->symbol, sym_name, pool->section, fragP->fr_fix, fragP);
 43.7498 -+  symbol_table_insert(pool->symbol);
 43.7499 -+
 43.7500 -+  for (entry = 0; entry < pool->next_free_entry; entry++)
 43.7501 -+    {
 43.7502 -+      if (pool->literals[entry].refcount > 0)
 43.7503 -+	{
 43.7504 -+	  fix_new_exp(fragP, fragP->fr_fix, 4, &pool->literals[entry].exp,
 43.7505 -+		      FALSE, BFD_RELOC_AVR32_32_CPENT);
 43.7506 -+	  fragP->fr_fix += 4;
 43.7507 -+	}
 43.7508 -+    }
 43.7509 -+}
 43.7510 -+
 43.7511 -+static struct avr32_relaxer avr32_default_relaxer = {
 43.7512 -+  .estimate_size	= avr32_default_estimate_size_before_relax,
 43.7513 -+  .relax_frag		= avr32_default_relax_frag,
 43.7514 -+  .convert_frag		= avr32_default_convert_frag,
 43.7515 -+};
 43.7516 -+static struct avr32_relaxer avr32_lda_relaxer = {
 43.7517 -+  .estimate_size	= avr32_lda_estimate_size_before_relax,
 43.7518 -+  .relax_frag		= avr32_lda_relax_frag,
 43.7519 -+  .convert_frag		= avr32_lda_convert_frag,
 43.7520 -+};
 43.7521 -+static struct avr32_relaxer avr32_call_relaxer = {
 43.7522 -+  .estimate_size	= avr32_call_estimate_size_before_relax,
 43.7523 -+  .relax_frag		= avr32_call_relax_frag,
 43.7524 -+  .convert_frag		= avr32_call_convert_frag,
 43.7525 -+};
 43.7526 -+static struct avr32_relaxer avr32_cpool_relaxer = {
 43.7527 -+  .estimate_size	= avr32_cpool_estimate_size_before_relax,
 43.7528 -+  .relax_frag		= avr32_cpool_relax_frag,
 43.7529 -+  .convert_frag		= avr32_cpool_convert_frag,
 43.7530 -+};
 43.7531 -+
 43.7532 -+static void s_cpool(int arg ATTRIBUTE_UNUSED)
 43.7533 -+{
 43.7534 -+  struct cpool *pool;
 43.7535 -+  unsigned int max_size;
 43.7536 -+  char *buf;
 43.7537 -+
 43.7538 -+  pool = find_cpool(now_seg, now_subseg);
 43.7539 -+  if (!pool || !pool->symbol || pool->next_free_entry == 0)
 43.7540 -+    return;
 43.7541 -+
 43.7542 -+  /* Make sure the constant pool is properly aligned */
 43.7543 -+  frag_align_code(2, 0);
 43.7544 -+  if (bfd_get_section_alignment(stdoutput, pool->section) < 2)
 43.7545 -+    bfd_set_section_alignment(stdoutput, pool->section, 2);
 43.7546 -+
 43.7547 -+  /* Assume none of the entries are discarded, and that we need the
 43.7548 -+     maximum amount of alignment.  But we're not going to allocate
 43.7549 -+     anything up front. */
 43.7550 -+  max_size = pool->next_free_entry * 4 + 2;
 43.7551 -+  frag_grow(max_size);
 43.7552 -+  buf = frag_more(0);
 43.7553 -+
 43.7554 -+  frag_now->tc_frag_data.relaxer = &avr32_cpool_relaxer;
 43.7555 -+  frag_now->tc_frag_data.pool = pool;
 43.7556 -+
 43.7557 -+  symbol_set_frag(pool->symbol, frag_now);
 43.7558 -+
 43.7559 -+  /* Assume zero initial size, allowing other relaxers to be
 43.7560 -+     optimistic about things.  */
 43.7561 -+  frag_var(rs_machine_dependent, max_size, 0,
 43.7562 -+	   0, pool->symbol, 0, NULL);
 43.7563 -+
 43.7564 -+  /* Mark the pool as empty.  */
 43.7565 -+  pool->used = 1;
 43.7566 -+}
 43.7567 -+
 43.7568 -+/* The location from which a PC relative jump should be calculated,
 43.7569 -+   given a PC relative reloc.  */
 43.7570 -+
 43.7571 -+long
 43.7572 -+md_pcrel_from_section (fixS *fixP, segT sec)
 43.7573 -+{
 43.7574 -+  pr_debug("pcrel_from_section, fx_offset = %d\n", fixP->fx_offset);
 43.7575 -+
 43.7576 -+  if (fixP->fx_addsy != NULL
 43.7577 -+      && (! S_IS_DEFINED (fixP->fx_addsy)
 43.7578 -+          || S_GET_SEGMENT (fixP->fx_addsy) != sec
 43.7579 -+	  || S_FORCE_RELOC(fixP->fx_addsy, 1)))
 43.7580 -+    {
 43.7581 -+      pr_debug("Unknown pcrel symbol: %s\n", S_GET_NAME(fixP->fx_addsy));
 43.7582 -+
 43.7583 -+      /* The symbol is undefined (or is defined but not in this section).
 43.7584 -+	 Let the linker figure it out.  */
 43.7585 -+      return 0;
 43.7586 -+    }
 43.7587 -+
 43.7588 -+  pr_debug("pcrel from %x + %x, symbol: %s (%x)\n",
 43.7589 -+	   fixP->fx_frag->fr_address, fixP->fx_where,
 43.7590 -+	   fixP->fx_addsy?S_GET_NAME(fixP->fx_addsy):"(null)",
 43.7591 -+	   fixP->fx_addsy?S_GET_VALUE(fixP->fx_addsy):0);
 43.7592 -+
 43.7593 -+  return ((fixP->fx_frag->fr_address + fixP->fx_where)
 43.7594 -+	  & (~0UL << fixP->tc_fix_data.align));
 43.7595 -+}
 43.7596 -+
 43.7597 -+valueT
 43.7598 -+md_section_align (segT segment, valueT size)
 43.7599 -+{
 43.7600 -+  int align = bfd_get_section_alignment (stdoutput, segment);
 43.7601 -+  return ((size + (1 << align) - 1) & (-1 << align));
 43.7602 -+}
 43.7603 -+
 43.7604 -+static int syntax_matches(const struct avr32_syntax *syntax,
 43.7605 -+			  char *str)
 43.7606 -+{
 43.7607 -+  int i;
 43.7608 -+
 43.7609 -+  pr_debug("syntax %d matches `%s'?\n", syntax->id, str);
 43.7610 -+
 43.7611 -+  if (syntax->nr_operands < 0)
 43.7612 -+    {
 43.7613 -+      struct avr32_operand *op;
 43.7614 -+      int optype;
 43.7615 -+
 43.7616 -+      for (i = 0; i < (-syntax->nr_operands - 1); i++)
 43.7617 -+	{
 43.7618 -+	  char *p;
 43.7619 -+	  char c;
 43.7620 -+
 43.7621 -+	  optype = syntax->operand[i];
 43.7622 -+	  assert(optype < AVR32_NR_OPERANDS);
 43.7623 -+	  op = &avr32_operand_table[optype];
 43.7624 -+
 43.7625 -+	  for (p = str; *p; p++)
 43.7626 -+	    if (*p == ',')
 43.7627 -+	      break;
 43.7628 -+
 43.7629 -+	  if (p == str)
 43.7630 -+	    return 0;
 43.7631 -+
 43.7632 -+	  c = *p;
 43.7633 -+	  *p = 0;
 43.7634 -+
 43.7635 -+	  if (!op->match(str))
 43.7636 -+	    {
 43.7637 -+	      *p = c;
 43.7638 -+	      return 0;
 43.7639 -+	    }
 43.7640 -+
 43.7641 -+	  str = p;
 43.7642 -+	  *p = c;
 43.7643 -+	  if (c)
 43.7644 -+	    str++;
 43.7645 -+	}
 43.7646 -+
 43.7647 -+      optype = syntax->operand[i];
 43.7648 -+      assert(optype < AVR32_NR_OPERANDS);
 43.7649 -+      op = &avr32_operand_table[optype];
 43.7650 -+
 43.7651 -+      if (!op->match(str))
 43.7652 -+	return 0;
 43.7653 -+      return 1;
 43.7654 -+    }
 43.7655 -+
 43.7656 -+  for (i = 0; i < syntax->nr_operands; i++)
 43.7657 -+    {
 43.7658 -+      struct avr32_operand *op;
 43.7659 -+      int optype = syntax->operand[i];
 43.7660 -+      char *p;
 43.7661 -+      char c;
 43.7662 -+
 43.7663 -+      assert(optype < AVR32_NR_OPERANDS);
 43.7664 -+      op = &avr32_operand_table[optype];
 43.7665 -+
 43.7666 -+      for (p = str; *p; p++)
 43.7667 -+	if (*p == ',')
 43.7668 -+	  break;
 43.7669 -+
 43.7670 -+      if (p == str)
 43.7671 -+	return 0;
 43.7672 -+
 43.7673 -+      c = *p;
 43.7674 -+      *p = 0;
 43.7675 -+
 43.7676 -+      if (!op->match(str))
 43.7677 -+	{
 43.7678 -+	  *p = c;
 43.7679 -+	  return 0;
 43.7680 -+	}
 43.7681 -+
 43.7682 -+      str = p;
 43.7683 -+      *p = c;
 43.7684 -+      if (c)
 43.7685 -+	str++;
 43.7686 -+    }
 43.7687 -+
 43.7688 -+  if (*str == '\0')
 43.7689 -+    return 1;
 43.7690 -+
 43.7691 -+  if ((*str == 'e' || *str == 'E') && !str[1])
 43.7692 -+    return 1;
 43.7693 -+
 43.7694 -+  return 0;
 43.7695 -+}
 43.7696 -+
 43.7697 -+static int parse_operands(char *str)
 43.7698 -+{
 43.7699 -+  int i;
 43.7700 -+
 43.7701 -+  if (current_insn.syntax->nr_operands < 0)
 43.7702 -+    {
 43.7703 -+      int optype;
 43.7704 -+      struct avr32_operand *op;
 43.7705 -+
 43.7706 -+      for (i = 0; i < (-current_insn.syntax->nr_operands - 1); i++)
 43.7707 -+	{
 43.7708 -+	  char *p;
 43.7709 -+	  char c;
 43.7710 -+
 43.7711 -+	  optype = current_insn.syntax->operand[i];
 43.7712 -+	  op = &avr32_operand_table[optype];
 43.7713 -+
 43.7714 -+	  for (p = str; *p; p++)
 43.7715 -+	    if (*p == ',')
 43.7716 -+	      break;
 43.7717 -+
 43.7718 -+	  assert(p != str);
 43.7719 -+
 43.7720 -+	  c = *p, *p = 0;
 43.7721 -+	  op->parse(op, str, i);
 43.7722 -+	  *p = c;
 43.7723 -+
 43.7724 -+	  str = p;
 43.7725 -+	  if (c) str++;
 43.7726 -+	}
 43.7727 -+
 43.7728 -+      /* give the rest of the line to the last operand */
 43.7729 -+      optype = current_insn.syntax->operand[i];
 43.7730 -+      op = &avr32_operand_table[optype];
 43.7731 -+      op->parse(op, str, i);
 43.7732 -+    }
 43.7733 -+  else
 43.7734 -+    {
 43.7735 -+      for (i = 0; i < current_insn.syntax->nr_operands; i++)
 43.7736 -+	{
 43.7737 -+	  int optype = current_insn.syntax->operand[i];
 43.7738 -+	  struct avr32_operand *op = &avr32_operand_table[optype];
 43.7739 -+	  char *p;
 43.7740 -+	  char c;
 43.7741 -+
 43.7742 -+	  skip_whitespace(str);
 43.7743 -+
 43.7744 -+	  for (p = str; *p; p++)
 43.7745 -+	    if (*p == ',')
 43.7746 -+	      break;
 43.7747 -+
 43.7748 -+	  assert(p != str);
 43.7749 -+
 43.7750 -+	  c = *p, *p = 0;
 43.7751 -+	  op->parse(op, str, i);
 43.7752 -+	  *p = c;
 43.7753 -+
 43.7754 -+	  str = p;
 43.7755 -+	  if (c) str++;
 43.7756 -+	}
 43.7757 -+
 43.7758 -+      if (*str == 'E' || *str == 'e')
 43.7759 -+	current_insn.force_extended = 1;
 43.7760 -+    }
 43.7761 -+
 43.7762 -+  return 0;
 43.7763 -+}
 43.7764 -+
 43.7765 -+static const char *
 43.7766 -+finish_insn(const struct avr32_opcode *opc)
 43.7767 -+{
 43.7768 -+  expressionS *exp = &current_insn.immediate;
 43.7769 -+  unsigned int i;
 43.7770 -+  int will_relax = 0;
 43.7771 -+  char *buf;
 43.7772 -+
 43.7773 -+  assert(current_insn.next_slot == opc->nr_fields);
 43.7774 -+
 43.7775 -+  pr_debug("%s:%d: finish_insn: trying opcode %d\n",
 43.7776 -+	   frag_now->fr_file, frag_now->fr_line, opc->id);
 43.7777 -+
 43.7778 -+  /* Go through the relaxation stage for all instructions that can
 43.7779 -+     possibly take a symbolic immediate.  The relax code will take
 43.7780 -+     care of range checking and alignment.  */
 43.7781 -+  if (opc->var_field != -1)
 43.7782 -+    {
 43.7783 -+      int substate, largest_substate;
 43.7784 -+      symbolS *sym;
 43.7785 -+      offsetT off;
 43.7786 -+
 43.7787 -+      will_relax = 1;
 43.7788 -+      substate = largest_substate = opc_initial_substate(opc);
 43.7789 -+
 43.7790 -+      while (relax_more(largest_substate) != AVR32_RS_NONE)
 43.7791 -+	largest_substate = relax_more(largest_substate);
 43.7792 -+
 43.7793 -+      pr_debug("will relax. initial substate: %d (size %d), largest substate: %d (size %d)\n",
 43.7794 -+	       substate, avr32_rs_size(substate),
 43.7795 -+	       largest_substate, avr32_rs_size(largest_substate));
 43.7796 -+
 43.7797 -+      /* make sure we have enough room for the largest possible opcode */
 43.7798 -+      frag_grow(avr32_rs_size(largest_substate));
 43.7799 -+      buf = frag_more(opc->size);
 43.7800 -+
 43.7801 -+      dwarf2_emit_insn(opc->size);
 43.7802 -+
 43.7803 -+      frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_NONE;
 43.7804 -+      frag_now->tc_frag_data.pcrel = current_insn.pcrel;
 43.7805 -+      frag_now->tc_frag_data.force_extended = current_insn.force_extended;
 43.7806 -+      frag_now->tc_frag_data.relaxer = &avr32_default_relaxer;
 43.7807 -+
 43.7808 -+      if (exp->X_op == O_hi)
 43.7809 -+	{
 43.7810 -+	  frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_HI;
 43.7811 -+	  exp->X_op = exp->X_md;
 43.7812 -+	}
 43.7813 -+      else if (exp->X_op == O_lo)
 43.7814 -+	{
 43.7815 -+	  frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_LO;
 43.7816 -+	  exp->X_op = exp->X_md;
 43.7817 -+	}
 43.7818 -+      else if (exp->X_op == O_got)
 43.7819 -+	{
 43.7820 -+	  frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_GOT;
 43.7821 -+	  exp->X_op = O_symbol;
 43.7822 -+	}
 43.7823 -+
 43.7824 -+#if 0
 43.7825 -+      if ((opc->reloc_type == BFD_RELOC_AVR32_SUB5)
 43.7826 -+	  && exp->X_op == O_subtract)
 43.7827 -+	{
 43.7828 -+	  symbolS *tmp;
 43.7829 -+	  tmp = exp->X_add_symbol;
 43.7830 -+	  exp->X_add_symbol = exp->X_op_symbol;
 43.7831 -+	  exp->X_op_symbol = tmp;
 43.7832 -+	}
 43.7833 -+#endif
 43.7834 -+
 43.7835 -+      frag_now->tc_frag_data.exp = current_insn.immediate;
 43.7836 -+
 43.7837 -+      sym = exp->X_add_symbol;
 43.7838 -+      off = exp->X_add_number;
 43.7839 -+      if (exp->X_op != O_symbol)
 43.7840 -+	{
 43.7841 -+	  sym = make_expr_symbol(exp);
 43.7842 -+	  off = 0;
 43.7843 -+	}
 43.7844 -+
 43.7845 -+      frag_var(rs_machine_dependent,
 43.7846 -+	       avr32_rs_size(largest_substate) - opc->size,
 43.7847 -+	       opc->size,
 43.7848 -+	       substate, sym, off, buf);
 43.7849 -+    }
 43.7850 -+  else
 43.7851 -+    {
 43.7852 -+      assert(avr32_rs_size(opc_initial_substate(opc)) == 0);
 43.7853 -+
 43.7854 -+      /* Make sure we always have room for another whole word, as the ifield
 43.7855 -+	 inserters can only write words. */
 43.7856 -+      frag_grow(4);
 43.7857 -+      buf = frag_more(opc->size);
 43.7858 -+      dwarf2_emit_insn(opc->size);
 43.7859 -+    }
 43.7860 -+
 43.7861 -+  assert(!(opc->value & ~opc->mask));
 43.7862 -+
 43.7863 -+  pr_debug("inserting opcode: 0x%lx\n", opc->value);
 43.7864 -+  bfd_putb32(opc->value, buf);
 43.7865 -+
 43.7866 -+  for (i = 0; i < opc->nr_fields; i++)
 43.7867 -+    {
 43.7868 -+      const struct avr32_ifield *f = opc->fields[i];
 43.7869 -+      const struct avr32_ifield_data *fd = &current_insn.field_value[i];
 43.7870 -+
 43.7871 -+      pr_debug("inserting field: 0x%lx & 0x%lx\n",
 43.7872 -+	       fd->value >> fd->align_order, f->mask);
 43.7873 -+
 43.7874 -+      f->insert(f, buf, fd->value >> fd->align_order);
 43.7875 -+    }
 43.7876 -+
 43.7877 -+  assert(will_relax || !current_insn.immediate.X_add_symbol);
 43.7878 -+  return NULL;
 43.7879 -+}
 43.7880 -+
 43.7881 -+static const char *
 43.7882 -+finish_alias(const struct avr32_alias *alias)
 43.7883 -+{
 43.7884 -+  const struct avr32_opcode *opc;
 43.7885 -+  struct {
 43.7886 -+    unsigned long value;
 43.7887 -+    unsigned long align;
 43.7888 -+  } mapped_operand[AVR32_MAX_OPERANDS];
 43.7889 -+  unsigned int i;
 43.7890 -+
 43.7891 -+  opc = alias->opc;
 43.7892 -+
 43.7893 -+  /* Remap the operands from the alias to the real opcode */
 43.7894 -+  for (i = 0; i < opc->nr_fields; i++)
 43.7895 -+    {
 43.7896 -+      if (alias->operand_map[i].is_opindex)
 43.7897 -+	{
 43.7898 -+	  struct avr32_ifield_data *fd;
 43.7899 -+	  fd = &current_insn.field_value[alias->operand_map[i].value];
 43.7900 -+	  mapped_operand[i].value = fd->value;
 43.7901 -+	  mapped_operand[i].align = fd->align_order;
 43.7902 -+	}
 43.7903 -+      else
 43.7904 -+	{
 43.7905 -+	  mapped_operand[i].value = alias->operand_map[i].value;
 43.7906 -+	  mapped_operand[i].align = 0;
 43.7907 -+	}
 43.7908 -+    }
 43.7909 -+
 43.7910 -+  for (i = 0; i < opc->nr_fields; i++)
 43.7911 -+    {
 43.7912 -+      current_insn.field_value[i].value = mapped_operand[i].value;
 43.7913 -+      if (opc->id == AVR32_OPC_COP)
 43.7914 -+	current_insn.field_value[i].align_order = 0;
 43.7915 -+      else
 43.7916 -+	current_insn.field_value[i].align_order
 43.7917 -+	  = mapped_operand[i].align;
 43.7918 -+    }
 43.7919 -+
 43.7920 -+  current_insn.next_slot = opc->nr_fields;
 43.7921 -+
 43.7922 -+  return finish_insn(opc);
 43.7923 -+}
 43.7924 -+
 43.7925 -+static const char *
 43.7926 -+finish_lda(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
 43.7927 -+{
 43.7928 -+  expressionS *exp = &current_insn.immediate;
 43.7929 -+  relax_substateT initial_subtype;
 43.7930 -+  symbolS *sym;
 43.7931 -+  offsetT off;
 43.7932 -+  int initial_size, max_size;
 43.7933 -+  char *buf;
 43.7934 -+
 43.7935 -+  initial_size = LDA_INITIAL_SIZE;
 43.7936 -+
 43.7937 -+  if (avr32_pic)
 43.7938 -+    {
 43.7939 -+      initial_subtype = LDA_SUBTYPE_SUB;
 43.7940 -+      if (linkrelax)
 43.7941 -+	max_size = 8;
 43.7942 -+      else
 43.7943 -+	max_size = 4;
 43.7944 -+    }
 43.7945 -+  else
 43.7946 -+    {
 43.7947 -+      initial_subtype = LDA_SUBTYPE_MOV1;
 43.7948 -+      max_size = 4;
 43.7949 -+    }
 43.7950 -+
 43.7951 -+  frag_grow(max_size);
 43.7952 -+  buf = frag_more(initial_size);
 43.7953 -+  dwarf2_emit_insn(initial_size);
 43.7954 -+
 43.7955 -+  if (exp->X_op == O_symbol)
 43.7956 -+    {
 43.7957 -+      sym = exp->X_add_symbol;
 43.7958 -+      off = exp->X_add_number;
 43.7959 -+    }
 43.7960 -+  else
 43.7961 -+    {
 43.7962 -+      sym = make_expr_symbol(exp);
 43.7963 -+      off = 0;
 43.7964 -+    }
 43.7965 -+
 43.7966 -+  frag_now->tc_frag_data.reloc_info = current_insn.field_value[0].value;
 43.7967 -+  frag_now->tc_frag_data.relaxer = &avr32_lda_relaxer;
 43.7968 -+
 43.7969 -+  if (!avr32_pic)
 43.7970 -+    {
 43.7971 -+      /* The relaxer will bump the refcount if necessary */
 43.7972 -+      frag_now->tc_frag_data.pool
 43.7973 -+	= add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
 43.7974 -+    }
 43.7975 -+
 43.7976 -+  frag_var(rs_machine_dependent, max_size - initial_size,
 43.7977 -+	   initial_size, initial_subtype, sym, off, buf);
 43.7978 -+
 43.7979 -+  return NULL;
 43.7980 -+}
 43.7981 -+
 43.7982 -+static const char *
 43.7983 -+finish_call(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
 43.7984 -+{
 43.7985 -+  expressionS *exp = &current_insn.immediate;
 43.7986 -+  symbolS *sym;
 43.7987 -+  offsetT off;
 43.7988 -+  int initial_size, max_size;
 43.7989 -+  char *buf;
 43.7990 -+
 43.7991 -+  initial_size = CALL_INITIAL_SIZE;
 43.7992 -+
 43.7993 -+  if (avr32_pic)
 43.7994 -+    {
 43.7995 -+      if (linkrelax)
 43.7996 -+	max_size = 10;
 43.7997 -+      else
 43.7998 -+	max_size = 4;
 43.7999 -+    }
 43.8000 -+  else
 43.8001 -+    max_size = 4;
 43.8002 -+
 43.8003 -+  frag_grow(max_size);
 43.8004 -+  buf = frag_more(initial_size);
 43.8005 -+  dwarf2_emit_insn(initial_size);
 43.8006 -+
 43.8007 -+  frag_now->tc_frag_data.relaxer = &avr32_call_relaxer;
 43.8008 -+
 43.8009 -+  if (exp->X_op == O_symbol)
 43.8010 -+    {
 43.8011 -+      sym = exp->X_add_symbol;
 43.8012 -+      off = exp->X_add_number;
 43.8013 -+    }
 43.8014 -+  else
 43.8015 -+    {
 43.8016 -+      sym = make_expr_symbol(exp);
 43.8017 -+      off = 0;
 43.8018 -+    }
 43.8019 -+
 43.8020 -+  if (!avr32_pic)
 43.8021 -+    {
 43.8022 -+      /* The relaxer will bump the refcount if necessary */
 43.8023 -+      frag_now->tc_frag_data.pool
 43.8024 -+	= add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
 43.8025 -+    }
 43.8026 -+
 43.8027 -+  frag_var(rs_machine_dependent, max_size - initial_size,
 43.8028 -+	   initial_size, CALL_SUBTYPE_RCALL1, sym, off, buf);
 43.8029 -+
 43.8030 -+  return NULL;
 43.8031 -+}
 43.8032 -+
 43.8033 -+void
 43.8034 -+md_begin (void)
 43.8035 -+{
 43.8036 -+  unsigned long flags = 0;
 43.8037 -+  int i;
 43.8038 -+
 43.8039 -+  avr32_mnemonic_htab = hash_new();
 43.8040 -+
 43.8041 -+  if (!avr32_mnemonic_htab)
 43.8042 -+    as_fatal(_("virtual memory exhausted"));
 43.8043 -+
 43.8044 -+  for (i = 0; i < AVR32_NR_MNEMONICS; i++)
 43.8045 -+    {
 43.8046 -+      hash_insert(avr32_mnemonic_htab, avr32_mnemonic_table[i].name,
 43.8047 -+		  (void *)&avr32_mnemonic_table[i]);
 43.8048 -+    }
 43.8049 -+
 43.8050 -+  if (linkrelax)
 43.8051 -+    flags |= EF_AVR32_LINKRELAX;
 43.8052 -+  if (avr32_pic)
 43.8053 -+    flags |= EF_AVR32_PIC;
 43.8054 -+
 43.8055 -+  bfd_set_private_flags(stdoutput, flags);
 43.8056 -+
 43.8057 -+#ifdef OPC_CONSISTENCY_CHECK
 43.8058 -+  if (sizeof(avr32_operand_table)/sizeof(avr32_operand_table[0])
 43.8059 -+      < AVR32_NR_OPERANDS)
 43.8060 -+    as_fatal(_("operand table is incomplete"));
 43.8061 -+
 43.8062 -+  for (i = 0; i < AVR32_NR_OPERANDS; i++)
 43.8063 -+    if (avr32_operand_table[i].id != i)
 43.8064 -+      as_fatal(_("operand table inconsistency found at index %d\n"), i);
 43.8065 -+  pr_debug("%d operands verified\n", AVR32_NR_OPERANDS);
 43.8066 -+
 43.8067 -+  for (i = 0; i < AVR32_NR_IFIELDS; i++)
 43.8068 -+    if (avr32_ifield_table[i].id != i)
 43.8069 -+      as_fatal(_("ifield table inconsistency found at index %d\n"), i);
 43.8070 -+  pr_debug("%d instruction fields verified\n", AVR32_NR_IFIELDS);
 43.8071 -+
 43.8072 -+  for (i = 0; i < AVR32_NR_OPCODES; i++)
 43.8073 -+    {
 43.8074 -+      if (avr32_opc_table[i].id != i)
 43.8075 -+	as_fatal(_("opcode table inconsistency found at index %d\n"), i);
 43.8076 -+      if ((avr32_opc_table[i].var_field == -1
 43.8077 -+	   && avr32_relax_table[i].length != 0)
 43.8078 -+	  || (avr32_opc_table[i].var_field != -1
 43.8079 -+	      && avr32_relax_table[i].length == 0))
 43.8080 -+	as_fatal(_("relax table inconsistency found at index %d\n"), i);
 43.8081 -+    }
 43.8082 -+  pr_debug("%d opcodes verified\n", AVR32_NR_OPCODES);
 43.8083 -+
 43.8084 -+  for (i = 0; i < AVR32_NR_SYNTAX; i++)
 43.8085 -+    if (avr32_syntax_table[i].id != i)
 43.8086 -+      as_fatal(_("syntax table inconsistency found at index %d\n"), i);
 43.8087 -+  pr_debug("%d syntax variants verified\n", AVR32_NR_SYNTAX);
 43.8088 -+
 43.8089 -+  for (i = 0; i < AVR32_NR_ALIAS; i++)
 43.8090 -+    if (avr32_alias_table[i].id != i)
 43.8091 -+      as_fatal(_("alias table inconsistency found at index %d\n"), i);
 43.8092 -+  pr_debug("%d aliases verified\n", AVR32_NR_ALIAS);
 43.8093 -+
 43.8094 -+  for (i = 0; i < AVR32_NR_MNEMONICS; i++)
 43.8095 -+    if (avr32_mnemonic_table[i].id != i)
 43.8096 -+      as_fatal(_("mnemonic table inconsistency found at index %d\n"), i);
 43.8097 -+  pr_debug("%d mnemonics verified\n", AVR32_NR_MNEMONICS);
 43.8098 -+#endif
 43.8099 -+}
 43.8100 -+
 43.8101 -+void
 43.8102 -+md_assemble (char *str)
 43.8103 -+{
 43.8104 -+  struct avr32_mnemonic *mnemonic;
 43.8105 -+  char *p, c;
 43.8106 -+
 43.8107 -+  memset(&current_insn, 0, sizeof(current_insn));
 43.8108 -+  current_insn.immediate.X_op = O_constant;
 43.8109 -+
 43.8110 -+  skip_whitespace(str);
 43.8111 -+  for (p = str; *p; p++)
 43.8112 -+    if (*p == ' ')
 43.8113 -+      break;
 43.8114 -+  c = *p;
 43.8115 -+  *p = 0;
 43.8116 -+
 43.8117 -+  mnemonic = hash_find(avr32_mnemonic_htab, str);
 43.8118 -+  *p = c;
 43.8119 -+  if (c) p++;
 43.8120 -+
 43.8121 -+  if (mnemonic)
 43.8122 -+    {
 43.8123 -+      const struct avr32_syntax *syntax;
 43.8124 -+
 43.8125 -+      for (syntax = mnemonic->syntax; syntax; syntax = syntax->next)
 43.8126 -+	{
 43.8127 -+	  const char *errmsg = NULL;
 43.8128 -+
 43.8129 -+	  if (syntax_matches(syntax, p))
 43.8130 -+	    {
 43.8131 -+	      if (!(syntax->isa_flags & avr32_arch->isa_flags))
 43.8132 -+		{
 43.8133 -+		  as_bad(_("Selected architecture `%s'  does not support `%s'"),
 43.8134 -+			 avr32_arch->name, str);
 43.8135 -+		  return;
 43.8136 -+		}
 43.8137 -+
 43.8138 -+	      current_insn.syntax = syntax;
 43.8139 -+	      parse_operands(p);
 43.8140 -+
 43.8141 -+	      switch (syntax->type)
 43.8142 -+		{
 43.8143 -+		case AVR32_PARSER_NORMAL:
 43.8144 -+		  errmsg = finish_insn(syntax->u.opc);
 43.8145 -+		  break;
 43.8146 -+		case AVR32_PARSER_ALIAS:
 43.8147 -+		  errmsg = finish_alias(syntax->u.alias);
 43.8148 -+		  break;
 43.8149 -+		case AVR32_PARSER_LDA:
 43.8150 -+		  errmsg = finish_lda(syntax);
 43.8151 -+		  break;
 43.8152 -+		case AVR32_PARSER_CALL:
 43.8153 -+		  errmsg = finish_call(syntax);
 43.8154 -+		  break;
 43.8155 -+		default:
 43.8156 -+		  BAD_CASE(syntax->type);
 43.8157 -+		  break;
 43.8158 -+		}
 43.8159 -+
 43.8160 -+	      if (errmsg)
 43.8161 -+		as_bad("%s in `%s'", errmsg, str);
 43.8162 -+
 43.8163 -+	      return;
 43.8164 -+	    }
 43.8165 -+	}
 43.8166 -+
 43.8167 -+      as_bad(_("unrecognized form of instruction: `%s'"), str);
 43.8168 -+    }
 43.8169 -+  else
 43.8170 -+    as_bad(_("unrecognized instruction `%s'"), str);
 43.8171 -+}
 43.8172 -+
 43.8173 -+void avr32_cleanup(void)
 43.8174 -+{
 43.8175 -+  struct cpool *pool;
 43.8176 -+
 43.8177 -+  /* Emit any constant pools that haven't been explicitly flushed with
 43.8178 -+     a .cpool directive. */
 43.8179 -+  for (pool = cpool_list; pool; pool = pool->next)
 43.8180 -+    {
 43.8181 -+      subseg_set(pool->section, pool->sub_section);
 43.8182 -+      s_cpool(0);
 43.8183 -+    }
 43.8184 -+}
 43.8185 -+
 43.8186 -+/* Handle any PIC-related operands in data allocation pseudo-ops */
 43.8187 -+void
 43.8188 -+avr32_cons_fix_new (fragS *frag, int off, int size, expressionS *exp)
 43.8189 -+{
 43.8190 -+  bfd_reloc_code_real_type r_type = BFD_RELOC_UNUSED;
 43.8191 -+  int pcrel = 0;
 43.8192 -+
 43.8193 -+  pr_debug("%s:%u: cons_fix_new, add_sym: %s, op_sym: %s, op: %d, add_num: %d\n",
 43.8194 -+	   frag->fr_file, frag->fr_line,
 43.8195 -+	   exp->X_add_symbol?S_GET_NAME(exp->X_add_symbol):"(none)",
 43.8196 -+	   exp->X_op_symbol?S_GET_NAME(exp->X_op_symbol):"(none)",
 43.8197 -+	   exp->X_op, exp->X_add_number);
 43.8198 -+
 43.8199 -+  if (exp->X_op == O_subtract && exp->X_op_symbol)
 43.8200 -+    {
 43.8201 -+      if (exp->X_op_symbol == GOT_symbol)
 43.8202 -+	{
 43.8203 -+	  if (size != 4)
 43.8204 -+	    goto bad_size;
 43.8205 -+	  r_type = BFD_RELOC_AVR32_GOTPC;
 43.8206 -+	  exp->X_op = O_symbol;
 43.8207 -+	  exp->X_op_symbol = NULL;
 43.8208 -+	}
 43.8209 -+    }
 43.8210 -+  else if (exp->X_op == O_got)
 43.8211 -+    {
 43.8212 -+      switch (size)
 43.8213 -+	{
 43.8214 -+	case 1:
 43.8215 -+	  r_type = BFD_RELOC_AVR32_GOT8;
 43.8216 -+	  break;
 43.8217 -+	case 2:
 43.8218 -+	  r_type = BFD_RELOC_AVR32_GOT16;
 43.8219 -+	  break;
 43.8220 -+	case 4:
 43.8221 -+	  r_type = BFD_RELOC_AVR32_GOT32;
 43.8222 -+	  break;
 43.8223 -+	default:
 43.8224 -+	  goto bad_size;
 43.8225 -+	}
 43.8226 -+
 43.8227 -+      exp->X_op = O_symbol;
 43.8228 -+    }
 43.8229 -+
 43.8230 -+  if (r_type == BFD_RELOC_UNUSED)
 43.8231 -+    switch (size)
 43.8232 -+      {
 43.8233 -+      case 1:
 43.8234 -+	r_type = BFD_RELOC_8;
 43.8235 -+	break;
 43.8236 -+      case 2:
 43.8237 -+	r_type = BFD_RELOC_16;
 43.8238 -+	break;
 43.8239 -+      case 4:
 43.8240 -+	r_type = BFD_RELOC_32;
 43.8241 -+	break;
 43.8242 -+      default:
 43.8243 -+	goto bad_size;
 43.8244 -+      }
 43.8245 -+  else if (size != 4)
 43.8246 -+    {
 43.8247 -+    bad_size:
 43.8248 -+      as_bad(_("unsupported BFD relocation size %u"), size);
 43.8249 -+      r_type = BFD_RELOC_UNUSED;
 43.8250 -+    }
 43.8251 -+
 43.8252 -+  fix_new_exp (frag, off, size, exp, pcrel, r_type);
 43.8253 -+}
 43.8254 -+
 43.8255 -+static void
 43.8256 -+avr32_frob_section(bfd *abfd ATTRIBUTE_UNUSED, segT sec,
 43.8257 -+		   void *ignore ATTRIBUTE_UNUSED)
 43.8258 -+{
 43.8259 -+  segment_info_type *seginfo;
 43.8260 -+  fixS *fix;
 43.8261 -+
 43.8262 -+  seginfo = seg_info(sec);
 43.8263 -+  if (!seginfo)
 43.8264 -+    return;
 43.8265 -+
 43.8266 -+  for (fix = seginfo->fix_root; fix; fix = fix->fx_next)
 43.8267 -+    {
 43.8268 -+      if (fix->fx_done)
 43.8269 -+	continue;
 43.8270 -+
 43.8271 -+      if (fix->fx_r_type == BFD_RELOC_AVR32_SUB5
 43.8272 -+	  && fix->fx_addsy && fix->fx_subsy)
 43.8273 -+	{
 43.8274 -+	  if (S_GET_SEGMENT(fix->fx_addsy) != S_GET_SEGMENT(fix->fx_subsy)
 43.8275 -+	      || linkrelax)
 43.8276 -+	    {
 43.8277 -+	      symbolS *tmp;
 43.8278 -+#ifdef DEBUG
 43.8279 -+	      fprintf(stderr, "Swapping symbols in fixup:\n");
 43.8280 -+	      print_fixup(fix);
 43.8281 -+#endif
 43.8282 -+	      tmp = fix->fx_addsy;
 43.8283 -+	      fix->fx_addsy = fix->fx_subsy;
 43.8284 -+	      fix->fx_subsy = tmp;
 43.8285 -+	      fix->fx_offset = -fix->fx_offset;
 43.8286 -+	    }
 43.8287 -+	}
 43.8288 -+    }
 43.8289 -+}
 43.8290 -+
 43.8291 -+/* We need to look for SUB5 instructions with expressions that will be
 43.8292 -+   made PC-relative and switch fx_addsy with fx_subsy.  This has to be
 43.8293 -+   done before adjustment or the wrong symbol might be adjusted.
 43.8294 -+
 43.8295 -+   This applies to fixups that are a result of expressions like -(sym
 43.8296 -+   - .) and that will make it all the way to md_apply_fix3().  LDA
 43.8297 -+   does the right thing in convert_frag, so we must not convert
 43.8298 -+   those. */
 43.8299 -+void
 43.8300 -+avr32_frob_file(void)
 43.8301 -+{
 43.8302 -+  /* if (1 || !linkrelax)
 43.8303 -+     return; */
 43.8304 -+
 43.8305 -+  bfd_map_over_sections(stdoutput, avr32_frob_section, NULL);
 43.8306 -+}
 43.8307 -+
 43.8308 -+static bfd_boolean
 43.8309 -+convert_to_diff_reloc(fixS *fixP)
 43.8310 -+{
 43.8311 -+  switch (fixP->fx_r_type)
 43.8312 -+    {
 43.8313 -+    case BFD_RELOC_32:
 43.8314 -+      fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
 43.8315 -+      break;
 43.8316 -+    case BFD_RELOC_16:
 43.8317 -+      fixP->fx_r_type = BFD_RELOC_AVR32_DIFF16;
 43.8318 -+      break;
 43.8319 -+    case BFD_RELOC_8:
 43.8320 -+      fixP->fx_r_type = BFD_RELOC_AVR32_DIFF8;
 43.8321 -+      break;
 43.8322 -+    default:
 43.8323 -+      return FALSE;
 43.8324 -+    }
 43.8325 -+
 43.8326 -+  return TRUE;
 43.8327 -+}
 43.8328 -+
 43.8329 -+/* Simplify a fixup.  If possible, the fixup is reduced to a single
 43.8330 -+   constant which is written to the output file.  Otherwise, a
 43.8331 -+   relocation is generated so that the linker can take care of the
 43.8332 -+   rest.
 43.8333 -+
 43.8334 -+   ELF relocations have certain constraints: They can only take a
 43.8335 -+   single symbol and a single addend.  This means that for difference
 43.8336 -+   expressions, we _must_ get rid of the fx_subsy symbol somehow.
 43.8337 -+
 43.8338 -+   The difference between two labels in the same section can be
 43.8339 -+   calculated directly unless 'linkrelax' is set, or a relocation is
 43.8340 -+   forced.  If so, we must emit a R_AVR32_DIFFxx relocation.  If there
 43.8341 -+   are addends involved at this point, we must be especially careful
 43.8342 -+   as the relocation must point exactly to the symbol being
 43.8343 -+   subtracted.
 43.8344 -+
 43.8345 -+   When subtracting a symbol defined in the same section as the fixup,
 43.8346 -+   we might be able to convert it to a PC-relative expression, unless
 43.8347 -+   linkrelax is set. If this is the case, there's no way we can make
 43.8348 -+   sure that the difference between the fixup and fx_subsy stays
 43.8349 -+   constant.  So for now, we're just going to disallow that.
 43.8350 -+   */
 43.8351 -+void
 43.8352 -+avr32_process_fixup(fixS *fixP, segT this_segment)
 43.8353 -+{
 43.8354 -+  segT add_symbol_segment = absolute_section;
 43.8355 -+  segT sub_symbol_segment = absolute_section;
 43.8356 -+  symbolS *fx_addsy, *fx_subsy;
 43.8357 -+  offsetT value = 0, fx_offset;
 43.8358 -+  bfd_boolean apply = FALSE;
 43.8359 -+
 43.8360 -+  assert(this_segment != absolute_section);
 43.8361 -+
 43.8362 -+  if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
 43.8363 -+    {
 43.8364 -+      as_bad_where(fixP->fx_file, fixP->fx_line,
 43.8365 -+		   _("Bad relocation type %d\n"), fixP->fx_r_type);
 43.8366 -+      return;
 43.8367 -+    }
 43.8368 -+
 43.8369 -+  /* BFD_RELOC_AVR32_SUB5 fixups have been swapped by avr32_frob_section() */
 43.8370 -+  fx_addsy = fixP->fx_addsy;
 43.8371 -+  fx_subsy = fixP->fx_subsy;
 43.8372 -+  fx_offset = fixP->fx_offset;
 43.8373 -+
 43.8374 -+  if (fx_addsy)
 43.8375 -+    add_symbol_segment = S_GET_SEGMENT(fx_addsy);
 43.8376 -+
 43.8377 -+  if (fx_subsy)
 43.8378 -+    {
 43.8379 -+      resolve_symbol_value(fx_subsy);
 43.8380 -+      sub_symbol_segment = S_GET_SEGMENT(fx_subsy);
 43.8381 -+
 43.8382 -+      if (sub_symbol_segment == this_segment
 43.8383 -+	  && (!linkrelax
 43.8384 -+	      || S_GET_VALUE(fx_subsy) == (fixP->fx_frag->fr_address
 43.8385 -+					   + fixP->fx_where)))
 43.8386 -+	{
 43.8387 -+	  fixP->fx_pcrel = TRUE;
 43.8388 -+	  fx_offset += (fixP->fx_frag->fr_address + fixP->fx_where
 43.8389 -+			- S_GET_VALUE(fx_subsy));
 43.8390 -+	  fx_subsy = NULL;
 43.8391 -+	}
 43.8392 -+      else if (sub_symbol_segment == absolute_section)
 43.8393 -+	{
 43.8394 -+	  /* The symbol is really a constant.  */
 43.8395 -+	  fx_offset -= S_GET_VALUE(fx_subsy);
 43.8396 -+	  fx_subsy = NULL;
 43.8397 -+	}
 43.8398 -+      else if (SEG_NORMAL(add_symbol_segment)
 43.8399 -+	       && sub_symbol_segment == add_symbol_segment
 43.8400 -+	       && (!linkrelax || convert_to_diff_reloc(fixP)))
 43.8401 -+	{
 43.8402 -+	  /* Difference between two labels in the same section.  */
 43.8403 -+	  if (linkrelax)
 43.8404 -+	    {
 43.8405 -+	      /* convert_to_diff() has ensured that the reloc type is
 43.8406 -+		 either DIFF32, DIFF16 or DIFF8.  */
 43.8407 -+	      value = (S_GET_VALUE(fx_addsy) + fixP->fx_offset
 43.8408 -+		       - S_GET_VALUE(fx_subsy));
 43.8409 -+
 43.8410 -+	      /* Try to convert it to a section symbol if possible  */
 43.8411 -+	      if (!S_FORCE_RELOC(fx_addsy, 1)
 43.8412 -+		  && !(sub_symbol_segment->flags & SEC_THREAD_LOCAL))
 43.8413 -+		{
 43.8414 -+		  fx_offset = S_GET_VALUE(fx_subsy);
 43.8415 -+		  fx_addsy = section_symbol(sub_symbol_segment);
 43.8416 -+		}
 43.8417 -+	      else
 43.8418 -+		{
 43.8419 -+		  fx_addsy = fx_subsy;
 43.8420 -+		  fx_offset = 0;
 43.8421 -+		}
 43.8422 -+
 43.8423 -+	      fx_subsy = NULL;
 43.8424 -+	      apply = TRUE;
 43.8425 -+	    }
 43.8426 -+	  else
 43.8427 -+	    {
 43.8428 -+	      fx_offset += S_GET_VALUE(fx_addsy);
 43.8429 -+	      fx_offset -= S_GET_VALUE(fx_subsy);
 43.8430 -+	      fx_addsy = NULL;
 43.8431 -+	      fx_subsy = NULL;
 43.8432 -+	    }
 43.8433 -+	}
 43.8434 -+      else
 43.8435 -+	{
 43.8436 -+	  as_bad_where(fixP->fx_file, fixP->fx_line,
 43.8437 -+		       _("can't resolve `%s' {%s section} - `%s' {%s section}"),
 43.8438 -+		       fx_addsy ? S_GET_NAME (fx_addsy) : "0",
 43.8439 -+		       segment_name (add_symbol_segment),
 43.8440 -+		       S_GET_NAME (fx_subsy),
 43.8441 -+		       segment_name (sub_symbol_segment));
 43.8442 -+	  return;
 43.8443 -+	}
 43.8444 -+    }
 43.8445 -+
 43.8446 -+  if (fx_addsy && !TC_FORCE_RELOCATION(fixP))
 43.8447 -+    {
 43.8448 -+      if (add_symbol_segment == this_segment
 43.8449 -+	  && fixP->fx_pcrel)
 43.8450 -+	{
 43.8451 -+	  value += S_GET_VALUE(fx_addsy);
 43.8452 -+	  value -= md_pcrel_from_section(fixP, this_segment);
 43.8453 -+	  fx_addsy = NULL;
 43.8454 -+	  fixP->fx_pcrel = FALSE;
 43.8455 -+	}
 43.8456 -+      else if (add_symbol_segment == absolute_section)
 43.8457 -+	{
 43.8458 -+	  fx_offset += S_GET_VALUE(fixP->fx_addsy);
 43.8459 -+	  fx_addsy = NULL;
 43.8460 -+	}
 43.8461 -+    }
 43.8462 -+
 43.8463 -+  if (!fx_addsy)
 43.8464 -+    fixP->fx_done = TRUE;
 43.8465 -+
 43.8466 -+  if (fixP->fx_pcrel)
 43.8467 -+    {
 43.8468 -+      if (fx_addsy != NULL
 43.8469 -+	  && S_IS_DEFINED(fx_addsy)
 43.8470 -+	  && S_GET_SEGMENT(fx_addsy) != this_segment)
 43.8471 -+	value += md_pcrel_from_section(fixP, this_segment);
 43.8472 -+
 43.8473 -+      switch (fixP->fx_r_type)
 43.8474 -+	{
 43.8475 -+	case BFD_RELOC_32:
 43.8476 -+	  fixP->fx_r_type = BFD_RELOC_32_PCREL;
 43.8477 -+	  break;
 43.8478 -+	case BFD_RELOC_16:
 43.8479 -+	  fixP->fx_r_type = BFD_RELOC_16_PCREL;
 43.8480 -+	  break;
 43.8481 -+	case BFD_RELOC_8:
 43.8482 -+	  fixP->fx_r_type = BFD_RELOC_8_PCREL;
 43.8483 -+	  break;
 43.8484 -+	case BFD_RELOC_AVR32_SUB5:
 43.8485 -+	  fixP->fx_r_type = BFD_RELOC_AVR32_16N_PCREL;
 43.8486 -+	  break;
 43.8487 -+	case BFD_RELOC_AVR32_16S:
 43.8488 -+	  fixP->fx_r_type = BFD_RELOC_AVR32_16B_PCREL;
 43.8489 -+	  break;
 43.8490 -+	case BFD_RELOC_AVR32_14UW:
 43.8491 -+	  fixP->fx_r_type = BFD_RELOC_AVR32_14UW_PCREL;
 43.8492 -+	  break;
 43.8493 -+	case BFD_RELOC_AVR32_10UW:
 43.8494 -+	  fixP->fx_r_type = BFD_RELOC_AVR32_10UW_PCREL;
 43.8495 -+	  break;
 43.8496 -+	default:
 43.8497 -+	  /* Should have been taken care of already */
 43.8498 -+	  break;
 43.8499 -+	}
 43.8500 -+    }
 43.8501 -+
 43.8502 -+  if (fixP->fx_done || apply)
 43.8503 -+    {
 43.8504 -+      const struct avr32_ifield *ifield;
 43.8505 -+      char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
 43.8506 -+
 43.8507 -+      if (fixP->fx_done)
 43.8508 -+	value += fx_offset;
 43.8509 -+
 43.8510 -+      /* For hosts with longs bigger than 32-bits make sure that the top
 43.8511 -+         bits of a 32-bit negative value read in by the parser are set,
 43.8512 -+         so that the correct comparisons are made.  */
 43.8513 -+      if (value & 0x80000000)
 43.8514 -+        value |= (-1L << 31);
 43.8515 -+
 43.8516 -+      switch (fixP->fx_r_type)
 43.8517 -+	{
 43.8518 -+	case BFD_RELOC_32:
 43.8519 -+	case BFD_RELOC_16:
 43.8520 -+	case BFD_RELOC_8:
 43.8521 -+	case BFD_RELOC_AVR32_DIFF32:
 43.8522 -+	case BFD_RELOC_AVR32_DIFF16:
 43.8523 -+	case BFD_RELOC_AVR32_DIFF8:
 43.8524 -+	  md_number_to_chars(buf, value, fixP->fx_size);
 43.8525 -+	  break;
 43.8526 -+	case BFD_RELOC_HI16:
 43.8527 -+	  value >>= 16;
 43.8528 -+	case BFD_RELOC_LO16:
 43.8529 -+	  value &= 0xffff;
 43.8530 -+	  md_number_to_chars(buf + 2, value, 2);
 43.8531 -+	  break;
 43.8532 -+	case BFD_RELOC_AVR32_16N_PCREL:
 43.8533 -+	  value = -value;
 43.8534 -+	  /* fall through */
 43.8535 -+	case BFD_RELOC_AVR32_22H_PCREL:
 43.8536 -+	case BFD_RELOC_AVR32_18W_PCREL:
 43.8537 -+	case BFD_RELOC_AVR32_16B_PCREL:
 43.8538 -+	case BFD_RELOC_AVR32_11H_PCREL:
 43.8539 -+	case BFD_RELOC_AVR32_9H_PCREL:
 43.8540 -+	case BFD_RELOC_AVR32_9UW_PCREL:
 43.8541 -+	case BFD_RELOC_AVR32_3U:
 43.8542 -+	case BFD_RELOC_AVR32_4UH:
 43.8543 -+	case BFD_RELOC_AVR32_6UW:
 43.8544 -+	case BFD_RELOC_AVR32_6S:
 43.8545 -+	case BFD_RELOC_AVR32_7UW:
 43.8546 -+	case BFD_RELOC_AVR32_8S_EXT:
 43.8547 -+	case BFD_RELOC_AVR32_8S:
 43.8548 -+	case BFD_RELOC_AVR32_10UW:
 43.8549 -+	case BFD_RELOC_AVR32_10SW:
 43.8550 -+	case BFD_RELOC_AVR32_STHH_W:
 43.8551 -+	case BFD_RELOC_AVR32_14UW:
 43.8552 -+	case BFD_RELOC_AVR32_16S:
 43.8553 -+	case BFD_RELOC_AVR32_16U:
 43.8554 -+	case BFD_RELOC_AVR32_21S:
 43.8555 -+	case BFD_RELOC_AVR32_SUB5:
 43.8556 -+	case BFD_RELOC_AVR32_CPCALL:
 43.8557 -+	case BFD_RELOC_AVR32_16_CP:
 43.8558 -+	case BFD_RELOC_AVR32_9W_CP:
 43.8559 -+	case BFD_RELOC_AVR32_15S:
 43.8560 -+	  ifield = fixP->tc_fix_data.ifield;
 43.8561 -+	  pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
 43.8562 -+		   fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
 43.8563 -+		   fixP->tc_fix_data.align);
 43.8564 -+	  if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
 43.8565 -+	    as_bad_where(fixP->fx_file, fixP->fx_line,
 43.8566 -+			 _("operand out of range (%ld not between %ld and %ld)"),
 43.8567 -+			 value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
 43.8568 -+	  if (value & ((1 << fixP->tc_fix_data.align) - 1))
 43.8569 -+	    as_bad_where(fixP->fx_file, fixP->fx_line,
 43.8570 -+			 _("misaligned operand (required alignment: %d)"),
 43.8571 -+			 1 << fixP->tc_fix_data.align);
 43.8572 -+	  ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
 43.8573 -+	  break;
 43.8574 -+	case BFD_RELOC_AVR32_ALIGN:
 43.8575 -+	  /* Nothing to do */
 43.8576 -+	  fixP->fx_done = FALSE;
 43.8577 -+	  break;
 43.8578 -+	default:
 43.8579 -+	  as_fatal("reloc type %s not handled\n",
 43.8580 -+		   bfd_get_reloc_code_name(fixP->fx_r_type));
 43.8581 -+	}
 43.8582 -+    }
 43.8583 -+
 43.8584 -+  fixP->fx_addsy = fx_addsy;
 43.8585 -+  fixP->fx_subsy = fx_subsy;
 43.8586 -+  fixP->fx_offset = fx_offset;
 43.8587 -+
 43.8588 -+  if (!fixP->fx_done)
 43.8589 -+    {
 43.8590 -+      if (!fixP->fx_addsy)
 43.8591 -+	fixP->fx_addsy = abs_section_sym;
 43.8592 -+
 43.8593 -+      symbol_mark_used_in_reloc(fixP->fx_addsy);
 43.8594 -+      if (fixP->fx_subsy)
 43.8595 -+	abort();
 43.8596 -+    }
 43.8597 -+}
 43.8598 -+
 43.8599 -+#if 0
 43.8600 -+void
 43.8601 -+md_apply_fix3 (fixS *fixP, valueT *valP, segT seg)
 43.8602 -+{
 43.8603 -+  const struct avr32_ifield *ifield;
 43.8604 -+  offsetT	value = *valP;
 43.8605 -+  char		*buf = fixP->fx_where + fixP->fx_frag->fr_literal;
 43.8606 -+  bfd_boolean	apply;
 43.8607 -+
 43.8608 -+  pr_debug("%s:%u: apply_fix3: r_type=%d value=%lx offset=%lx\n",
 43.8609 -+	   fixP->fx_file, fixP->fx_line, fixP->fx_r_type, *valP,
 43.8610 -+	   fixP->fx_offset);
 43.8611 -+
 43.8612 -+  if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
 43.8613 -+    {
 43.8614 -+      as_bad_where(fixP->fx_file, fixP->fx_line,
 43.8615 -+		   _("Bad relocation type %d\n"), fixP->fx_r_type);
 43.8616 -+      return;
 43.8617 -+    }
 43.8618 -+
 43.8619 -+  if (!fixP->fx_addsy && !fixP->fx_subsy)
 43.8620 -+    fixP->fx_done = 1;
 43.8621 -+
 43.8622 -+  if (fixP->fx_pcrel)
 43.8623 -+    {
 43.8624 -+      if (fixP->fx_addsy != NULL
 43.8625 -+	  && S_IS_DEFINED(fixP->fx_addsy)
 43.8626 -+	  && S_GET_SEGMENT(fixP->fx_addsy) != seg)
 43.8627 -+	value += md_pcrel_from_section(fixP, seg);
 43.8628 -+
 43.8629 -+      switch (fixP->fx_r_type)
 43.8630 -+	{
 43.8631 -+	case BFD_RELOC_32:
 43.8632 -+	  fixP->fx_r_type = BFD_RELOC_32_PCREL;
 43.8633 -+	  break;
 43.8634 -+	case BFD_RELOC_16:
 43.8635 -+	case BFD_RELOC_8:
 43.8636 -+	  as_bad_where (fixP->fx_file, fixP->fx_line,
 43.8637 -+			_("8- and 16-bit PC-relative relocations not supported"));
 43.8638 -+	  break;
 43.8639 -+	case BFD_RELOC_AVR32_SUB5:
 43.8640 -+	  fixP->fx_r_type = BFD_RELOC_AVR32_PCREL_SUB5;
 43.8641 -+	  break;
 43.8642 -+	case BFD_RELOC_AVR32_16S:
 43.8643 -+	  fixP->fx_r_type = BFD_RELOC_AVR32_16_PCREL;
 43.8644 -+	  break;
 43.8645 -+	default:
 43.8646 -+	  /* Should have been taken care of already */
 43.8647 -+	  break;
 43.8648 -+	}
 43.8649 -+    }
 43.8650 -+
 43.8651 -+  if (fixP->fx_r_type == BFD_RELOC_32
 43.8652 -+      && fixP->fx_subsy)
 43.8653 -+    {
 43.8654 -+      fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
 43.8655 -+
 43.8656 -+      /* Offsets are only allowed if it's a result of adjusting a
 43.8657 -+	 local symbol into a section-relative offset.
 43.8658 -+	 tc_fix_adjustable() should prevent any adjustment if there
 43.8659 -+	 was an offset involved before.  */
 43.8660 -+      if (fixP->fx_offset && !symbol_section_p(fixP->fx_addsy))
 43.8661 -+	as_bad_where(fixP->fx_file, fixP->fx_line,
 43.8662 -+		     _("cannot represent symbol difference with an offset"));
 43.8663 -+
 43.8664 -+      value = (S_GET_VALUE(fixP->fx_addsy) + fixP->fx_offset
 43.8665 -+	       - S_GET_VALUE(fixP->fx_subsy));
 43.8666 -+
 43.8667 -+      /* The difference before any relaxing takes place is written
 43.8668 -+	 out, and the DIFF32 reloc identifies the address of the first
 43.8669 -+	 symbol (i.e. the on that's subtracted.)  */
 43.8670 -+      *valP = value;
 43.8671 -+      fixP->fx_offset -= value;
 43.8672 -+      fixP->fx_subsy = NULL;
 43.8673 -+
 43.8674 -+      md_number_to_chars(buf, value, fixP->fx_size);
 43.8675 -+    }
 43.8676 -+
 43.8677 -+  if (fixP->fx_done)
 43.8678 -+    {
 43.8679 -+      switch (fixP->fx_r_type)
 43.8680 -+	{
 43.8681 -+	case BFD_RELOC_8:
 43.8682 -+	case BFD_RELOC_16:
 43.8683 -+	case BFD_RELOC_32:
 43.8684 -+	  md_number_to_chars(buf, value, fixP->fx_size);
 43.8685 -+	  break;
 43.8686 -+	case BFD_RELOC_HI16:
 43.8687 -+	  value >>= 16;
 43.8688 -+	case BFD_RELOC_LO16:
 43.8689 -+	  value &= 0xffff;
 43.8690 -+	  *valP = value;
 43.8691 -+	  md_number_to_chars(buf + 2, value, 2);
 43.8692 -+	  break;
 43.8693 -+	case BFD_RELOC_AVR32_PCREL_SUB5:
 43.8694 -+	  value = -value;
 43.8695 -+	  /* fall through */
 43.8696 -+	case BFD_RELOC_AVR32_9_PCREL:
 43.8697 -+	case BFD_RELOC_AVR32_11_PCREL:
 43.8698 -+	case BFD_RELOC_AVR32_16_PCREL:
 43.8699 -+	case BFD_RELOC_AVR32_18_PCREL:
 43.8700 -+	case BFD_RELOC_AVR32_22_PCREL:
 43.8701 -+	case BFD_RELOC_AVR32_3U:
 43.8702 -+	case BFD_RELOC_AVR32_4UH:
 43.8703 -+	case BFD_RELOC_AVR32_6UW:
 43.8704 -+	case BFD_RELOC_AVR32_6S:
 43.8705 -+	case BFD_RELOC_AVR32_7UW:
 43.8706 -+	case BFD_RELOC_AVR32_8S:
 43.8707 -+	case BFD_RELOC_AVR32_10UW:
 43.8708 -+	case BFD_RELOC_AVR32_10SW:
 43.8709 -+	case BFD_RELOC_AVR32_14UW:
 43.8710 -+	case BFD_RELOC_AVR32_16S:
 43.8711 -+	case BFD_RELOC_AVR32_16U:
 43.8712 -+	case BFD_RELOC_AVR32_21S:
 43.8713 -+	case BFD_RELOC_AVR32_BRC1:
 43.8714 -+	case BFD_RELOC_AVR32_SUB5:
 43.8715 -+	case BFD_RELOC_AVR32_CPCALL:
 43.8716 -+	case BFD_RELOC_AVR32_16_CP:
 43.8717 -+	case BFD_RELOC_AVR32_9_CP:
 43.8718 -+	case BFD_RELOC_AVR32_15S:
 43.8719 -+	  ifield = fixP->tc_fix_data.ifield;
 43.8720 -+	  pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
 43.8721 -+		   fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
 43.8722 -+		   fixP->tc_fix_data.align);
 43.8723 -+	  if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
 43.8724 -+	    as_bad_where(fixP->fx_file, fixP->fx_line,
 43.8725 -+			 _("operand out of range (%ld not between %ld and %ld)"),
 43.8726 -+			 value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
 43.8727 -+	  if (value & ((1 << fixP->tc_fix_data.align) - 1))
 43.8728 -+	    as_bad_where(fixP->fx_file, fixP->fx_line,
 43.8729 -+			 _("misaligned operand (required alignment: %d)"),
 43.8730 -+			 1 << fixP->tc_fix_data.align);
 43.8731 -+	  ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
 43.8732 -+	  break;
 43.8733 -+	case BFD_RELOC_AVR32_ALIGN:
 43.8734 -+	  /* Nothing to do */
 43.8735 -+	  fixP->fx_done = FALSE;
 43.8736 -+	  break;
 43.8737 -+	default:
 43.8738 -+	  as_fatal("reloc type %s not handled\n",
 43.8739 -+		   bfd_get_reloc_code_name(fixP->fx_r_type));
 43.8740 -+	}
 43.8741 -+    }
 43.8742 -+}
 43.8743 -+#endif
 43.8744 -+
 43.8745 -+arelent *
 43.8746 -+tc_gen_reloc (asection *section ATTRIBUTE_UNUSED,
 43.8747 -+	      fixS *fixp)
 43.8748 -+{
 43.8749 -+  arelent *reloc;
 43.8750 -+  bfd_reloc_code_real_type code;
 43.8751 -+
 43.8752 -+  reloc = xmalloc (sizeof (arelent));
 43.8753 -+
 43.8754 -+  reloc->sym_ptr_ptr = xmalloc (sizeof (asymbol *));
 43.8755 -+  *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
 43.8756 -+  reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
 43.8757 -+  reloc->addend = fixp->fx_offset;
 43.8758 -+  code = fixp->fx_r_type;
 43.8759 -+
 43.8760 -+  reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
 43.8761 -+
 43.8762 -+  if (reloc->howto == NULL)
 43.8763 -+    {
 43.8764 -+      as_bad_where (fixp->fx_file, fixp->fx_line,
 43.8765 -+		    _("cannot represent relocation %s in this object file format"),
 43.8766 -+		    bfd_get_reloc_code_name (code));
 43.8767 -+      return NULL;
 43.8768 -+    }
 43.8769 -+
 43.8770 -+  return reloc;
 43.8771 -+}
 43.8772 -+
 43.8773 -+bfd_boolean
 43.8774 -+avr32_force_reloc(fixS *fixP)
 43.8775 -+{
 43.8776 -+  if (linkrelax && fixP->fx_addsy
 43.8777 -+      && !(S_GET_SEGMENT(fixP->fx_addsy)->flags & SEC_DEBUGGING)
 43.8778 -+      && S_GET_SEGMENT(fixP->fx_addsy) != absolute_section)
 43.8779 -+    {
 43.8780 -+      pr_debug(stderr, "force reloc: addsy=%p, r_type=%d, sec=%s\n",
 43.8781 -+	       fixP->fx_addsy, fixP->fx_r_type, S_GET_SEGMENT(fixP->fx_addsy)->name);
 43.8782 -+      return 1;
 43.8783 -+    }
 43.8784 -+
 43.8785 -+  return generic_force_reloc(fixP);
 43.8786 -+}
 43.8787 -+
 43.8788 -+bfd_boolean
 43.8789 -+avr32_fix_adjustable(fixS *fixP)
 43.8790 -+{
 43.8791 -+  switch (fixP->fx_r_type)
 43.8792 -+    {
 43.8793 -+      /* GOT relocations can't have addends since BFD treats all
 43.8794 -+	 references to a given symbol the same. This means that we
 43.8795 -+	 must avoid section-relative references to local symbols when
 43.8796 -+	 dealing with these kinds of relocs */
 43.8797 -+    case BFD_RELOC_AVR32_GOT32:
 43.8798 -+    case BFD_RELOC_AVR32_GOT16:
 43.8799 -+    case BFD_RELOC_AVR32_GOT8:
 43.8800 -+    case BFD_RELOC_AVR32_GOT21S:
 43.8801 -+    case BFD_RELOC_AVR32_GOT18SW:
 43.8802 -+    case BFD_RELOC_AVR32_GOT16S:
 43.8803 -+    case BFD_RELOC_AVR32_LDA_GOT:
 43.8804 -+    case BFD_RELOC_AVR32_GOTCALL:
 43.8805 -+      pr_debug("fix not adjustable\n");
 43.8806 -+      return 0;
 43.8807 -+
 43.8808 -+    default:
 43.8809 -+      break;
 43.8810 -+    }
 43.8811 -+
 43.8812 -+  return 1;
 43.8813 -+}
 43.8814 -+
 43.8815 -+/* When we want the linker to be able to relax the code, we need to
 43.8816 -+   output a reloc for every .align directive requesting an alignment
 43.8817 -+   to a four byte boundary or larger.  If we don't do this, the linker
 43.8818 -+   can't guarantee that the alignment is actually maintained in the
 43.8819 -+   linker output.
 43.8820 -+
 43.8821 -+   TODO: Might as well insert proper NOPs while we're at it... */
 43.8822 -+void
 43.8823 -+avr32_handle_align(fragS *frag)
 43.8824 -+{
 43.8825 -+  if (linkrelax
 43.8826 -+      && frag->fr_type == rs_align_code
 43.8827 -+      && frag->fr_address + frag->fr_fix > 0
 43.8828 -+      && frag->fr_offset > 0)
 43.8829 -+    {
 43.8830 -+      /* The alignment order (fr_offset) is stored in the addend. */
 43.8831 -+      fix_new(frag, frag->fr_fix, 2, &abs_symbol, frag->fr_offset,
 43.8832 -+	      FALSE, BFD_RELOC_AVR32_ALIGN);
 43.8833 -+    }
 43.8834 -+}
 43.8835 -+
 43.8836 -+/* Relax_align. Advance location counter to next address that has 'alignment'
 43.8837 -+   lowest order bits all 0s, return size of adjustment made.  */
 43.8838 -+relax_addressT
 43.8839 -+avr32_relax_align(segT segment ATTRIBUTE_UNUSED,
 43.8840 -+		  fragS *fragP,
 43.8841 -+		  relax_addressT address)
 43.8842 -+{
 43.8843 -+  relax_addressT mask;
 43.8844 -+  relax_addressT new_address;
 43.8845 -+  int alignment;
 43.8846 -+
 43.8847 -+  alignment = fragP->fr_offset;
 43.8848 -+  mask = ~((~0) << alignment);
 43.8849 -+  new_address = (address + mask) & (~mask);
 43.8850 -+
 43.8851 -+  return new_address - address;
 43.8852 -+}
 43.8853 -+
 43.8854 -+/* Turn a string in input_line_pointer into a floating point constant
 43.8855 -+   of type type, and store the appropriate bytes in *litP.  The number
 43.8856 -+   of LITTLENUMS emitted is stored in *sizeP .  An error message is
 43.8857 -+   returned, or NULL on OK. */
 43.8858 -+
 43.8859 -+/* Equal to MAX_PRECISION in atof-ieee.c */
 43.8860 -+#define MAX_LITTLENUMS 6
 43.8861 -+
 43.8862 -+char *
 43.8863 -+md_atof (type, litP, sizeP)
 43.8864 -+char   type;
 43.8865 -+char * litP;
 43.8866 -+int *  sizeP;
 43.8867 -+{
 43.8868 -+  int              i;
 43.8869 -+  int              prec;
 43.8870 -+  LITTLENUM_TYPE   words [MAX_LITTLENUMS];
 43.8871 -+  char *           t;
 43.8872 -+
 43.8873 -+  switch (type)
 43.8874 -+  {
 43.8875 -+    case 'f':
 43.8876 -+    case 'F':
 43.8877 -+    case 's':
 43.8878 -+    case 'S':
 43.8879 -+      prec = 2;
 43.8880 -+      break;
 43.8881 -+
 43.8882 -+    case 'd':
 43.8883 -+    case 'D':
 43.8884 -+    case 'r':
 43.8885 -+    case 'R':
 43.8886 -+      prec = 4;
 43.8887 -+      break;
 43.8888 -+
 43.8889 -+      /* FIXME: Some targets allow other format chars for bigger sizes here.  */
 43.8890 -+
 43.8891 -+    default:
 43.8892 -+      * sizeP = 0;
 43.8893 -+      return _("Bad call to md_atof()");
 43.8894 -+  }
 43.8895 -+
 43.8896 -+  t = atof_ieee (input_line_pointer, type, words);
 43.8897 -+  if (t)
 43.8898 -+    input_line_pointer = t;
 43.8899 -+  * sizeP = prec * sizeof (LITTLENUM_TYPE);
 43.8900 -+
 43.8901 -+  for (i = 0; i < prec; i++)
 43.8902 -+  {
 43.8903 -+    md_number_to_chars (litP, (valueT) words[i],
 43.8904 -+                        sizeof (LITTLENUM_TYPE));
 43.8905 -+    litP += sizeof (LITTLENUM_TYPE);
 43.8906 -+  }
 43.8907 -+
 43.8908 -+  return 0;
 43.8909 -+}
 43.8910 -+
 43.8911 -+static char *avr32_end_of_match(char *cont, char *what)
 43.8912 -+{
 43.8913 -+  int len = strlen (what);
 43.8914 -+
 43.8915 -+  if (! is_part_of_name (cont[len])
 43.8916 -+      && strncasecmp (cont, what, len) == 0)
 43.8917 -+    return cont + len;
 43.8918 -+
 43.8919 -+  return NULL;
 43.8920 -+}
 43.8921 -+
 43.8922 -+int
 43.8923 -+avr32_parse_name (char const *name, expressionS *exp, char *nextchar)
 43.8924 -+{
 43.8925 -+  char *next = input_line_pointer;
 43.8926 -+  char *next_end;
 43.8927 -+
 43.8928 -+  pr_debug("parse_name: %s, nextchar=%c (%02x)\n", name, *nextchar, *nextchar);
 43.8929 -+
 43.8930 -+  if (*nextchar == '(')
 43.8931 -+    {
 43.8932 -+      if (strcasecmp(name, "hi") == 0)
 43.8933 -+	{
 43.8934 -+	  *next = *nextchar;
 43.8935 -+
 43.8936 -+	  expression(exp);
 43.8937 -+
 43.8938 -+	  if (exp->X_op == O_constant)
 43.8939 -+	    {
 43.8940 -+	      pr_debug("  -> constant hi(0x%08lx) -> 0x%04lx\n",
 43.8941 -+		       exp->X_add_number, exp->X_add_number >> 16);
 43.8942 -+	      exp->X_add_number = (exp->X_add_number >> 16) & 0xffff;
 43.8943 -+	    }
 43.8944 -+	  else
 43.8945 -+	    {
 43.8946 -+	      exp->X_md = exp->X_op;
 43.8947 -+	      exp->X_op = O_hi;
 43.8948 -+	    }
 43.8949 -+
 43.8950 -+	  return 1;
 43.8951 -+	}
 43.8952 -+      else if (strcasecmp(name, "lo") == 0)
 43.8953 -+	{
 43.8954 -+	  *next = *nextchar;
 43.8955 -+
 43.8956 -+	  expression(exp);
 43.8957 -+
 43.8958 -+	  if (exp->X_op == O_constant)
 43.8959 -+	    exp->X_add_number &= 0xffff;
 43.8960 -+	  else
 43.8961 -+	    {
 43.8962 -+	      exp->X_md = exp->X_op;
 43.8963 -+	      exp->X_op = O_lo;
 43.8964 -+	    }
 43.8965 -+
 43.8966 -+	  return 1;
 43.8967 -+	}
 43.8968 -+    }
 43.8969 -+  else if (*nextchar == '@')
 43.8970 -+    {
 43.8971 -+      exp->X_md = exp->X_op;
 43.8972 -+
 43.8973 -+      if ((next_end = avr32_end_of_match (next + 1, "got")))
 43.8974 -+	exp->X_op = O_got;
 43.8975 -+      else if ((next_end = avr32_end_of_match (next + 1, "tlsgd")))
 43.8976 -+	exp->X_op = O_tlsgd;
 43.8977 -+      /* Add more as needed */
 43.8978 -+      else
 43.8979 -+	{
 43.8980 -+	  char c;
 43.8981 -+	  input_line_pointer++;
 43.8982 -+	  c = get_symbol_end();
 43.8983 -+	  as_bad (_("unknown relocation override `%s'"), next + 1);
 43.8984 -+	  *input_line_pointer = c;
 43.8985 -+	  input_line_pointer = next;
 43.8986 -+	  return 0;
 43.8987 -+	}
 43.8988 -+
 43.8989 -+      exp->X_op_symbol = NULL;
 43.8990 -+      exp->X_add_symbol = symbol_find_or_make (name);
 43.8991 -+      exp->X_add_number = 0;
 43.8992 -+
 43.8993 -+      *input_line_pointer = *nextchar;
 43.8994 -+      input_line_pointer = next_end;
 43.8995 -+      *nextchar = *input_line_pointer;
 43.8996 -+      *input_line_pointer = '\0';
 43.8997 -+      return 1;
 43.8998 -+    }
 43.8999 -+  else if (strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0)
 43.9000 -+    {
 43.9001 -+      if (!GOT_symbol)
 43.9002 -+	GOT_symbol = symbol_find_or_make(name);
 43.9003 -+
 43.9004 -+      exp->X_add_symbol = GOT_symbol;
 43.9005 -+      exp->X_op = O_symbol;
 43.9006 -+      exp->X_add_number = 0;
 43.9007 -+      return 1;
 43.9008 -+    }
 43.9009 -+
 43.9010 -+  return 0;
 43.9011 -+}
 43.9012 -+
 43.9013 -+static void
 43.9014 -+s_rseg (int value ATTRIBUTE_UNUSED)
 43.9015 -+{
 43.9016 -+  /* Syntax: RSEG segment_name [:type] [NOROOT|ROOT] [(align)]
 43.9017 -+   * Defaults:
 43.9018 -+   *  - type: undocumented ("typically CODE or DATA")
 43.9019 -+   *  - ROOT
 43.9020 -+   *  - align: 1 for code, 0 for others
 43.9021 -+   *
 43.9022 -+   * TODO: NOROOT is ignored. If gas supports discardable segments, it should
 43.9023 -+   * be implemented.
 43.9024 -+   */
 43.9025 -+  char *name, *end;
 43.9026 -+  int length, type, attr;
 43.9027 -+  int align = 0;
 43.9028 -+
 43.9029 -+  SKIP_WHITESPACE();
 43.9030 -+
 43.9031 -+  end = input_line_pointer;
 43.9032 -+  while (0 == strchr ("\n\t;:( ", *end))
 43.9033 -+    end++;
 43.9034 -+  if (end == input_line_pointer)
 43.9035 -+    {
 43.9036 -+      as_warn (_("missing name"));
 43.9037 -+      ignore_rest_of_line();
 43.9038 -+      return;
 43.9039 -+    }
 43.9040 -+
 43.9041 -+  name = xmalloc (end - input_line_pointer + 1);
 43.9042 -+  memcpy (name, input_line_pointer, end - input_line_pointer);
 43.9043 -+  name[end - input_line_pointer] = '\0';
 43.9044 -+  input_line_pointer = end;
 43.9045 -+
 43.9046 -+  SKIP_WHITESPACE();
 43.9047 -+
 43.9048 -+  type = SHT_NULL;
 43.9049 -+  attr = 0;
 43.9050 -+
 43.9051 -+  if (*input_line_pointer == ':')
 43.9052 -+    {
 43.9053 -+      /* Skip the colon */
 43.9054 -+      ++input_line_pointer;
 43.9055 -+      SKIP_WHITESPACE();
 43.9056 -+
 43.9057 -+      /* Possible options at this point:
 43.9058 -+       *   - flag (ROOT or NOROOT)
 43.9059 -+       *   - a segment type
 43.9060 -+       */
 43.9061 -+      end = input_line_pointer;
 43.9062 -+      while (0 == strchr ("\n\t;:( ", *end))
 43.9063 -+	end++;
 43.9064 -+      length = end - input_line_pointer;
 43.9065 -+      if (((length == 4) && (0 == strncasecmp( input_line_pointer, "ROOT", 4))) ||
 43.9066 -+	  ((length == 6) && (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
 43.9067 -+	{
 43.9068 -+	  /* Ignore ROOT/NOROOT */
 43.9069 -+	  input_line_pointer = end;
 43.9070 -+	}
 43.9071 -+      else
 43.9072 -+	{
 43.9073 -+	  /* Must be a segment type */
 43.9074 -+	  switch (*input_line_pointer)
 43.9075 -+	    {
 43.9076 -+	    case 'C':
 43.9077 -+	    case 'c':
 43.9078 -+	      if ((length == 4) &&
 43.9079 -+		  (0 == strncasecmp (input_line_pointer, "CODE", 4)))
 43.9080 -+		{
 43.9081 -+		  attr |= SHF_ALLOC | SHF_EXECINSTR;
 43.9082 -+		  type = SHT_PROGBITS;
 43.9083 -+		  align = 1;
 43.9084 -+		  break;
 43.9085 -+		}
 43.9086 -+	      if ((length == 5) &&
 43.9087 -+		  (0 == strncasecmp (input_line_pointer, "CONST", 5)))
 43.9088 -+		{
 43.9089 -+		  attr |= SHF_ALLOC;
 43.9090 -+		  type = SHT_PROGBITS;
 43.9091 -+		  break;
 43.9092 -+		}
 43.9093 -+	      goto de_fault;
 43.9094 -+
 43.9095 -+	    case 'D':
 43.9096 -+	    case 'd':
 43.9097 -+	      if ((length == 4) &&
 43.9098 -+		  (0 == strncasecmp (input_line_pointer, "DATA", 4)))
 43.9099 -+		{
 43.9100 -+		  attr |= SHF_ALLOC | SHF_WRITE;
 43.9101 -+		  type = SHT_PROGBITS;
 43.9102 -+		  break;
 43.9103 -+		}
 43.9104 -+	      goto de_fault;
 43.9105 -+
 43.9106 -+	      /* TODO: Add FAR*, HUGE*, IDATA and NEAR* if necessary */
 43.9107 -+
 43.9108 -+	    case 'U':
 43.9109 -+	    case 'u':
 43.9110 -+	      if ((length == 7) &&
 43.9111 -+		  (0 == strncasecmp (input_line_pointer, "UNTYPED", 7)))
 43.9112 -+		break;
 43.9113 -+	      goto de_fault;
 43.9114 -+
 43.9115 -+	      /* TODO: Add XDATA and ZPAGE if necessary */
 43.9116 -+
 43.9117 -+	    de_fault:
 43.9118 -+	    default:
 43.9119 -+	      as_warn (_("unrecognized segment type"));
 43.9120 -+	    }
 43.9121 -+
 43.9122 -+	  input_line_pointer = end;
 43.9123 -+	  SKIP_WHITESPACE();
 43.9124 -+
 43.9125 -+	  if (*input_line_pointer == ':')
 43.9126 -+	    {
 43.9127 -+	      /*  ROOT/NOROOT */
 43.9128 -+	      ++input_line_pointer;
 43.9129 -+	      SKIP_WHITESPACE();
 43.9130 -+
 43.9131 -+	      end = input_line_pointer;
 43.9132 -+	      while (0 == strchr ("\n\t;:( ", *end))
 43.9133 -+		end++;
 43.9134 -+	      length = end - input_line_pointer;
 43.9135 -+	      if (! ((length == 4) &&
 43.9136 -+		     (0 == strncasecmp( input_line_pointer, "ROOT", 4))) &&
 43.9137 -+		  ! ((length == 6) &&
 43.9138 -+		     (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
 43.9139 -+		{
 43.9140 -+		  as_warn (_("unrecognized segment flag"));
 43.9141 -+		}
 43.9142 -+
 43.9143 -+	      input_line_pointer = end;
 43.9144 -+	      SKIP_WHITESPACE();
 43.9145 -+	    }
 43.9146 -+	}
 43.9147 -+    }
 43.9148 -+
 43.9149 -+  if (*input_line_pointer == '(')
 43.9150 -+    {
 43.9151 -+      align = get_absolute_expression ();
 43.9152 -+    }
 43.9153 -+
 43.9154 -+  demand_empty_rest_of_line();
 43.9155 -+
 43.9156 -+  obj_elf_change_section (name, type, attr, 0, NULL, 0, 0);
 43.9157 -+#ifdef AVR32_DEBUG
 43.9158 -+  fprintf( stderr, "RSEG: Changed section to %s, type: 0x%x, attr: 0x%x\n",
 43.9159 -+      name, type, attr );
 43.9160 -+  fprintf( stderr, "RSEG: Aligning to 2**%d\n", align );
 43.9161 -+#endif
 43.9162 -+
 43.9163 -+  if (align > 15)
 43.9164 -+    {
 43.9165 -+      align = 15;
 43.9166 -+      as_warn (_("alignment too large: %u assumed"), align);
 43.9167 -+    }
 43.9168 -+
 43.9169 -+  /* Hope not, that is */
 43.9170 -+  assert (now_seg != absolute_section);
 43.9171 -+
 43.9172 -+  /* Only make a frag if we HAVE to... */
 43.9173 -+  if (align != 0 && !need_pass_2)
 43.9174 -+    {
 43.9175 -+      if (subseg_text_p (now_seg))
 43.9176 -+	frag_align_code (align, 0);
 43.9177 -+      else
 43.9178 -+	frag_align (align, 0, 0);
 43.9179 -+    }
 43.9180 -+
 43.9181 -+  record_alignment (now_seg, align - OCTETS_PER_BYTE_POWER);
 43.9182 -+}
 43.9183 -+
 43.9184 -+/* vim: syntax=c sw=2
 43.9185 -+ */
 43.9186 ---- /dev/null
 43.9187 -+++ b/gas/config/tc-avr32.h
 43.9188 -@@ -0,0 +1,325 @@
 43.9189 -+/* Assembler definitions for AVR32.
 43.9190 -+   Copyright 2003-2006 Atmel Corporation.
 43.9191 -+
 43.9192 -+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
 43.9193 -+
 43.9194 -+   This file is part of GAS, the GNU Assembler.
 43.9195 -+
 43.9196 -+   GAS is free software; you can redistribute it and/or modify it
 43.9197 -+   under the terms of the GNU General Public License as published by
 43.9198 -+   the Free Software Foundation; either version 2, or (at your option)
 43.9199 -+   any later version.
 43.9200 -+
 43.9201 -+   GAS is distributed in the hope that it will be useful, but WITHOUT
 43.9202 -+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 43.9203 -+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
 43.9204 -+   License for more details.
 43.9205 -+
 43.9206 -+   You should have received a copy of the GNU General Public License
 43.9207 -+   along with GAS; see the file COPYING.  If not, write to the Free
 43.9208 -+   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 43.9209 -+   02111-1307, USA.  */
 43.9210 -+
 43.9211 -+#if 0
 43.9212 -+#define DEBUG
 43.9213 -+#define DEBUG1
 43.9214 -+#define DEBUG2
 43.9215 -+#define DEBUG3
 43.9216 -+#define DEBUG4
 43.9217 -+#define DEBUG5
 43.9218 -+#endif
 43.9219 -+
 43.9220 -+/* Are we trying to be compatible with the IAR assembler? (--iar) */
 43.9221 -+extern int avr32_iarcompat;
 43.9222 -+
 43.9223 -+/* By convention, you should define this macro in the `.h' file.  For
 43.9224 -+   example, `tc-m68k.h' defines `TC_M68K'.  You might have to use this
 43.9225 -+   if it is necessary to add CPU specific code to the object format
 43.9226 -+   file.  */
 43.9227 -+#define TC_AVR32
 43.9228 -+
 43.9229 -+/* This macro is the BFD target name to use when creating the output
 43.9230 -+   file.  This will normally depend upon the `OBJ_FMT' macro.  */
 43.9231 -+#define TARGET_FORMAT "elf32-avr32"
 43.9232 -+
 43.9233 -+/* This macro is the BFD architecture to pass to `bfd_set_arch_mach'.  */
 43.9234 -+#define TARGET_ARCH bfd_arch_avr32
 43.9235 -+
 43.9236 -+/* This macro is the BFD machine number to pass to
 43.9237 -+   `bfd_set_arch_mach'.  If it is not defined, GAS will use 0.  */
 43.9238 -+#define TARGET_MACH 0
 43.9239 -+
 43.9240 -+/* UNDOCUMENTED: Allow //-style comments */
 43.9241 -+#define DOUBLESLASH_LINE_COMMENTS
 43.9242 -+
 43.9243 -+/* You should define this macro to be non-zero if the target is big
 43.9244 -+   endian, and zero if the target is little endian.  */
 43.9245 -+#define TARGET_BYTES_BIG_ENDIAN 1
 43.9246 -+
 43.9247 -+/* FIXME: It seems that GAS only expects a one-byte opcode...
 43.9248 -+   #define NOP_OPCODE 0xd703 */
 43.9249 -+
 43.9250 -+/* If you define this macro, GAS will warn about the use of
 43.9251 -+   nonstandard escape sequences in a string.  */
 43.9252 -+#undef ONLY_STANDARD_ESCAPES
 43.9253 -+
 43.9254 -+#define DWARF2_FORMAT() dwarf2_format_32bit
 43.9255 -+
 43.9256 -+/* Instructions are either 2 or 4 bytes long */
 43.9257 -+/* #define DWARF2_LINE_MIN_INSN_LENGTH 2 */
 43.9258 -+
 43.9259 -+/* GAS will call this function for any expression that can not be
 43.9260 -+   recognized.  When the function is called, `input_line_pointer'
 43.9261 -+   will point to the start of the expression.  */
 43.9262 -+#define md_operand(x)
 43.9263 -+
 43.9264 -+#define md_parse_name(name, expr, mode, c) avr32_parse_name(name, expr, c)
 43.9265 -+extern int avr32_parse_name(const char *, struct expressionS *, char *);
 43.9266 -+
 43.9267 -+/* You may define this macro to generate a fixup for a data
 43.9268 -+   allocation pseudo-op.  */
 43.9269 -+#define TC_CONS_FIX_NEW(FRAG, OFF, LEN, EXP)	\
 43.9270 -+  avr32_cons_fix_new(FRAG, OFF, LEN, EXP)
 43.9271 -+void avr32_cons_fix_new (fragS *, int, int, expressionS *);
 43.9272 -+
 43.9273 -+/* `extsym - .' expressions can be emitted using PC-relative relocs */
 43.9274 -+#define DIFF_EXPR_OK
 43.9275 -+
 43.9276 -+/* This is used to construct expressions out of @gotoff, etc. The
 43.9277 -+   relocation type is stored in X_md */
 43.9278 -+#define O_got		O_md1
 43.9279 -+#define O_hi		O_md2
 43.9280 -+#define O_lo		O_md3
 43.9281 -+#define O_tlsgd		O_md4
 43.9282 -+
 43.9283 -+/* You may define this macro to parse an expression used in a data
 43.9284 -+   allocation pseudo-op such as `.word'.  You can use this to
 43.9285 -+   recognize relocation directives that may appear in such directives.  */
 43.9286 -+/* #define TC_PARSE_CONS_EXPRESSION(EXPR,N) avr_parse_cons_expression (EXPR,N)
 43.9287 -+   void avr_parse_cons_expression (expressionS *exp, int nbytes); */
 43.9288 -+
 43.9289 -+/* This should just call either `number_to_chars_bigendian' or
 43.9290 -+   `number_to_chars_littleendian', whichever is appropriate.  On
 43.9291 -+   targets like the MIPS which support options to change the
 43.9292 -+   endianness, which function to call is a runtime decision.  On
 43.9293 -+   other targets, `md_number_to_chars' can be a simple macro.  */
 43.9294 -+#define md_number_to_chars number_to_chars_bigendian
 43.9295 -+
 43.9296 -+/* `md_short_jump_size'
 43.9297 -+   `md_long_jump_size'
 43.9298 -+   `md_create_short_jump'
 43.9299 -+   `md_create_long_jump'
 43.9300 -+   If `WORKING_DOT_WORD' is defined, GAS will not do broken word
 43.9301 -+   processing (*note Broken words::.).  Otherwise, you should set
 43.9302 -+   `md_short_jump_size' to the size of a short jump (a jump that is
 43.9303 -+   just long enough to jump around a long jmp) and
 43.9304 -+   `md_long_jump_size' to the size of a long jump (a jump that can go
 43.9305 -+   anywhere in the function), You should define
 43.9306 -+   `md_create_short_jump' to create a short jump around a long jump,
 43.9307 -+   and define `md_create_long_jump' to create a long jump.  */
 43.9308 -+#define WORKING_DOT_WORD
 43.9309 -+
 43.9310 -+/* If you define this macro, it means that `tc_gen_reloc' may return
 43.9311 -+   multiple relocation entries for a single fixup.  In this case, the
 43.9312 -+   return value of `tc_gen_reloc' is a pointer to a null terminated
 43.9313 -+   array.  */
 43.9314 -+#undef RELOC_EXPANSION_POSSIBLE
 43.9315 -+
 43.9316 -+/* If you define this macro, GAS will not require pseudo-ops to start with a .
 43.9317 -+   character. */
 43.9318 -+#define NO_PSEUDO_DOT (avr32_iarcompat)
 43.9319 -+
 43.9320 -+/* The IAR assembler uses $ as the location counter. Unfortunately, we
 43.9321 -+   can't make this dependent on avr32_iarcompat... */
 43.9322 -+#define DOLLAR_DOT
 43.9323 -+
 43.9324 -+/* Values passed to md_apply_fix3 don't include the symbol value.  */
 43.9325 -+#define MD_APPLY_SYM_VALUE(FIX) 0
 43.9326 -+
 43.9327 -+/* The number of bytes to put into a word in a listing.  This affects
 43.9328 -+   the way the bytes are clumped together in the listing.  For
 43.9329 -+   example, a value of 2 might print `1234 5678' where a value of 1
 43.9330 -+   would print `12 34 56 78'.  The default value is 4.  */
 43.9331 -+#define LISTING_WORD_SIZE 4
 43.9332 -+
 43.9333 -+/* extern const struct relax_type md_relax_table[];
 43.9334 -+#define TC_GENERIC_RELAX_TABLE md_relax_table */
 43.9335 -+
 43.9336 -+/*
 43.9337 -+  An `.lcomm' directive with no explicit alignment parameter will use
 43.9338 -+  this macro to set P2VAR to the alignment that a request for SIZE
 43.9339 -+  bytes will have.  The alignment is expressed as a power of two.  If
 43.9340 -+  no alignment should take place, the macro definition should do
 43.9341 -+  nothing.  Some targets define a `.bss' directive that is also
 43.9342 -+  affected by this macro.  The default definition will set P2VAR to
 43.9343 -+  the truncated power of two of sizes up to eight bytes.
 43.9344 -+
 43.9345 -+  We want doublewords to be word-aligned, so we're going to modify the
 43.9346 -+  default definition a tiny bit.
 43.9347 -+*/
 43.9348 -+#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR)	\
 43.9349 -+  do							\
 43.9350 -+    {							\
 43.9351 -+      if ((SIZE) >= 4)					\
 43.9352 -+	(P2VAR) = 2;					\
 43.9353 -+      else if ((SIZE) >= 2)				\
 43.9354 -+	(P2VAR) = 1;					\
 43.9355 -+      else						\
 43.9356 -+	(P2VAR) = 0;					\
 43.9357 -+    }							\
 43.9358 -+  while (0)
 43.9359 -+
 43.9360 -+/* When relaxing, we need to generate relocations for alignment
 43.9361 -+   directives.  */
 43.9362 -+#define HANDLE_ALIGN(frag) avr32_handle_align(frag)
 43.9363 -+extern void avr32_handle_align(fragS *);
 43.9364 -+
 43.9365 -+/* See internals doc for explanation. Oh wait...
 43.9366 -+   Now, can you guess where "alignment" comes from? ;-) */
 43.9367 -+#define MAX_MEM_FOR_RS_ALIGN_CODE ((1 << alignment) - 1)
 43.9368 -+
 43.9369 -+/* We need to stop gas from reducing certain expressions (e.g. GOT
 43.9370 -+   references) */
 43.9371 -+#define tc_fix_adjustable(fix) avr32_fix_adjustable(fix)
 43.9372 -+extern bfd_boolean avr32_fix_adjustable(struct fix *);
 43.9373 -+
 43.9374 -+/* The linker needs to be passed a little more information when relaxing. */
 43.9375 -+#define TC_FORCE_RELOCATION(fix) avr32_force_reloc(fix)
 43.9376 -+extern bfd_boolean avr32_force_reloc(struct fix *);
 43.9377 -+
 43.9378 -+/* I'm tired of working around all the madness in fixup_segment().
 43.9379 -+   This hook will do basically the same things as the generic code,
 43.9380 -+   and then it will "goto" right past it.  */
 43.9381 -+#define TC_VALIDATE_FIX(FIX, SEG, SKIP)		\
 43.9382 -+  do						\
 43.9383 -+    {						\
 43.9384 -+      avr32_process_fixup(FIX, SEG);		\
 43.9385 -+      if (!(FIX)->fx_done)			\
 43.9386 -+	++seg_reloc_count;			\
 43.9387 -+      goto SKIP;				\
 43.9388 -+    }						\
 43.9389 -+  while (0)
 43.9390 -+extern void avr32_process_fixup(struct fix *fixP, segT this_segment);
 43.9391 -+
 43.9392 -+/* Positive values of TC_FX_SIZE_SLACK allow a target to define
 43.9393 -+   fixups that far past the end of a frag.  Having such fixups
 43.9394 -+   is of course most most likely a bug in setting fx_size correctly.
 43.9395 -+   A negative value disables the fixup check entirely, which is
 43.9396 -+   appropriate for something like the Renesas / SuperH SH_COUNT
 43.9397 -+   reloc.  */
 43.9398 -+/* This target is buggy, and sets fix size too large.  */
 43.9399 -+#define TC_FX_SIZE_SLACK(FIX) -1
 43.9400 -+
 43.9401 -+/* We don't want the gas core to make any assumptions about our way of
 43.9402 -+   doing linkrelaxing.  */
 43.9403 -+#define TC_LINKRELAX_FIXUP(SEG)			0
 43.9404 -+
 43.9405 -+/* ... but we do want it to insert lots of padding. */
 43.9406 -+#define LINKER_RELAXING_SHRINKS_ONLY
 43.9407 -+
 43.9408 -+/* Better do it ourselves, really... */
 43.9409 -+#define TC_RELAX_ALIGN(SEG, FRAG, ADDR)	avr32_relax_align(SEG, FRAG, ADDR)
 43.9410 -+extern relax_addressT
 43.9411 -+avr32_relax_align(segT segment, fragS *fragP, relax_addressT address);
 43.9412 -+
 43.9413 -+/* Use line number format that is amenable to linker relaxation.  */
 43.9414 -+#define DWARF2_USE_FIXED_ADVANCE_PC (linkrelax != 0)
 43.9415 -+
 43.9416 -+/* This is called by write_object_file() just before symbols are
 43.9417 -+   attempted converted into section symbols.  */
 43.9418 -+#define tc_frob_file_before_adjust()	avr32_frob_file()
 43.9419 -+extern void avr32_frob_file(void);
 43.9420 -+
 43.9421 -+/* If you define this macro, GAS will call it at the end of each input
 43.9422 -+   file.  */
 43.9423 -+#define md_cleanup() avr32_cleanup()
 43.9424 -+extern void avr32_cleanup(void);
 43.9425 -+
 43.9426 -+/* There's an AVR32-specific hack in operand() which creates O_md
 43.9427 -+   expressions when encountering HWRD or LWRD. We need to generate
 43.9428 -+   proper relocs for them */
 43.9429 -+/* #define md_cgen_record_fixup_exp avr32_cgen_record_fixup_exp */
 43.9430 -+
 43.9431 -+/* I needed to add an extra hook in gas_cgen_finish_insn() for
 43.9432 -+   conversion of O_md* operands because md_cgen_record_fixup_exp()
 43.9433 -+   isn't called for relaxable insns */
 43.9434 -+/* #define md_cgen_convert_expr(exp, opinfo) avr32_cgen_convert_expr(exp, opinfo)
 43.9435 -+   int avr32_cgen_convert_expr(expressionS *, int); */
 43.9436 -+
 43.9437 -+/* #define tc_gen_reloc gas_cgen_tc_gen_reloc */
 43.9438 -+
 43.9439 -+/* If you define this macro, it should return the position from which
 43.9440 -+   the PC relative adjustment for a PC relative fixup should be
 43.9441 -+   made. On many processors, the base of a PC relative instruction is
 43.9442 -+   the next instruction, so this macro would return the length of an
 43.9443 -+   instruction, plus the address of the PC relative fixup. The latter
 43.9444 -+   can be calculated as fixp->fx_where + fixp->fx_frag->fr_address. */
 43.9445 -+extern long md_pcrel_from_section (struct fix *, segT);
 43.9446 -+#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
 43.9447 -+
 43.9448 -+#define LOCAL_LABEL(name) (name[0] == '.' && (name[1] == 'L'))
 43.9449 -+#define LOCAL_LABELS_FB		1
 43.9450 -+
 43.9451 -+struct avr32_relaxer
 43.9452 -+{
 43.9453 -+  int (*estimate_size)(fragS *, segT);
 43.9454 -+  long (*relax_frag)(segT, fragS *, long);
 43.9455 -+  void (*convert_frag)(bfd *, segT, fragS *);
 43.9456 -+};
 43.9457 -+
 43.9458 -+/* AVR32 has quite complex instruction coding, which means we need
 43.9459 -+ * lots of information in order to do the right thing during relaxing
 43.9460 -+ * (basically, we need to be able to reconstruct a whole new opcode if
 43.9461 -+ * necessary) */
 43.9462 -+#define TC_FRAG_TYPE struct avr32_frag_data
 43.9463 -+
 43.9464 -+struct cpool;
 43.9465 -+
 43.9466 -+struct avr32_frag_data
 43.9467 -+{
 43.9468 -+  /* TODO: Maybe add an expression object here so that we can use
 43.9469 -+     fix_new_exp() in md_convert_frag?  We may have to decide
 43.9470 -+     pcrel-ness in md_estimate_size_before_relax() as well...or we
 43.9471 -+     might do it when parsing.  Doing it while parsing may fail
 43.9472 -+     because the sub_symbol is undefined then... */
 43.9473 -+  int pcrel;
 43.9474 -+  int force_extended;
 43.9475 -+  int reloc_info;
 43.9476 -+  struct avr32_relaxer *relaxer;
 43.9477 -+  expressionS exp;
 43.9478 -+
 43.9479 -+  /* Points to associated constant pool, for use by LDA and CALL in
 43.9480 -+     non-pic mode, and when relaxing the .cpool directive */
 43.9481 -+  struct cpool *pool;
 43.9482 -+  unsigned int pool_entry;
 43.9483 -+};
 43.9484 -+
 43.9485 -+/* We will have to initialize the fields explicitly when needed */
 43.9486 -+#define TC_FRAG_INIT(fragP)
 43.9487 -+
 43.9488 -+#define md_estimate_size_before_relax(fragP, segT)			\
 43.9489 -+  ((fragP)->tc_frag_data.relaxer->estimate_size(fragP, segT))
 43.9490 -+#define md_relax_frag(segment, fragP, stretch)				\
 43.9491 -+  ((fragP)->tc_frag_data.relaxer->relax_frag(segment, fragP, stretch))
 43.9492 -+#define md_convert_frag(abfd, segment, fragP)				\
 43.9493 -+  ((fragP)->tc_frag_data.relaxer->convert_frag(abfd, segment, fragP))
 43.9494 -+
 43.9495 -+#define TC_FIX_TYPE struct avr32_fix_data
 43.9496 -+
 43.9497 -+struct avr32_fix_data
 43.9498 -+{
 43.9499 -+  const struct avr32_ifield *ifield;
 43.9500 -+  unsigned int align;
 43.9501 -+  long min;
 43.9502 -+  long max;
 43.9503 -+};
 43.9504 -+
 43.9505 -+#define TC_INIT_FIX_DATA(fixP)			\
 43.9506 -+  do						\
 43.9507 -+    {						\
 43.9508 -+      (fixP)->tc_fix_data.ifield = NULL;	\
 43.9509 -+      (fixP)->tc_fix_data.align = 0;		\
 43.9510 -+      (fixP)->tc_fix_data.min = 0;		\
 43.9511 -+      (fixP)->tc_fix_data.max = 0;		\
 43.9512 -+    }						\
 43.9513 -+  while (0)
 43.9514 ---- a/gas/configure.tgt
 43.9515 -+++ b/gas/configure.tgt
 43.9516 -@@ -33,6 +33,7 @@ case ${cpu} in
 43.9517 -   am33_2.0)		cpu_type=mn10300 endian=little ;;
 43.9518 -   arm*be|arm*b)		cpu_type=arm endian=big ;;
 43.9519 -   arm*)			cpu_type=arm endian=little ;;
 43.9520 -+  avr32*)		cpu_type=avr32 endian=big ;;
 43.9521 -   bfin*)		cpu_type=bfin endian=little ;;
 43.9522 -   c4x*)			cpu_type=tic4x ;;
 43.9523 -   cr16*)		cpu_type=cr16 endian=little ;;
 43.9524 -@@ -129,6 +130,9 @@ case ${generic_target} in
 43.9525 -   bfin-*elf)				fmt=elf ;;
 43.9526 -   cr16-*-elf*)	    			fmt=elf ;;
 43.9527 - 
 43.9528 -+  avr32-*-linux*)			fmt=elf  em=linux bfd_gas=yes ;;
 43.9529 -+  avr32*)				fmt=elf  bfd_gas=yes ;;
 43.9530 -+
 43.9531 -   cris-*-linux-* | crisv32-*-linux-*)
 43.9532 - 					fmt=multi em=linux ;;
 43.9533 -   cris-*-* | crisv32-*-*)		fmt=multi ;;
 43.9534 ---- a/gas/doc/all.texi
 43.9535 -+++ b/gas/doc/all.texi
 43.9536 -@@ -30,6 +30,7 @@
 43.9537 - @set ARC
 43.9538 - @set ARM
 43.9539 - @set AVR
 43.9540 -+@set AVR32
 43.9541 - @set BFIN
 43.9542 - @set CR16
 43.9543 - @set CRIS
 43.9544 ---- a/gas/doc/as.texinfo
 43.9545 -+++ b/gas/doc/as.texinfo
 43.9546 -@@ -6353,6 +6353,9 @@ subject, see the hardware manufacturer's
 43.9547 - @ifset AVR
 43.9548 - * AVR-Dependent::               AVR Dependent Features
 43.9549 - @end ifset
 43.9550 -+@ifset AVR32
 43.9551 -+* AVR32-Dependent::             AVR32 Dependent Features
 43.9552 -+@end ifset
 43.9553 - @ifset BFIN
 43.9554 - * BFIN-Dependent::		BFIN Dependent Features
 43.9555 - @end ifset
 43.9556 -@@ -6476,6 +6479,10 @@ subject, see the hardware manufacturer's
 43.9557 - @include c-avr.texi
 43.9558 - @end ifset
 43.9559 - 
 43.9560 -+@ifset AVR32
 43.9561 -+@include c-avr32.texi
 43.9562 -+@end ifset
 43.9563 -+
 43.9564 - @ifset BFIN
 43.9565 - @include c-bfin.texi
 43.9566 - @end ifset
 43.9567 ---- /dev/null
 43.9568 -+++ b/gas/doc/c-avr32.texi
 43.9569 -@@ -0,0 +1,247 @@
 43.9570 -+@c Copyright 2005, 2006
 43.9571 -+@c Atmel Corporation
 43.9572 -+@c This is part of the GAS manual.
 43.9573 -+@c For copying conditions, see the file as.texinfo.
 43.9574 -+
 43.9575 -+@ifset GENERIC
 43.9576 -+@page
 43.9577 -+@node AVR32-Dependent
 43.9578 -+@chapter AVR32 Dependent Features
 43.9579 -+@end ifset
 43.9580 -+
 43.9581 -+@ifclear GENERIC
 43.9582 -+@node Machine Dependencies
 43.9583 -+@chapter AVR32 Dependent Features
 43.9584 -+@end ifclear
 43.9585 -+
 43.9586 -+@cindex AVR32 support
 43.9587 -+@menu
 43.9588 -+* AVR32 Options::               Options
 43.9589 -+* AVR32 Syntax::                Syntax
 43.9590 -+* AVR32 Directives::            Directives
 43.9591 -+* AVR32 Opcodes::               Opcodes
 43.9592 -+@end menu
 43.9593 -+
 43.9594 -+@node AVR32 Options
 43.9595 -+@section Options
 43.9596 -+@cindex AVR32 options
 43.9597 -+@cindex options for AVR32
 43.9598 -+
 43.9599 -+There are currently no AVR32-specific options.  However, the following
 43.9600 -+options are planned:
 43.9601 -+
 43.9602 -+@table @code
 43.9603 -+
 43.9604 -+@cindex @code{--pic} command line option, AVR32
 43.9605 -+@cindex PIC code generation for AVR32
 43.9606 -+@item --pic
 43.9607 -+This option specifies that the output of the assembler should be marked
 43.9608 -+as position-independent code (PIC).  It will also ensure that
 43.9609 -+pseudo-instructions that deal with address calculation are output as
 43.9610 -+PIC, and that all absolute address references in the code are marked as
 43.9611 -+such.
 43.9612 -+
 43.9613 -+@cindex @code{--linkrelax} command line option, AVR32
 43.9614 -+@item --linkrelax
 43.9615 -+This option specifies that the output of the assembler should be marked
 43.9616 -+as linker-relaxable.  It will also ensure that all PC-relative operands
 43.9617 -+that may change during linker relaxation get appropriate relocations.
 43.9618 -+
 43.9619 -+@end table
 43.9620 -+
 43.9621 -+
 43.9622 -+@node AVR32 Syntax
 43.9623 -+@section Syntax
 43.9624 -+@menu
 43.9625 -+* AVR32-Chars::              Special Characters
 43.9626 -+* AVR32-Symrefs::            Symbol references
 43.9627 -+@end menu
 43.9628 -+
 43.9629 -+@node AVR32-Chars
 43.9630 -+@subsection Special Characters
 43.9631 -+
 43.9632 -+@cindex line comment character, AVR32
 43.9633 -+@cindex AVR32 line comment character
 43.9634 -+The presence of a @samp{//} on a line indicates the start of a comment
 43.9635 -+that extends to the end of the current line.  If a @samp{#} appears as
 43.9636 -+the first character of a line, the whole line is treated as a comment.
 43.9637 -+
 43.9638 -+@cindex line separator, AVR32
 43.9639 -+@cindex statement separator, AVR32
 43.9640 -+@cindex AVR32 line separator
 43.9641 -+The @samp{;} character can be used instead of a newline to separate
 43.9642 -+statements.
 43.9643 -+
 43.9644 -+@node AVR32-Symrefs
 43.9645 -+@subsection Symbol references
 43.9646 -+
 43.9647 -+The absolute value of a symbol can be obtained by simply naming the
 43.9648 -+symbol.  However, as AVR32 symbols have 32-bit values, most symbols have
 43.9649 -+values that are outside the range of any instructions.
 43.9650 -+
 43.9651 -+Instructions that take a PC-relative offset, e.g. @code{lddpc} or
 43.9652 -+@code{rcall}, can also reference a symbol by simply naming the symbol
 43.9653 -+(no explicit calculations necessary).  In this case, the assembler or
 43.9654 -+linker subtracts the address of the instruction from the symbol's value
 43.9655 -+and inserts the result into the instruction.  Note that even though an
 43.9656 -+overflow is less likely to happen for a relative reference than for an
 43.9657 -+absolute reference, the assembler or linker will generate an error if
 43.9658 -+the referenced symbol is too far away from the current location.
 43.9659 -+
 43.9660 -+Relative references can be used for data as well.  For example:
 43.9661 -+
 43.9662 -+@smallexample
 43.9663 -+        lddpc   r0, 2f
 43.9664 -+1:      add     r0, pc
 43.9665 -+        ...
 43.9666 -+        .align  2
 43.9667 -+2:      .int    @var{some_symbol} - 1b
 43.9668 -+@end smallexample
 43.9669 -+
 43.9670 -+Here, r0 will end up with the run-time address of @var{some_symbol} even
 43.9671 -+if the program was loaded at a different address than it was linked
 43.9672 -+(position-independent code).
 43.9673 -+
 43.9674 -+@subsubsection Symbol modifiers
 43.9675 -+
 43.9676 -+@table @code
 43.9677 -+
 43.9678 -+@item @code{hi(@var{symbol})}
 43.9679 -+Evaluates to the value of the symbol shifted right 16 bits.  This will
 43.9680 -+work even if @var{symbol} is defined in a different module.
 43.9681 -+
 43.9682 -+@item @code{lo(@var{symbol})}
 43.9683 -+Evaluates to the low 16 bits of the symbol's value.  This will work even
 43.9684 -+if @var{symbol} is defined in a different module.
 43.9685 -+
 43.9686 -+@item @code{@var{symbol}@@got}
 43.9687 -+Create a GOT entry for @var{symbol} and return the offset of that entry
 43.9688 -+relative to the GOT base.
 43.9689 -+
 43.9690 -+@end table
 43.9691 -+
 43.9692 -+
 43.9693 -+@node AVR32 Directives
 43.9694 -+@section Directives
 43.9695 -+@cindex machine directives, AVR32
 43.9696 -+@cindex AVR32 directives
 43.9697 -+
 43.9698 -+@table @code
 43.9699 -+
 43.9700 -+@cindex @code{.cpool} directive, AVR32
 43.9701 -+@item .cpool
 43.9702 -+This directive causes the current contents of the constant pool to be
 43.9703 -+dumped into the current section at the current location (aligned to a
 43.9704 -+word boundary).  @code{GAS} maintains a separate constant pool for each
 43.9705 -+section and each sub-section.  The @code{.cpool} directive will only
 43.9706 -+affect the constant pool of the current section and sub-section.  At the
 43.9707 -+end of assembly, all remaining, non-empty constant pools will
 43.9708 -+automatically be dumped.
 43.9709 -+
 43.9710 -+@end table
 43.9711 -+
 43.9712 -+
 43.9713 -+@node AVR32 Opcodes
 43.9714 -+@section Opcodes
 43.9715 -+@cindex AVR32 opcodes
 43.9716 -+@cindex opcodes for AVR32
 43.9717 -+
 43.9718 -+@code{@value{AS}} implements all the standard AVR32 opcodes.  It also
 43.9719 -+implements several pseudo-opcodes, which are recommended to use wherever
 43.9720 -+possible because they give the tool chain better freedom to generate
 43.9721 -+optimal code.
 43.9722 -+
 43.9723 -+@table @code
 43.9724 -+
 43.9725 -+@cindex @code{LDA.W reg, symbol} pseudo op, AVR32
 43.9726 -+@item LDA.W
 43.9727 -+@smallexample
 43.9728 -+        lda.w   @var{reg}, @var{symbol}
 43.9729 -+@end smallexample
 43.9730 -+
 43.9731 -+This instruction will load the address of @var{symbol} into
 43.9732 -+@var{reg}. The instruction will evaluate to one of the following,
 43.9733 -+depending on the relative distance to the symbol, the relative distance
 43.9734 -+to the constant pool and whether the @code{--pic} option has been
 43.9735 -+specified. If the @code{--pic} option has not been specified, the
 43.9736 -+alternatives are as follows:
 43.9737 -+@smallexample
 43.9738 -+        /* @var{symbol} evaluates to a small enough value */
 43.9739 -+        mov     @var{reg}, @var{symbol}
 43.9740 -+
 43.9741 -+        /* (. - @var{symbol}) evaluates to a small enough value */
 43.9742 -+        sub     @var{reg}, pc, . - @var{symbol}
 43.9743 -+
 43.9744 -+        /* Constant pool is close enough */
 43.9745 -+        lddpc   @var{reg}, @var{cpent}
 43.9746 -+        ...
 43.9747 -+@var{cpent}:
 43.9748 -+        .long   @var{symbol}
 43.9749 -+
 43.9750 -+        /* Otherwise (not implemented yet, probably not necessary) */
 43.9751 -+        mov     @var{reg}, lo(@var{symbol})
 43.9752 -+        orh     @var{reg}, hi(@var{symbol})
 43.9753 -+@end smallexample
 43.9754 -+
 43.9755 -+If the @code{--pic} option has been specified, the alternatives are as
 43.9756 -+follows:
 43.9757 -+@smallexample
 43.9758 -+        /* (. - @var{symbol}) evaluates to a small enough value */
 43.9759 -+        sub     @var{reg}, pc, . - @var{symbol}
 43.9760 -+
 43.9761 -+        /* If @code{--linkrelax} not specified */
 43.9762 -+        ld.w    @var{reg}, r6[@var{symbol}@@got]
 43.9763 -+
 43.9764 -+        /* Otherwise */
 43.9765 -+        mov     @var{reg}, @var{symbol}@@got / 4
 43.9766 -+        ld.w    @var{reg}, r6[@var{reg} << 2]
 43.9767 -+@end smallexample
 43.9768 -+
 43.9769 -+If @var{symbol} is not defined in the same file and section as the
 43.9770 -+@code{LDA.W} instruction, the most pessimistic alternative of the
 43.9771 -+above is selected. The linker may convert it back into the most
 43.9772 -+optimal alternative when the final value of all symbols is known.
 43.9773 -+
 43.9774 -+@cindex @code{CALL symbol} pseudo op, AVR32
 43.9775 -+@item CALL
 43.9776 -+@smallexample
 43.9777 -+        call    @var{symbol}
 43.9778 -+@end smallexample
 43.9779 -+
 43.9780 -+This instruction will insert code to call the subroutine identified by
 43.9781 -+@var{symbol}. It will evaluate to one of the following, depending on
 43.9782 -+the relative distance to the symbol as well as the @code{--linkrelax}
 43.9783 -+and @code{--pic} command-line options.
 43.9784 -+
 43.9785 -+If @var{symbol} is defined in the same section and input file, and the
 43.9786 -+distance is small enough, an @code{rcall} instruction is inserted:
 43.9787 -+@smallexample
 43.9788 -+        rcall   @var{symbol}
 43.9789 -+@end smallexample
 43.9790 -+
 43.9791 -+Otherwise, if the @code{--pic} option has not been specified:
 43.9792 -+@smallexample
 43.9793 -+        mcall   @var{cpent}
 43.9794 -+        ...
 43.9795 -+@var{cpent}:
 43.9796 -+        .long   @var{symbol}
 43.9797 -+@end smallexample
 43.9798 -+
 43.9799 -+Finally, if nothing else fits and the @code{--pic} option has been
 43.9800 -+specified, the assembler will indirect the call through the Global
 43.9801 -+Offset Table:
 43.9802 -+@smallexample
 43.9803 -+        /* If @code{--linkrelax} not specified */
 43.9804 -+        mcall   r6[@var{symbol}@@got]
 43.9805 -+
 43.9806 -+        /* If @code{--linkrelax} specified */
 43.9807 -+        mov     lr, @var{symbol}@@got / 4
 43.9808 -+        ld.w    lr, r6[lr << 2]
 43.9809 -+        icall   lr
 43.9810 -+@end smallexample
 43.9811 -+
 43.9812 -+The linker, after determining the final value of @var{symbol}, may
 43.9813 -+convert any of these into more optimal alternatives. This includes
 43.9814 -+deleting any superfluous constant pool- and GOT-entries.
 43.9815 -+
 43.9816 -+@end table
 43.9817 ---- a/gas/doc/Makefile.am
 43.9818 -+++ b/gas/doc/Makefile.am
 43.9819 -@@ -33,6 +33,7 @@ CPU_DOCS = \
 43.9820 - 	c-arc.texi \
 43.9821 - 	c-arm.texi \
 43.9822 - 	c-avr.texi \
 43.9823 -+    c-avr32.texi \
 43.9824 - 	c-bfin.texi \
 43.9825 - 	c-cr16.texi \
 43.9826 - 	c-d10v.texi \
 43.9827 ---- a/gas/Makefile.am
 43.9828 -+++ b/gas/Makefile.am
 43.9829 -@@ -47,6 +47,7 @@ CPU_TYPES = \
 43.9830 - 	arc \
 43.9831 - 	arm \
 43.9832 - 	avr \
 43.9833 -+	avr32 \
 43.9834 - 	bfin \
 43.9835 - 	cr16 \
 43.9836 - 	cris \
 43.9837 -@@ -241,6 +242,7 @@ TARGET_CPU_CFILES = \
 43.9838 - 	config/tc-arc.c \
 43.9839 - 	config/tc-arm.c \
 43.9840 - 	config/tc-avr.c \
 43.9841 -+	config/tc-avr32.c \
 43.9842 - 	config/tc-bfin.c \
 43.9843 - 	config/tc-cr16.c \
 43.9844 - 	config/tc-cris.c \
 43.9845 -@@ -296,6 +298,7 @@ TARGET_CPU_HFILES = \
 43.9846 - 	config/tc-arc.h \
 43.9847 - 	config/tc-arm.h \
 43.9848 - 	config/tc-avr.h \
 43.9849 -+	config/tc-avr32.h \
 43.9850 - 	config/tc-bfin.h \
 43.9851 - 	config/tc-cr16.h \
 43.9852 - 	config/tc-cris.h \
 43.9853 -@@ -1050,6 +1053,11 @@ DEPTC_avr_elf = $(srcdir)/config/obj-elf
 43.9854 -   $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
 43.9855 -   $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
 43.9856 -   $(INCDIR)/opcode/avr.h
 43.9857 -+DEPTC_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
 43.9858 -+  $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
 43.9859 -+  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
 43.9860 -+  $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
 43.9861 -+  $(srcdir)/../opcodes/avr32-opc.h $(srcdir)/../opcodes/avr32-asm.h
 43.9862 - DEPTC_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
 43.9863 -   $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
 43.9864 -   $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
 43.9865 -@@ -1487,6 +1495,11 @@ DEPOBJ_avr_elf = $(srcdir)/config/obj-el
 43.9866 -   $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
 43.9867 -   $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
 43.9868 -   $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
 43.9869 -+DEPOBJ_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
 43.9870 -+  $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
 43.9871 -+  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
 43.9872 -+  $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
 43.9873 -+  struc-symbol.h dwarf2dbg.h
 43.9874 - DEPOBJ_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
 43.9875 -   $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
 43.9876 -   $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
 43.9877 -@@ -1858,6 +1871,9 @@ DEP_cr16_elf = $(srcdir)/config/obj-elf.
 43.9878 -   $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cr16.h dwarf2dbg.h \
 43.9879 -   $(srcdir)/config/obj-coff.h $(INCDIR)/coff/internal.h \
 43.9880 -   $(BFDDIR)/libcoff.h
 43.9881 -+DEP_avr32_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
 43.9882 -+  $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
 43.9883 -+  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h
 43.9884 - DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \
 43.9885 -   $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
 43.9886 - DEP_cris_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
 43.9887 ---- /dev/null
 43.9888 -+++ b/gas/testsuite/gas/avr32/aliases.d
 43.9889 -@@ -0,0 +1,19 @@
 43.9890 -+#as:
 43.9891 -+#objdump: -dr
 43.9892 -+#name: aliases
 43.9893 -+
 43.9894 -+.*: +file format .*
 43.9895 -+
 43.9896 -+Disassembly of section \.text:
 43.9897 -+
 43.9898 -+00000000 <ld_nodisp>:
 43.9899 -+   0:	19 80      [ \t]+ld\.ub r0,r12\[0x0\]
 43.9900 -+   2:	f9 20 00 00[ \t]+ld\.sb r0,r12\[0\]
 43.9901 -+   6:	98 80      [ \t]+ld\.uh r0,r12\[0x0\]
 43.9902 -+   8:	98 00      [ \t]+ld\.sh r0,r12\[0x0\]
 43.9903 -+   a:	78 00      [ \t]+ld\.w r0,r12\[0x0\]
 43.9904 -+
 43.9905 -+0000000c <st_nodisp>:
 43.9906 -+   c:	b8 80      [ \t]+st\.b r12\[0x0\],r0
 43.9907 -+   e:	b8 00      [ \t]+st\.h r12\[0x0\],r0
 43.9908 -+  10:	99 00      [ \t]+st\.w r12\[0x0\],r0
 43.9909 ---- /dev/null
 43.9910 -+++ b/gas/testsuite/gas/avr32/aliases.s
 43.9911 -@@ -0,0 +1,14 @@
 43.9912 -+	.text
 43.9913 -+	.global	ld_nodisp
 43.9914 -+ld_nodisp:
 43.9915 -+	ld.ub	r0, r12
 43.9916 -+	ld.sb	r0, r12
 43.9917 -+	ld.uh	r0, r12
 43.9918 -+	ld.sh	r0, r12
 43.9919 -+	ld.w	r0, r12
 43.9920 -+
 43.9921 -+	.global st_nodisp
 43.9922 -+st_nodisp:
 43.9923 -+	st.b	r12, r0
 43.9924 -+	st.h	r12, r0
 43.9925 -+	st.w	r12, r0
 43.9926 ---- /dev/null
 43.9927 -+++ b/gas/testsuite/gas/avr32/allinsn.d
 43.9928 -@@ -0,0 +1,2987 @@
 43.9929 -+#as:
 43.9930 -+#objdump: -dr
 43.9931 -+#name: allinsn
 43.9932 -+
 43.9933 -+.*: +file format .*
 43.9934 -+
 43.9935 -+Disassembly of section \.text:
 43.9936 -+
 43.9937 -+[0-9a-f]* <ld_d5>:
 43.9938 -+ *[0-9a-f]*:	fe 0f 02 3e 	ld\.d lr,pc\[pc<<0x3\]
 43.9939 -+ *[0-9a-f]*:	e0 00 02 00 	ld\.d r0,r0\[r0\]
 43.9940 -+ *[0-9a-f]*:	ea 05 02 26 	ld\.d r6,r5\[r5<<0x2\]
 43.9941 -+ *[0-9a-f]*:	e8 04 02 14 	ld\.d r4,r4\[r4<<0x1\]
 43.9942 -+ *[0-9a-f]*:	fc 0e 02 1e 	ld\.d lr,lr\[lr<<0x1\]
 43.9943 -+ *[0-9a-f]*:	e6 0d 02 2a 	ld\.d r10,r3\[sp<<0x2\]
 43.9944 -+ *[0-9a-f]*:	f4 06 02 28 	ld\.d r8,r10\[r6<<0x2\]
 43.9945 -+ *[0-9a-f]*:	ee 09 02 02 	ld\.d r2,r7\[r9\]
 43.9946 -+
 43.9947 -+[0-9a-f]* <ld_w5>:
 43.9948 -+ *[0-9a-f]*:	fe 0f 03 0f 	ld\.w pc,pc\[pc\]
 43.9949 -+ *[0-9a-f]*:	f8 0c 03 3c 	ld\.w r12,r12\[r12<<0x3\]
 43.9950 -+ *[0-9a-f]*:	ea 05 03 25 	ld\.w r5,r5\[r5<<0x2\]
 43.9951 -+ *[0-9a-f]*:	e8 04 03 14 	ld\.w r4,r4\[r4<<0x1\]
 43.9952 -+ *[0-9a-f]*:	fc 0e 03 1e 	ld\.w lr,lr\[lr<<0x1\]
 43.9953 -+ *[0-9a-f]*:	f2 09 03 02 	ld\.w r2,r9\[r9\]
 43.9954 -+ *[0-9a-f]*:	e4 06 03 0b 	ld\.w r11,r2\[r6\]
 43.9955 -+ *[0-9a-f]*:	e4 0d 03 30 	ld\.w r0,r2\[sp<<0x3\]
 43.9956 -+
 43.9957 -+[0-9a-f]* <ld_sh5>:
 43.9958 -+ *[0-9a-f]*:	fe 0f 04 0f 	ld\.sh pc,pc\[pc\]
 43.9959 -+ *[0-9a-f]*:	f8 0c 04 3c 	ld\.sh r12,r12\[r12<<0x3\]
 43.9960 -+ *[0-9a-f]*:	ea 05 04 25 	ld\.sh r5,r5\[r5<<0x2\]
 43.9961 -+ *[0-9a-f]*:	e8 04 04 14 	ld\.sh r4,r4\[r4<<0x1\]
 43.9962 -+ *[0-9a-f]*:	fc 0e 04 1e 	ld\.sh lr,lr\[lr<<0x1\]
 43.9963 -+ *[0-9a-f]*:	e0 0f 04 2b 	ld\.sh r11,r0\[pc<<0x2\]
 43.9964 -+ *[0-9a-f]*:	fa 06 04 2a 	ld\.sh r10,sp\[r6<<0x2\]
 43.9965 -+ *[0-9a-f]*:	e4 02 04 0c 	ld\.sh r12,r2\[r2\]
 43.9966 -+
 43.9967 -+[0-9a-f]* <ld_uh5>:
 43.9968 -+ *[0-9a-f]*:	fe 0f 05 0f 	ld\.uh pc,pc\[pc\]
 43.9969 -+ *[0-9a-f]*:	f8 0c 05 3c 	ld\.uh r12,r12\[r12<<0x3\]
 43.9970 -+ *[0-9a-f]*:	ea 05 05 25 	ld\.uh r5,r5\[r5<<0x2\]
 43.9971 -+ *[0-9a-f]*:	e8 04 05 14 	ld\.uh r4,r4\[r4<<0x1\]
 43.9972 -+ *[0-9a-f]*:	fc 0e 05 1e 	ld\.uh lr,lr\[lr<<0x1\]
 43.9973 -+ *[0-9a-f]*:	fe 0e 05 38 	ld\.uh r8,pc\[lr<<0x3\]
 43.9974 -+ *[0-9a-f]*:	e2 0f 05 16 	ld\.uh r6,r1\[pc<<0x1\]
 43.9975 -+ *[0-9a-f]*:	fc 0d 05 16 	ld\.uh r6,lr\[sp<<0x1\]
 43.9976 -+
 43.9977 -+[0-9a-f]* <ld_sb2>:
 43.9978 -+ *[0-9a-f]*:	fe 0f 06 0f 	ld\.sb pc,pc\[pc\]
 43.9979 -+ *[0-9a-f]*:	f8 0c 06 3c 	ld\.sb r12,r12\[r12<<0x3\]
 43.9980 -+ *[0-9a-f]*:	ea 05 06 25 	ld\.sb r5,r5\[r5<<0x2\]
 43.9981 -+ *[0-9a-f]*:	e8 04 06 14 	ld\.sb r4,r4\[r4<<0x1\]
 43.9982 -+ *[0-9a-f]*:	fc 0e 06 1e 	ld\.sb lr,lr\[lr<<0x1\]
 43.9983 -+ *[0-9a-f]*:	e2 0f 06 39 	ld\.sb r9,r1\[pc<<0x3\]
 43.9984 -+ *[0-9a-f]*:	e6 0b 06 10 	ld\.sb r0,r3\[r11<<0x1\]
 43.9985 -+ *[0-9a-f]*:	ea 05 06 1a 	ld\.sb r10,r5\[r5<<0x1\]
 43.9986 -+
 43.9987 -+[0-9a-f]* <ld_ub5>:
 43.9988 -+ *[0-9a-f]*:	fe 0f 07 0f 	ld\.ub pc,pc\[pc\]
 43.9989 -+ *[0-9a-f]*:	f8 0c 07 3c 	ld\.ub r12,r12\[r12<<0x3\]
 43.9990 -+ *[0-9a-f]*:	ea 05 07 25 	ld\.ub r5,r5\[r5<<0x2\]
 43.9991 -+ *[0-9a-f]*:	e8 04 07 14 	ld\.ub r4,r4\[r4<<0x1\]
 43.9992 -+ *[0-9a-f]*:	fc 0e 07 1e 	ld\.ub lr,lr\[lr<<0x1\]
 43.9993 -+ *[0-9a-f]*:	f8 07 07 36 	ld\.ub r6,r12\[r7<<0x3\]
 43.9994 -+ *[0-9a-f]*:	ec 0c 07 02 	ld\.ub r2,r6\[r12\]
 43.9995 -+ *[0-9a-f]*:	ee 0b 07 10 	ld\.ub r0,r7\[r11<<0x1\]
 43.9996 -+
 43.9997 -+[0-9a-f]* <st_d5>:
 43.9998 -+ *[0-9a-f]*:	fe 0f 08 0e 	st\.d pc\[pc\],lr
 43.9999 -+ *[0-9a-f]*:	f8 0c 08 3c 	st\.d r12\[r12<<0x3\],r12
43.10000 -+ *[0-9a-f]*:	ea 05 08 26 	st\.d r5\[r5<<0x2\],r6
43.10001 -+ *[0-9a-f]*:	e8 04 08 14 	st\.d r4\[r4<<0x1\],r4
43.10002 -+ *[0-9a-f]*:	fc 0e 08 1e 	st\.d lr\[lr<<0x1\],lr
43.10003 -+ *[0-9a-f]*:	e2 09 08 14 	st\.d r1\[r9<<0x1\],r4
43.10004 -+ *[0-9a-f]*:	f4 02 08 14 	st\.d r10\[r2<<0x1\],r4
43.10005 -+ *[0-9a-f]*:	f8 06 08 0e 	st\.d r12\[r6\],lr
43.10006 -+
43.10007 -+[0-9a-f]* <st_w5>:
43.10008 -+ *[0-9a-f]*:	fe 0f 09 0f 	st\.w pc\[pc\],pc
43.10009 -+ *[0-9a-f]*:	f8 0c 09 3c 	st\.w r12\[r12<<0x3\],r12
43.10010 -+ *[0-9a-f]*:	ea 05 09 25 	st\.w r5\[r5<<0x2\],r5
43.10011 -+ *[0-9a-f]*:	e8 04 09 14 	st\.w r4\[r4<<0x1\],r4
43.10012 -+ *[0-9a-f]*:	fc 0e 09 1e 	st\.w lr\[lr<<0x1\],lr
43.10013 -+ *[0-9a-f]*:	e2 0a 09 03 	st\.w r1\[r10\],r3
43.10014 -+ *[0-9a-f]*:	e0 0a 09 19 	st\.w r0\[r10<<0x1\],r9
43.10015 -+ *[0-9a-f]*:	e8 05 09 3f 	st\.w r4\[r5<<0x3\],pc
43.10016 -+
43.10017 -+[0-9a-f]* <st_h5>:
43.10018 -+ *[0-9a-f]*:	fe 0f 0a 0f 	st\.h pc\[pc\],pc
43.10019 -+ *[0-9a-f]*:	f8 0c 0a 3c 	st\.h r12\[r12<<0x3\],r12
43.10020 -+ *[0-9a-f]*:	ea 05 0a 25 	st\.h r5\[r5<<0x2\],r5
43.10021 -+ *[0-9a-f]*:	e8 04 0a 14 	st\.h r4\[r4<<0x1\],r4
43.10022 -+ *[0-9a-f]*:	fc 0e 0a 1e 	st\.h lr\[lr<<0x1\],lr
43.10023 -+ *[0-9a-f]*:	e4 09 0a 0b 	st\.h r2\[r9\],r11
43.10024 -+ *[0-9a-f]*:	ea 01 0a 2c 	st\.h r5\[r1<<0x2\],r12
43.10025 -+ *[0-9a-f]*:	fe 08 0a 23 	st\.h pc\[r8<<0x2\],r3
43.10026 -+
43.10027 -+[0-9a-f]* <st_b5>:
43.10028 -+ *[0-9a-f]*:	fe 0f 0b 0f 	st\.b pc\[pc\],pc
43.10029 -+ *[0-9a-f]*:	f8 0c 0b 3c 	st\.b r12\[r12<<0x3\],r12
43.10030 -+ *[0-9a-f]*:	ea 05 0b 25 	st\.b r5\[r5<<0x2\],r5
43.10031 -+ *[0-9a-f]*:	e8 04 0b 14 	st\.b r4\[r4<<0x1\],r4
43.10032 -+ *[0-9a-f]*:	fc 0e 0b 1e 	st\.b lr\[lr<<0x1\],lr
43.10033 -+ *[0-9a-f]*:	e2 08 0b 16 	st\.b r1\[r8<<0x1\],r6
43.10034 -+ *[0-9a-f]*:	fc 0e 0b 31 	st\.b lr\[lr<<0x3\],r1
43.10035 -+ *[0-9a-f]*:	ea 00 0b 2f 	st\.b r5\[r0<<0x2\],pc
43.10036 -+
43.10037 -+[0-9a-f]* <divs>:
43.10038 -+ *[0-9a-f]*:	fe 0f 0c 0f 	divs pc,pc,pc
43.10039 -+ *[0-9a-f]*:	f8 0c 0c 0c 	divs r12,r12,r12
43.10040 -+ *[0-9a-f]*:	ea 05 0c 05 	divs r5,r5,r5
43.10041 -+ *[0-9a-f]*:	e8 04 0c 04 	divs r4,r4,r4
43.10042 -+ *[0-9a-f]*:	fc 0e 0c 0e 	divs lr,lr,lr
43.10043 -+ *[0-9a-f]*:	fe 0f 0c 03 	divs r3,pc,pc
43.10044 -+ *[0-9a-f]*:	f8 02 0c 09 	divs r9,r12,r2
43.10045 -+ *[0-9a-f]*:	e8 01 0c 07 	divs r7,r4,r1
43.10046 -+
43.10047 -+[0-9a-f]* <add1>:
43.10048 -+ *[0-9a-f]*:	1e 0f       	add pc,pc
43.10049 -+ *[0-9a-f]*:	18 0c       	add r12,r12
43.10050 -+ *[0-9a-f]*:	0a 05       	add r5,r5
43.10051 -+ *[0-9a-f]*:	08 04       	add r4,r4
43.10052 -+ *[0-9a-f]*:	1c 0e       	add lr,lr
43.10053 -+ *[0-9a-f]*:	12 0c       	add r12,r9
43.10054 -+ *[0-9a-f]*:	06 06       	add r6,r3
43.10055 -+ *[0-9a-f]*:	18 0a       	add r10,r12
43.10056 -+
43.10057 -+[0-9a-f]* <sub1>:
43.10058 -+ *[0-9a-f]*:	1e 1f       	sub pc,pc
43.10059 -+ *[0-9a-f]*:	18 1c       	sub r12,r12
43.10060 -+ *[0-9a-f]*:	0a 15       	sub r5,r5
43.10061 -+ *[0-9a-f]*:	08 14       	sub r4,r4
43.10062 -+ *[0-9a-f]*:	1c 1e       	sub lr,lr
43.10063 -+ *[0-9a-f]*:	0c 1e       	sub lr,r6
43.10064 -+ *[0-9a-f]*:	1a 10       	sub r0,sp
43.10065 -+ *[0-9a-f]*:	18 16       	sub r6,r12
43.10066 -+
43.10067 -+[0-9a-f]* <rsub1>:
43.10068 -+ *[0-9a-f]*:	1e 2f       	rsub pc,pc
43.10069 -+ *[0-9a-f]*:	18 2c       	rsub r12,r12
43.10070 -+ *[0-9a-f]*:	0a 25       	rsub r5,r5
43.10071 -+ *[0-9a-f]*:	08 24       	rsub r4,r4
43.10072 -+ *[0-9a-f]*:	1c 2e       	rsub lr,lr
43.10073 -+ *[0-9a-f]*:	1a 2b       	rsub r11,sp
43.10074 -+ *[0-9a-f]*:	08 27       	rsub r7,r4
43.10075 -+ *[0-9a-f]*:	02 29       	rsub r9,r1
43.10076 -+
43.10077 -+[0-9a-f]* <cp1>:
43.10078 -+ *[0-9a-f]*:	1e 3f       	cp\.w pc,pc
43.10079 -+ *[0-9a-f]*:	18 3c       	cp\.w r12,r12
43.10080 -+ *[0-9a-f]*:	0a 35       	cp\.w r5,r5
43.10081 -+ *[0-9a-f]*:	08 34       	cp\.w r4,r4
43.10082 -+ *[0-9a-f]*:	1c 3e       	cp\.w lr,lr
43.10083 -+ *[0-9a-f]*:	04 36       	cp\.w r6,r2
43.10084 -+ *[0-9a-f]*:	12 30       	cp\.w r0,r9
43.10085 -+ *[0-9a-f]*:	1a 33       	cp\.w r3,sp
43.10086 -+
43.10087 -+[0-9a-f]* <or1>:
43.10088 -+ *[0-9a-f]*:	1e 4f       	or pc,pc
43.10089 -+ *[0-9a-f]*:	18 4c       	or r12,r12
43.10090 -+ *[0-9a-f]*:	0a 45       	or r5,r5
43.10091 -+ *[0-9a-f]*:	08 44       	or r4,r4
43.10092 -+ *[0-9a-f]*:	1c 4e       	or lr,lr
43.10093 -+ *[0-9a-f]*:	12 44       	or r4,r9
43.10094 -+ *[0-9a-f]*:	08 4b       	or r11,r4
43.10095 -+ *[0-9a-f]*:	00 44       	or r4,r0
43.10096 -+
43.10097 -+[0-9a-f]* <eor1>:
43.10098 -+ *[0-9a-f]*:	1e 5f       	eor pc,pc
43.10099 -+ *[0-9a-f]*:	18 5c       	eor r12,r12
43.10100 -+ *[0-9a-f]*:	0a 55       	eor r5,r5
43.10101 -+ *[0-9a-f]*:	08 54       	eor r4,r4
43.10102 -+ *[0-9a-f]*:	1c 5e       	eor lr,lr
43.10103 -+ *[0-9a-f]*:	16 5c       	eor r12,r11
43.10104 -+ *[0-9a-f]*:	02 50       	eor r0,r1
43.10105 -+ *[0-9a-f]*:	1e 55       	eor r5,pc
43.10106 -+
43.10107 -+[0-9a-f]* <and1>:
43.10108 -+ *[0-9a-f]*:	1e 6f       	and pc,pc
43.10109 -+ *[0-9a-f]*:	18 6c       	and r12,r12
43.10110 -+ *[0-9a-f]*:	0a 65       	and r5,r5
43.10111 -+ *[0-9a-f]*:	08 64       	and r4,r4
43.10112 -+ *[0-9a-f]*:	1c 6e       	and lr,lr
43.10113 -+ *[0-9a-f]*:	02 68       	and r8,r1
43.10114 -+ *[0-9a-f]*:	1a 60       	and r0,sp
43.10115 -+ *[0-9a-f]*:	0a 6a       	and r10,r5
43.10116 -+
43.10117 -+[0-9a-f]* <tst>:
43.10118 -+ *[0-9a-f]*:	1e 7f       	tst pc,pc
43.10119 -+ *[0-9a-f]*:	18 7c       	tst r12,r12
43.10120 -+ *[0-9a-f]*:	0a 75       	tst r5,r5
43.10121 -+ *[0-9a-f]*:	08 74       	tst r4,r4
43.10122 -+ *[0-9a-f]*:	1c 7e       	tst lr,lr
43.10123 -+ *[0-9a-f]*:	18 70       	tst r0,r12
43.10124 -+ *[0-9a-f]*:	0c 7a       	tst r10,r6
43.10125 -+ *[0-9a-f]*:	08 7d       	tst sp,r4
43.10126 -+
43.10127 -+[0-9a-f]* <andn>:
43.10128 -+ *[0-9a-f]*:	1e 8f       	andn pc,pc
43.10129 -+ *[0-9a-f]*:	18 8c       	andn r12,r12
43.10130 -+ *[0-9a-f]*:	0a 85       	andn r5,r5
43.10131 -+ *[0-9a-f]*:	08 84       	andn r4,r4
43.10132 -+ *[0-9a-f]*:	1c 8e       	andn lr,lr
43.10133 -+ *[0-9a-f]*:	18 89       	andn r9,r12
43.10134 -+ *[0-9a-f]*:	1a 8b       	andn r11,sp
43.10135 -+ *[0-9a-f]*:	0a 8c       	andn r12,r5
43.10136 -+
43.10137 -+[0-9a-f]* <mov3>:
43.10138 -+ *[0-9a-f]*:	1e 9f       	mov pc,pc
43.10139 -+ *[0-9a-f]*:	18 9c       	mov r12,r12
43.10140 -+ *[0-9a-f]*:	0a 95       	mov r5,r5
43.10141 -+ *[0-9a-f]*:	08 94       	mov r4,r4
43.10142 -+ *[0-9a-f]*:	1c 9e       	mov lr,lr
43.10143 -+ *[0-9a-f]*:	12 95       	mov r5,r9
43.10144 -+ *[0-9a-f]*:	16 9b       	mov r11,r11
43.10145 -+ *[0-9a-f]*:	1c 92       	mov r2,lr
43.10146 -+
43.10147 -+[0-9a-f]* <st_w1>:
43.10148 -+ *[0-9a-f]*:	1e af       	st\.w pc\+\+,pc
43.10149 -+ *[0-9a-f]*:	18 ac       	st\.w r12\+\+,r12
43.10150 -+ *[0-9a-f]*:	0a a5       	st\.w r5\+\+,r5
43.10151 -+ *[0-9a-f]*:	08 a4       	st\.w r4\+\+,r4
43.10152 -+ *[0-9a-f]*:	1c ae       	st\.w lr\+\+,lr
43.10153 -+ *[0-9a-f]*:	02 ab       	st\.w r1\+\+,r11
43.10154 -+ *[0-9a-f]*:	1a a0       	st\.w sp\+\+,r0
43.10155 -+ *[0-9a-f]*:	1a a1       	st\.w sp\+\+,r1
43.10156 -+
43.10157 -+[0-9a-f]* <st_h1>:
43.10158 -+ *[0-9a-f]*:	1e bf       	st\.h pc\+\+,pc
43.10159 -+ *[0-9a-f]*:	18 bc       	st\.h r12\+\+,r12
43.10160 -+ *[0-9a-f]*:	0a b5       	st\.h r5\+\+,r5
43.10161 -+ *[0-9a-f]*:	08 b4       	st\.h r4\+\+,r4
43.10162 -+ *[0-9a-f]*:	1c be       	st\.h lr\+\+,lr
43.10163 -+ *[0-9a-f]*:	18 bd       	st\.h r12\+\+,sp
43.10164 -+ *[0-9a-f]*:	0e be       	st\.h r7\+\+,lr
43.10165 -+ *[0-9a-f]*:	0e b4       	st\.h r7\+\+,r4
43.10166 -+
43.10167 -+[0-9a-f]* <st_b1>:
43.10168 -+ *[0-9a-f]*:	1e cf       	st\.b pc\+\+,pc
43.10169 -+ *[0-9a-f]*:	18 cc       	st\.b r12\+\+,r12
43.10170 -+ *[0-9a-f]*:	0a c5       	st\.b r5\+\+,r5
43.10171 -+ *[0-9a-f]*:	08 c4       	st\.b r4\+\+,r4
43.10172 -+ *[0-9a-f]*:	1c ce       	st\.b lr\+\+,lr
43.10173 -+ *[0-9a-f]*:	12 cd       	st\.b r9\+\+,sp
43.10174 -+ *[0-9a-f]*:	02 cd       	st\.b r1\+\+,sp
43.10175 -+ *[0-9a-f]*:	00 c4       	st\.b r0\+\+,r4
43.10176 -+
43.10177 -+[0-9a-f]* <st_w2>:
43.10178 -+ *[0-9a-f]*:	1e df       	st\.w --pc,pc
43.10179 -+ *[0-9a-f]*:	18 dc       	st\.w --r12,r12
43.10180 -+ *[0-9a-f]*:	0a d5       	st\.w --r5,r5
43.10181 -+ *[0-9a-f]*:	08 d4       	st\.w --r4,r4
43.10182 -+ *[0-9a-f]*:	1c de       	st\.w --lr,lr
43.10183 -+ *[0-9a-f]*:	02 d7       	st\.w --r1,r7
43.10184 -+ *[0-9a-f]*:	06 d9       	st\.w --r3,r9
43.10185 -+ *[0-9a-f]*:	0a d5       	st\.w --r5,r5
43.10186 -+
43.10187 -+[0-9a-f]* <st_h2>:
43.10188 -+ *[0-9a-f]*:	1e ef       	st\.h --pc,pc
43.10189 -+ *[0-9a-f]*:	18 ec       	st\.h --r12,r12
43.10190 -+ *[0-9a-f]*:	0a e5       	st\.h --r5,r5
43.10191 -+ *[0-9a-f]*:	08 e4       	st\.h --r4,r4
43.10192 -+ *[0-9a-f]*:	1c ee       	st\.h --lr,lr
43.10193 -+ *[0-9a-f]*:	0a e7       	st\.h --r5,r7
43.10194 -+ *[0-9a-f]*:	10 e8       	st\.h --r8,r8
43.10195 -+ *[0-9a-f]*:	0e e2       	st\.h --r7,r2
43.10196 -+
43.10197 -+[0-9a-f]* <st_b2>:
43.10198 -+ *[0-9a-f]*:	1e ff       	st\.b --pc,pc
43.10199 -+ *[0-9a-f]*:	18 fc       	st\.b --r12,r12
43.10200 -+ *[0-9a-f]*:	0a f5       	st\.b --r5,r5
43.10201 -+ *[0-9a-f]*:	08 f4       	st\.b --r4,r4
43.10202 -+ *[0-9a-f]*:	1c fe       	st\.b --lr,lr
43.10203 -+ *[0-9a-f]*:	1a fd       	st\.b --sp,sp
43.10204 -+ *[0-9a-f]*:	1a fb       	st\.b --sp,r11
43.10205 -+ *[0-9a-f]*:	08 f5       	st\.b --r4,r5
43.10206 -+
43.10207 -+[0-9a-f]* <ld_w1>:
43.10208 -+ *[0-9a-f]*:	1f 0f       	ld\.w pc,pc\+\+
43.10209 -+ *[0-9a-f]*:	19 0c       	ld\.w r12,r12\+\+
43.10210 -+ *[0-9a-f]*:	0b 05       	ld\.w r5,r5\+\+
43.10211 -+ *[0-9a-f]*:	09 04       	ld\.w r4,r4\+\+
43.10212 -+ *[0-9a-f]*:	1d 0e       	ld\.w lr,lr\+\+
43.10213 -+ *[0-9a-f]*:	0f 03       	ld\.w r3,r7\+\+
43.10214 -+ *[0-9a-f]*:	1d 03       	ld\.w r3,lr\+\+
43.10215 -+ *[0-9a-f]*:	0b 0c       	ld\.w r12,r5\+\+
43.10216 -+
43.10217 -+[0-9a-f]* <ld_sh1>:
43.10218 -+ *[0-9a-f]*:	1f 1f       	ld\.sh pc,pc\+\+
43.10219 -+ *[0-9a-f]*:	19 1c       	ld\.sh r12,r12\+\+
43.10220 -+ *[0-9a-f]*:	0b 15       	ld\.sh r5,r5\+\+
43.10221 -+ *[0-9a-f]*:	09 14       	ld\.sh r4,r4\+\+
43.10222 -+ *[0-9a-f]*:	1d 1e       	ld\.sh lr,lr\+\+
43.10223 -+ *[0-9a-f]*:	05 1b       	ld\.sh r11,r2\+\+
43.10224 -+ *[0-9a-f]*:	11 12       	ld\.sh r2,r8\+\+
43.10225 -+ *[0-9a-f]*:	0d 17       	ld\.sh r7,r6\+\+
43.10226 -+
43.10227 -+[0-9a-f]* <ld_uh1>:
43.10228 -+ *[0-9a-f]*:	1f 2f       	ld\.uh pc,pc\+\+
43.10229 -+ *[0-9a-f]*:	19 2c       	ld\.uh r12,r12\+\+
43.10230 -+ *[0-9a-f]*:	0b 25       	ld\.uh r5,r5\+\+
43.10231 -+ *[0-9a-f]*:	09 24       	ld\.uh r4,r4\+\+
43.10232 -+ *[0-9a-f]*:	1d 2e       	ld\.uh lr,lr\+\+
43.10233 -+ *[0-9a-f]*:	0f 26       	ld\.uh r6,r7\+\+
43.10234 -+ *[0-9a-f]*:	17 2a       	ld\.uh r10,r11\+\+
43.10235 -+ *[0-9a-f]*:	09 2e       	ld\.uh lr,r4\+\+
43.10236 -+
43.10237 -+[0-9a-f]* <ld_ub1>:
43.10238 -+ *[0-9a-f]*:	1f 3f       	ld\.ub pc,pc\+\+
43.10239 -+ *[0-9a-f]*:	19 3c       	ld\.ub r12,r12\+\+
43.10240 -+ *[0-9a-f]*:	0b 35       	ld\.ub r5,r5\+\+
43.10241 -+ *[0-9a-f]*:	09 34       	ld\.ub r4,r4\+\+
43.10242 -+ *[0-9a-f]*:	1d 3e       	ld\.ub lr,lr\+\+
43.10243 -+ *[0-9a-f]*:	1d 38       	ld\.ub r8,lr\+\+
43.10244 -+ *[0-9a-f]*:	19 3c       	ld\.ub r12,r12\+\+
43.10245 -+ *[0-9a-f]*:	15 3b       	ld\.ub r11,r10\+\+
43.10246 -+
43.10247 -+[0-9a-f]* <ld_w2>:
43.10248 -+ *[0-9a-f]*:	1f 4f       	ld\.w pc,--pc
43.10249 -+ *[0-9a-f]*:	19 4c       	ld\.w r12,--r12
43.10250 -+ *[0-9a-f]*:	0b 45       	ld\.w r5,--r5
43.10251 -+ *[0-9a-f]*:	09 44       	ld\.w r4,--r4
43.10252 -+ *[0-9a-f]*:	1d 4e       	ld\.w lr,--lr
43.10253 -+ *[0-9a-f]*:	1d 4a       	ld\.w r10,--lr
43.10254 -+ *[0-9a-f]*:	13 4c       	ld\.w r12,--r9
43.10255 -+ *[0-9a-f]*:	0b 46       	ld\.w r6,--r5
43.10256 -+
43.10257 -+[0-9a-f]* <ld_sh2>:
43.10258 -+ *[0-9a-f]*:	1f 5f       	ld\.sh pc,--pc
43.10259 -+ *[0-9a-f]*:	19 5c       	ld\.sh r12,--r12
43.10260 -+ *[0-9a-f]*:	0b 55       	ld\.sh r5,--r5
43.10261 -+ *[0-9a-f]*:	09 54       	ld\.sh r4,--r4
43.10262 -+ *[0-9a-f]*:	1d 5e       	ld\.sh lr,--lr
43.10263 -+ *[0-9a-f]*:	15 5f       	ld\.sh pc,--r10
43.10264 -+ *[0-9a-f]*:	07 56       	ld\.sh r6,--r3
43.10265 -+ *[0-9a-f]*:	0d 54       	ld\.sh r4,--r6
43.10266 -+
43.10267 -+[0-9a-f]* <ld_uh2>:
43.10268 -+ *[0-9a-f]*:	1f 6f       	ld\.uh pc,--pc
43.10269 -+ *[0-9a-f]*:	19 6c       	ld\.uh r12,--r12
43.10270 -+ *[0-9a-f]*:	0b 65       	ld\.uh r5,--r5
43.10271 -+ *[0-9a-f]*:	09 64       	ld\.uh r4,--r4
43.10272 -+ *[0-9a-f]*:	1d 6e       	ld\.uh lr,--lr
43.10273 -+ *[0-9a-f]*:	05 63       	ld\.uh r3,--r2
43.10274 -+ *[0-9a-f]*:	01 61       	ld\.uh r1,--r0
43.10275 -+ *[0-9a-f]*:	13 62       	ld\.uh r2,--r9
43.10276 -+
43.10277 -+[0-9a-f]* <ld_ub2>:
43.10278 -+ *[0-9a-f]*:	1f 7f       	ld\.ub pc,--pc
43.10279 -+ *[0-9a-f]*:	19 7c       	ld\.ub r12,--r12
43.10280 -+ *[0-9a-f]*:	0b 75       	ld\.ub r5,--r5
43.10281 -+ *[0-9a-f]*:	09 74       	ld\.ub r4,--r4
43.10282 -+ *[0-9a-f]*:	1d 7e       	ld\.ub lr,--lr
43.10283 -+ *[0-9a-f]*:	03 71       	ld\.ub r1,--r1
43.10284 -+ *[0-9a-f]*:	0d 70       	ld\.ub r0,--r6
43.10285 -+ *[0-9a-f]*:	0f 72       	ld\.ub r2,--r7
43.10286 -+
43.10287 -+[0-9a-f]* <ld_ub3>:
43.10288 -+ *[0-9a-f]*:	1f 8f       	ld\.ub pc,pc\[0x0\]
43.10289 -+ *[0-9a-f]*:	19 fc       	ld\.ub r12,r12\[0x7\]
43.10290 -+ *[0-9a-f]*:	0b c5       	ld\.ub r5,r5\[0x4\]
43.10291 -+ *[0-9a-f]*:	09 b4       	ld\.ub r4,r4\[0x3\]
43.10292 -+ *[0-9a-f]*:	1d 9e       	ld\.ub lr,lr\[0x1\]
43.10293 -+ *[0-9a-f]*:	13 e6       	ld\.ub r6,r9\[0x6\]
43.10294 -+ *[0-9a-f]*:	1d c2       	ld\.ub r2,lr\[0x4\]
43.10295 -+ *[0-9a-f]*:	11 81       	ld\.ub r1,r8\[0x0\]
43.10296 -+
43.10297 -+[0-9a-f]* <sub3_sp>:
43.10298 -+ *[0-9a-f]*:	20 0d       	sub sp,0
43.10299 -+ *[0-9a-f]*:	2f fd       	sub sp,-4
43.10300 -+ *[0-9a-f]*:	28 0d       	sub sp,-512
43.10301 -+ *[0-9a-f]*:	27 fd       	sub sp,508
43.10302 -+ *[0-9a-f]*:	20 1d       	sub sp,4
43.10303 -+ *[0-9a-f]*:	20 bd       	sub sp,44
43.10304 -+ *[0-9a-f]*:	20 2d       	sub sp,8
43.10305 -+ *[0-9a-f]*:	25 7d       	sub sp,348
43.10306 -+
43.10307 -+[0-9a-f]* <sub3>:
43.10308 -+ *[0-9a-f]*:	20 0f       	sub pc,0
43.10309 -+ *[0-9a-f]*:	2f fc       	sub r12,-1
43.10310 -+ *[0-9a-f]*:	28 05       	sub r5,-128
43.10311 -+ *[0-9a-f]*:	27 f4       	sub r4,127
43.10312 -+ *[0-9a-f]*:	20 1e       	sub lr,1
43.10313 -+ *[0-9a-f]*:	2d 76       	sub r6,-41
43.10314 -+ *[0-9a-f]*:	22 54       	sub r4,37
43.10315 -+ *[0-9a-f]*:	23 8c       	sub r12,56
43.10316 -+
43.10317 -+[0-9a-f]* <mov1>:
43.10318 -+ *[0-9a-f]*:	30 0f       	mov pc,0
43.10319 -+ *[0-9a-f]*:	3f fc       	mov r12,-1
43.10320 -+ *[0-9a-f]*:	38 05       	mov r5,-128
43.10321 -+ *[0-9a-f]*:	37 f4       	mov r4,127
43.10322 -+ *[0-9a-f]*:	30 1e       	mov lr,1
43.10323 -+ *[0-9a-f]*:	30 ef       	mov pc,14
43.10324 -+ *[0-9a-f]*:	39 c6       	mov r6,-100
43.10325 -+ *[0-9a-f]*:	38 6e       	mov lr,-122
43.10326 -+
43.10327 -+[0-9a-f]* <lddsp>:
43.10328 -+ *[0-9a-f]*:	40 0f       	lddsp pc,sp\[0x0\]
43.10329 -+ *[0-9a-f]*:	47 fc       	lddsp r12,sp\[0x1fc\]
43.10330 -+ *[0-9a-f]*:	44 05       	lddsp r5,sp\[0x100\]
43.10331 -+ *[0-9a-f]*:	43 f4       	lddsp r4,sp\[0xfc\]
43.10332 -+ *[0-9a-f]*:	40 1e       	lddsp lr,sp\[0x4\]
43.10333 -+ *[0-9a-f]*:	44 0e       	lddsp lr,sp\[0x100\]
43.10334 -+ *[0-9a-f]*:	40 5c       	lddsp r12,sp\[0x14\]
43.10335 -+ *[0-9a-f]*:	47 69       	lddsp r9,sp\[0x1d8\]
43.10336 -+
43.10337 -+[0-9a-f]* <lddpc>:
43.10338 -+ *[0-9a-f]*:	48 0f       	lddpc pc,[0-9a-f]* <.*>
43.10339 -+ *[0-9a-f]*:	4f f0       	lddpc r0,[0-9a-f]* <.*>
43.10340 -+ *[0-9a-f]*:	4c 08       	lddpc r8,[0-9a-f]* <.*>
43.10341 -+ *[0-9a-f]*:	4b f7       	lddpc r7,[0-9a-f]* <.*>
43.10342 -+ *[0-9a-f]*:	48 1e       	lddpc lr,[0-9a-f]* <.*>
43.10343 -+ *[0-9a-f]*:	4f 6d       	lddpc sp,[0-9a-f]* <.*>
43.10344 -+ *[0-9a-f]*:	49 e6       	lddpc r6,[0-9a-f]* <.*>
43.10345 -+ *[0-9a-f]*:	48 7b       	lddpc r11,[0-9a-f]* <.*>
43.10346 -+
43.10347 -+[0-9a-f]* <stdsp>:
43.10348 -+ *[0-9a-f]*:	50 0f       	stdsp sp\[0x0\],pc
43.10349 -+ *[0-9a-f]*:	57 fc       	stdsp sp\[0x1fc\],r12
43.10350 -+ *[0-9a-f]*:	54 05       	stdsp sp\[0x100\],r5
43.10351 -+ *[0-9a-f]*:	53 f4       	stdsp sp\[0xfc\],r4
43.10352 -+ *[0-9a-f]*:	50 1e       	stdsp sp\[0x4\],lr
43.10353 -+ *[0-9a-f]*:	54 cf       	stdsp sp\[0x130\],pc
43.10354 -+ *[0-9a-f]*:	54 00       	stdsp sp\[0x100\],r0
43.10355 -+ *[0-9a-f]*:	55 45       	stdsp sp\[0x150\],r5
43.10356 -+
43.10357 -+[0-9a-f]* <cp2>:
43.10358 -+ *[0-9a-f]*:	58 0f       	cp.w pc,0
43.10359 -+ *[0-9a-f]*:	5b fc       	cp.w r12,-1
43.10360 -+ *[0-9a-f]*:	5a 05       	cp.w r5,-32
43.10361 -+ *[0-9a-f]*:	59 f4       	cp.w r4,31
43.10362 -+ *[0-9a-f]*:	58 1e       	cp.w lr,1
43.10363 -+ *[0-9a-f]*:	58 38       	cp.w r8,3
43.10364 -+ *[0-9a-f]*:	59 0e       	cp.w lr,16
43.10365 -+ *[0-9a-f]*:	5a 67       	cp.w r7,-26
43.10366 -+
43.10367 -+[0-9a-f]* <acr>:
43.10368 -+ *[0-9a-f]*:	5c 0f       	acr pc
43.10369 -+ *[0-9a-f]*:	5c 0c       	acr r12
43.10370 -+ *[0-9a-f]*:	5c 05       	acr r5
43.10371 -+ *[0-9a-f]*:	5c 04       	acr r4
43.10372 -+ *[0-9a-f]*:	5c 0e       	acr lr
43.10373 -+ *[0-9a-f]*:	5c 02       	acr r2
43.10374 -+ *[0-9a-f]*:	5c 0c       	acr r12
43.10375 -+ *[0-9a-f]*:	5c 0f       	acr pc
43.10376 -+
43.10377 -+[0-9a-f]* <scr>:
43.10378 -+ *[0-9a-f]*:	5c 1f       	scr pc
43.10379 -+ *[0-9a-f]*:	5c 1c       	scr r12
43.10380 -+ *[0-9a-f]*:	5c 15       	scr r5
43.10381 -+ *[0-9a-f]*:	5c 14       	scr r4
43.10382 -+ *[0-9a-f]*:	5c 1e       	scr lr
43.10383 -+ *[0-9a-f]*:	5c 1f       	scr pc
43.10384 -+ *[0-9a-f]*:	5c 16       	scr r6
43.10385 -+ *[0-9a-f]*:	5c 11       	scr r1
43.10386 -+
43.10387 -+[0-9a-f]* <cpc0>:
43.10388 -+ *[0-9a-f]*:	5c 2f       	cpc pc
43.10389 -+ *[0-9a-f]*:	5c 2c       	cpc r12
43.10390 -+ *[0-9a-f]*:	5c 25       	cpc r5
43.10391 -+ *[0-9a-f]*:	5c 24       	cpc r4
43.10392 -+ *[0-9a-f]*:	5c 2e       	cpc lr
43.10393 -+ *[0-9a-f]*:	5c 2f       	cpc pc
43.10394 -+ *[0-9a-f]*:	5c 24       	cpc r4
43.10395 -+ *[0-9a-f]*:	5c 29       	cpc r9
43.10396 -+
43.10397 -+[0-9a-f]* <neg>:
43.10398 -+ *[0-9a-f]*:	5c 3f       	neg pc
43.10399 -+ *[0-9a-f]*:	5c 3c       	neg r12
43.10400 -+ *[0-9a-f]*:	5c 35       	neg r5
43.10401 -+ *[0-9a-f]*:	5c 34       	neg r4
43.10402 -+ *[0-9a-f]*:	5c 3e       	neg lr
43.10403 -+ *[0-9a-f]*:	5c 37       	neg r7
43.10404 -+ *[0-9a-f]*:	5c 31       	neg r1
43.10405 -+ *[0-9a-f]*:	5c 39       	neg r9
43.10406 -+
43.10407 -+[0-9a-f]* <abs>:
43.10408 -+ *[0-9a-f]*:	5c 4f       	abs pc
43.10409 -+ *[0-9a-f]*:	5c 4c       	abs r12
43.10410 -+ *[0-9a-f]*:	5c 45       	abs r5
43.10411 -+ *[0-9a-f]*:	5c 44       	abs r4
43.10412 -+ *[0-9a-f]*:	5c 4e       	abs lr
43.10413 -+ *[0-9a-f]*:	5c 46       	abs r6
43.10414 -+ *[0-9a-f]*:	5c 46       	abs r6
43.10415 -+ *[0-9a-f]*:	5c 44       	abs r4
43.10416 -+
43.10417 -+[0-9a-f]* <castu_b>:
43.10418 -+ *[0-9a-f]*:	5c 5f       	castu\.b pc
43.10419 -+ *[0-9a-f]*:	5c 5c       	castu\.b r12
43.10420 -+ *[0-9a-f]*:	5c 55       	castu\.b r5
43.10421 -+ *[0-9a-f]*:	5c 54       	castu\.b r4
43.10422 -+ *[0-9a-f]*:	5c 5e       	castu\.b lr
43.10423 -+ *[0-9a-f]*:	5c 57       	castu\.b r7
43.10424 -+ *[0-9a-f]*:	5c 5d       	castu\.b sp
43.10425 -+ *[0-9a-f]*:	5c 59       	castu\.b r9
43.10426 -+
43.10427 -+[0-9a-f]* <casts_b>:
43.10428 -+ *[0-9a-f]*:	5c 6f       	casts\.b pc
43.10429 -+ *[0-9a-f]*:	5c 6c       	casts\.b r12
43.10430 -+ *[0-9a-f]*:	5c 65       	casts\.b r5
43.10431 -+ *[0-9a-f]*:	5c 64       	casts\.b r4
43.10432 -+ *[0-9a-f]*:	5c 6e       	casts\.b lr
43.10433 -+ *[0-9a-f]*:	5c 6b       	casts\.b r11
43.10434 -+ *[0-9a-f]*:	5c 61       	casts\.b r1
43.10435 -+ *[0-9a-f]*:	5c 6a       	casts\.b r10
43.10436 -+
43.10437 -+[0-9a-f]* <castu_h>:
43.10438 -+ *[0-9a-f]*:	5c 7f       	castu\.h pc
43.10439 -+ *[0-9a-f]*:	5c 7c       	castu\.h r12
43.10440 -+ *[0-9a-f]*:	5c 75       	castu\.h r5
43.10441 -+ *[0-9a-f]*:	5c 74       	castu\.h r4
43.10442 -+ *[0-9a-f]*:	5c 7e       	castu\.h lr
43.10443 -+ *[0-9a-f]*:	5c 7a       	castu\.h r10
43.10444 -+ *[0-9a-f]*:	5c 7b       	castu\.h r11
43.10445 -+ *[0-9a-f]*:	5c 71       	castu\.h r1
43.10446 -+
43.10447 -+[0-9a-f]* <casts_h>:
43.10448 -+ *[0-9a-f]*:	5c 8f       	casts\.h pc
43.10449 -+ *[0-9a-f]*:	5c 8c       	casts\.h r12
43.10450 -+ *[0-9a-f]*:	5c 85       	casts\.h r5
43.10451 -+ *[0-9a-f]*:	5c 84       	casts\.h r4
43.10452 -+ *[0-9a-f]*:	5c 8e       	casts\.h lr
43.10453 -+ *[0-9a-f]*:	5c 80       	casts\.h r0
43.10454 -+ *[0-9a-f]*:	5c 85       	casts\.h r5
43.10455 -+ *[0-9a-f]*:	5c 89       	casts\.h r9
43.10456 -+
43.10457 -+[0-9a-f]* <brev>:
43.10458 -+ *[0-9a-f]*:	5c 9f       	brev pc
43.10459 -+ *[0-9a-f]*:	5c 9c       	brev r12
43.10460 -+ *[0-9a-f]*:	5c 95       	brev r5
43.10461 -+ *[0-9a-f]*:	5c 94       	brev r4
43.10462 -+ *[0-9a-f]*:	5c 9e       	brev lr
43.10463 -+ *[0-9a-f]*:	5c 95       	brev r5
43.10464 -+ *[0-9a-f]*:	5c 9a       	brev r10
43.10465 -+ *[0-9a-f]*:	5c 98       	brev r8
43.10466 -+
43.10467 -+[0-9a-f]* <swap_h>:
43.10468 -+ *[0-9a-f]*:	5c af       	swap\.h pc
43.10469 -+ *[0-9a-f]*:	5c ac       	swap\.h r12
43.10470 -+ *[0-9a-f]*:	5c a5       	swap\.h r5
43.10471 -+ *[0-9a-f]*:	5c a4       	swap\.h r4
43.10472 -+ *[0-9a-f]*:	5c ae       	swap\.h lr
43.10473 -+ *[0-9a-f]*:	5c a7       	swap\.h r7
43.10474 -+ *[0-9a-f]*:	5c a0       	swap\.h r0
43.10475 -+ *[0-9a-f]*:	5c a8       	swap\.h r8
43.10476 -+
43.10477 -+[0-9a-f]* <swap_b>:
43.10478 -+ *[0-9a-f]*:	5c bf       	swap\.b pc
43.10479 -+ *[0-9a-f]*:	5c bc       	swap\.b r12
43.10480 -+ *[0-9a-f]*:	5c b5       	swap\.b r5
43.10481 -+ *[0-9a-f]*:	5c b4       	swap\.b r4
43.10482 -+ *[0-9a-f]*:	5c be       	swap\.b lr
43.10483 -+ *[0-9a-f]*:	5c ba       	swap\.b r10
43.10484 -+ *[0-9a-f]*:	5c bc       	swap\.b r12
43.10485 -+ *[0-9a-f]*:	5c b1       	swap\.b r1
43.10486 -+
43.10487 -+[0-9a-f]* <swap_bh>:
43.10488 -+ *[0-9a-f]*:	5c cf       	swap\.bh pc
43.10489 -+ *[0-9a-f]*:	5c cc       	swap\.bh r12
43.10490 -+ *[0-9a-f]*:	5c c5       	swap\.bh r5
43.10491 -+ *[0-9a-f]*:	5c c4       	swap\.bh r4
43.10492 -+ *[0-9a-f]*:	5c ce       	swap\.bh lr
43.10493 -+ *[0-9a-f]*:	5c c9       	swap\.bh r9
43.10494 -+ *[0-9a-f]*:	5c c4       	swap\.bh r4
43.10495 -+ *[0-9a-f]*:	5c c1       	swap\.bh r1
43.10496 -+
43.10497 -+[0-9a-f]* <One_s_compliment>:
43.10498 -+ *[0-9a-f]*:	5c df       	com pc
43.10499 -+ *[0-9a-f]*:	5c dc       	com r12
43.10500 -+ *[0-9a-f]*:	5c d5       	com r5
43.10501 -+ *[0-9a-f]*:	5c d4       	com r4
43.10502 -+ *[0-9a-f]*:	5c de       	com lr
43.10503 -+ *[0-9a-f]*:	5c d2       	com r2
43.10504 -+ *[0-9a-f]*:	5c d2       	com r2
43.10505 -+ *[0-9a-f]*:	5c d7       	com r7
43.10506 -+
43.10507 -+[0-9a-f]* <tnbz>:
43.10508 -+ *[0-9a-f]*:	5c ef       	tnbz pc
43.10509 -+ *[0-9a-f]*:	5c ec       	tnbz r12
43.10510 -+ *[0-9a-f]*:	5c e5       	tnbz r5
43.10511 -+ *[0-9a-f]*:	5c e4       	tnbz r4
43.10512 -+ *[0-9a-f]*:	5c ee       	tnbz lr
43.10513 -+ *[0-9a-f]*:	5c e8       	tnbz r8
43.10514 -+ *[0-9a-f]*:	5c ec       	tnbz r12
43.10515 -+ *[0-9a-f]*:	5c ef       	tnbz pc
43.10516 -+
43.10517 -+[0-9a-f]* <rol>:
43.10518 -+ *[0-9a-f]*:	5c ff       	rol pc
43.10519 -+ *[0-9a-f]*:	5c fc       	rol r12
43.10520 -+ *[0-9a-f]*:	5c f5       	rol r5
43.10521 -+ *[0-9a-f]*:	5c f4       	rol r4
43.10522 -+ *[0-9a-f]*:	5c fe       	rol lr
43.10523 -+ *[0-9a-f]*:	5c fa       	rol r10
43.10524 -+ *[0-9a-f]*:	5c f9       	rol r9
43.10525 -+ *[0-9a-f]*:	5c f5       	rol r5
43.10526 -+
43.10527 -+[0-9a-f]* <ror>:
43.10528 -+ *[0-9a-f]*:	5d 0f       	ror pc
43.10529 -+ *[0-9a-f]*:	5d 0c       	ror r12
43.10530 -+ *[0-9a-f]*:	5d 05       	ror r5
43.10531 -+ *[0-9a-f]*:	5d 04       	ror r4
43.10532 -+ *[0-9a-f]*:	5d 0e       	ror lr
43.10533 -+ *[0-9a-f]*:	5d 08       	ror r8
43.10534 -+ *[0-9a-f]*:	5d 04       	ror r4
43.10535 -+ *[0-9a-f]*:	5d 07       	ror r7
43.10536 -+
43.10537 -+[0-9a-f]* <icall>:
43.10538 -+ *[0-9a-f]*:	5d 1f       	icall pc
43.10539 -+ *[0-9a-f]*:	5d 1c       	icall r12
43.10540 -+ *[0-9a-f]*:	5d 15       	icall r5
43.10541 -+ *[0-9a-f]*:	5d 14       	icall r4
43.10542 -+ *[0-9a-f]*:	5d 1e       	icall lr
43.10543 -+ *[0-9a-f]*:	5d 13       	icall r3
43.10544 -+ *[0-9a-f]*:	5d 11       	icall r1
43.10545 -+ *[0-9a-f]*:	5d 13       	icall r3
43.10546 -+
43.10547 -+[0-9a-f]* <mustr>:
43.10548 -+ *[0-9a-f]*:	5d 2f       	mustr pc
43.10549 -+ *[0-9a-f]*:	5d 2c       	mustr r12
43.10550 -+ *[0-9a-f]*:	5d 25       	mustr r5
43.10551 -+ *[0-9a-f]*:	5d 24       	mustr r4
43.10552 -+ *[0-9a-f]*:	5d 2e       	mustr lr
43.10553 -+ *[0-9a-f]*:	5d 21       	mustr r1
43.10554 -+ *[0-9a-f]*:	5d 24       	mustr r4
43.10555 -+ *[0-9a-f]*:	5d 2c       	mustr r12
43.10556 -+
43.10557 -+[0-9a-f]* <musfr>:
43.10558 -+ *[0-9a-f]*:	5d 3f       	musfr pc
43.10559 -+ *[0-9a-f]*:	5d 3c       	musfr r12
43.10560 -+ *[0-9a-f]*:	5d 35       	musfr r5
43.10561 -+ *[0-9a-f]*:	5d 34       	musfr r4
43.10562 -+ *[0-9a-f]*:	5d 3e       	musfr lr
43.10563 -+ *[0-9a-f]*:	5d 3b       	musfr r11
43.10564 -+ *[0-9a-f]*:	5d 3c       	musfr r12
43.10565 -+ *[0-9a-f]*:	5d 32       	musfr r2
43.10566 -+
43.10567 -+[0-9a-f]* <ret_cond>:
43.10568 -+ *[0-9a-f]*:	5e 0f       	reteq 1
43.10569 -+ *[0-9a-f]*:	5e fc       	retal r12
43.10570 -+ *[0-9a-f]*:	5e 85       	retls r5
43.10571 -+ *[0-9a-f]*:	5e 74       	retpl r4
43.10572 -+ *[0-9a-f]*:	5e 1e       	retne -1
43.10573 -+ *[0-9a-f]*:	5e 90       	retgt r0
43.10574 -+ *[0-9a-f]*:	5e 9c       	retgt r12
43.10575 -+ *[0-9a-f]*:	5e 4a       	retge r10
43.10576 -+
43.10577 -+[0-9a-f]* <sr_cond>:
43.10578 -+ *[0-9a-f]*:	5f 0f       	sreq pc
43.10579 -+ *[0-9a-f]*:	5f fc       	sral r12
43.10580 -+ *[0-9a-f]*:	5f 85       	srls r5
43.10581 -+ *[0-9a-f]*:	5f 74       	srpl r4
43.10582 -+ *[0-9a-f]*:	5f 1e       	srne lr
43.10583 -+ *[0-9a-f]*:	5f 50       	srlt r0
43.10584 -+ *[0-9a-f]*:	5f fd       	sral sp
43.10585 -+ *[0-9a-f]*:	5f 49       	srge r9
43.10586 -+
43.10587 -+[0-9a-f]* <ld_w3>:
43.10588 -+ *[0-9a-f]*:	7e 0f       	ld\.w pc,pc\[0x0\]
43.10589 -+ *[0-9a-f]*:	79 fc       	ld\.w r12,r12\[0x7c\]
43.10590 -+ *[0-9a-f]*:	6b 05       	ld\.w r5,r5\[0x40\]
43.10591 -+ *[0-9a-f]*:	68 f4       	ld\.w r4,r4\[0x3c\]
43.10592 -+ *[0-9a-f]*:	7c 1e       	ld\.w lr,lr\[0x4\]
43.10593 -+ *[0-9a-f]*:	64 dd       	ld\.w sp,r2\[0x34\]
43.10594 -+ *[0-9a-f]*:	62 29       	ld\.w r9,r1\[0x8\]
43.10595 -+ *[0-9a-f]*:	7a f5       	ld\.w r5,sp\[0x3c\]
43.10596 -+
43.10597 -+[0-9a-f]* <ld_sh3>:
43.10598 -+ *[0-9a-f]*:	9e 0f       	ld\.sh pc,pc\[0x0\]
43.10599 -+ *[0-9a-f]*:	98 7c       	ld\.sh r12,r12\[0xe\]
43.10600 -+ *[0-9a-f]*:	8a 45       	ld\.sh r5,r5\[0x8\]
43.10601 -+ *[0-9a-f]*:	88 34       	ld\.sh r4,r4\[0x6\]
43.10602 -+ *[0-9a-f]*:	9c 1e       	ld\.sh lr,lr\[0x2\]
43.10603 -+ *[0-9a-f]*:	84 44       	ld\.sh r4,r2\[0x8\]
43.10604 -+ *[0-9a-f]*:	9c 5d       	ld\.sh sp,lr\[0xa\]
43.10605 -+ *[0-9a-f]*:	96 12       	ld\.sh r2,r11\[0x2\]
43.10606 -+
43.10607 -+[0-9a-f]* <ld_uh3>:
43.10608 -+ *[0-9a-f]*:	9e 8f       	ld\.uh pc,pc\[0x0\]
43.10609 -+ *[0-9a-f]*:	98 fc       	ld\.uh r12,r12\[0xe\]
43.10610 -+ *[0-9a-f]*:	8a c5       	ld\.uh r5,r5\[0x8\]
43.10611 -+ *[0-9a-f]*:	88 b4       	ld\.uh r4,r4\[0x6\]
43.10612 -+ *[0-9a-f]*:	9c 9e       	ld\.uh lr,lr\[0x2\]
43.10613 -+ *[0-9a-f]*:	80 da       	ld\.uh r10,r0\[0xa\]
43.10614 -+ *[0-9a-f]*:	96 c8       	ld\.uh r8,r11\[0x8\]
43.10615 -+ *[0-9a-f]*:	84 ea       	ld\.uh r10,r2\[0xc\]
43.10616 -+
43.10617 -+[0-9a-f]* <st_w3>:
43.10618 -+ *[0-9a-f]*:	9f 0f       	st\.w pc\[0x0\],pc
43.10619 -+ *[0-9a-f]*:	99 fc       	st\.w r12\[0x3c\],r12
43.10620 -+ *[0-9a-f]*:	8b 85       	st\.w r5\[0x20\],r5
43.10621 -+ *[0-9a-f]*:	89 74       	st\.w r4\[0x1c\],r4
43.10622 -+ *[0-9a-f]*:	9d 1e       	st\.w lr\[0x4\],lr
43.10623 -+ *[0-9a-f]*:	8f bb       	st\.w r7\[0x2c\],r11
43.10624 -+ *[0-9a-f]*:	85 66       	st\.w r2\[0x18\],r6
43.10625 -+ *[0-9a-f]*:	89 39       	st\.w r4\[0xc\],r9
43.10626 -+
43.10627 -+[0-9a-f]* <st_h3>:
43.10628 -+ *[0-9a-f]*:	be 0f       	st\.h pc\[0x0\],pc
43.10629 -+ *[0-9a-f]*:	b8 7c       	st\.h r12\[0xe\],r12
43.10630 -+ *[0-9a-f]*:	aa 45       	st\.h r5\[0x8\],r5
43.10631 -+ *[0-9a-f]*:	a8 34       	st\.h r4\[0x6\],r4
43.10632 -+ *[0-9a-f]*:	bc 1e       	st\.h lr\[0x2\],lr
43.10633 -+ *[0-9a-f]*:	bc 5c       	st\.h lr\[0xa\],r12
43.10634 -+ *[0-9a-f]*:	ac 20       	st\.h r6\[0x4\],r0
43.10635 -+ *[0-9a-f]*:	aa 6d       	st\.h r5\[0xc\],sp
43.10636 -+
43.10637 -+[0-9a-f]* <st_b3>:
43.10638 -+ *[0-9a-f]*:	be 8f       	st\.b pc\[0x0\],pc
43.10639 -+ *[0-9a-f]*:	b8 fc       	st\.b r12\[0x7\],r12
43.10640 -+ *[0-9a-f]*:	aa c5       	st\.b r5\[0x4\],r5
43.10641 -+ *[0-9a-f]*:	a8 b4       	st\.b r4\[0x3\],r4
43.10642 -+ *[0-9a-f]*:	bc 9e       	st\.b lr\[0x1\],lr
43.10643 -+ *[0-9a-f]*:	b8 e9       	st\.b r12\[0x6\],r9
43.10644 -+ *[0-9a-f]*:	a4 be       	st\.b r2\[0x3\],lr
43.10645 -+ *[0-9a-f]*:	a2 bb       	st\.b r1\[0x3\],r11
43.10646 -+
43.10647 -+[0-9a-f]* <ldd>:
43.10648 -+ *[0-9a-f]*:	bf 00       	ld\.d r0,pc
43.10649 -+ *[0-9a-f]*:	b9 0e       	ld\.d lr,r12
43.10650 -+ *[0-9a-f]*:	ab 08       	ld\.d r8,r5
43.10651 -+ *[0-9a-f]*:	a9 06       	ld\.d r6,r4
43.10652 -+ *[0-9a-f]*:	bd 02       	ld\.d r2,lr
43.10653 -+ *[0-9a-f]*:	af 0e       	ld\.d lr,r7
43.10654 -+ *[0-9a-f]*:	a9 04       	ld\.d r4,r4
43.10655 -+ *[0-9a-f]*:	bf 0e       	ld\.d lr,pc
43.10656 -+
43.10657 -+[0-9a-f]* <ldd_postinc>:
43.10658 -+ *[0-9a-f]*:	bf 01       	ld\.d r0,pc\+\+
43.10659 -+ *[0-9a-f]*:	b9 0f       	ld\.d lr,r12\+\+
43.10660 -+ *[0-9a-f]*:	ab 09       	ld\.d r8,r5\+\+
43.10661 -+ *[0-9a-f]*:	a9 07       	ld\.d r6,r4\+\+
43.10662 -+ *[0-9a-f]*:	bd 03       	ld\.d r2,lr\+\+
43.10663 -+ *[0-9a-f]*:	ab 0f       	ld\.d lr,r5\+\+
43.10664 -+ *[0-9a-f]*:	b7 0d       	ld\.d r12,r11\+\+
43.10665 -+ *[0-9a-f]*:	b9 03       	ld\.d r2,r12\+\+
43.10666 -+
43.10667 -+[0-9a-f]* <ldd_predec>:
43.10668 -+ *[0-9a-f]*:	bf 10       	ld\.d r0,--pc
43.10669 -+ *[0-9a-f]*:	b9 1e       	ld\.d lr,--r12
43.10670 -+ *[0-9a-f]*:	ab 18       	ld\.d r8,--r5
43.10671 -+ *[0-9a-f]*:	a9 16       	ld\.d r6,--r4
43.10672 -+ *[0-9a-f]*:	bd 12       	ld\.d r2,--lr
43.10673 -+ *[0-9a-f]*:	a1 18       	ld\.d r8,--r0
43.10674 -+ *[0-9a-f]*:	bf 1a       	ld\.d r10,--pc
43.10675 -+ *[0-9a-f]*:	a9 12       	ld\.d r2,--r4
43.10676 -+
43.10677 -+[0-9a-f]* <std>:
43.10678 -+ *[0-9a-f]*:	bf 11       	st\.d pc,r0
43.10679 -+ *[0-9a-f]*:	b9 1f       	st\.d r12,lr
43.10680 -+ *[0-9a-f]*:	ab 19       	st\.d r5,r8
43.10681 -+ *[0-9a-f]*:	a9 17       	st\.d r4,r6
43.10682 -+ *[0-9a-f]*:	bd 13       	st\.d lr,r2
43.10683 -+ *[0-9a-f]*:	a1 1d       	st\.d r0,r12
43.10684 -+ *[0-9a-f]*:	bb 15       	st\.d sp,r4
43.10685 -+ *[0-9a-f]*:	b9 1d       	st\.d r12,r12
43.10686 -+
43.10687 -+[0-9a-f]* <std_postinc>:
43.10688 -+ *[0-9a-f]*:	bf 20       	st\.d pc\+\+,r0
43.10689 -+ *[0-9a-f]*:	b9 2e       	st\.d r12\+\+,lr
43.10690 -+ *[0-9a-f]*:	ab 28       	st\.d r5\+\+,r8
43.10691 -+ *[0-9a-f]*:	a9 26       	st\.d r4\+\+,r6
43.10692 -+ *[0-9a-f]*:	bd 22       	st\.d lr\+\+,r2
43.10693 -+ *[0-9a-f]*:	bb 26       	st\.d sp\+\+,r6
43.10694 -+ *[0-9a-f]*:	b5 26       	st\.d r10\+\+,r6
43.10695 -+ *[0-9a-f]*:	af 22       	st\.d r7\+\+,r2
43.10696 -+
43.10697 -+[0-9a-f]* <std_predec>:
43.10698 -+ *[0-9a-f]*:	bf 21       	st\.d --pc,r0
43.10699 -+ *[0-9a-f]*:	b9 2f       	st\.d --r12,lr
43.10700 -+ *[0-9a-f]*:	ab 29       	st\.d --r5,r8
43.10701 -+ *[0-9a-f]*:	a9 27       	st\.d --r4,r6
43.10702 -+ *[0-9a-f]*:	bd 23       	st\.d --lr,r2
43.10703 -+ *[0-9a-f]*:	a7 27       	st\.d --r3,r6
43.10704 -+ *[0-9a-f]*:	bd 23       	st\.d --lr,r2
43.10705 -+ *[0-9a-f]*:	a1 25       	st\.d --r0,r4
43.10706 -+
43.10707 -+[0-9a-f]* <mul>:
43.10708 -+ *[0-9a-f]*:	bf 3f       	mul pc,pc
43.10709 -+ *[0-9a-f]*:	b9 3c       	mul r12,r12
43.10710 -+ *[0-9a-f]*:	ab 35       	mul r5,r5
43.10711 -+ *[0-9a-f]*:	a9 34       	mul r4,r4
43.10712 -+ *[0-9a-f]*:	bd 3e       	mul lr,lr
43.10713 -+ *[0-9a-f]*:	bd 3a       	mul r10,lr
43.10714 -+ *[0-9a-f]*:	b1 30       	mul r0,r8
43.10715 -+ *[0-9a-f]*:	ab 38       	mul r8,r5
43.10716 -+
43.10717 -+[0-9a-f]* <asr_imm5>:
43.10718 -+ *[0-9a-f]*:	a1 4f       	asr pc,0x0
43.10719 -+ *[0-9a-f]*:	bf 5c       	asr r12,0x1f
43.10720 -+ *[0-9a-f]*:	b1 45       	asr r5,0x10
43.10721 -+ *[0-9a-f]*:	af 54       	asr r4,0xf
43.10722 -+ *[0-9a-f]*:	a1 5e       	asr lr,0x1
43.10723 -+ *[0-9a-f]*:	b7 56       	asr r6,0x17
43.10724 -+ *[0-9a-f]*:	b3 46       	asr r6,0x12
43.10725 -+ *[0-9a-f]*:	a9 45       	asr r5,0x8
43.10726 -+
43.10727 -+[0-9a-f]* <lsl_imm5>:
43.10728 -+ *[0-9a-f]*:	a1 6f       	lsl pc,0x0
43.10729 -+ *[0-9a-f]*:	bf 7c       	lsl r12,0x1f
43.10730 -+ *[0-9a-f]*:	b1 65       	lsl r5,0x10
43.10731 -+ *[0-9a-f]*:	af 74       	lsl r4,0xf
43.10732 -+ *[0-9a-f]*:	a1 7e       	lsl lr,0x1
43.10733 -+ *[0-9a-f]*:	ad 7c       	lsl r12,0xd
43.10734 -+ *[0-9a-f]*:	b1 66       	lsl r6,0x10
43.10735 -+ *[0-9a-f]*:	b9 71       	lsl r1,0x19
43.10736 -+
43.10737 -+[0-9a-f]* <lsr_imm5>:
43.10738 -+ *[0-9a-f]*:	a1 8f       	lsr pc,0x0
43.10739 -+ *[0-9a-f]*:	bf 9c       	lsr r12,0x1f
43.10740 -+ *[0-9a-f]*:	b1 85       	lsr r5,0x10
43.10741 -+ *[0-9a-f]*:	af 94       	lsr r4,0xf
43.10742 -+ *[0-9a-f]*:	a1 9e       	lsr lr,0x1
43.10743 -+ *[0-9a-f]*:	a1 90       	lsr r0,0x1
43.10744 -+ *[0-9a-f]*:	ab 88       	lsr r8,0xa
43.10745 -+ *[0-9a-f]*:	bb 87       	lsr r7,0x1a
43.10746 -+
43.10747 -+[0-9a-f]* <sbr>:
43.10748 -+ *[0-9a-f]*:	a1 af       	sbr pc,0x0
43.10749 -+ *[0-9a-f]*:	bf bc       	sbr r12,0x1f
43.10750 -+ *[0-9a-f]*:	b1 a5       	sbr r5,0x10
43.10751 -+ *[0-9a-f]*:	af b4       	sbr r4,0xf
43.10752 -+ *[0-9a-f]*:	a1 be       	sbr lr,0x1
43.10753 -+ *[0-9a-f]*:	bf b8       	sbr r8,0x1f
43.10754 -+ *[0-9a-f]*:	b7 a6       	sbr r6,0x16
43.10755 -+ *[0-9a-f]*:	b7 b1       	sbr r1,0x17
43.10756 -+
43.10757 -+[0-9a-f]* <cbr>:
43.10758 -+ *[0-9a-f]*:	a1 cf       	cbr pc,0x0
43.10759 -+ *[0-9a-f]*:	bf dc       	cbr r12,0x1f
43.10760 -+ *[0-9a-f]*:	b1 c5       	cbr r5,0x10
43.10761 -+ *[0-9a-f]*:	af d4       	cbr r4,0xf
43.10762 -+ *[0-9a-f]*:	a1 de       	cbr lr,0x1
43.10763 -+ *[0-9a-f]*:	ab cc       	cbr r12,0xa
43.10764 -+ *[0-9a-f]*:	b7 c7       	cbr r7,0x16
43.10765 -+ *[0-9a-f]*:	a9 d8       	cbr r8,0x9
43.10766 -+
43.10767 -+[0-9a-f]* <brc1>:
43.10768 -+ *[0-9a-f]*:	c0 00       	breq [0-9a-f]* <.*>
43.10769 -+ *[0-9a-f]*:	cf f7       	brpl [0-9a-f]* <.*>
43.10770 -+ *[0-9a-f]*:	c8 04       	brge [0-9a-f]* <.*>
43.10771 -+ *[0-9a-f]*:	c7 f3       	brcs [0-9a-f]* <.*>
43.10772 -+ *[0-9a-f]*:	c0 11       	brne [0-9a-f]* <.*>
43.10773 -+ *[0-9a-f]*:	c7 33       	brcs [0-9a-f]* <.*>
43.10774 -+ *[0-9a-f]*:	cf 70       	breq [0-9a-f]* <.*>
43.10775 -+ *[0-9a-f]*:	c0 60       	breq [0-9a-f]* <.*>
43.10776 -+
43.10777 -+[0-9a-f]* <rjmp>:
43.10778 -+ *[0-9a-f]*:	c0 08       	rjmp [0-9a-f]* <.*>
43.10779 -+ *[0-9a-f]*:	cf fb       	rjmp [0-9a-f]* <.*>
43.10780 -+ *[0-9a-f]*:	c0 0a       	rjmp [0-9a-f]* <.*>
43.10781 -+ *[0-9a-f]*:	cf f9       	rjmp [0-9a-f]* <.*>
43.10782 -+ *[0-9a-f]*:	c0 18       	rjmp [0-9a-f]* <.*>
43.10783 -+ *[0-9a-f]*:	c1 fa       	rjmp [0-9a-f]* <.*>
43.10784 -+ *[0-9a-f]*:	c0 78       	rjmp [0-9a-f]* <.*>
43.10785 -+ *[0-9a-f]*:	cf ea       	rjmp [0-9a-f]* <.*>
43.10786 -+
43.10787 -+[0-9a-f]* <rcall1>:
43.10788 -+ *[0-9a-f]*:	c0 0c       	rcall [0-9a-f]* <.*>
43.10789 -+ *[0-9a-f]*:	cf ff       	rcall [0-9a-f]* <.*>
43.10790 -+ *[0-9a-f]*:	c0 0e       	rcall [0-9a-f]* <.*>
43.10791 -+ *[0-9a-f]*:	cf fd       	rcall [0-9a-f]* <.*>
43.10792 -+ *[0-9a-f]*:	c0 1c       	rcall [0-9a-f]* <.*>
43.10793 -+ *[0-9a-f]*:	c6 cc       	rcall [0-9a-f]* <.*>
43.10794 -+ *[0-9a-f]*:	cf 7e       	rcall [0-9a-f]* <.*>
43.10795 -+ *[0-9a-f]*:	c1 ae       	rcall [0-9a-f]* <.*>
43.10796 -+
43.10797 -+[0-9a-f]* <acall>:
43.10798 -+ *[0-9a-f]*:	d0 00       	acall 0x0
43.10799 -+ *[0-9a-f]*:	df f0       	acall 0x3fc
43.10800 -+ *[0-9a-f]*:	d8 00       	acall 0x200
43.10801 -+ *[0-9a-f]*:	d7 f0       	acall 0x1fc
43.10802 -+ *[0-9a-f]*:	d0 10       	acall 0x4
43.10803 -+ *[0-9a-f]*:	d5 90       	acall 0x164
43.10804 -+ *[0-9a-f]*:	d4 c0       	acall 0x130
43.10805 -+ *[0-9a-f]*:	d2 b0       	acall 0xac
43.10806 -+
43.10807 -+[0-9a-f]* <scall>:
43.10808 -+ *[0-9a-f]*:	d7 33       	scall
43.10809 -+ *[0-9a-f]*:	d7 33       	scall
43.10810 -+ *[0-9a-f]*:	d7 33       	scall
43.10811 -+ *[0-9a-f]*:	d7 33       	scall
43.10812 -+ *[0-9a-f]*:	d7 33       	scall
43.10813 -+ *[0-9a-f]*:	d7 33       	scall
43.10814 -+ *[0-9a-f]*:	d7 33       	scall
43.10815 -+ *[0-9a-f]*:	d7 33       	scall
43.10816 -+
43.10817 -+[0-9a-f]* <popm>:
43.10818 -+ *[0-9a-f]*:	d8 02       	popm pc
43.10819 -+ *[0-9a-f]*:	dd fa       	popm r0-r11,pc,r12=-1
43.10820 -+ *[0-9a-f]*:	d4 02       	popm lr
43.10821 -+ *[0-9a-f]*:	db fa       	popm r0-r11,pc,r12=1
43.10822 -+ *[0-9a-f]*:	d0 12       	popm r0-r3
43.10823 -+ *[0-9a-f]*:	d8 e2       	popm r4-r10,pc
43.10824 -+ *[0-9a-f]*:	d9 1a       	popm r0-r3,r11,pc,r12=0
43.10825 -+ *[0-9a-f]*:	d7 b2       	popm r0-r7,r10-r12,lr
43.10826 -+
43.10827 -+[0-9a-f]* <pushm>:
43.10828 -+ *[0-9a-f]*:	d8 01       	pushm pc
43.10829 -+ *[0-9a-f]*:	df f1       	pushm r0-r12,lr-pc
43.10830 -+ *[0-9a-f]*:	d8 01       	pushm pc
43.10831 -+ *[0-9a-f]*:	d7 f1       	pushm r0-r12,lr
43.10832 -+ *[0-9a-f]*:	d0 11       	pushm r0-r3
43.10833 -+ *[0-9a-f]*:	dc c1       	pushm r8-r10,lr-pc
43.10834 -+ *[0-9a-f]*:	d0 91       	pushm r0-r3,r10
43.10835 -+ *[0-9a-f]*:	d2 41       	pushm r8-r9,r12
43.10836 -+
43.10837 -+[0-9a-f]* <popm_n>:
43.10838 -+.*
43.10839 -+.*
43.10840 -+.*
43.10841 -+.*
43.10842 -+.*
43.10843 -+.*
43.10844 -+.*
43.10845 -+.*
43.10846 -+
43.10847 -+[0-9a-f]* <pushm_n>:
43.10848 -+.*
43.10849 -+.*
43.10850 -+.*
43.10851 -+.*
43.10852 -+.*
43.10853 -+.*
43.10854 -+.*
43.10855 -+.*
43.10856 -+
43.10857 -+[0-9a-f]* <csrfcz>:
43.10858 -+ *[0-9a-f]*:	d0 03       	csrfcz 0x0
43.10859 -+ *[0-9a-f]*:	d1 f3       	csrfcz 0x1f
43.10860 -+ *[0-9a-f]*:	d1 03       	csrfcz 0x10
43.10861 -+ *[0-9a-f]*:	d0 f3       	csrfcz 0xf
43.10862 -+ *[0-9a-f]*:	d0 13       	csrfcz 0x1
43.10863 -+ *[0-9a-f]*:	d0 53       	csrfcz 0x5
43.10864 -+ *[0-9a-f]*:	d0 d3       	csrfcz 0xd
43.10865 -+ *[0-9a-f]*:	d1 73       	csrfcz 0x17
43.10866 -+
43.10867 -+[0-9a-f]* <ssrf>:
43.10868 -+ *[0-9a-f]*:	d2 03       	ssrf 0x0
43.10869 -+ *[0-9a-f]*:	d3 f3       	ssrf 0x1f
43.10870 -+ *[0-9a-f]*:	d3 03       	ssrf 0x10
43.10871 -+ *[0-9a-f]*:	d2 f3       	ssrf 0xf
43.10872 -+ *[0-9a-f]*:	d2 13       	ssrf 0x1
43.10873 -+ *[0-9a-f]*:	d3 d3       	ssrf 0x1d
43.10874 -+ *[0-9a-f]*:	d2 d3       	ssrf 0xd
43.10875 -+ *[0-9a-f]*:	d2 d3       	ssrf 0xd
43.10876 -+
43.10877 -+[0-9a-f]* <csrf>:
43.10878 -+ *[0-9a-f]*:	d4 03       	csrf 0x0
43.10879 -+ *[0-9a-f]*:	d5 f3       	csrf 0x1f
43.10880 -+ *[0-9a-f]*:	d5 03       	csrf 0x10
43.10881 -+ *[0-9a-f]*:	d4 f3       	csrf 0xf
43.10882 -+ *[0-9a-f]*:	d4 13       	csrf 0x1
43.10883 -+ *[0-9a-f]*:	d4 a3       	csrf 0xa
43.10884 -+ *[0-9a-f]*:	d4 f3       	csrf 0xf
43.10885 -+ *[0-9a-f]*:	d4 b3       	csrf 0xb
43.10886 -+
43.10887 -+[0-9a-f]* <rete>:
43.10888 -+ *[0-9a-f]*:	d6 03       	rete
43.10889 -+
43.10890 -+[0-9a-f]* <rets>:
43.10891 -+ *[0-9a-f]*:	d6 13       	rets
43.10892 -+
43.10893 -+[0-9a-f]* <retd>:
43.10894 -+ *[0-9a-f]*:	d6 23       	retd
43.10895 -+
43.10896 -+[0-9a-f]* <retj>:
43.10897 -+ *[0-9a-f]*:	d6 33       	retj
43.10898 -+
43.10899 -+[0-9a-f]* <tlbr>:
43.10900 -+ *[0-9a-f]*:	d6 43       	tlbr
43.10901 -+
43.10902 -+[0-9a-f]* <tlbs>:
43.10903 -+ *[0-9a-f]*:	d6 53       	tlbs
43.10904 -+
43.10905 -+[0-9a-f]* <tlbw>:
43.10906 -+ *[0-9a-f]*:	d6 63       	tlbw
43.10907 -+
43.10908 -+[0-9a-f]* <breakpoint>:
43.10909 -+ *[0-9a-f]*:	d6 73       	breakpoint
43.10910 -+
43.10911 -+[0-9a-f]* <incjosp>:
43.10912 -+ *[0-9a-f]*:	d6 83       	incjosp 1
43.10913 -+ *[0-9a-f]*:	d6 93       	incjosp 2
43.10914 -+ *[0-9a-f]*:	d6 a3       	incjosp 3
43.10915 -+ *[0-9a-f]*:	d6 b3       	incjosp 4
43.10916 -+ *[0-9a-f]*:	d6 c3       	incjosp -4
43.10917 -+ *[0-9a-f]*:	d6 d3       	incjosp -3
43.10918 -+ *[0-9a-f]*:	d6 e3       	incjosp -2
43.10919 -+ *[0-9a-f]*:	d6 f3       	incjosp -1
43.10920 -+
43.10921 -+[0-9a-f]* <nop>:
43.10922 -+ *[0-9a-f]*:	d7 03       	nop
43.10923 -+
43.10924 -+[0-9a-f]* <popjc>:
43.10925 -+ *[0-9a-f]*:	d7 13       	popjc
43.10926 -+
43.10927 -+[0-9a-f]* <pushjc>:
43.10928 -+ *[0-9a-f]*:	d7 23       	pushjc
43.10929 -+
43.10930 -+[0-9a-f]* <add2>:
43.10931 -+ *[0-9a-f]*:	fe 0f 00 0f 	add pc,pc,pc
43.10932 -+ *[0-9a-f]*:	f8 0c 00 3c 	add r12,r12,r12<<0x3
43.10933 -+ *[0-9a-f]*:	ea 05 00 25 	add r5,r5,r5<<0x2
43.10934 -+ *[0-9a-f]*:	e8 04 00 14 	add r4,r4,r4<<0x1
43.10935 -+ *[0-9a-f]*:	fc 0e 00 1e 	add lr,lr,lr<<0x1
43.10936 -+ *[0-9a-f]*:	f8 00 00 10 	add r0,r12,r0<<0x1
43.10937 -+ *[0-9a-f]*:	f8 04 00 09 	add r9,r12,r4
43.10938 -+ *[0-9a-f]*:	f8 07 00 2c 	add r12,r12,r7<<0x2
43.10939 -+
43.10940 -+[0-9a-f]* <sub2>:
43.10941 -+ *[0-9a-f]*:	fe 0f 01 0f 	sub pc,pc,pc
43.10942 -+ *[0-9a-f]*:	f8 0c 01 3c 	sub r12,r12,r12<<0x3
43.10943 -+ *[0-9a-f]*:	ea 05 01 25 	sub r5,r5,r5<<0x2
43.10944 -+ *[0-9a-f]*:	e8 04 01 14 	sub r4,r4,r4<<0x1
43.10945 -+ *[0-9a-f]*:	fc 0e 01 1e 	sub lr,lr,lr<<0x1
43.10946 -+ *[0-9a-f]*:	e6 04 01 0d 	sub sp,r3,r4
43.10947 -+ *[0-9a-f]*:	ee 03 01 03 	sub r3,r7,r3
43.10948 -+ *[0-9a-f]*:	f4 0d 01 1d 	sub sp,r10,sp<<0x1
43.10949 -+
43.10950 -+[0-9a-f]* <divu>:
43.10951 -+ *[0-9a-f]*:	fe 0f 0d 0f 	divu pc,pc,pc
43.10952 -+ *[0-9a-f]*:	f8 0c 0d 0c 	divu r12,r12,r12
43.10953 -+ *[0-9a-f]*:	ea 05 0d 05 	divu r5,r5,r5
43.10954 -+ *[0-9a-f]*:	e8 04 0d 04 	divu r4,r4,r4
43.10955 -+ *[0-9a-f]*:	fc 0e 0d 0e 	divu lr,lr,lr
43.10956 -+ *[0-9a-f]*:	e8 0f 0d 0d 	divu sp,r4,pc
43.10957 -+ *[0-9a-f]*:	ea 0d 0d 05 	divu r5,r5,sp
43.10958 -+ *[0-9a-f]*:	fa 00 0d 0a 	divu r10,sp,r0
43.10959 -+
43.10960 -+[0-9a-f]* <addhh_w>:
43.10961 -+ *[0-9a-f]*:	fe 0f 0e 0f 	addhh\.w pc,pc:b,pc:b
43.10962 -+ *[0-9a-f]*:	f8 0c 0e 3c 	addhh\.w r12,r12:t,r12:t
43.10963 -+ *[0-9a-f]*:	ea 05 0e 35 	addhh\.w r5,r5:t,r5:t
43.10964 -+ *[0-9a-f]*:	e8 04 0e 04 	addhh\.w r4,r4:b,r4:b
43.10965 -+ *[0-9a-f]*:	fc 0e 0e 3e 	addhh\.w lr,lr:t,lr:t
43.10966 -+ *[0-9a-f]*:	e0 03 0e 00 	addhh\.w r0,r0:b,r3:b
43.10967 -+ *[0-9a-f]*:	f8 07 0e 2e 	addhh\.w lr,r12:t,r7:b
43.10968 -+ *[0-9a-f]*:	f4 02 0e 23 	addhh\.w r3,r10:t,r2:b
43.10969 -+
43.10970 -+[0-9a-f]* <subhh_w>:
43.10971 -+ *[0-9a-f]*:	fe 0f 0f 0f 	subhh\.w pc,pc:b,pc:b
43.10972 -+ *[0-9a-f]*:	f8 0c 0f 3c 	subhh\.w r12,r12:t,r12:t
43.10973 -+ *[0-9a-f]*:	ea 05 0f 35 	subhh\.w r5,r5:t,r5:t
43.10974 -+ *[0-9a-f]*:	e8 04 0f 04 	subhh\.w r4,r4:b,r4:b
43.10975 -+ *[0-9a-f]*:	fc 0e 0f 3e 	subhh\.w lr,lr:t,lr:t
43.10976 -+ *[0-9a-f]*:	e2 07 0f 2a 	subhh\.w r10,r1:t,r7:b
43.10977 -+ *[0-9a-f]*:	f4 0e 0f 3f 	subhh\.w pc,r10:t,lr:t
43.10978 -+ *[0-9a-f]*:	e0 0c 0f 23 	subhh\.w r3,r0:t,r12:b
43.10979 -+
43.10980 -+[0-9a-f]* <adc>:
43.10981 -+ *[0-9a-f]*:	fe 0f 00 4f 	adc pc,pc,pc
43.10982 -+ *[0-9a-f]*:	f8 0c 00 4c 	adc r12,r12,r12
43.10983 -+ *[0-9a-f]*:	ea 05 00 45 	adc r5,r5,r5
43.10984 -+ *[0-9a-f]*:	e8 04 00 44 	adc r4,r4,r4
43.10985 -+ *[0-9a-f]*:	fc 0e 00 4e 	adc lr,lr,lr
43.10986 -+ *[0-9a-f]*:	e0 07 00 44 	adc r4,r0,r7
43.10987 -+ *[0-9a-f]*:	e8 03 00 4d 	adc sp,r4,r3
43.10988 -+ *[0-9a-f]*:	f8 00 00 42 	adc r2,r12,r0
43.10989 -+
43.10990 -+[0-9a-f]* <sbc>:
43.10991 -+ *[0-9a-f]*:	fe 0f 01 4f 	sbc pc,pc,pc
43.10992 -+ *[0-9a-f]*:	f8 0c 01 4c 	sbc r12,r12,r12
43.10993 -+ *[0-9a-f]*:	ea 05 01 45 	sbc r5,r5,r5
43.10994 -+ *[0-9a-f]*:	e8 04 01 44 	sbc r4,r4,r4
43.10995 -+ *[0-9a-f]*:	fc 0e 01 4e 	sbc lr,lr,lr
43.10996 -+ *[0-9a-f]*:	ee 09 01 46 	sbc r6,r7,r9
43.10997 -+ *[0-9a-f]*:	f0 05 01 40 	sbc r0,r8,r5
43.10998 -+ *[0-9a-f]*:	e0 04 01 41 	sbc r1,r0,r4
43.10999 -+
43.11000 -+[0-9a-f]* <mul_2>:
43.11001 -+ *[0-9a-f]*:	fe 0f 02 4f 	mul pc,pc,pc
43.11002 -+ *[0-9a-f]*:	f8 0c 02 4c 	mul r12,r12,r12
43.11003 -+ *[0-9a-f]*:	ea 05 02 45 	mul r5,r5,r5
43.11004 -+ *[0-9a-f]*:	e8 04 02 44 	mul r4,r4,r4
43.11005 -+ *[0-9a-f]*:	fc 0e 02 4e 	mul lr,lr,lr
43.11006 -+ *[0-9a-f]*:	e0 00 02 4f 	mul pc,r0,r0
43.11007 -+ *[0-9a-f]*:	fe 0e 02 48 	mul r8,pc,lr
43.11008 -+ *[0-9a-f]*:	f8 0f 02 44 	mul r4,r12,pc
43.11009 -+
43.11010 -+[0-9a-f]* <mac>:
43.11011 -+ *[0-9a-f]*:	fe 0f 03 4f 	mac pc,pc,pc
43.11012 -+ *[0-9a-f]*:	f8 0c 03 4c 	mac r12,r12,r12
43.11013 -+ *[0-9a-f]*:	ea 05 03 45 	mac r5,r5,r5
43.11014 -+ *[0-9a-f]*:	e8 04 03 44 	mac r4,r4,r4
43.11015 -+ *[0-9a-f]*:	fc 0e 03 4e 	mac lr,lr,lr
43.11016 -+ *[0-9a-f]*:	e8 00 03 4a 	mac r10,r4,r0
43.11017 -+ *[0-9a-f]*:	fc 00 03 47 	mac r7,lr,r0
43.11018 -+ *[0-9a-f]*:	f2 0c 03 42 	mac r2,r9,r12
43.11019 -+
43.11020 -+[0-9a-f]* <mulsd>:
43.11021 -+ *[0-9a-f]*:	fe 0f 04 4f 	muls\.d pc,pc,pc
43.11022 -+ *[0-9a-f]*:	f8 0c 04 4c 	muls\.d r12,r12,r12
43.11023 -+ *[0-9a-f]*:	ea 05 04 45 	muls\.d r5,r5,r5
43.11024 -+ *[0-9a-f]*:	e8 04 04 44 	muls\.d r4,r4,r4
43.11025 -+ *[0-9a-f]*:	fc 0e 04 4e 	muls\.d lr,lr,lr
43.11026 -+ *[0-9a-f]*:	f0 0e 04 42 	muls\.d r2,r8,lr
43.11027 -+ *[0-9a-f]*:	e0 0b 04 44 	muls\.d r4,r0,r11
43.11028 -+ *[0-9a-f]*:	fc 06 04 45 	muls\.d r5,lr,r6
43.11029 -+
43.11030 -+[0-9a-f]* <macsd>:
43.11031 -+ *[0-9a-f]*:	fe 0f 05 40 	macs\.d r0,pc,pc
43.11032 -+ *[0-9a-f]*:	f8 0c 05 4e 	macs\.d lr,r12,r12
43.11033 -+ *[0-9a-f]*:	ea 05 05 48 	macs\.d r8,r5,r5
43.11034 -+ *[0-9a-f]*:	e8 04 05 46 	macs\.d r6,r4,r4
43.11035 -+ *[0-9a-f]*:	fc 0e 05 42 	macs\.d r2,lr,lr
43.11036 -+ *[0-9a-f]*:	e2 09 05 48 	macs\.d r8,r1,r9
43.11037 -+ *[0-9a-f]*:	f0 08 05 4e 	macs\.d lr,r8,r8
43.11038 -+ *[0-9a-f]*:	e6 0c 05 44 	macs\.d r4,r3,r12
43.11039 -+
43.11040 -+[0-9a-f]* <mulud>:
43.11041 -+ *[0-9a-f]*:	fe 0f 06 40 	mulu\.d r0,pc,pc
43.11042 -+ *[0-9a-f]*:	f8 0c 06 4e 	mulu\.d lr,r12,r12
43.11043 -+ *[0-9a-f]*:	ea 05 06 48 	mulu\.d r8,r5,r5
43.11044 -+ *[0-9a-f]*:	e8 04 06 46 	mulu\.d r6,r4,r4
43.11045 -+ *[0-9a-f]*:	fc 0e 06 42 	mulu\.d r2,lr,lr
43.11046 -+ *[0-9a-f]*:	ea 00 06 46 	mulu\.d r6,r5,r0
43.11047 -+ *[0-9a-f]*:	ec 01 06 44 	mulu\.d r4,r6,r1
43.11048 -+ *[0-9a-f]*:	f0 02 06 48 	mulu\.d r8,r8,r2
43.11049 -+
43.11050 -+[0-9a-f]* <macud>:
43.11051 -+ *[0-9a-f]*:	fe 0f 07 40 	macu\.d r0,pc,pc
43.11052 -+ *[0-9a-f]*:	f8 0c 07 4e 	macu\.d lr,r12,r12
43.11053 -+ *[0-9a-f]*:	ea 05 07 48 	macu\.d r8,r5,r5
43.11054 -+ *[0-9a-f]*:	e8 04 07 46 	macu\.d r6,r4,r4
43.11055 -+ *[0-9a-f]*:	fc 0e 07 42 	macu\.d r2,lr,lr
43.11056 -+ *[0-9a-f]*:	fa 0b 07 46 	macu\.d r6,sp,r11
43.11057 -+ *[0-9a-f]*:	e8 08 07 42 	macu\.d r2,r4,r8
43.11058 -+ *[0-9a-f]*:	f4 09 07 46 	macu\.d r6,r10,r9
43.11059 -+
43.11060 -+[0-9a-f]* <asr_1>:
43.11061 -+ *[0-9a-f]*:	fe 0f 08 4f 	asr pc,pc,pc
43.11062 -+ *[0-9a-f]*:	f8 0c 08 4c 	asr r12,r12,r12
43.11063 -+ *[0-9a-f]*:	ea 05 08 45 	asr r5,r5,r5
43.11064 -+ *[0-9a-f]*:	e8 04 08 44 	asr r4,r4,r4
43.11065 -+ *[0-9a-f]*:	fc 0e 08 4e 	asr lr,lr,lr
43.11066 -+ *[0-9a-f]*:	ec 0f 08 4f 	asr pc,r6,pc
43.11067 -+ *[0-9a-f]*:	ec 0c 08 40 	asr r0,r6,r12
43.11068 -+ *[0-9a-f]*:	fa 00 08 44 	asr r4,sp,r0
43.11069 -+
43.11070 -+[0-9a-f]* <lsl_1>:
43.11071 -+ *[0-9a-f]*:	fe 0f 09 4f 	lsl pc,pc,pc
43.11072 -+ *[0-9a-f]*:	f8 0c 09 4c 	lsl r12,r12,r12
43.11073 -+ *[0-9a-f]*:	ea 05 09 45 	lsl r5,r5,r5
43.11074 -+ *[0-9a-f]*:	e8 04 09 44 	lsl r4,r4,r4
43.11075 -+ *[0-9a-f]*:	fc 0e 09 4e 	lsl lr,lr,lr
43.11076 -+ *[0-9a-f]*:	ea 0e 09 4e 	lsl lr,r5,lr
43.11077 -+ *[0-9a-f]*:	fe 03 09 45 	lsl r5,pc,r3
43.11078 -+ *[0-9a-f]*:	fe 09 09 41 	lsl r1,pc,r9
43.11079 -+
43.11080 -+[0-9a-f]* <lsr_1>:
43.11081 -+ *[0-9a-f]*:	fe 0f 0a 4f 	lsr pc,pc,pc
43.11082 -+ *[0-9a-f]*:	f8 0c 0a 4c 	lsr r12,r12,r12
43.11083 -+ *[0-9a-f]*:	ea 05 0a 45 	lsr r5,r5,r5
43.11084 -+ *[0-9a-f]*:	e8 04 0a 44 	lsr r4,r4,r4
43.11085 -+ *[0-9a-f]*:	fc 0e 0a 4e 	lsr lr,lr,lr
43.11086 -+ *[0-9a-f]*:	e8 01 0a 42 	lsr r2,r4,r1
43.11087 -+ *[0-9a-f]*:	e2 06 0a 45 	lsr r5,r1,r6
43.11088 -+ *[0-9a-f]*:	ec 07 0a 4d 	lsr sp,r6,r7
43.11089 -+
43.11090 -+[0-9a-f]* <xchg>:
43.11091 -+ *[0-9a-f]*:	fe 0f 0b 4f 	xchg pc,pc,pc
43.11092 -+ *[0-9a-f]*:	f8 0c 0b 4c 	xchg r12,r12,r12
43.11093 -+ *[0-9a-f]*:	ea 05 0b 45 	xchg r5,r5,r5
43.11094 -+ *[0-9a-f]*:	e8 04 0b 44 	xchg r4,r4,r4
43.11095 -+ *[0-9a-f]*:	fc 0e 0b 4e 	xchg lr,lr,lr
43.11096 -+ *[0-9a-f]*:	e8 0d 0b 4e 	xchg lr,r4,sp
43.11097 -+ *[0-9a-f]*:	ea 0c 0b 41 	xchg r1,r5,r12
43.11098 -+ *[0-9a-f]*:	f8 00 0b 4e 	xchg lr,r12,r0
43.11099 -+
43.11100 -+[0-9a-f]* <max>:
43.11101 -+ *[0-9a-f]*:	fe 0f 0c 4f 	max pc,pc,pc
43.11102 -+ *[0-9a-f]*:	f8 0c 0c 4c 	max r12,r12,r12
43.11103 -+ *[0-9a-f]*:	ea 05 0c 45 	max r5,r5,r5
43.11104 -+ *[0-9a-f]*:	e8 04 0c 44 	max r4,r4,r4
43.11105 -+ *[0-9a-f]*:	fc 0e 0c 4e 	max lr,lr,lr
43.11106 -+ *[0-9a-f]*:	e4 0d 0c 4e 	max lr,r2,sp
43.11107 -+ *[0-9a-f]*:	f4 09 0c 44 	max r4,r10,r9
43.11108 -+ *[0-9a-f]*:	f2 0e 0c 4e 	max lr,r9,lr
43.11109 -+
43.11110 -+[0-9a-f]* <min>:
43.11111 -+ *[0-9a-f]*:	fe 0f 0d 4f 	min pc,pc,pc
43.11112 -+ *[0-9a-f]*:	f8 0c 0d 4c 	min r12,r12,r12
43.11113 -+ *[0-9a-f]*:	ea 05 0d 45 	min r5,r5,r5
43.11114 -+ *[0-9a-f]*:	e8 04 0d 44 	min r4,r4,r4
43.11115 -+ *[0-9a-f]*:	fc 0e 0d 4e 	min lr,lr,lr
43.11116 -+ *[0-9a-f]*:	ee 08 0d 49 	min r9,r7,r8
43.11117 -+ *[0-9a-f]*:	ea 05 0d 4d 	min sp,r5,r5
43.11118 -+ *[0-9a-f]*:	e2 04 0d 44 	min r4,r1,r4
43.11119 -+
43.11120 -+[0-9a-f]* <addabs>:
43.11121 -+ *[0-9a-f]*:	fe 0f 0e 4f 	addabs pc,pc,pc
43.11122 -+ *[0-9a-f]*:	f8 0c 0e 4c 	addabs r12,r12,r12
43.11123 -+ *[0-9a-f]*:	ea 05 0e 45 	addabs r5,r5,r5
43.11124 -+ *[0-9a-f]*:	e8 04 0e 44 	addabs r4,r4,r4
43.11125 -+ *[0-9a-f]*:	fc 0e 0e 4e 	addabs lr,lr,lr
43.11126 -+ *[0-9a-f]*:	f4 00 0e 47 	addabs r7,r10,r0
43.11127 -+ *[0-9a-f]*:	f2 07 0e 49 	addabs r9,r9,r7
43.11128 -+ *[0-9a-f]*:	f0 0c 0e 42 	addabs r2,r8,r12
43.11129 -+
43.11130 -+[0-9a-f]* <mulnhh_w>:
43.11131 -+ *[0-9a-f]*:	fe 0f 01 8f 	mulnhh\.w pc,pc:b,pc:b
43.11132 -+ *[0-9a-f]*:	f8 0c 01 bc 	mulnhh\.w r12,r12:t,r12:t
43.11133 -+ *[0-9a-f]*:	ea 05 01 b5 	mulnhh\.w r5,r5:t,r5:t
43.11134 -+ *[0-9a-f]*:	e8 04 01 84 	mulnhh\.w r4,r4:b,r4:b
43.11135 -+ *[0-9a-f]*:	fc 0e 01 be 	mulnhh\.w lr,lr:t,lr:t
43.11136 -+ *[0-9a-f]*:	fa 09 01 ab 	mulnhh\.w r11,sp:t,r9:b
43.11137 -+ *[0-9a-f]*:	e8 0e 01 9d 	mulnhh\.w sp,r4:b,lr:t
43.11138 -+ *[0-9a-f]*:	e4 0b 01 ac 	mulnhh\.w r12,r2:t,r11:b
43.11139 -+
43.11140 -+[0-9a-f]* <mulnwh_d>:
43.11141 -+ *[0-9a-f]*:	fe 0f 02 80 	mulnwh\.d r0,pc,pc:b
43.11142 -+ *[0-9a-f]*:	f8 0c 02 9e 	mulnwh\.d lr,r12,r12:t
43.11143 -+ *[0-9a-f]*:	ea 05 02 98 	mulnwh\.d r8,r5,r5:t
43.11144 -+ *[0-9a-f]*:	e8 04 02 86 	mulnwh\.d r6,r4,r4:b
43.11145 -+ *[0-9a-f]*:	fc 0e 02 92 	mulnwh\.d r2,lr,lr:t
43.11146 -+ *[0-9a-f]*:	e6 02 02 9e 	mulnwh\.d lr,r3,r2:t
43.11147 -+ *[0-9a-f]*:	ea 09 02 84 	mulnwh\.d r4,r5,r9:b
43.11148 -+ *[0-9a-f]*:	e8 04 02 9c 	mulnwh\.d r12,r4,r4:t
43.11149 -+
43.11150 -+[0-9a-f]* <machh_w>:
43.11151 -+ *[0-9a-f]*:	fe 0f 04 8f 	machh\.w pc,pc:b,pc:b
43.11152 -+ *[0-9a-f]*:	f8 0c 04 bc 	machh\.w r12,r12:t,r12:t
43.11153 -+ *[0-9a-f]*:	ea 05 04 b5 	machh\.w r5,r5:t,r5:t
43.11154 -+ *[0-9a-f]*:	e8 04 04 84 	machh\.w r4,r4:b,r4:b
43.11155 -+ *[0-9a-f]*:	fc 0e 04 be 	machh\.w lr,lr:t,lr:t
43.11156 -+ *[0-9a-f]*:	ea 01 04 9e 	machh\.w lr,r5:b,r1:t
43.11157 -+ *[0-9a-f]*:	ec 07 04 89 	machh\.w r9,r6:b,r7:b
43.11158 -+ *[0-9a-f]*:	fc 0c 04 a5 	machh\.w r5,lr:t,r12:b
43.11159 -+
43.11160 -+[0-9a-f]* <machh_d>:
43.11161 -+ *[0-9a-f]*:	fe 0f 05 80 	machh\.d r0,pc:b,pc:b
43.11162 -+ *[0-9a-f]*:	f8 0c 05 be 	machh\.d lr,r12:t,r12:t
43.11163 -+ *[0-9a-f]*:	ea 05 05 b8 	machh\.d r8,r5:t,r5:t
43.11164 -+ *[0-9a-f]*:	e8 04 05 86 	machh\.d r6,r4:b,r4:b
43.11165 -+ *[0-9a-f]*:	fc 0e 05 b2 	machh\.d r2,lr:t,lr:t
43.11166 -+ *[0-9a-f]*:	e0 08 05 8a 	machh\.d r10,r0:b,r8:b
43.11167 -+ *[0-9a-f]*:	e8 05 05 9e 	machh\.d lr,r4:b,r5:t
43.11168 -+ *[0-9a-f]*:	e0 04 05 98 	machh\.d r8,r0:b,r4:t
43.11169 -+
43.11170 -+[0-9a-f]* <macsathh_w>:
43.11171 -+ *[0-9a-f]*:	fe 0f 06 8f 	macsathh\.w pc,pc:b,pc:b
43.11172 -+ *[0-9a-f]*:	f8 0c 06 bc 	macsathh\.w r12,r12:t,r12:t
43.11173 -+ *[0-9a-f]*:	ea 05 06 b5 	macsathh\.w r5,r5:t,r5:t
43.11174 -+ *[0-9a-f]*:	e8 04 06 84 	macsathh\.w r4,r4:b,r4:b
43.11175 -+ *[0-9a-f]*:	fc 0e 06 be 	macsathh\.w lr,lr:t,lr:t
43.11176 -+ *[0-9a-f]*:	ee 0f 06 b7 	macsathh\.w r7,r7:t,pc:t
43.11177 -+ *[0-9a-f]*:	e4 04 06 a4 	macsathh\.w r4,r2:t,r4:b
43.11178 -+ *[0-9a-f]*:	f0 03 06 b4 	macsathh\.w r4,r8:t,r3:t
43.11179 -+
43.11180 -+[0-9a-f]* <mulhh_w>:
43.11181 -+ *[0-9a-f]*:	fe 0f 07 8f 	mulhh\.w pc,pc:b,pc:b
43.11182 -+ *[0-9a-f]*:	f8 0c 07 bc 	mulhh\.w r12,r12:t,r12:t
43.11183 -+ *[0-9a-f]*:	ea 05 07 b5 	mulhh\.w r5,r5:t,r5:t
43.11184 -+ *[0-9a-f]*:	e8 04 07 84 	mulhh\.w r4,r4:b,r4:b
43.11185 -+ *[0-9a-f]*:	fc 0e 07 be 	mulhh\.w lr,lr:t,lr:t
43.11186 -+ *[0-9a-f]*:	e8 09 07 a7 	mulhh\.w r7,r4:t,r9:b
43.11187 -+ *[0-9a-f]*:	e6 07 07 bf 	mulhh\.w pc,r3:t,r7:t
43.11188 -+ *[0-9a-f]*:	e8 09 07 9f 	mulhh\.w pc,r4:b,r9:t
43.11189 -+
43.11190 -+[0-9a-f]* <mulsathh_h>:
43.11191 -+ *[0-9a-f]*:	fe 0f 08 8f 	mulsathh\.h pc,pc:b,pc:b
43.11192 -+ *[0-9a-f]*:	f8 0c 08 bc 	mulsathh\.h r12,r12:t,r12:t
43.11193 -+ *[0-9a-f]*:	ea 05 08 b5 	mulsathh\.h r5,r5:t,r5:t
43.11194 -+ *[0-9a-f]*:	e8 04 08 84 	mulsathh\.h r4,r4:b,r4:b
43.11195 -+ *[0-9a-f]*:	fc 0e 08 be 	mulsathh\.h lr,lr:t,lr:t
43.11196 -+ *[0-9a-f]*:	e2 0d 08 83 	mulsathh\.h r3,r1:b,sp:b
43.11197 -+ *[0-9a-f]*:	fc 0b 08 ab 	mulsathh\.h r11,lr:t,r11:b
43.11198 -+ *[0-9a-f]*:	f0 0b 08 98 	mulsathh\.h r8,r8:b,r11:t
43.11199 -+
43.11200 -+[0-9a-f]* <mulsathh_w>:
43.11201 -+ *[0-9a-f]*:	fe 0f 09 8f 	mulsathh\.w pc,pc:b,pc:b
43.11202 -+ *[0-9a-f]*:	f8 0c 09 bc 	mulsathh\.w r12,r12:t,r12:t
43.11203 -+ *[0-9a-f]*:	ea 05 09 b5 	mulsathh\.w r5,r5:t,r5:t
43.11204 -+ *[0-9a-f]*:	e8 04 09 84 	mulsathh\.w r4,r4:b,r4:b
43.11205 -+ *[0-9a-f]*:	fc 0e 09 be 	mulsathh\.w lr,lr:t,lr:t
43.11206 -+ *[0-9a-f]*:	f6 06 09 ae 	mulsathh\.w lr,r11:t,r6:b
43.11207 -+ *[0-9a-f]*:	ec 07 09 96 	mulsathh\.w r6,r6:b,r7:t
43.11208 -+ *[0-9a-f]*:	e4 03 09 8a 	mulsathh\.w r10,r2:b,r3:b
43.11209 -+
43.11210 -+[0-9a-f]* <mulsatrndhh_h>:
43.11211 -+ *[0-9a-f]*:	fe 0f 0a 8f 	mulsatrndhh\.h pc,pc:b,pc:b
43.11212 -+ *[0-9a-f]*:	f8 0c 0a bc 	mulsatrndhh\.h r12,r12:t,r12:t
43.11213 -+ *[0-9a-f]*:	ea 05 0a b5 	mulsatrndhh\.h r5,r5:t,r5:t
43.11214 -+ *[0-9a-f]*:	e8 04 0a 84 	mulsatrndhh\.h r4,r4:b,r4:b
43.11215 -+ *[0-9a-f]*:	fc 0e 0a be 	mulsatrndhh\.h lr,lr:t,lr:t
43.11216 -+ *[0-9a-f]*:	ec 09 0a 8b 	mulsatrndhh\.h r11,r6:b,r9:b
43.11217 -+ *[0-9a-f]*:	e6 08 0a 9b 	mulsatrndhh\.h r11,r3:b,r8:t
43.11218 -+ *[0-9a-f]*:	fa 07 0a b5 	mulsatrndhh\.h r5,sp:t,r7:t
43.11219 -+
43.11220 -+[0-9a-f]* <mulsatrndwh_w>:
43.11221 -+ *[0-9a-f]*:	fe 0f 0b 8f 	mulsatrndwh\.w pc,pc,pc:b
43.11222 -+ *[0-9a-f]*:	f8 0c 0b 9c 	mulsatrndwh\.w r12,r12,r12:t
43.11223 -+ *[0-9a-f]*:	ea 05 0b 95 	mulsatrndwh\.w r5,r5,r5:t
43.11224 -+ *[0-9a-f]*:	e8 04 0b 84 	mulsatrndwh\.w r4,r4,r4:b
43.11225 -+ *[0-9a-f]*:	fc 0e 0b 9e 	mulsatrndwh\.w lr,lr,lr:t
43.11226 -+ *[0-9a-f]*:	f8 00 0b 85 	mulsatrndwh\.w r5,r12,r0:b
43.11227 -+ *[0-9a-f]*:	f4 0f 0b 87 	mulsatrndwh\.w r7,r10,pc:b
43.11228 -+ *[0-9a-f]*:	f0 05 0b 9a 	mulsatrndwh\.w r10,r8,r5:t
43.11229 -+
43.11230 -+[0-9a-f]* <macwh_d>:
43.11231 -+ *[0-9a-f]*:	fe 0f 0c 80 	macwh\.d r0,pc,pc:b
43.11232 -+ *[0-9a-f]*:	f8 0c 0c 9e 	macwh\.d lr,r12,r12:t
43.11233 -+ *[0-9a-f]*:	ea 05 0c 98 	macwh\.d r8,r5,r5:t
43.11234 -+ *[0-9a-f]*:	e8 04 0c 86 	macwh\.d r6,r4,r4:b
43.11235 -+ *[0-9a-f]*:	fc 0e 0c 92 	macwh\.d r2,lr,lr:t
43.11236 -+ *[0-9a-f]*:	f4 0c 0c 94 	macwh\.d r4,r10,r12:t
43.11237 -+ *[0-9a-f]*:	ee 0d 0c 84 	macwh\.d r4,r7,sp:b
43.11238 -+ *[0-9a-f]*:	f2 0b 0c 8e 	macwh\.d lr,r9,r11:b
43.11239 -+
43.11240 -+[0-9a-f]* <mulwh_d>:
43.11241 -+ *[0-9a-f]*:	fe 0f 0d 80 	mulwh\.d r0,pc,pc:b
43.11242 -+ *[0-9a-f]*:	f8 0c 0d 9e 	mulwh\.d lr,r12,r12:t
43.11243 -+ *[0-9a-f]*:	ea 05 0d 98 	mulwh\.d r8,r5,r5:t
43.11244 -+ *[0-9a-f]*:	e8 04 0d 86 	mulwh\.d r6,r4,r4:b
43.11245 -+ *[0-9a-f]*:	fc 0e 0d 92 	mulwh\.d r2,lr,lr:t
43.11246 -+ *[0-9a-f]*:	ea 01 0d 8c 	mulwh\.d r12,r5,r1:b
43.11247 -+ *[0-9a-f]*:	e2 03 0d 90 	mulwh\.d r0,r1,r3:t
43.11248 -+ *[0-9a-f]*:	f2 02 0d 80 	mulwh\.d r0,r9,r2:b
43.11249 -+
43.11250 -+[0-9a-f]* <mulsatwh_w>:
43.11251 -+ *[0-9a-f]*:	fe 0f 0e 8f 	mulsatwh\.w pc,pc,pc:b
43.11252 -+ *[0-9a-f]*:	f8 0c 0e 9c 	mulsatwh\.w r12,r12,r12:t
43.11253 -+ *[0-9a-f]*:	ea 05 0e 95 	mulsatwh\.w r5,r5,r5:t
43.11254 -+ *[0-9a-f]*:	e8 04 0e 84 	mulsatwh\.w r4,r4,r4:b
43.11255 -+ *[0-9a-f]*:	fc 0e 0e 9e 	mulsatwh\.w lr,lr,lr:t
43.11256 -+ *[0-9a-f]*:	fe 0a 0e 9b 	mulsatwh\.w r11,pc,r10:t
43.11257 -+ *[0-9a-f]*:	f8 09 0e 9d 	mulsatwh\.w sp,r12,r9:t
43.11258 -+ *[0-9a-f]*:	e6 02 0e 90 	mulsatwh\.w r0,r3,r2:t
43.11259 -+
43.11260 -+[0-9a-f]* <ldw7>:
43.11261 -+ *[0-9a-f]*:	fe 0f 0f 8f 	ld\.w pc,pc\[pc:b<<2\]
43.11262 -+ *[0-9a-f]*:	f8 0c 0f bc 	ld\.w r12,r12\[r12:t<<2\]
43.11263 -+ *[0-9a-f]*:	ea 05 0f a5 	ld\.w r5,r5\[r5:u<<2\]
43.11264 -+ *[0-9a-f]*:	e8 04 0f 94 	ld\.w r4,r4\[r4:l<<2\]
43.11265 -+ *[0-9a-f]*:	fc 0e 0f 9e 	ld\.w lr,lr\[lr:l<<2\]
43.11266 -+ *[0-9a-f]*:	f4 06 0f 99 	ld\.w r9,r10\[r6:l<<2\]
43.11267 -+ *[0-9a-f]*:	f4 0a 0f 82 	ld\.w r2,r10\[r10:b<<2\]
43.11268 -+ *[0-9a-f]*:	ea 0f 0f 8b 	ld\.w r11,r5\[pc:b<<2\]
43.11269 -+
43.11270 -+[0-9a-f]* <satadd_w>:
43.11271 -+ *[0-9a-f]*:	fe 0f 00 cf 	satadd\.w pc,pc,pc
43.11272 -+ *[0-9a-f]*:	f8 0c 00 cc 	satadd\.w r12,r12,r12
43.11273 -+ *[0-9a-f]*:	ea 05 00 c5 	satadd\.w r5,r5,r5
43.11274 -+ *[0-9a-f]*:	e8 04 00 c4 	satadd\.w r4,r4,r4
43.11275 -+ *[0-9a-f]*:	fc 0e 00 ce 	satadd\.w lr,lr,lr
43.11276 -+ *[0-9a-f]*:	f0 0b 00 c4 	satadd\.w r4,r8,r11
43.11277 -+ *[0-9a-f]*:	f8 06 00 c3 	satadd\.w r3,r12,r6
43.11278 -+ *[0-9a-f]*:	fc 09 00 c3 	satadd\.w r3,lr,r9
43.11279 -+
43.11280 -+[0-9a-f]* <satsub_w1>:
43.11281 -+ *[0-9a-f]*:	fe 0f 01 cf 	satsub\.w pc,pc,pc
43.11282 -+ *[0-9a-f]*:	f8 0c 01 cc 	satsub\.w r12,r12,r12
43.11283 -+ *[0-9a-f]*:	ea 05 01 c5 	satsub\.w r5,r5,r5
43.11284 -+ *[0-9a-f]*:	e8 04 01 c4 	satsub\.w r4,r4,r4
43.11285 -+ *[0-9a-f]*:	fc 0e 01 ce 	satsub\.w lr,lr,lr
43.11286 -+ *[0-9a-f]*:	fa 00 01 c8 	satsub\.w r8,sp,r0
43.11287 -+ *[0-9a-f]*:	f0 04 01 c9 	satsub\.w r9,r8,r4
43.11288 -+ *[0-9a-f]*:	fc 02 01 cf 	satsub\.w pc,lr,r2
43.11289 -+
43.11290 -+[0-9a-f]* <satadd_h>:
43.11291 -+ *[0-9a-f]*:	fe 0f 02 cf 	satadd\.h pc,pc,pc
43.11292 -+ *[0-9a-f]*:	f8 0c 02 cc 	satadd\.h r12,r12,r12
43.11293 -+ *[0-9a-f]*:	ea 05 02 c5 	satadd\.h r5,r5,r5
43.11294 -+ *[0-9a-f]*:	e8 04 02 c4 	satadd\.h r4,r4,r4
43.11295 -+ *[0-9a-f]*:	fc 0e 02 ce 	satadd\.h lr,lr,lr
43.11296 -+ *[0-9a-f]*:	e6 09 02 c7 	satadd\.h r7,r3,r9
43.11297 -+ *[0-9a-f]*:	e0 02 02 c1 	satadd\.h r1,r0,r2
43.11298 -+ *[0-9a-f]*:	e8 0e 02 c1 	satadd\.h r1,r4,lr
43.11299 -+
43.11300 -+[0-9a-f]* <satsub_h>:
43.11301 -+ *[0-9a-f]*:	fe 0f 03 cf 	satsub\.h pc,pc,pc
43.11302 -+ *[0-9a-f]*:	f8 0c 03 cc 	satsub\.h r12,r12,r12
43.11303 -+ *[0-9a-f]*:	ea 05 03 c5 	satsub\.h r5,r5,r5
43.11304 -+ *[0-9a-f]*:	e8 04 03 c4 	satsub\.h r4,r4,r4
43.11305 -+ *[0-9a-f]*:	fc 0e 03 ce 	satsub\.h lr,lr,lr
43.11306 -+ *[0-9a-f]*:	fc 03 03 ce 	satsub\.h lr,lr,r3
43.11307 -+ *[0-9a-f]*:	ec 05 03 cb 	satsub\.h r11,r6,r5
43.11308 -+ *[0-9a-f]*:	fa 00 03 c3 	satsub\.h r3,sp,r0
43.11309 -+
43.11310 -+[0-9a-f]* <mul3>:
43.11311 -+ *[0-9a-f]*:	fe 0f 10 00 	mul pc,pc,0
43.11312 -+ *[0-9a-f]*:	f8 0c 10 ff 	mul r12,r12,-1
43.11313 -+ *[0-9a-f]*:	ea 05 10 80 	mul r5,r5,-128
43.11314 -+ *[0-9a-f]*:	e8 04 10 7f 	mul r4,r4,127
43.11315 -+ *[0-9a-f]*:	fc 0e 10 01 	mul lr,lr,1
43.11316 -+ *[0-9a-f]*:	e4 0c 10 f9 	mul r12,r2,-7
43.11317 -+ *[0-9a-f]*:	fe 01 10 5f 	mul r1,pc,95
43.11318 -+ *[0-9a-f]*:	ec 04 10 13 	mul r4,r6,19
43.11319 -+
43.11320 -+[0-9a-f]* <rsub2>:
43.11321 -+ *[0-9a-f]*:	fe 0f 11 00 	rsub pc,pc,0
43.11322 -+ *[0-9a-f]*:	f8 0c 11 ff 	rsub r12,r12,-1
43.11323 -+ *[0-9a-f]*:	ea 05 11 80 	rsub r5,r5,-128
43.11324 -+ *[0-9a-f]*:	e8 04 11 7f 	rsub r4,r4,127
43.11325 -+ *[0-9a-f]*:	fc 0e 11 01 	rsub lr,lr,1
43.11326 -+ *[0-9a-f]*:	fc 09 11 60 	rsub r9,lr,96
43.11327 -+ *[0-9a-f]*:	e2 0b 11 38 	rsub r11,r1,56
43.11328 -+ *[0-9a-f]*:	ee 00 11 a9 	rsub r0,r7,-87
43.11329 -+
43.11330 -+[0-9a-f]* <clz>:
43.11331 -+ *[0-9a-f]*:	fe 0f 12 00 	clz pc,pc
43.11332 -+ *[0-9a-f]*:	f8 0c 12 00 	clz r12,r12
43.11333 -+ *[0-9a-f]*:	ea 05 12 00 	clz r5,r5
43.11334 -+ *[0-9a-f]*:	e8 04 12 00 	clz r4,r4
43.11335 -+ *[0-9a-f]*:	fc 0e 12 00 	clz lr,lr
43.11336 -+ *[0-9a-f]*:	e6 02 12 00 	clz r2,r3
43.11337 -+ *[0-9a-f]*:	f6 05 12 00 	clz r5,r11
43.11338 -+ *[0-9a-f]*:	e6 0f 12 00 	clz pc,r3
43.11339 -+
43.11340 -+[0-9a-f]* <cpc1>:
43.11341 -+ *[0-9a-f]*:	fe 0f 13 00 	cpc pc,pc
43.11342 -+ *[0-9a-f]*:	f8 0c 13 00 	cpc r12,r12
43.11343 -+ *[0-9a-f]*:	ea 05 13 00 	cpc r5,r5
43.11344 -+ *[0-9a-f]*:	e8 04 13 00 	cpc r4,r4
43.11345 -+ *[0-9a-f]*:	fc 0e 13 00 	cpc lr,lr
43.11346 -+ *[0-9a-f]*:	e8 0f 13 00 	cpc pc,r4
43.11347 -+ *[0-9a-f]*:	f2 05 13 00 	cpc r5,r9
43.11348 -+ *[0-9a-f]*:	ee 06 13 00 	cpc r6,r7
43.11349 -+
43.11350 -+[0-9a-f]* <asr3>:
43.11351 -+ *[0-9a-f]*:	fe 0f 14 00 	asr pc,pc,0x0
43.11352 -+ *[0-9a-f]*:	f8 0c 14 1f 	asr r12,r12,0x1f
43.11353 -+ *[0-9a-f]*:	ea 05 14 10 	asr r5,r5,0x10
43.11354 -+ *[0-9a-f]*:	e8 04 14 0f 	asr r4,r4,0xf
43.11355 -+ *[0-9a-f]*:	fc 0e 14 01 	asr lr,lr,0x1
43.11356 -+ *[0-9a-f]*:	f6 04 14 13 	asr r4,r11,0x13
43.11357 -+ *[0-9a-f]*:	fe 0d 14 1a 	asr sp,pc,0x1a
43.11358 -+ *[0-9a-f]*:	fa 0b 14 08 	asr r11,sp,0x8
43.11359 -+
43.11360 -+[0-9a-f]* <lsl3>:
43.11361 -+ *[0-9a-f]*:	fe 0f 15 00 	lsl pc,pc,0x0
43.11362 -+ *[0-9a-f]*:	f8 0c 15 1f 	lsl r12,r12,0x1f
43.11363 -+ *[0-9a-f]*:	ea 05 15 10 	lsl r5,r5,0x10
43.11364 -+ *[0-9a-f]*:	e8 04 15 0f 	lsl r4,r4,0xf
43.11365 -+ *[0-9a-f]*:	fc 0e 15 01 	lsl lr,lr,0x1
43.11366 -+ *[0-9a-f]*:	f4 08 15 11 	lsl r8,r10,0x11
43.11367 -+ *[0-9a-f]*:	fc 02 15 03 	lsl r2,lr,0x3
43.11368 -+ *[0-9a-f]*:	f6 0e 15 0e 	lsl lr,r11,0xe
43.11369 -+
43.11370 -+[0-9a-f]* <lsr3>:
43.11371 -+ *[0-9a-f]*:	fe 0f 16 00 	lsr pc,pc,0x0
43.11372 -+ *[0-9a-f]*:	f8 0c 16 1f 	lsr r12,r12,0x1f
43.11373 -+ *[0-9a-f]*:	ea 05 16 10 	lsr r5,r5,0x10
43.11374 -+ *[0-9a-f]*:	e8 04 16 0f 	lsr r4,r4,0xf
43.11375 -+ *[0-9a-f]*:	fc 0e 16 01 	lsr lr,lr,0x1
43.11376 -+ *[0-9a-f]*:	e6 04 16 1f 	lsr r4,r3,0x1f
43.11377 -+ *[0-9a-f]*:	f2 0f 16 0e 	lsr pc,r9,0xe
43.11378 -+ *[0-9a-f]*:	e0 03 16 06 	lsr r3,r0,0x6
43.11379 -+
43.11380 -+[0-9a-f]* <movc1>:
43.11381 -+ *[0-9a-f]*:	fe 0f 17 00 	moveq pc,pc
43.11382 -+ *[0-9a-f]*:	f8 0c 17 f0 	moval r12,r12
43.11383 -+ *[0-9a-f]*:	ea 05 17 80 	movls r5,r5
43.11384 -+ *[0-9a-f]*:	e8 04 17 70 	movpl r4,r4
43.11385 -+ *[0-9a-f]*:	fc 0e 17 10 	movne lr,lr
43.11386 -+ *[0-9a-f]*:	f6 0f 17 10 	movne pc,r11
43.11387 -+ *[0-9a-f]*:	e4 0a 17 60 	movmi r10,r2
43.11388 -+ *[0-9a-f]*:	f8 08 17 80 	movls r8,r12
43.11389 -+
43.11390 -+[0-9a-f]* <padd_h>:
43.11391 -+ *[0-9a-f]*:	fe 0f 20 0f 	padd\.h pc,pc,pc
43.11392 -+ *[0-9a-f]*:	f8 0c 20 0c 	padd\.h r12,r12,r12
43.11393 -+ *[0-9a-f]*:	ea 05 20 05 	padd\.h r5,r5,r5
43.11394 -+ *[0-9a-f]*:	e8 04 20 04 	padd\.h r4,r4,r4
43.11395 -+ *[0-9a-f]*:	fc 0e 20 0e 	padd\.h lr,lr,lr
43.11396 -+ *[0-9a-f]*:	e4 07 20 08 	padd\.h r8,r2,r7
43.11397 -+ *[0-9a-f]*:	e0 03 20 00 	padd\.h r0,r0,r3
43.11398 -+ *[0-9a-f]*:	f6 06 20 0d 	padd\.h sp,r11,r6
43.11399 -+
43.11400 -+[0-9a-f]* <psub_h>:
43.11401 -+ *[0-9a-f]*:	fe 0f 20 1f 	psub\.h pc,pc,pc
43.11402 -+ *[0-9a-f]*:	f8 0c 20 1c 	psub\.h r12,r12,r12
43.11403 -+ *[0-9a-f]*:	ea 05 20 15 	psub\.h r5,r5,r5
43.11404 -+ *[0-9a-f]*:	e8 04 20 14 	psub\.h r4,r4,r4
43.11405 -+ *[0-9a-f]*:	fc 0e 20 1e 	psub\.h lr,lr,lr
43.11406 -+ *[0-9a-f]*:	ec 08 20 1e 	psub\.h lr,r6,r8
43.11407 -+ *[0-9a-f]*:	e2 0d 20 10 	psub\.h r0,r1,sp
43.11408 -+ *[0-9a-f]*:	fe 0d 20 1f 	psub\.h pc,pc,sp
43.11409 -+
43.11410 -+[0-9a-f]* <paddx_h>:
43.11411 -+ *[0-9a-f]*:	fe 0f 20 2f 	paddx\.h pc,pc,pc
43.11412 -+ *[0-9a-f]*:	f8 0c 20 2c 	paddx\.h r12,r12,r12
43.11413 -+ *[0-9a-f]*:	ea 05 20 25 	paddx\.h r5,r5,r5
43.11414 -+ *[0-9a-f]*:	e8 04 20 24 	paddx\.h r4,r4,r4
43.11415 -+ *[0-9a-f]*:	fc 0e 20 2e 	paddx\.h lr,lr,lr
43.11416 -+ *[0-9a-f]*:	fe 01 20 2f 	paddx\.h pc,pc,r1
43.11417 -+ *[0-9a-f]*:	e8 05 20 2a 	paddx\.h r10,r4,r5
43.11418 -+ *[0-9a-f]*:	fe 02 20 25 	paddx\.h r5,pc,r2
43.11419 -+
43.11420 -+[0-9a-f]* <psubx_h>:
43.11421 -+ *[0-9a-f]*:	fe 0f 20 3f 	psubx\.h pc,pc,pc
43.11422 -+ *[0-9a-f]*:	f8 0c 20 3c 	psubx\.h r12,r12,r12
43.11423 -+ *[0-9a-f]*:	ea 05 20 35 	psubx\.h r5,r5,r5
43.11424 -+ *[0-9a-f]*:	e8 04 20 34 	psubx\.h r4,r4,r4
43.11425 -+ *[0-9a-f]*:	fc 0e 20 3e 	psubx\.h lr,lr,lr
43.11426 -+ *[0-9a-f]*:	f8 05 20 35 	psubx\.h r5,r12,r5
43.11427 -+ *[0-9a-f]*:	f0 03 20 33 	psubx\.h r3,r8,r3
43.11428 -+ *[0-9a-f]*:	e4 03 20 35 	psubx\.h r5,r2,r3
43.11429 -+
43.11430 -+[0-9a-f]* <padds_sh>:
43.11431 -+ *[0-9a-f]*:	fe 0f 20 4f 	padds\.sh pc,pc,pc
43.11432 -+ *[0-9a-f]*:	f8 0c 20 4c 	padds\.sh r12,r12,r12
43.11433 -+ *[0-9a-f]*:	ea 05 20 45 	padds\.sh r5,r5,r5
43.11434 -+ *[0-9a-f]*:	e8 04 20 44 	padds\.sh r4,r4,r4
43.11435 -+ *[0-9a-f]*:	fc 0e 20 4e 	padds\.sh lr,lr,lr
43.11436 -+ *[0-9a-f]*:	fc 02 20 49 	padds\.sh r9,lr,r2
43.11437 -+ *[0-9a-f]*:	f0 01 20 46 	padds\.sh r6,r8,r1
43.11438 -+ *[0-9a-f]*:	e8 0a 20 46 	padds\.sh r6,r4,r10
43.11439 -+
43.11440 -+[0-9a-f]* <psubs_sh>:
43.11441 -+ *[0-9a-f]*:	fe 0f 20 5f 	psubs\.sh pc,pc,pc
43.11442 -+ *[0-9a-f]*:	f8 0c 20 5c 	psubs\.sh r12,r12,r12
43.11443 -+ *[0-9a-f]*:	ea 05 20 55 	psubs\.sh r5,r5,r5
43.11444 -+ *[0-9a-f]*:	e8 04 20 54 	psubs\.sh r4,r4,r4
43.11445 -+ *[0-9a-f]*:	fc 0e 20 5e 	psubs\.sh lr,lr,lr
43.11446 -+ *[0-9a-f]*:	fc 0b 20 56 	psubs\.sh r6,lr,r11
43.11447 -+ *[0-9a-f]*:	f8 04 20 52 	psubs\.sh r2,r12,r4
43.11448 -+ *[0-9a-f]*:	f2 00 20 50 	psubs\.sh r0,r9,r0
43.11449 -+
43.11450 -+[0-9a-f]* <paddxs_sh>:
43.11451 -+ *[0-9a-f]*:	fe 0f 20 6f 	paddxs\.sh pc,pc,pc
43.11452 -+ *[0-9a-f]*:	f8 0c 20 6c 	paddxs\.sh r12,r12,r12
43.11453 -+ *[0-9a-f]*:	ea 05 20 65 	paddxs\.sh r5,r5,r5
43.11454 -+ *[0-9a-f]*:	e8 04 20 64 	paddxs\.sh r4,r4,r4
43.11455 -+ *[0-9a-f]*:	fc 0e 20 6e 	paddxs\.sh lr,lr,lr
43.11456 -+ *[0-9a-f]*:	e6 09 20 60 	paddxs\.sh r0,r3,r9
43.11457 -+ *[0-9a-f]*:	f4 0b 20 6f 	paddxs\.sh pc,r10,r11
43.11458 -+ *[0-9a-f]*:	f4 0f 20 6f 	paddxs\.sh pc,r10,pc
43.11459 -+
43.11460 -+[0-9a-f]* <psubxs_sh>:
43.11461 -+ *[0-9a-f]*:	fe 0f 20 7f 	psubxs\.sh pc,pc,pc
43.11462 -+ *[0-9a-f]*:	f8 0c 20 7c 	psubxs\.sh r12,r12,r12
43.11463 -+ *[0-9a-f]*:	ea 05 20 75 	psubxs\.sh r5,r5,r5
43.11464 -+ *[0-9a-f]*:	e8 04 20 74 	psubxs\.sh r4,r4,r4
43.11465 -+ *[0-9a-f]*:	fc 0e 20 7e 	psubxs\.sh lr,lr,lr
43.11466 -+ *[0-9a-f]*:	e8 04 20 77 	psubxs\.sh r7,r4,r4
43.11467 -+ *[0-9a-f]*:	f0 03 20 77 	psubxs\.sh r7,r8,r3
43.11468 -+ *[0-9a-f]*:	ec 05 20 7f 	psubxs\.sh pc,r6,r5
43.11469 -+
43.11470 -+[0-9a-f]* <padds_uh>:
43.11471 -+ *[0-9a-f]*:	fe 0f 20 8f 	padds\.uh pc,pc,pc
43.11472 -+ *[0-9a-f]*:	f8 0c 20 8c 	padds\.uh r12,r12,r12
43.11473 -+ *[0-9a-f]*:	ea 05 20 85 	padds\.uh r5,r5,r5
43.11474 -+ *[0-9a-f]*:	e8 04 20 84 	padds\.uh r4,r4,r4
43.11475 -+ *[0-9a-f]*:	fc 0e 20 8e 	padds\.uh lr,lr,lr
43.11476 -+ *[0-9a-f]*:	f6 07 20 8c 	padds\.uh r12,r11,r7
43.11477 -+ *[0-9a-f]*:	f0 0e 20 87 	padds\.uh r7,r8,lr
43.11478 -+ *[0-9a-f]*:	f2 07 20 86 	padds\.uh r6,r9,r7
43.11479 -+
43.11480 -+[0-9a-f]* <psubs_uh>:
43.11481 -+ *[0-9a-f]*:	fe 0f 20 9f 	psubs\.uh pc,pc,pc
43.11482 -+ *[0-9a-f]*:	f8 0c 20 9c 	psubs\.uh r12,r12,r12
43.11483 -+ *[0-9a-f]*:	ea 05 20 95 	psubs\.uh r5,r5,r5
43.11484 -+ *[0-9a-f]*:	e8 04 20 94 	psubs\.uh r4,r4,r4
43.11485 -+ *[0-9a-f]*:	fc 0e 20 9e 	psubs\.uh lr,lr,lr
43.11486 -+ *[0-9a-f]*:	f4 06 20 9e 	psubs\.uh lr,r10,r6
43.11487 -+ *[0-9a-f]*:	e4 0f 20 9d 	psubs\.uh sp,r2,pc
43.11488 -+ *[0-9a-f]*:	f2 02 20 92 	psubs\.uh r2,r9,r2
43.11489 -+
43.11490 -+[0-9a-f]* <paddxs_uh>:
43.11491 -+ *[0-9a-f]*:	fe 0f 20 af 	paddxs\.uh pc,pc,pc
43.11492 -+ *[0-9a-f]*:	f8 0c 20 ac 	paddxs\.uh r12,r12,r12
43.11493 -+ *[0-9a-f]*:	ea 05 20 a5 	paddxs\.uh r5,r5,r5
43.11494 -+ *[0-9a-f]*:	e8 04 20 a4 	paddxs\.uh r4,r4,r4
43.11495 -+ *[0-9a-f]*:	fc 0e 20 ae 	paddxs\.uh lr,lr,lr
43.11496 -+ *[0-9a-f]*:	f2 05 20 a7 	paddxs\.uh r7,r9,r5
43.11497 -+ *[0-9a-f]*:	e2 04 20 a9 	paddxs\.uh r9,r1,r4
43.11498 -+ *[0-9a-f]*:	e4 03 20 a5 	paddxs\.uh r5,r2,r3
43.11499 -+
43.11500 -+[0-9a-f]* <psubxs_uh>:
43.11501 -+ *[0-9a-f]*:	fe 0f 20 bf 	psubxs\.uh pc,pc,pc
43.11502 -+ *[0-9a-f]*:	f8 0c 20 bc 	psubxs\.uh r12,r12,r12
43.11503 -+ *[0-9a-f]*:	ea 05 20 b5 	psubxs\.uh r5,r5,r5
43.11504 -+ *[0-9a-f]*:	e8 04 20 b4 	psubxs\.uh r4,r4,r4
43.11505 -+ *[0-9a-f]*:	fc 0e 20 be 	psubxs\.uh lr,lr,lr
43.11506 -+ *[0-9a-f]*:	ea 0d 20 bd 	psubxs\.uh sp,r5,sp
43.11507 -+ *[0-9a-f]*:	ec 06 20 bd 	psubxs\.uh sp,r6,r6
43.11508 -+ *[0-9a-f]*:	f6 08 20 b3 	psubxs\.uh r3,r11,r8
43.11509 -+
43.11510 -+[0-9a-f]* <paddh_sh>:
43.11511 -+ *[0-9a-f]*:	fe 0f 20 cf 	paddh\.sh pc,pc,pc
43.11512 -+ *[0-9a-f]*:	f8 0c 20 cc 	paddh\.sh r12,r12,r12
43.11513 -+ *[0-9a-f]*:	ea 05 20 c5 	paddh\.sh r5,r5,r5
43.11514 -+ *[0-9a-f]*:	e8 04 20 c4 	paddh\.sh r4,r4,r4
43.11515 -+ *[0-9a-f]*:	fc 0e 20 ce 	paddh\.sh lr,lr,lr
43.11516 -+ *[0-9a-f]*:	fa 03 20 cc 	paddh\.sh r12,sp,r3
43.11517 -+ *[0-9a-f]*:	ea 03 20 cf 	paddh\.sh pc,r5,r3
43.11518 -+ *[0-9a-f]*:	f0 0d 20 c8 	paddh\.sh r8,r8,sp
43.11519 -+
43.11520 -+[0-9a-f]* <psubh_sh>:
43.11521 -+ *[0-9a-f]*:	fe 0f 20 df 	psubh\.sh pc,pc,pc
43.11522 -+ *[0-9a-f]*:	f8 0c 20 dc 	psubh\.sh r12,r12,r12
43.11523 -+ *[0-9a-f]*:	ea 05 20 d5 	psubh\.sh r5,r5,r5
43.11524 -+ *[0-9a-f]*:	e8 04 20 d4 	psubh\.sh r4,r4,r4
43.11525 -+ *[0-9a-f]*:	fc 0e 20 de 	psubh\.sh lr,lr,lr
43.11526 -+ *[0-9a-f]*:	ea 08 20 d1 	psubh\.sh r1,r5,r8
43.11527 -+ *[0-9a-f]*:	e6 06 20 d7 	psubh\.sh r7,r3,r6
43.11528 -+ *[0-9a-f]*:	e6 03 20 d4 	psubh\.sh r4,r3,r3
43.11529 -+
43.11530 -+[0-9a-f]* <paddxh_sh>:
43.11531 -+ *[0-9a-f]*:	fe 0f 20 ef 	paddxh\.sh pc,pc,pc
43.11532 -+ *[0-9a-f]*:	f8 0c 20 ec 	paddxh\.sh r12,r12,r12
43.11533 -+ *[0-9a-f]*:	ea 05 20 e5 	paddxh\.sh r5,r5,r5
43.11534 -+ *[0-9a-f]*:	e8 04 20 e4 	paddxh\.sh r4,r4,r4
43.11535 -+ *[0-9a-f]*:	fc 0e 20 ee 	paddxh\.sh lr,lr,lr
43.11536 -+ *[0-9a-f]*:	e0 04 20 e6 	paddxh\.sh r6,r0,r4
43.11537 -+ *[0-9a-f]*:	f0 09 20 e9 	paddxh\.sh r9,r8,r9
43.11538 -+ *[0-9a-f]*:	e0 0d 20 e3 	paddxh\.sh r3,r0,sp
43.11539 -+
43.11540 -+[0-9a-f]* <psubxh_sh>:
43.11541 -+ *[0-9a-f]*:	fe 0f 20 ff 	psubxh\.sh pc,pc,pc
43.11542 -+ *[0-9a-f]*:	f8 0c 20 fc 	psubxh\.sh r12,r12,r12
43.11543 -+ *[0-9a-f]*:	ea 05 20 f5 	psubxh\.sh r5,r5,r5
43.11544 -+ *[0-9a-f]*:	e8 04 20 f4 	psubxh\.sh r4,r4,r4
43.11545 -+ *[0-9a-f]*:	fc 0e 20 fe 	psubxh\.sh lr,lr,lr
43.11546 -+ *[0-9a-f]*:	fe 0c 20 f4 	psubxh\.sh r4,pc,r12
43.11547 -+ *[0-9a-f]*:	e8 06 20 f8 	psubxh\.sh r8,r4,r6
43.11548 -+ *[0-9a-f]*:	f2 04 20 fc 	psubxh\.sh r12,r9,r4
43.11549 -+
43.11550 -+[0-9a-f]* <paddsub_h>:
43.11551 -+ *[0-9a-f]*:	fe 0f 21 0f 	paddsub\.h pc,pc:b,pc:b
43.11552 -+ *[0-9a-f]*:	f8 0c 21 3c 	paddsub\.h r12,r12:t,r12:t
43.11553 -+ *[0-9a-f]*:	ea 05 21 35 	paddsub\.h r5,r5:t,r5:t
43.11554 -+ *[0-9a-f]*:	e8 04 21 04 	paddsub\.h r4,r4:b,r4:b
43.11555 -+ *[0-9a-f]*:	fc 0e 21 3e 	paddsub\.h lr,lr:t,lr:t
43.11556 -+ *[0-9a-f]*:	e4 0e 21 25 	paddsub\.h r5,r2:t,lr:b
43.11557 -+ *[0-9a-f]*:	e2 08 21 07 	paddsub\.h r7,r1:b,r8:b
43.11558 -+ *[0-9a-f]*:	f4 05 21 36 	paddsub\.h r6,r10:t,r5:t
43.11559 -+
43.11560 -+[0-9a-f]* <psubadd_h>:
43.11561 -+ *[0-9a-f]*:	fe 0f 21 4f 	psubadd\.h pc,pc:b,pc:b
43.11562 -+ *[0-9a-f]*:	f8 0c 21 7c 	psubadd\.h r12,r12:t,r12:t
43.11563 -+ *[0-9a-f]*:	ea 05 21 75 	psubadd\.h r5,r5:t,r5:t
43.11564 -+ *[0-9a-f]*:	e8 04 21 44 	psubadd\.h r4,r4:b,r4:b
43.11565 -+ *[0-9a-f]*:	fc 0e 21 7e 	psubadd\.h lr,lr:t,lr:t
43.11566 -+ *[0-9a-f]*:	f6 08 21 79 	psubadd\.h r9,r11:t,r8:t
43.11567 -+ *[0-9a-f]*:	ee 0e 21 7a 	psubadd\.h r10,r7:t,lr:t
43.11568 -+ *[0-9a-f]*:	fe 0f 21 66 	psubadd\.h r6,pc:t,pc:b
43.11569 -+
43.11570 -+[0-9a-f]* <paddsubs_sh>:
43.11571 -+ *[0-9a-f]*:	fe 0f 21 8f 	paddsubs\.sh pc,pc:b,pc:b
43.11572 -+ *[0-9a-f]*:	f8 0c 21 bc 	paddsubs\.sh r12,r12:t,r12:t
43.11573 -+ *[0-9a-f]*:	ea 05 21 b5 	paddsubs\.sh r5,r5:t,r5:t
43.11574 -+ *[0-9a-f]*:	e8 04 21 84 	paddsubs\.sh r4,r4:b,r4:b
43.11575 -+ *[0-9a-f]*:	fc 0e 21 be 	paddsubs\.sh lr,lr:t,lr:t
43.11576 -+ *[0-9a-f]*:	fc 00 21 a0 	paddsubs\.sh r0,lr:t,r0:b
43.11577 -+ *[0-9a-f]*:	e4 04 21 b9 	paddsubs\.sh r9,r2:t,r4:t
43.11578 -+ *[0-9a-f]*:	f2 0d 21 bc 	paddsubs\.sh r12,r9:t,sp:t
43.11579 -+
43.11580 -+[0-9a-f]* <psubadds_sh>:
43.11581 -+ *[0-9a-f]*:	fe 0f 21 cf 	psubadds\.sh pc,pc:b,pc:b
43.11582 -+ *[0-9a-f]*:	f8 0c 21 fc 	psubadds\.sh r12,r12:t,r12:t
43.11583 -+ *[0-9a-f]*:	ea 05 21 f5 	psubadds\.sh r5,r5:t,r5:t
43.11584 -+ *[0-9a-f]*:	e8 04 21 c4 	psubadds\.sh r4,r4:b,r4:b
43.11585 -+ *[0-9a-f]*:	fc 0e 21 fe 	psubadds\.sh lr,lr:t,lr:t
43.11586 -+ *[0-9a-f]*:	fc 01 21 df 	psubadds\.sh pc,lr:b,r1:t
43.11587 -+ *[0-9a-f]*:	e6 0c 21 cb 	psubadds\.sh r11,r3:b,r12:b
43.11588 -+ *[0-9a-f]*:	e4 08 21 fa 	psubadds\.sh r10,r2:t,r8:t
43.11589 -+
43.11590 -+[0-9a-f]* <paddsubs_uh>:
43.11591 -+ *[0-9a-f]*:	fe 0f 22 0f 	paddsubs\.uh pc,pc:b,pc:b
43.11592 -+ *[0-9a-f]*:	f8 0c 22 3c 	paddsubs\.uh r12,r12:t,r12:t
43.11593 -+ *[0-9a-f]*:	ea 05 22 35 	paddsubs\.uh r5,r5:t,r5:t
43.11594 -+ *[0-9a-f]*:	e8 04 22 04 	paddsubs\.uh r4,r4:b,r4:b
43.11595 -+ *[0-9a-f]*:	fc 0e 22 3e 	paddsubs\.uh lr,lr:t,lr:t
43.11596 -+ *[0-9a-f]*:	e4 03 22 09 	paddsubs\.uh r9,r2:b,r3:b
43.11597 -+ *[0-9a-f]*:	fa 07 22 1d 	paddsubs\.uh sp,sp:b,r7:t
43.11598 -+ *[0-9a-f]*:	e0 0a 22 1e 	paddsubs\.uh lr,r0:b,r10:t
43.11599 -+
43.11600 -+[0-9a-f]* <psubadds_uh>:
43.11601 -+ *[0-9a-f]*:	fe 0f 22 4f 	psubadds\.uh pc,pc:b,pc:b
43.11602 -+ *[0-9a-f]*:	f8 0c 22 7c 	psubadds\.uh r12,r12:t,r12:t
43.11603 -+ *[0-9a-f]*:	ea 05 22 75 	psubadds\.uh r5,r5:t,r5:t
43.11604 -+ *[0-9a-f]*:	e8 04 22 44 	psubadds\.uh r4,r4:b,r4:b
43.11605 -+ *[0-9a-f]*:	fc 0e 22 7e 	psubadds\.uh lr,lr:t,lr:t
43.11606 -+ *[0-9a-f]*:	f2 0f 22 7c 	psubadds\.uh r12,r9:t,pc:t
43.11607 -+ *[0-9a-f]*:	ec 08 22 48 	psubadds\.uh r8,r6:b,r8:b
43.11608 -+ *[0-9a-f]*:	f0 04 22 48 	psubadds\.uh r8,r8:b,r4:b
43.11609 -+
43.11610 -+[0-9a-f]* <paddsubh_sh>:
43.11611 -+ *[0-9a-f]*:	fe 0f 22 8f 	paddsubh\.sh pc,pc:b,pc:b
43.11612 -+ *[0-9a-f]*:	f8 0c 22 bc 	paddsubh\.sh r12,r12:t,r12:t
43.11613 -+ *[0-9a-f]*:	ea 05 22 b5 	paddsubh\.sh r5,r5:t,r5:t
43.11614 -+ *[0-9a-f]*:	e8 04 22 84 	paddsubh\.sh r4,r4:b,r4:b
43.11615 -+ *[0-9a-f]*:	fc 0e 22 be 	paddsubh\.sh lr,lr:t,lr:t
43.11616 -+ *[0-9a-f]*:	f2 09 22 a8 	paddsubh\.sh r8,r9:t,r9:b
43.11617 -+ *[0-9a-f]*:	fa 01 22 b0 	paddsubh\.sh r0,sp:t,r1:t
43.11618 -+ *[0-9a-f]*:	e2 00 22 93 	paddsubh\.sh r3,r1:b,r0:t
43.11619 -+
43.11620 -+[0-9a-f]* <psubaddh_sh>:
43.11621 -+ *[0-9a-f]*:	fe 0f 22 cf 	psubaddh\.sh pc,pc:b,pc:b
43.11622 -+ *[0-9a-f]*:	f8 0c 22 fc 	psubaddh\.sh r12,r12:t,r12:t
43.11623 -+ *[0-9a-f]*:	ea 05 22 f5 	psubaddh\.sh r5,r5:t,r5:t
43.11624 -+ *[0-9a-f]*:	e8 04 22 c4 	psubaddh\.sh r4,r4:b,r4:b
43.11625 -+ *[0-9a-f]*:	fc 0e 22 fe 	psubaddh\.sh lr,lr:t,lr:t
43.11626 -+ *[0-9a-f]*:	e6 0a 22 e7 	psubaddh\.sh r7,r3:t,r10:b
43.11627 -+ *[0-9a-f]*:	e4 01 22 f7 	psubaddh\.sh r7,r2:t,r1:t
43.11628 -+ *[0-9a-f]*:	e6 06 22 cb 	psubaddh\.sh r11,r3:b,r6:b
43.11629 -+
43.11630 -+[0-9a-f]* <padd_b>:
43.11631 -+ *[0-9a-f]*:	fe 0f 23 0f 	padd\.b pc,pc,pc
43.11632 -+ *[0-9a-f]*:	f8 0c 23 0c 	padd\.b r12,r12,r12
43.11633 -+ *[0-9a-f]*:	ea 05 23 05 	padd\.b r5,r5,r5
43.11634 -+ *[0-9a-f]*:	e8 04 23 04 	padd\.b r4,r4,r4
43.11635 -+ *[0-9a-f]*:	fc 0e 23 0e 	padd\.b lr,lr,lr
43.11636 -+ *[0-9a-f]*:	ec 0f 23 02 	padd\.b r2,r6,pc
43.11637 -+ *[0-9a-f]*:	f2 0c 23 08 	padd\.b r8,r9,r12
43.11638 -+ *[0-9a-f]*:	f8 03 23 05 	padd\.b r5,r12,r3
43.11639 -+
43.11640 -+[0-9a-f]* <psub_b>:
43.11641 -+ *[0-9a-f]*:	fe 0f 23 1f 	psub\.b pc,pc,pc
43.11642 -+ *[0-9a-f]*:	f8 0c 23 1c 	psub\.b r12,r12,r12
43.11643 -+ *[0-9a-f]*:	ea 05 23 15 	psub\.b r5,r5,r5
43.11644 -+ *[0-9a-f]*:	e8 04 23 14 	psub\.b r4,r4,r4
43.11645 -+ *[0-9a-f]*:	fc 0e 23 1e 	psub\.b lr,lr,lr
43.11646 -+ *[0-9a-f]*:	f8 0f 23 10 	psub\.b r0,r12,pc
43.11647 -+ *[0-9a-f]*:	fa 0a 23 17 	psub\.b r7,sp,r10
43.11648 -+ *[0-9a-f]*:	fa 0c 23 15 	psub\.b r5,sp,r12
43.11649 -+
43.11650 -+[0-9a-f]* <padds_sb>:
43.11651 -+ *[0-9a-f]*:	fe 0f 23 2f 	padds\.sb pc,pc,pc
43.11652 -+ *[0-9a-f]*:	f8 0c 23 2c 	padds\.sb r12,r12,r12
43.11653 -+ *[0-9a-f]*:	ea 05 23 25 	padds\.sb r5,r5,r5
43.11654 -+ *[0-9a-f]*:	e8 04 23 24 	padds\.sb r4,r4,r4
43.11655 -+ *[0-9a-f]*:	fc 0e 23 2e 	padds\.sb lr,lr,lr
43.11656 -+ *[0-9a-f]*:	f6 04 23 2d 	padds\.sb sp,r11,r4
43.11657 -+ *[0-9a-f]*:	f4 0b 23 2b 	padds\.sb r11,r10,r11
43.11658 -+ *[0-9a-f]*:	f8 06 23 25 	padds\.sb r5,r12,r6
43.11659 -+
43.11660 -+[0-9a-f]* <psubs_sb>:
43.11661 -+ *[0-9a-f]*:	fe 0f 23 3f 	psubs\.sb pc,pc,pc
43.11662 -+ *[0-9a-f]*:	f8 0c 23 3c 	psubs\.sb r12,r12,r12
43.11663 -+ *[0-9a-f]*:	ea 05 23 35 	psubs\.sb r5,r5,r5
43.11664 -+ *[0-9a-f]*:	e8 04 23 34 	psubs\.sb r4,r4,r4
43.11665 -+ *[0-9a-f]*:	fc 0e 23 3e 	psubs\.sb lr,lr,lr
43.11666 -+ *[0-9a-f]*:	ec 08 23 37 	psubs\.sb r7,r6,r8
43.11667 -+ *[0-9a-f]*:	f4 09 23 3c 	psubs\.sb r12,r10,r9
43.11668 -+ *[0-9a-f]*:	f6 00 23 3f 	psubs\.sb pc,r11,r0
43.11669 -+
43.11670 -+[0-9a-f]* <padds_ub>:
43.11671 -+ *[0-9a-f]*:	fe 0f 23 4f 	padds\.ub pc,pc,pc
43.11672 -+ *[0-9a-f]*:	f8 0c 23 4c 	padds\.ub r12,r12,r12
43.11673 -+ *[0-9a-f]*:	ea 05 23 45 	padds\.ub r5,r5,r5
43.11674 -+ *[0-9a-f]*:	e8 04 23 44 	padds\.ub r4,r4,r4
43.11675 -+ *[0-9a-f]*:	fc 0e 23 4e 	padds\.ub lr,lr,lr
43.11676 -+ *[0-9a-f]*:	e4 0b 23 43 	padds\.ub r3,r2,r11
43.11677 -+ *[0-9a-f]*:	f0 01 23 4a 	padds\.ub r10,r8,r1
43.11678 -+ *[0-9a-f]*:	f0 0a 23 4b 	padds\.ub r11,r8,r10
43.11679 -+
43.11680 -+[0-9a-f]* <psubs_ub>:
43.11681 -+ *[0-9a-f]*:	fe 0f 23 5f 	psubs\.ub pc,pc,pc
43.11682 -+ *[0-9a-f]*:	f8 0c 23 5c 	psubs\.ub r12,r12,r12
43.11683 -+ *[0-9a-f]*:	ea 05 23 55 	psubs\.ub r5,r5,r5
43.11684 -+ *[0-9a-f]*:	e8 04 23 54 	psubs\.ub r4,r4,r4
43.11685 -+ *[0-9a-f]*:	fc 0e 23 5e 	psubs\.ub lr,lr,lr
43.11686 -+ *[0-9a-f]*:	e4 07 23 50 	psubs\.ub r0,r2,r7
43.11687 -+ *[0-9a-f]*:	ea 03 23 5e 	psubs\.ub lr,r5,r3
43.11688 -+ *[0-9a-f]*:	ee 09 23 56 	psubs\.ub r6,r7,r9
43.11689 -+
43.11690 -+[0-9a-f]* <paddh_ub>:
43.11691 -+ *[0-9a-f]*:	fe 0f 23 6f 	paddh\.ub pc,pc,pc
43.11692 -+ *[0-9a-f]*:	f8 0c 23 6c 	paddh\.ub r12,r12,r12
43.11693 -+ *[0-9a-f]*:	ea 05 23 65 	paddh\.ub r5,r5,r5
43.11694 -+ *[0-9a-f]*:	e8 04 23 64 	paddh\.ub r4,r4,r4
43.11695 -+ *[0-9a-f]*:	fc 0e 23 6e 	paddh\.ub lr,lr,lr
43.11696 -+ *[0-9a-f]*:	e2 00 23 6e 	paddh\.ub lr,r1,r0
43.11697 -+ *[0-9a-f]*:	ee 07 23 62 	paddh\.ub r2,r7,r7
43.11698 -+ *[0-9a-f]*:	e2 02 23 62 	paddh\.ub r2,r1,r2
43.11699 -+
43.11700 -+[0-9a-f]* <psubh_ub>:
43.11701 -+ *[0-9a-f]*:	fe 0f 23 7f 	psubh\.ub pc,pc,pc
43.11702 -+ *[0-9a-f]*:	f8 0c 23 7c 	psubh\.ub r12,r12,r12
43.11703 -+ *[0-9a-f]*:	ea 05 23 75 	psubh\.ub r5,r5,r5
43.11704 -+ *[0-9a-f]*:	e8 04 23 74 	psubh\.ub r4,r4,r4
43.11705 -+ *[0-9a-f]*:	fc 0e 23 7e 	psubh\.ub lr,lr,lr
43.11706 -+ *[0-9a-f]*:	e2 06 23 70 	psubh\.ub r0,r1,r6
43.11707 -+ *[0-9a-f]*:	fc 0a 23 74 	psubh\.ub r4,lr,r10
43.11708 -+ *[0-9a-f]*:	f0 01 23 79 	psubh\.ub r9,r8,r1
43.11709 -+
43.11710 -+[0-9a-f]* <pmax_ub>:
43.11711 -+ *[0-9a-f]*:	fe 0f 23 8f 	pmax\.ub pc,pc,pc
43.11712 -+ *[0-9a-f]*:	f8 0c 23 8c 	pmax\.ub r12,r12,r12
43.11713 -+ *[0-9a-f]*:	ea 05 23 85 	pmax\.ub r5,r5,r5
43.11714 -+ *[0-9a-f]*:	e8 04 23 84 	pmax\.ub r4,r4,r4
43.11715 -+ *[0-9a-f]*:	fc 0e 23 8e 	pmax\.ub lr,lr,lr
43.11716 -+ *[0-9a-f]*:	e4 0b 23 8f 	pmax\.ub pc,r2,r11
43.11717 -+ *[0-9a-f]*:	e2 01 23 8c 	pmax\.ub r12,r1,r1
43.11718 -+ *[0-9a-f]*:	e4 00 23 85 	pmax\.ub r5,r2,r0
43.11719 -+
43.11720 -+[0-9a-f]* <pmax_sh>:
43.11721 -+ *[0-9a-f]*:	fe 0f 23 9f 	pmax\.sh pc,pc,pc
43.11722 -+ *[0-9a-f]*:	f8 0c 23 9c 	pmax\.sh r12,r12,r12
43.11723 -+ *[0-9a-f]*:	ea 05 23 95 	pmax\.sh r5,r5,r5
43.11724 -+ *[0-9a-f]*:	e8 04 23 94 	pmax\.sh r4,r4,r4
43.11725 -+ *[0-9a-f]*:	fc 0e 23 9e 	pmax\.sh lr,lr,lr
43.11726 -+ *[0-9a-f]*:	ec 0c 23 9e 	pmax\.sh lr,r6,r12
43.11727 -+ *[0-9a-f]*:	fe 05 23 92 	pmax\.sh r2,pc,r5
43.11728 -+ *[0-9a-f]*:	e4 07 23 9f 	pmax\.sh pc,r2,r7
43.11729 -+
43.11730 -+[0-9a-f]* <pmin_ub>:
43.11731 -+ *[0-9a-f]*:	fe 0f 23 af 	pmin\.ub pc,pc,pc
43.11732 -+ *[0-9a-f]*:	f8 0c 23 ac 	pmin\.ub r12,r12,r12
43.11733 -+ *[0-9a-f]*:	ea 05 23 a5 	pmin\.ub r5,r5,r5
43.11734 -+ *[0-9a-f]*:	e8 04 23 a4 	pmin\.ub r4,r4,r4
43.11735 -+ *[0-9a-f]*:	fc 0e 23 ae 	pmin\.ub lr,lr,lr
43.11736 -+ *[0-9a-f]*:	e2 05 23 a8 	pmin\.ub r8,r1,r5
43.11737 -+ *[0-9a-f]*:	f0 03 23 a1 	pmin\.ub r1,r8,r3
43.11738 -+ *[0-9a-f]*:	e4 07 23 a0 	pmin\.ub r0,r2,r7
43.11739 -+
43.11740 -+[0-9a-f]* <pmin_sh>:
43.11741 -+ *[0-9a-f]*:	fe 0f 23 bf 	pmin\.sh pc,pc,pc
43.11742 -+ *[0-9a-f]*:	f8 0c 23 bc 	pmin\.sh r12,r12,r12
43.11743 -+ *[0-9a-f]*:	ea 05 23 b5 	pmin\.sh r5,r5,r5
43.11744 -+ *[0-9a-f]*:	e8 04 23 b4 	pmin\.sh r4,r4,r4
43.11745 -+ *[0-9a-f]*:	fc 0e 23 be 	pmin\.sh lr,lr,lr
43.11746 -+ *[0-9a-f]*:	e8 0a 23 b8 	pmin\.sh r8,r4,r10
43.11747 -+ *[0-9a-f]*:	f4 0c 23 be 	pmin\.sh lr,r10,r12
43.11748 -+ *[0-9a-f]*:	ec 02 23 b2 	pmin\.sh r2,r6,r2
43.11749 -+
43.11750 -+[0-9a-f]* <pavg_ub>:
43.11751 -+ *[0-9a-f]*:	fe 0f 23 cf 	pavg\.ub pc,pc,pc
43.11752 -+ *[0-9a-f]*:	f8 0c 23 cc 	pavg\.ub r12,r12,r12
43.11753 -+ *[0-9a-f]*:	ea 05 23 c5 	pavg\.ub r5,r5,r5
43.11754 -+ *[0-9a-f]*:	e8 04 23 c4 	pavg\.ub r4,r4,r4
43.11755 -+ *[0-9a-f]*:	fc 0e 23 ce 	pavg\.ub lr,lr,lr
43.11756 -+ *[0-9a-f]*:	e2 06 23 c0 	pavg\.ub r0,r1,r6
43.11757 -+ *[0-9a-f]*:	e6 06 23 c8 	pavg\.ub r8,r3,r6
43.11758 -+ *[0-9a-f]*:	f8 0a 23 cf 	pavg\.ub pc,r12,r10
43.11759 -+
43.11760 -+[0-9a-f]* <pavg_sh>:
43.11761 -+ *[0-9a-f]*:	fe 0f 23 df 	pavg\.sh pc,pc,pc
43.11762 -+ *[0-9a-f]*:	f8 0c 23 dc 	pavg\.sh r12,r12,r12
43.11763 -+ *[0-9a-f]*:	ea 05 23 d5 	pavg\.sh r5,r5,r5
43.11764 -+ *[0-9a-f]*:	e8 04 23 d4 	pavg\.sh r4,r4,r4
43.11765 -+ *[0-9a-f]*:	fc 0e 23 de 	pavg\.sh lr,lr,lr
43.11766 -+ *[0-9a-f]*:	fe 0d 23 d9 	pavg\.sh r9,pc,sp
43.11767 -+ *[0-9a-f]*:	fa 03 23 df 	pavg\.sh pc,sp,r3
43.11768 -+ *[0-9a-f]*:	e2 09 23 d6 	pavg\.sh r6,r1,r9
43.11769 -+
43.11770 -+[0-9a-f]* <pabs_sb>:
43.11771 -+ *[0-9a-f]*:	e0 0f 23 ef 	pabs\.sb pc,pc
43.11772 -+ *[0-9a-f]*:	e0 0c 23 ec 	pabs\.sb r12,r12
43.11773 -+ *[0-9a-f]*:	e0 05 23 e5 	pabs\.sb r5,r5
43.11774 -+ *[0-9a-f]*:	e0 04 23 e4 	pabs\.sb r4,r4
43.11775 -+ *[0-9a-f]*:	e0 0e 23 ee 	pabs\.sb lr,lr
43.11776 -+ *[0-9a-f]*:	e0 06 23 eb 	pabs\.sb r11,r6
43.11777 -+ *[0-9a-f]*:	e0 09 23 ee 	pabs\.sb lr,r9
43.11778 -+ *[0-9a-f]*:	e0 07 23 ed 	pabs\.sb sp,r7
43.11779 -+
43.11780 -+[0-9a-f]* <pabs_sh>:
43.11781 -+ *[0-9a-f]*:	e0 0f 23 ff 	pabs\.sh pc,pc
43.11782 -+ *[0-9a-f]*:	e0 0c 23 fc 	pabs\.sh r12,r12
43.11783 -+ *[0-9a-f]*:	e0 05 23 f5 	pabs\.sh r5,r5
43.11784 -+ *[0-9a-f]*:	e0 04 23 f4 	pabs\.sh r4,r4
43.11785 -+ *[0-9a-f]*:	e0 0e 23 fe 	pabs\.sh lr,lr
43.11786 -+ *[0-9a-f]*:	e0 03 23 ff 	pabs\.sh pc,r3
43.11787 -+ *[0-9a-f]*:	e0 07 23 f5 	pabs\.sh r5,r7
43.11788 -+ *[0-9a-f]*:	e0 00 23 f4 	pabs\.sh r4,r0
43.11789 -+
43.11790 -+[0-9a-f]* <psad>:
43.11791 -+ *[0-9a-f]*:	fe 0f 24 0f 	psad pc,pc,pc
43.11792 -+ *[0-9a-f]*:	f8 0c 24 0c 	psad r12,r12,r12
43.11793 -+ *[0-9a-f]*:	ea 05 24 05 	psad r5,r5,r5
43.11794 -+ *[0-9a-f]*:	e8 04 24 04 	psad r4,r4,r4
43.11795 -+ *[0-9a-f]*:	fc 0e 24 0e 	psad lr,lr,lr
43.11796 -+ *[0-9a-f]*:	f6 0b 24 09 	psad r9,r11,r11
43.11797 -+ *[0-9a-f]*:	e8 0d 24 0e 	psad lr,r4,sp
43.11798 -+ *[0-9a-f]*:	e8 05 24 0e 	psad lr,r4,r5
43.11799 -+
43.11800 -+[0-9a-f]* <pasr_b>:
43.11801 -+ *[0-9a-f]*:	fe 00 24 1f 	pasr\.b pc,pc,0x0
43.11802 -+ *[0-9a-f]*:	f8 07 24 1c 	pasr\.b r12,r12,0x7
43.11803 -+ *[0-9a-f]*:	ea 04 24 15 	pasr\.b r5,r5,0x4
43.11804 -+ *[0-9a-f]*:	e8 03 24 14 	pasr\.b r4,r4,0x3
43.11805 -+ *[0-9a-f]*:	fc 01 24 1e 	pasr\.b lr,lr,0x1
43.11806 -+ *[0-9a-f]*:	ee 01 24 1f 	pasr\.b pc,r7,0x1
43.11807 -+ *[0-9a-f]*:	fc 06 24 1d 	pasr\.b sp,lr,0x6
43.11808 -+ *[0-9a-f]*:	e6 02 24 1d 	pasr\.b sp,r3,0x2
43.11809 -+
43.11810 -+[0-9a-f]* <plsl_b>:
43.11811 -+ *[0-9a-f]*:	fe 00 24 2f 	plsl\.b pc,pc,0x0
43.11812 -+ *[0-9a-f]*:	f8 07 24 2c 	plsl\.b r12,r12,0x7
43.11813 -+ *[0-9a-f]*:	ea 04 24 25 	plsl\.b r5,r5,0x4
43.11814 -+ *[0-9a-f]*:	e8 03 24 24 	plsl\.b r4,r4,0x3
43.11815 -+ *[0-9a-f]*:	fc 01 24 2e 	plsl\.b lr,lr,0x1
43.11816 -+ *[0-9a-f]*:	f6 04 24 22 	plsl\.b r2,r11,0x4
43.11817 -+ *[0-9a-f]*:	ea 07 24 28 	plsl\.b r8,r5,0x7
43.11818 -+ *[0-9a-f]*:	e0 02 24 2f 	plsl\.b pc,r0,0x2
43.11819 -+
43.11820 -+[0-9a-f]* <plsr_b>:
43.11821 -+ *[0-9a-f]*:	fe 00 24 3f 	plsr\.b pc,pc,0x0
43.11822 -+ *[0-9a-f]*:	f8 07 24 3c 	plsr\.b r12,r12,0x7
43.11823 -+ *[0-9a-f]*:	ea 04 24 35 	plsr\.b r5,r5,0x4
43.11824 -+ *[0-9a-f]*:	e8 03 24 34 	plsr\.b r4,r4,0x3
43.11825 -+ *[0-9a-f]*:	fc 01 24 3e 	plsr\.b lr,lr,0x1
43.11826 -+ *[0-9a-f]*:	e2 02 24 3c 	plsr\.b r12,r1,0x2
43.11827 -+ *[0-9a-f]*:	fe 07 24 36 	plsr\.b r6,pc,0x7
43.11828 -+ *[0-9a-f]*:	f6 02 24 3c 	plsr\.b r12,r11,0x2
43.11829 -+
43.11830 -+[0-9a-f]* <pasr_h>:
43.11831 -+ *[0-9a-f]*:	fe 00 24 4f 	pasr\.h pc,pc,0x0
43.11832 -+ *[0-9a-f]*:	f8 0f 24 4c 	pasr\.h r12,r12,0xf
43.11833 -+ *[0-9a-f]*:	ea 08 24 45 	pasr\.h r5,r5,0x8
43.11834 -+ *[0-9a-f]*:	e8 07 24 44 	pasr\.h r4,r4,0x7
43.11835 -+ *[0-9a-f]*:	fc 01 24 4e 	pasr\.h lr,lr,0x1
43.11836 -+ *[0-9a-f]*:	f6 0a 24 40 	pasr\.h r0,r11,0xa
43.11837 -+ *[0-9a-f]*:	ec 08 24 44 	pasr\.h r4,r6,0x8
43.11838 -+ *[0-9a-f]*:	e4 04 24 46 	pasr\.h r6,r2,0x4
43.11839 -+
43.11840 -+[0-9a-f]* <plsl_h>:
43.11841 -+ *[0-9a-f]*:	fe 00 24 5f 	plsl\.h pc,pc,0x0
43.11842 -+ *[0-9a-f]*:	f8 0f 24 5c 	plsl\.h r12,r12,0xf
43.11843 -+ *[0-9a-f]*:	ea 08 24 55 	plsl\.h r5,r5,0x8
43.11844 -+ *[0-9a-f]*:	e8 07 24 54 	plsl\.h r4,r4,0x7
43.11845 -+ *[0-9a-f]*:	fc 01 24 5e 	plsl\.h lr,lr,0x1
43.11846 -+ *[0-9a-f]*:	f4 09 24 55 	plsl\.h r5,r10,0x9
43.11847 -+ *[0-9a-f]*:	fc 08 24 5d 	plsl\.h sp,lr,0x8
43.11848 -+ *[0-9a-f]*:	fc 07 24 50 	plsl\.h r0,lr,0x7
43.11849 -+
43.11850 -+[0-9a-f]* <plsr_h>:
43.11851 -+ *[0-9a-f]*:	fe 00 24 6f 	plsr\.h pc,pc,0x0
43.11852 -+ *[0-9a-f]*:	f8 0f 24 6c 	plsr\.h r12,r12,0xf
43.11853 -+ *[0-9a-f]*:	ea 08 24 65 	plsr\.h r5,r5,0x8
43.11854 -+ *[0-9a-f]*:	e8 07 24 64 	plsr\.h r4,r4,0x7
43.11855 -+ *[0-9a-f]*:	fc 01 24 6e 	plsr\.h lr,lr,0x1
43.11856 -+ *[0-9a-f]*:	e0 0f 24 6b 	plsr\.h r11,r0,0xf
43.11857 -+ *[0-9a-f]*:	e6 03 24 6e 	plsr\.h lr,r3,0x3
43.11858 -+ *[0-9a-f]*:	fc 0a 24 68 	plsr\.h r8,lr,0xa
43.11859 -+
43.11860 -+[0-9a-f]* <packw_sh>:
43.11861 -+ *[0-9a-f]*:	fe 0f 24 7f 	packw\.sh pc,pc,pc
43.11862 -+ *[0-9a-f]*:	f8 0c 24 7c 	packw\.sh r12,r12,r12
43.11863 -+ *[0-9a-f]*:	ea 05 24 75 	packw\.sh r5,r5,r5
43.11864 -+ *[0-9a-f]*:	e8 04 24 74 	packw\.sh r4,r4,r4
43.11865 -+ *[0-9a-f]*:	fc 0e 24 7e 	packw\.sh lr,lr,lr
43.11866 -+ *[0-9a-f]*:	f6 0a 24 7d 	packw\.sh sp,r11,r10
43.11867 -+ *[0-9a-f]*:	e4 0c 24 78 	packw\.sh r8,r2,r12
43.11868 -+ *[0-9a-f]*:	e2 05 24 78 	packw\.sh r8,r1,r5
43.11869 -+
43.11870 -+[0-9a-f]* <punpckub_h>:
43.11871 -+ *[0-9a-f]*:	fe 00 24 8f 	punpckub\.h pc,pc:b
43.11872 -+ *[0-9a-f]*:	f8 00 24 9c 	punpckub\.h r12,r12:t
43.11873 -+ *[0-9a-f]*:	ea 00 24 95 	punpckub\.h r5,r5:t
43.11874 -+ *[0-9a-f]*:	e8 00 24 84 	punpckub\.h r4,r4:b
43.11875 -+ *[0-9a-f]*:	fc 00 24 9e 	punpckub\.h lr,lr:t
43.11876 -+ *[0-9a-f]*:	e2 00 24 96 	punpckub\.h r6,r1:t
43.11877 -+ *[0-9a-f]*:	ea 00 24 8e 	punpckub\.h lr,r5:b
43.11878 -+ *[0-9a-f]*:	e4 00 24 9e 	punpckub\.h lr,r2:t
43.11879 -+
43.11880 -+[0-9a-f]* <punpcksb_h>:
43.11881 -+ *[0-9a-f]*:	fe 00 24 af 	punpcksb\.h pc,pc:b
43.11882 -+ *[0-9a-f]*:	f8 00 24 bc 	punpcksb\.h r12,r12:t
43.11883 -+ *[0-9a-f]*:	ea 00 24 b5 	punpcksb\.h r5,r5:t
43.11884 -+ *[0-9a-f]*:	e8 00 24 a4 	punpcksb\.h r4,r4:b
43.11885 -+ *[0-9a-f]*:	fc 00 24 be 	punpcksb\.h lr,lr:t
43.11886 -+ *[0-9a-f]*:	ee 00 24 b4 	punpcksb\.h r4,r7:t
43.11887 -+ *[0-9a-f]*:	fc 00 24 a6 	punpcksb\.h r6,lr:b
43.11888 -+ *[0-9a-f]*:	f8 00 24 bc 	punpcksb\.h r12,r12:t
43.11889 -+
43.11890 -+[0-9a-f]* <packsh_ub>:
43.11891 -+ *[0-9a-f]*:	fe 0f 24 cf 	packsh\.ub pc,pc,pc
43.11892 -+ *[0-9a-f]*:	f8 0c 24 cc 	packsh\.ub r12,r12,r12
43.11893 -+ *[0-9a-f]*:	ea 05 24 c5 	packsh\.ub r5,r5,r5
43.11894 -+ *[0-9a-f]*:	e8 04 24 c4 	packsh\.ub r4,r4,r4
43.11895 -+ *[0-9a-f]*:	fc 0e 24 ce 	packsh\.ub lr,lr,lr
43.11896 -+ *[0-9a-f]*:	ec 03 24 c3 	packsh\.ub r3,r6,r3
43.11897 -+ *[0-9a-f]*:	e0 03 24 c8 	packsh\.ub r8,r0,r3
43.11898 -+ *[0-9a-f]*:	e6 0e 24 c9 	packsh\.ub r9,r3,lr
43.11899 -+
43.11900 -+[0-9a-f]* <packsh_sb>:
43.11901 -+ *[0-9a-f]*:	fe 0f 24 df 	packsh\.sb pc,pc,pc
43.11902 -+ *[0-9a-f]*:	f8 0c 24 dc 	packsh\.sb r12,r12,r12
43.11903 -+ *[0-9a-f]*:	ea 05 24 d5 	packsh\.sb r5,r5,r5
43.11904 -+ *[0-9a-f]*:	e8 04 24 d4 	packsh\.sb r4,r4,r4
43.11905 -+ *[0-9a-f]*:	fc 0e 24 de 	packsh\.sb lr,lr,lr
43.11906 -+ *[0-9a-f]*:	f0 01 24 d6 	packsh\.sb r6,r8,r1
43.11907 -+ *[0-9a-f]*:	f2 08 24 de 	packsh\.sb lr,r9,r8
43.11908 -+ *[0-9a-f]*:	ec 06 24 dd 	packsh\.sb sp,r6,r6
43.11909 -+
43.11910 -+[0-9a-f]* <andl>:
43.11911 -+ *[0-9a-f]*:	e0 1f 00 00 	andl pc,0x0
43.11912 -+ *[0-9a-f]*:	e0 1c ff ff 	andl r12,0xffff
43.11913 -+ *[0-9a-f]*:	e0 15 80 00 	andl r5,0x8000
43.11914 -+ *[0-9a-f]*:	e0 14 7f ff 	andl r4,0x7fff
43.11915 -+ *[0-9a-f]*:	e0 1e 00 01 	andl lr,0x1
43.11916 -+ *[0-9a-f]*:	e0 1f 5a 58 	andl pc,0x5a58
43.11917 -+ *[0-9a-f]*:	e0 18 b8 9e 	andl r8,0xb89e
43.11918 -+ *[0-9a-f]*:	e0 17 35 97 	andl r7,0x3597
43.11919 -+
43.11920 -+[0-9a-f]* <andl_coh>:
43.11921 -+ *[0-9a-f]*:	e2 1f 00 00 	andl pc,0x0,COH
43.11922 -+ *[0-9a-f]*:	e2 1c ff ff 	andl r12,0xffff,COH
43.11923 -+ *[0-9a-f]*:	e2 15 80 00 	andl r5,0x8000,COH
43.11924 -+ *[0-9a-f]*:	e2 14 7f ff 	andl r4,0x7fff,COH
43.11925 -+ *[0-9a-f]*:	e2 1e 00 01 	andl lr,0x1,COH
43.11926 -+ *[0-9a-f]*:	e2 16 58 e1 	andl r6,0x58e1,COH
43.11927 -+ *[0-9a-f]*:	e2 10 9e cd 	andl r0,0x9ecd,COH
43.11928 -+ *[0-9a-f]*:	e2 14 bd c4 	andl r4,0xbdc4,COH
43.11929 -+
43.11930 -+[0-9a-f]* <andh>:
43.11931 -+ *[0-9a-f]*:	e4 1f 00 00 	andh pc,0x0
43.11932 -+ *[0-9a-f]*:	e4 1c ff ff 	andh r12,0xffff
43.11933 -+ *[0-9a-f]*:	e4 15 80 00 	andh r5,0x8000
43.11934 -+ *[0-9a-f]*:	e4 14 7f ff 	andh r4,0x7fff
43.11935 -+ *[0-9a-f]*:	e4 1e 00 01 	andh lr,0x1
43.11936 -+ *[0-9a-f]*:	e4 1c cc 58 	andh r12,0xcc58
43.11937 -+ *[0-9a-f]*:	e4 13 21 e3 	andh r3,0x21e3
43.11938 -+ *[0-9a-f]*:	e4 12 a7 eb 	andh r2,0xa7eb
43.11939 -+
43.11940 -+[0-9a-f]* <andh_coh>:
43.11941 -+ *[0-9a-f]*:	e6 1f 00 00 	andh pc,0x0,COH
43.11942 -+ *[0-9a-f]*:	e6 1c ff ff 	andh r12,0xffff,COH
43.11943 -+ *[0-9a-f]*:	e6 15 80 00 	andh r5,0x8000,COH
43.11944 -+ *[0-9a-f]*:	e6 14 7f ff 	andh r4,0x7fff,COH
43.11945 -+ *[0-9a-f]*:	e6 1e 00 01 	andh lr,0x1,COH
43.11946 -+ *[0-9a-f]*:	e6 1b 86 0d 	andh r11,0x860d,COH
43.11947 -+ *[0-9a-f]*:	e6 18 ce f6 	andh r8,0xcef6,COH
43.11948 -+ *[0-9a-f]*:	e6 1a 5c 83 	andh r10,0x5c83,COH
43.11949 -+
43.11950 -+[0-9a-f]* <orl>:
43.11951 -+ *[0-9a-f]*:	e8 1f 00 00 	orl pc,0x0
43.11952 -+ *[0-9a-f]*:	e8 1c ff ff 	orl r12,0xffff
43.11953 -+ *[0-9a-f]*:	e8 15 80 00 	orl r5,0x8000
43.11954 -+ *[0-9a-f]*:	e8 14 7f ff 	orl r4,0x7fff
43.11955 -+ *[0-9a-f]*:	e8 1e 00 01 	orl lr,0x1
43.11956 -+ *[0-9a-f]*:	e8 1d 41 7e 	orl sp,0x417e
43.11957 -+ *[0-9a-f]*:	e8 10 52 bd 	orl r0,0x52bd
43.11958 -+ *[0-9a-f]*:	e8 1f ac 47 	orl pc,0xac47
43.11959 -+
43.11960 -+[0-9a-f]* <orh>:
43.11961 -+ *[0-9a-f]*:	ea 1f 00 00 	orh pc,0x0
43.11962 -+ *[0-9a-f]*:	ea 1c ff ff 	orh r12,0xffff
43.11963 -+ *[0-9a-f]*:	ea 15 80 00 	orh r5,0x8000
43.11964 -+ *[0-9a-f]*:	ea 14 7f ff 	orh r4,0x7fff
43.11965 -+ *[0-9a-f]*:	ea 1e 00 01 	orh lr,0x1
43.11966 -+ *[0-9a-f]*:	ea 18 6e 7d 	orh r8,0x6e7d
43.11967 -+ *[0-9a-f]*:	ea 1c 77 1c 	orh r12,0x771c
43.11968 -+ *[0-9a-f]*:	ea 11 ea 1a 	orh r1,0xea1a
43.11969 -+
43.11970 -+[0-9a-f]* <eorl>:
43.11971 -+ *[0-9a-f]*:	ec 1f 00 00 	eorl pc,0x0
43.11972 -+ *[0-9a-f]*:	ec 1c ff ff 	eorl r12,0xffff
43.11973 -+ *[0-9a-f]*:	ec 15 80 00 	eorl r5,0x8000
43.11974 -+ *[0-9a-f]*:	ec 14 7f ff 	eorl r4,0x7fff
43.11975 -+ *[0-9a-f]*:	ec 1e 00 01 	eorl lr,0x1
43.11976 -+ *[0-9a-f]*:	ec 14 c7 b9 	eorl r4,0xc7b9
43.11977 -+ *[0-9a-f]*:	ec 16 fb dd 	eorl r6,0xfbdd
43.11978 -+ *[0-9a-f]*:	ec 11 51 b1 	eorl r1,0x51b1
43.11979 -+
43.11980 -+[0-9a-f]* <eorh>:
43.11981 -+ *[0-9a-f]*:	ee 1f 00 00 	eorh pc,0x0
43.11982 -+ *[0-9a-f]*:	ee 1c ff ff 	eorh r12,0xffff
43.11983 -+ *[0-9a-f]*:	ee 15 80 00 	eorh r5,0x8000
43.11984 -+ *[0-9a-f]*:	ee 14 7f ff 	eorh r4,0x7fff
43.11985 -+ *[0-9a-f]*:	ee 1e 00 01 	eorh lr,0x1
43.11986 -+ *[0-9a-f]*:	ee 10 2d d4 	eorh r0,0x2dd4
43.11987 -+ *[0-9a-f]*:	ee 1a 94 b5 	eorh r10,0x94b5
43.11988 -+ *[0-9a-f]*:	ee 19 df 2a 	eorh r9,0xdf2a
43.11989 -+
43.11990 -+[0-9a-f]* <mcall>:
43.11991 -+ *[0-9a-f]*:	f0 1f 00 00 	mcall [0-9a-f]* <.*>
43.11992 -+ *[0-9a-f]*:	f0 1c ff ff 	mcall r12\[-4\]
43.11993 -+ *[0-9a-f]*:	f0 15 80 00 	mcall r5\[-131072\]
43.11994 -+ *[0-9a-f]*:	f0 14 7f ff 	mcall r4\[131068\]
43.11995 -+ *[0-9a-f]*:	f0 1e 00 01 	mcall lr\[4\]
43.11996 -+ *[0-9a-f]*:	f0 1d 3b bf 	mcall sp\[61180\]
43.11997 -+ *[0-9a-f]*:	f0 14 dd d2 	mcall r4\[-35000\]
43.11998 -+ *[0-9a-f]*:	f0 10 09 b1 	mcall r0\[9924\]
43.11999 -+
43.12000 -+[0-9a-f]* <pref>:
43.12001 -+ *[0-9a-f]*:	f2 1f 00 00 	pref pc\[0\]
43.12002 -+ *[0-9a-f]*:	f2 1c ff ff 	pref r12\[-1\]
43.12003 -+ *[0-9a-f]*:	f2 15 80 00 	pref r5\[-32768\]
43.12004 -+ *[0-9a-f]*:	f2 14 7f ff 	pref r4\[32767\]
43.12005 -+ *[0-9a-f]*:	f2 1e 00 01 	pref lr\[1\]
43.12006 -+ *[0-9a-f]*:	f2 17 1e 44 	pref r7\[7748\]
43.12007 -+ *[0-9a-f]*:	f2 17 e1 ed 	pref r7\[-7699\]
43.12008 -+ *[0-9a-f]*:	f2 12 9a dc 	pref r2\[-25892\]
43.12009 -+
43.12010 -+[0-9a-f]* <cache>:
43.12011 -+ *[0-9a-f]*:	f4 1f 00 00 	cache pc\[0\],0x0
43.12012 -+ *[0-9a-f]*:	f4 1c ff ff 	cache r12\[-1\],0x1f
43.12013 -+ *[0-9a-f]*:	f4 15 84 00 	cache r5\[-1024\],0x10
43.12014 -+ *[0-9a-f]*:	f4 14 7b ff 	cache r4\[1023\],0xf
43.12015 -+ *[0-9a-f]*:	f4 1e 08 01 	cache lr\[1\],0x1
43.12016 -+ *[0-9a-f]*:	f4 13 8c 3c 	cache r3\[-964\],0x11
43.12017 -+ *[0-9a-f]*:	f4 14 b6 89 	cache r4\[-375\],0x16
43.12018 -+ *[0-9a-f]*:	f4 13 8c 88 	cache r3\[-888\],0x11
43.12019 -+
43.12020 -+[0-9a-f]* <sub4>:
43.12021 -+ *[0-9a-f]*:	20 0f       	sub pc,0
43.12022 -+ *[0-9a-f]*:	2f fc       	sub r12,-1
43.12023 -+ *[0-9a-f]*:	f0 25 00 00 	sub r5,-1048576
43.12024 -+ *[0-9a-f]*:	ee 34 ff ff 	sub r4,1048575
43.12025 -+ *[0-9a-f]*:	20 1e       	sub lr,1
43.12026 -+ *[0-9a-f]*:	f6 22 8d 6c 	sub r2,-619156
43.12027 -+ *[0-9a-f]*:	e6 3e 0a cd 	sub lr,461517
43.12028 -+ *[0-9a-f]*:	fc 38 2d 25 	sub r8,-185051
43.12029 -+
43.12030 -+[0-9a-f]* <cp3>:
43.12031 -+ *[0-9a-f]*:	58 0f       	cp.w pc,0
43.12032 -+ *[0-9a-f]*:	5b fc       	cp.w r12,-1
43.12033 -+ *[0-9a-f]*:	f0 45 00 00 	cp.w r5,-1048576
43.12034 -+ *[0-9a-f]*:	ee 54 ff ff 	cp.w r4,1048575
43.12035 -+ *[0-9a-f]*:	58 1e       	cp.w lr,1
43.12036 -+ *[0-9a-f]*:	e0 51 e4 ae 	cp.w r1,124078
43.12037 -+ *[0-9a-f]*:	fa 40 37 e3 	cp.w r0,-378909
43.12038 -+ *[0-9a-f]*:	fc 44 4a 14 	cp.w r4,-243180
43.12039 -+
43.12040 -+[0-9a-f]* <mov2>:
43.12041 -+ *[0-9a-f]*:	30 0f       	mov pc,0
43.12042 -+ *[0-9a-f]*:	3f fc       	mov r12,-1
43.12043 -+ *[0-9a-f]*:	f0 65 00 00 	mov r5,-1048576
43.12044 -+ *[0-9a-f]*:	ee 74 ff ff 	mov r4,1048575
43.12045 -+ *[0-9a-f]*:	30 1e       	mov lr,1
43.12046 -+ *[0-9a-f]*:	fa 75 29 a3 	mov r5,-317021
43.12047 -+ *[0-9a-f]*:	f4 6d 91 94 	mov sp,-749164
43.12048 -+ *[0-9a-f]*:	ee 65 58 93 	mov r5,940179
43.12049 -+
43.12050 -+[0-9a-f]* <brc2>:
43.12051 -+ *[0-9a-f]*:	c0 00       	breq [0-9a-f]* <.*>
43.12052 -+ *[0-9a-f]*:	fe 9f ff ff 	bral [0-9a-f]* <.*>
43.12053 -+ *[0-9a-f]*:	f0 88 00 00 	brls [0-9a-f]* <.*>
43.12054 -+ *[0-9a-f]*:	ee 97 ff ff 	brpl [0-9a-f]* <.*>
43.12055 -+ *[0-9a-f]*:	c0 11       	brne [0-9a-f]* <.*>
43.12056 -+ *[0-9a-f]*:	f2 8b 4a 4d 	brhi [0-9a-f]* <.*>
43.12057 -+ *[0-9a-f]*:	ea 8e 14 cc 	brqs [0-9a-f]* <.*>
43.12058 -+ *[0-9a-f]*:	fa 98 98 33 	brls [0-9a-f]* <.*>
43.12059 -+
43.12060 -+[0-9a-f]* <rcall2>:
43.12061 -+ *[0-9a-f]*:	c0 0c       	rcall [0-9a-f]* <.*>
43.12062 -+ *[0-9a-f]*:	cf ff       	rcall [0-9a-f]* <.*>
43.12063 -+ *[0-9a-f]*:	f0 a0 00 00 	rcall [0-9a-f]* <.*>
43.12064 -+ *[0-9a-f]*:	ee b0 ff ff 	rcall [0-9a-f]* <.*>
43.12065 -+ *[0-9a-f]*:	c0 1c       	rcall [0-9a-f]* <.*>
43.12066 -+ *[0-9a-f]*:	e2 b0 ca 5a 	rcall [0-9a-f]* <.*>
43.12067 -+ *[0-9a-f]*:	e8 a0 47 52 	rcall [0-9a-f]* <.*>
43.12068 -+ *[0-9a-f]*:	fe b0 fd ef 	rcall [0-9a-f]* <.*>
43.12069 -+
43.12070 -+[0-9a-f]* <sub5>:
43.12071 -+ *[0-9a-f]*:	fe cf 00 00 	sub pc,pc,0
43.12072 -+ *[0-9a-f]*:	f8 cc ff ff 	sub r12,r12,-1
43.12073 -+ *[0-9a-f]*:	ea c5 80 00 	sub r5,r5,-32768
43.12074 -+ *[0-9a-f]*:	e8 c4 7f ff 	sub r4,r4,32767
43.12075 -+ *[0-9a-f]*:	fc ce 00 01 	sub lr,lr,1
43.12076 -+ *[0-9a-f]*:	fe cf ce 38 	sub pc,pc,-12744
43.12077 -+ *[0-9a-f]*:	ee c7 95 1b 	sub r7,r7,-27365
43.12078 -+ *[0-9a-f]*:	f2 c2 bc 32 	sub r2,r9,-17358
43.12079 -+
43.12080 -+[0-9a-f]* <satsub_w2>:
43.12081 -+ *[0-9a-f]*:	fe df 00 00 	satsub\.w pc,pc,0
43.12082 -+ *[0-9a-f]*:	f8 dc ff ff 	satsub\.w r12,r12,-1
43.12083 -+ *[0-9a-f]*:	ea d5 80 00 	satsub\.w r5,r5,-32768
43.12084 -+ *[0-9a-f]*:	e8 d4 7f ff 	satsub\.w r4,r4,32767
43.12085 -+ *[0-9a-f]*:	fc de 00 01 	satsub\.w lr,lr,1
43.12086 -+ *[0-9a-f]*:	fc d2 f8 29 	satsub\.w r2,lr,-2007
43.12087 -+ *[0-9a-f]*:	f8 d7 fc f0 	satsub\.w r7,r12,-784
43.12088 -+ *[0-9a-f]*:	ee d4 5a 8c 	satsub\.w r4,r7,23180
43.12089 -+
43.12090 -+[0-9a-f]* <ld_d4>:
43.12091 -+ *[0-9a-f]*:	fe e0 00 00 	ld\.d r0,pc\[0\]
43.12092 -+ *[0-9a-f]*:	f8 ee ff ff 	ld\.d lr,r12\[-1\]
43.12093 -+ *[0-9a-f]*:	ea e8 80 00 	ld\.d r8,r5\[-32768\]
43.12094 -+ *[0-9a-f]*:	e8 e6 7f ff 	ld\.d r6,r4\[32767\]
43.12095 -+ *[0-9a-f]*:	fc e2 00 01 	ld\.d r2,lr\[1\]
43.12096 -+ *[0-9a-f]*:	f6 ee 39 c0 	ld\.d lr,r11\[14784\]
43.12097 -+ *[0-9a-f]*:	f2 e6 b6 27 	ld\.d r6,r9\[-18905\]
43.12098 -+ *[0-9a-f]*:	e6 e2 e7 2d 	ld\.d r2,r3\[-6355\]
43.12099 -+
43.12100 -+[0-9a-f]* <ld_w4>:
43.12101 -+ *[0-9a-f]*:	7e 0f       	ld\.w pc,pc\[0x0\]
43.12102 -+ *[0-9a-f]*:	f8 fc ff ff 	ld\.w r12,r12\[-1\]
43.12103 -+ *[0-9a-f]*:	ea f5 80 00 	ld\.w r5,r5\[-32768\]
43.12104 -+ *[0-9a-f]*:	e8 f4 7f ff 	ld\.w r4,r4\[32767\]
43.12105 -+ *[0-9a-f]*:	fc fe 00 01 	ld\.w lr,lr\[1\]
43.12106 -+ *[0-9a-f]*:	f8 f0 a9 8b 	ld\.w r0,r12\[-22133\]
43.12107 -+ *[0-9a-f]*:	fe fd af d7 	ld\.w sp,pc\[-20521\]
43.12108 -+ *[0-9a-f]*:	d7 03       	nop
43.12109 -+
43.12110 -+[0-9a-f]* <ld_sh4>:
43.12111 -+ *[0-9a-f]*:	9e 0f       	ld\.sh pc,pc\[0x0\]
43.12112 -+ *[0-9a-f]*:	f9 0c ff ff 	ld\.sh r12,r12\[-1\]
43.12113 -+ *[0-9a-f]*:	eb 05 80 00 	ld\.sh r5,r5\[-32768\]
43.12114 -+ *[0-9a-f]*:	e9 04 7f ff 	ld\.sh r4,r4\[32767\]
43.12115 -+ *[0-9a-f]*:	fd 0e 00 01 	ld\.sh lr,lr\[1\]
43.12116 -+ *[0-9a-f]*:	f5 06 78 d2 	ld\.sh r6,r10\[30930\]
43.12117 -+ *[0-9a-f]*:	f5 06 55 d5 	ld\.sh r6,r10\[21973\]
43.12118 -+ *[0-9a-f]*:	d7 03       	nop
43.12119 -+
43.12120 -+[0-9a-f]* <ld_uh4>:
43.12121 -+ *[0-9a-f]*:	9e 8f       	ld\.uh pc,pc\[0x0\]
43.12122 -+ *[0-9a-f]*:	f9 1c ff ff 	ld\.uh r12,r12\[-1\]
43.12123 -+ *[0-9a-f]*:	eb 15 80 00 	ld\.uh r5,r5\[-32768\]
43.12124 -+ *[0-9a-f]*:	e9 14 7f ff 	ld\.uh r4,r4\[32767\]
43.12125 -+ *[0-9a-f]*:	fd 1e 00 01 	ld\.uh lr,lr\[1\]
43.12126 -+ *[0-9a-f]*:	f3 11 cb d6 	ld\.uh r1,r9\[-13354\]
43.12127 -+ *[0-9a-f]*:	f7 1e 53 59 	ld\.uh lr,r11\[21337\]
43.12128 -+ *[0-9a-f]*:	d7 03       	nop
43.12129 -+
43.12130 -+[0-9a-f]* <ld_sb1>:
43.12131 -+ *[0-9a-f]*:	ff 2f 00 00 	ld\.sb pc,pc\[0\]
43.12132 -+ *[0-9a-f]*:	f9 2c ff ff 	ld\.sb r12,r12\[-1\]
43.12133 -+ *[0-9a-f]*:	eb 25 80 00 	ld\.sb r5,r5\[-32768\]
43.12134 -+ *[0-9a-f]*:	e9 24 7f ff 	ld\.sb r4,r4\[32767\]
43.12135 -+ *[0-9a-f]*:	fd 2e 00 01 	ld\.sb lr,lr\[1\]
43.12136 -+ *[0-9a-f]*:	fb 27 90 09 	ld\.sb r7,sp\[-28663\]
43.12137 -+ *[0-9a-f]*:	e3 22 e9 09 	ld\.sb r2,r1\[-5879\]
43.12138 -+ *[0-9a-f]*:	e7 2c 49 2e 	ld\.sb r12,r3\[18734\]
43.12139 -+
43.12140 -+[0-9a-f]* <ld_ub4>:
43.12141 -+ *[0-9a-f]*:	1f 8f       	ld\.ub pc,pc\[0x0\]
43.12142 -+ *[0-9a-f]*:	f9 3c ff ff 	ld\.ub r12,r12\[-1\]
43.12143 -+ *[0-9a-f]*:	eb 35 80 00 	ld\.ub r5,r5\[-32768\]
43.12144 -+ *[0-9a-f]*:	e9 34 7f ff 	ld\.ub r4,r4\[32767\]
43.12145 -+ *[0-9a-f]*:	1d 9e       	ld\.ub lr,lr\[0x1\]
43.12146 -+ *[0-9a-f]*:	e9 3f 20 55 	ld\.ub pc,r4\[8277\]
43.12147 -+ *[0-9a-f]*:	f9 35 4a e4 	ld\.ub r5,r12\[19172\]
43.12148 -+ *[0-9a-f]*:	fd 3a 66 eb 	ld\.ub r10,lr\[26347\]
43.12149 -+
43.12150 -+[0-9a-f]* <st_d4>:
43.12151 -+ *[0-9a-f]*:	fe e1 00 00 	st\.d pc\[0\],r0
43.12152 -+ *[0-9a-f]*:	f8 ef ff ff 	st\.d r12\[-1\],lr
43.12153 -+ *[0-9a-f]*:	ea e9 80 00 	st\.d r5\[-32768\],r8
43.12154 -+ *[0-9a-f]*:	e8 e7 7f ff 	st\.d r4\[32767\],r6
43.12155 -+ *[0-9a-f]*:	fc e3 00 01 	st\.d lr\[1\],r2
43.12156 -+ *[0-9a-f]*:	ea eb 33 90 	st\.d r5\[13200\],r10
43.12157 -+ *[0-9a-f]*:	ea eb 24 88 	st\.d r5\[9352\],r10
43.12158 -+ *[0-9a-f]*:	ea e5 7e 75 	st\.d r5\[32373\],r4
43.12159 -+
43.12160 -+[0-9a-f]* <st_w4>:
43.12161 -+ *[0-9a-f]*:	9f 0f       	st\.w pc\[0x0\],pc
43.12162 -+ *[0-9a-f]*:	f9 4c ff ff 	st\.w r12\[-1\],r12
43.12163 -+ *[0-9a-f]*:	eb 45 80 00 	st\.w r5\[-32768\],r5
43.12164 -+ *[0-9a-f]*:	e9 44 7f ff 	st\.w r4\[32767\],r4
43.12165 -+ *[0-9a-f]*:	fd 4e 00 01 	st\.w lr\[1\],lr
43.12166 -+ *[0-9a-f]*:	fb 47 17 f8 	st\.w sp\[6136\],r7
43.12167 -+ *[0-9a-f]*:	ed 4c 69 cf 	st\.w r6\[27087\],r12
43.12168 -+ *[0-9a-f]*:	d7 03       	nop
43.12169 -+
43.12170 -+[0-9a-f]* <st_h4>:
43.12171 -+ *[0-9a-f]*:	be 0f       	st\.h pc\[0x0\],pc
43.12172 -+ *[0-9a-f]*:	f9 5c ff ff 	st\.h r12\[-1\],r12
43.12173 -+ *[0-9a-f]*:	eb 55 80 00 	st\.h r5\[-32768\],r5
43.12174 -+ *[0-9a-f]*:	e9 54 7f ff 	st\.h r4\[32767\],r4
43.12175 -+ *[0-9a-f]*:	fd 5e 00 01 	st\.h lr\[1\],lr
43.12176 -+ *[0-9a-f]*:	e9 57 d9 16 	st\.h r4\[-9962\],r7
43.12177 -+ *[0-9a-f]*:	f3 53 c0 86 	st\.h r9\[-16250\],r3
43.12178 -+ *[0-9a-f]*:	d7 03       	nop
43.12179 -+
43.12180 -+[0-9a-f]* <st_b4>:
43.12181 -+ *[0-9a-f]*:	be 8f       	st\.b pc\[0x0\],pc
43.12182 -+ *[0-9a-f]*:	f9 6c ff ff 	st\.b r12\[-1\],r12
43.12183 -+ *[0-9a-f]*:	eb 65 80 00 	st\.b r5\[-32768\],r5
43.12184 -+ *[0-9a-f]*:	e9 64 7f ff 	st\.b r4\[32767\],r4
43.12185 -+ *[0-9a-f]*:	bc 9e       	st\.b lr\[0x1\],lr
43.12186 -+ *[0-9a-f]*:	f9 66 75 96 	st\.b r12\[30102\],r6
43.12187 -+ *[0-9a-f]*:	eb 61 71 31 	st\.b r5\[28977\],r1
43.12188 -+ *[0-9a-f]*:	e1 61 15 5e 	st\.b r0\[5470\],r1
43.12189 -+
43.12190 -+[0-9a-f]* <mfsr>:
43.12191 -+ *[0-9a-f]*:	e1 bf 00 00 	mfsr pc,0x0
43.12192 -+ *[0-9a-f]*:	e1 bc 00 ff 	mfsr r12,0x3fc
43.12193 -+ *[0-9a-f]*:	e1 b5 00 80 	mfsr r5,0x200
43.12194 -+ *[0-9a-f]*:	e1 b4 00 7f 	mfsr r4,0x1fc
43.12195 -+ *[0-9a-f]*:	e1 be 00 01 	mfsr lr,0x4
43.12196 -+ *[0-9a-f]*:	e1 b2 00 ae 	mfsr r2,0x2b8
43.12197 -+ *[0-9a-f]*:	e1 b4 00 41 	mfsr r4,0x104
43.12198 -+ *[0-9a-f]*:	e1 ba 00 fe 	mfsr r10,0x3f8
43.12199 -+
43.12200 -+[0-9a-f]* <mtsr>:
43.12201 -+ *[0-9a-f]*:	e3 bf 00 00 	mtsr 0x0,pc
43.12202 -+ *[0-9a-f]*:	e3 bc 00 ff 	mtsr 0x3fc,r12
43.12203 -+ *[0-9a-f]*:	e3 b5 00 80 	mtsr 0x200,r5
43.12204 -+ *[0-9a-f]*:	e3 b4 00 7f 	mtsr 0x1fc,r4
43.12205 -+ *[0-9a-f]*:	e3 be 00 01 	mtsr 0x4,lr
43.12206 -+ *[0-9a-f]*:	e3 ba 00 38 	mtsr 0xe0,r10
43.12207 -+ *[0-9a-f]*:	e3 bc 00 d1 	mtsr 0x344,r12
43.12208 -+ *[0-9a-f]*:	e3 b9 00 4c 	mtsr 0x130,r9
43.12209 -+
43.12210 -+[0-9a-f]* <mfdr>:
43.12211 -+ *[0-9a-f]*:	e5 bf 00 00 	mfdr pc,0x0
43.12212 -+ *[0-9a-f]*:	e5 bc 00 ff 	mfdr r12,0x3fc
43.12213 -+ *[0-9a-f]*:	e5 b5 00 80 	mfdr r5,0x200
43.12214 -+ *[0-9a-f]*:	e5 b4 00 7f 	mfdr r4,0x1fc
43.12215 -+ *[0-9a-f]*:	e5 be 00 01 	mfdr lr,0x4
43.12216 -+ *[0-9a-f]*:	e5 b6 00 e9 	mfdr r6,0x3a4
43.12217 -+ *[0-9a-f]*:	e5 b5 00 09 	mfdr r5,0x24
43.12218 -+ *[0-9a-f]*:	e5 b9 00 4b 	mfdr r9,0x12c
43.12219 -+
43.12220 -+[0-9a-f]* <mtdr>:
43.12221 -+ *[0-9a-f]*:	e7 bf 00 00 	mtdr 0x0,pc
43.12222 -+ *[0-9a-f]*:	e7 bc 00 ff 	mtdr 0x3fc,r12
43.12223 -+ *[0-9a-f]*:	e7 b5 00 80 	mtdr 0x200,r5
43.12224 -+ *[0-9a-f]*:	e7 b4 00 7f 	mtdr 0x1fc,r4
43.12225 -+ *[0-9a-f]*:	e7 be 00 01 	mtdr 0x4,lr
43.12226 -+ *[0-9a-f]*:	e7 b8 00 2d 	mtdr 0xb4,r8
43.12227 -+ *[0-9a-f]*:	e7 ba 00 b4 	mtdr 0x2d0,r10
43.12228 -+ *[0-9a-f]*:	e7 be 00 66 	mtdr 0x198,lr
43.12229 -+
43.12230 -+[0-9a-f]* <sleep>:
43.12231 -+ *[0-9a-f]*:	e9 b0 00 00 	sleep 0x0
43.12232 -+ *[0-9a-f]*:	e9 b0 00 ff 	sleep 0xff
43.12233 -+ *[0-9a-f]*:	e9 b0 00 80 	sleep 0x80
43.12234 -+ *[0-9a-f]*:	e9 b0 00 7f 	sleep 0x7f
43.12235 -+ *[0-9a-f]*:	e9 b0 00 01 	sleep 0x1
43.12236 -+ *[0-9a-f]*:	e9 b0 00 fe 	sleep 0xfe
43.12237 -+ *[0-9a-f]*:	e9 b0 00 0f 	sleep 0xf
43.12238 -+ *[0-9a-f]*:	e9 b0 00 2b 	sleep 0x2b
43.12239 -+
43.12240 -+[0-9a-f]* <sync>:
43.12241 -+ *[0-9a-f]*:	eb b0 00 00 	sync 0x0
43.12242 -+ *[0-9a-f]*:	eb b0 00 ff 	sync 0xff
43.12243 -+ *[0-9a-f]*:	eb b0 00 80 	sync 0x80
43.12244 -+ *[0-9a-f]*:	eb b0 00 7f 	sync 0x7f
43.12245 -+ *[0-9a-f]*:	eb b0 00 01 	sync 0x1
43.12246 -+ *[0-9a-f]*:	eb b0 00 a6 	sync 0xa6
43.12247 -+ *[0-9a-f]*:	eb b0 00 e6 	sync 0xe6
43.12248 -+ *[0-9a-f]*:	eb b0 00 b4 	sync 0xb4
43.12249 -+
43.12250 -+[0-9a-f]* <bld>:
43.12251 -+ *[0-9a-f]*:	ed bf 00 00 	bld pc,0x0
43.12252 -+ *[0-9a-f]*:	ed bc 00 1f 	bld r12,0x1f
43.12253 -+ *[0-9a-f]*:	ed b5 00 10 	bld r5,0x10
43.12254 -+ *[0-9a-f]*:	ed b4 00 0f 	bld r4,0xf
43.12255 -+ *[0-9a-f]*:	ed be 00 01 	bld lr,0x1
43.12256 -+ *[0-9a-f]*:	ed b9 00 0f 	bld r9,0xf
43.12257 -+ *[0-9a-f]*:	ed b0 00 04 	bld r0,0x4
43.12258 -+ *[0-9a-f]*:	ed be 00 1a 	bld lr,0x1a
43.12259 -+
43.12260 -+[0-9a-f]* <bst>:
43.12261 -+ *[0-9a-f]*:	ef bf 00 00 	bst pc,0x0
43.12262 -+ *[0-9a-f]*:	ef bc 00 1f 	bst r12,0x1f
43.12263 -+ *[0-9a-f]*:	ef b5 00 10 	bst r5,0x10
43.12264 -+ *[0-9a-f]*:	ef b4 00 0f 	bst r4,0xf
43.12265 -+ *[0-9a-f]*:	ef be 00 01 	bst lr,0x1
43.12266 -+ *[0-9a-f]*:	ef ba 00 1c 	bst r10,0x1c
43.12267 -+ *[0-9a-f]*:	ef b0 00 03 	bst r0,0x3
43.12268 -+ *[0-9a-f]*:	ef bd 00 02 	bst sp,0x2
43.12269 -+
43.12270 -+[0-9a-f]* <sats>:
43.12271 -+ *[0-9a-f]*:	f1 bf 00 00 	sats pc,0x0
43.12272 -+ *[0-9a-f]*:	f1 bc 03 ff 	sats r12>>0x1f,0x1f
43.12273 -+ *[0-9a-f]*:	f1 b5 02 10 	sats r5>>0x10,0x10
43.12274 -+ *[0-9a-f]*:	f1 b4 01 ef 	sats r4>>0xf,0xf
43.12275 -+ *[0-9a-f]*:	f1 be 00 21 	sats lr>>0x1,0x1
43.12276 -+ *[0-9a-f]*:	f1 ba 02 63 	sats r10>>0x3,0x13
43.12277 -+ *[0-9a-f]*:	f1 ba 03 42 	sats r10>>0x2,0x1a
43.12278 -+ *[0-9a-f]*:	f1 b1 00 34 	sats r1>>0x14,0x1
43.12279 -+
43.12280 -+[0-9a-f]* <satu>:
43.12281 -+ *[0-9a-f]*:	f1 bf 04 00 	satu pc,0x0
43.12282 -+ *[0-9a-f]*:	f1 bc 07 ff 	satu r12>>0x1f,0x1f
43.12283 -+ *[0-9a-f]*:	f1 b5 06 10 	satu r5>>0x10,0x10
43.12284 -+ *[0-9a-f]*:	f1 b4 05 ef 	satu r4>>0xf,0xf
43.12285 -+ *[0-9a-f]*:	f1 be 04 21 	satu lr>>0x1,0x1
43.12286 -+ *[0-9a-f]*:	f1 bf 04 e5 	satu pc>>0x5,0x7
43.12287 -+ *[0-9a-f]*:	f1 b7 04 a5 	satu r7>>0x5,0x5
43.12288 -+ *[0-9a-f]*:	f1 b2 06 7a 	satu r2>>0x1a,0x13
43.12289 -+
43.12290 -+[0-9a-f]* <satrnds>:
43.12291 -+ *[0-9a-f]*:	f3 bf 00 00 	satrnds pc,0x0
43.12292 -+ *[0-9a-f]*:	f3 bc 03 ff 	satrnds r12>>0x1f,0x1f
43.12293 -+ *[0-9a-f]*:	f3 b5 02 10 	satrnds r5>>0x10,0x10
43.12294 -+ *[0-9a-f]*:	f3 b4 01 ef 	satrnds r4>>0xf,0xf
43.12295 -+ *[0-9a-f]*:	f3 be 00 21 	satrnds lr>>0x1,0x1
43.12296 -+ *[0-9a-f]*:	f3 b0 02 75 	satrnds r0>>0x15,0x13
43.12297 -+ *[0-9a-f]*:	f3 bd 00 40 	satrnds sp,0x2
43.12298 -+ *[0-9a-f]*:	f3 b7 03 a6 	satrnds r7>>0x6,0x1d
43.12299 -+
43.12300 -+[0-9a-f]* <satrndu>:
43.12301 -+ *[0-9a-f]*:	f3 bf 04 00 	satrndu pc,0x0
43.12302 -+ *[0-9a-f]*:	f3 bc 07 ff 	satrndu r12>>0x1f,0x1f
43.12303 -+ *[0-9a-f]*:	f3 b5 06 10 	satrndu r5>>0x10,0x10
43.12304 -+ *[0-9a-f]*:	f3 b4 05 ef 	satrndu r4>>0xf,0xf
43.12305 -+ *[0-9a-f]*:	f3 be 04 21 	satrndu lr>>0x1,0x1
43.12306 -+ *[0-9a-f]*:	f3 bc 07 40 	satrndu r12,0x1a
43.12307 -+ *[0-9a-f]*:	f3 b4 04 75 	satrndu r4>>0x15,0x3
43.12308 -+ *[0-9a-f]*:	f3 ba 06 03 	satrndu r10>>0x3,0x10
43.12309 -+
43.12310 -+[0-9a-f]* <subfc>:
43.12311 -+ *[0-9a-f]*:	f5 bf 00 00 	subfeq pc,0
43.12312 -+ *[0-9a-f]*:	f5 bc 0f ff 	subfal r12,-1
43.12313 -+ *[0-9a-f]*:	f5 b5 08 80 	subfls r5,-128
43.12314 -+ *[0-9a-f]*:	f5 b4 07 7f 	subfpl r4,127
43.12315 -+ *[0-9a-f]*:	f5 be 01 01 	subfne lr,1
43.12316 -+ *[0-9a-f]*:	f5 ba 08 08 	subfls r10,8
43.12317 -+ *[0-9a-f]*:	f5 bb 0d 63 	subfvc r11,99
43.12318 -+ *[0-9a-f]*:	f5 b2 0c 49 	subfvs r2,73
43.12319 -+
43.12320 -+[0-9a-f]* <subc>:
43.12321 -+ *[0-9a-f]*:	f7 bf 00 00 	subeq pc,0
43.12322 -+ *[0-9a-f]*:	f7 bc 0f ff 	subal r12,-1
43.12323 -+ *[0-9a-f]*:	f7 b5 08 80 	subls r5,-128
43.12324 -+ *[0-9a-f]*:	f7 b4 07 7f 	subpl r4,127
43.12325 -+ *[0-9a-f]*:	f7 be 01 01 	subne lr,1
43.12326 -+ *[0-9a-f]*:	f7 bc 08 76 	subls r12,118
43.12327 -+ *[0-9a-f]*:	f7 be 0d f4 	subvc lr,-12
43.12328 -+ *[0-9a-f]*:	f7 b4 06 f3 	submi r4,-13
43.12329 -+
43.12330 -+[0-9a-f]* <movc2>:
43.12331 -+ *[0-9a-f]*:	f9 bf 00 00 	moveq pc,0
43.12332 -+ *[0-9a-f]*:	f9 bc 0f ff 	moval r12,-1
43.12333 -+ *[0-9a-f]*:	f9 b5 08 80 	movls r5,-128
43.12334 -+ *[0-9a-f]*:	f9 b4 07 7f 	movpl r4,127
43.12335 -+ *[0-9a-f]*:	f9 be 01 01 	movne lr,1
43.12336 -+ *[0-9a-f]*:	f9 b3 05 86 	movlt r3,-122
43.12337 -+ *[0-9a-f]*:	f9 b8 0d 02 	movvc r8,2
43.12338 -+ *[0-9a-f]*:	f9 b7 01 91 	movne r7,-111
43.12339 -+
43.12340 -+[0-9a-f]* <cp_b>:
43.12341 -+ *[0-9a-f]*:	e0 0f 18 00 	cp\.b pc,r0
43.12342 -+ *[0-9a-f]*:	fe 00 18 00 	cp\.b r0,pc
43.12343 -+ *[0-9a-f]*:	f0 07 18 00 	cp\.b r7,r8
43.12344 -+ *[0-9a-f]*:	ee 08 18 00 	cp\.b r8,r7
43.12345 -+
43.12346 -+[0-9a-f]* <cp_h>:
43.12347 -+ *[0-9a-f]*:	e0 0f 19 00 	cp\.h pc,r0
43.12348 -+ *[0-9a-f]*:	fe 00 19 00 	cp\.h r0,pc
43.12349 -+ *[0-9a-f]*:	f0 07 19 00 	cp\.h r7,r8
43.12350 -+ *[0-9a-f]*:	ee 08 19 00 	cp\.h r8,r7
43.12351 -+
43.12352 -+[0-9a-f]* <ldm>:
43.12353 -+ *[0-9a-f]*:	e1 cf 00 7e 	ldm pc,r1-r6
43.12354 -+ *[0-9a-f]*:	e1 cc ff ff 	ldm r12,r0-pc
43.12355 -+ *[0-9a-f]*:	e1 c5 80 00 	ldm r5,pc
43.12356 -+ *[0-9a-f]*:	e1 c4 7f ff 	ldm r4,r0-lr
43.12357 -+ *[0-9a-f]*:	e1 ce 00 01 	ldm lr,r0
43.12358 -+ *[0-9a-f]*:	e1 c9 40 22 	ldm r9,r1,r5,lr
43.12359 -+ *[0-9a-f]*:	e1 cb 81 ec 	ldm r11,r2-r3,r5-r8,pc
43.12360 -+ *[0-9a-f]*:	e1 c6 a2 09 	ldm r6,r0,r3,r9,sp,pc
43.12361 -+
43.12362 -+[0-9a-f]* <ldm_pu>:
43.12363 -+ *[0-9a-f]*:	e3 cf 03 c0 	ldm pc\+\+,r6-r9
43.12364 -+ *[0-9a-f]*:	e3 cc ff ff 	ldm r12\+\+,r0-pc
43.12365 -+ *[0-9a-f]*:	e3 c5 80 00 	ldm r5\+\+,pc
43.12366 -+ *[0-9a-f]*:	e3 c4 7f ff 	ldm r4\+\+,r0-lr
43.12367 -+ *[0-9a-f]*:	e3 ce 00 01 	ldm lr\+\+,r0
43.12368 -+ *[0-9a-f]*:	e3 cc d5 38 	ldm r12\+\+,r3-r5,r8,r10,r12,lr-pc
43.12369 -+ *[0-9a-f]*:	e3 ca c0 74 	ldm r10\+\+,r2,r4-r6,lr-pc
43.12370 -+ *[0-9a-f]*:	e3 c6 7e 1a 	ldm r6\+\+,r1,r3-r4,r9-lr
43.12371 -+
43.12372 -+[0-9a-f]* <ldmts>:
43.12373 -+ *[0-9a-f]*:	e5 cf 01 80 	ldmts pc,r7-r8
43.12374 -+ *[0-9a-f]*:	e5 cc ff ff 	ldmts r12,r0-pc
43.12375 -+ *[0-9a-f]*:	e5 c5 80 00 	ldmts r5,pc
43.12376 -+ *[0-9a-f]*:	e5 c4 7f ff 	ldmts r4,r0-lr
43.12377 -+ *[0-9a-f]*:	e5 ce 00 01 	ldmts lr,r0
43.12378 -+ *[0-9a-f]*:	e5 c0 18 06 	ldmts r0,r1-r2,r11-r12
43.12379 -+ *[0-9a-f]*:	e5 ce 61 97 	ldmts lr,r0-r2,r4,r7-r8,sp-lr
43.12380 -+ *[0-9a-f]*:	e5 cc c2 3b 	ldmts r12,r0-r1,r3-r5,r9,lr-pc
43.12381 -+
43.12382 -+[0-9a-f]* <ldmts_pu>:
43.12383 -+ *[0-9a-f]*:	e7 cf 02 00 	ldmts pc\+\+,r9
43.12384 -+ *[0-9a-f]*:	e7 cc ff ff 	ldmts r12\+\+,r0-pc
43.12385 -+ *[0-9a-f]*:	e7 c5 80 00 	ldmts r5\+\+,pc
43.12386 -+ *[0-9a-f]*:	e7 c4 7f ff 	ldmts r4\+\+,r0-lr
43.12387 -+ *[0-9a-f]*:	e7 ce 00 01 	ldmts lr\+\+,r0
43.12388 -+ *[0-9a-f]*:	e7 cd 0a bd 	ldmts sp\+\+,r0,r2-r5,r7,r9,r11
43.12389 -+ *[0-9a-f]*:	e7 c5 0c 8e 	ldmts r5\+\+,r1-r3,r7,r10-r11
43.12390 -+ *[0-9a-f]*:	e7 c8 a1 9c 	ldmts r8\+\+,r2-r4,r7-r8,sp,pc
43.12391 -+
43.12392 -+[0-9a-f]* <stm>:
43.12393 -+ *[0-9a-f]*:	e9 cf 00 80 	stm pc,r7
43.12394 -+ *[0-9a-f]*:	e9 cc ff ff 	stm r12,r0-pc
43.12395 -+ *[0-9a-f]*:	e9 c5 80 00 	stm r5,pc
43.12396 -+ *[0-9a-f]*:	e9 c4 7f ff 	stm r4,r0-lr
43.12397 -+ *[0-9a-f]*:	e9 ce 00 01 	stm lr,r0
43.12398 -+ *[0-9a-f]*:	e9 cd 49 2c 	stm sp,r2-r3,r5,r8,r11,lr
43.12399 -+ *[0-9a-f]*:	e9 c4 4c 5f 	stm r4,r0-r4,r6,r10-r11,lr
43.12400 -+ *[0-9a-f]*:	e9 c9 f2 22 	stm r9,r1,r5,r9,r12-pc
43.12401 -+
43.12402 -+[0-9a-f]* <stm_pu>:
43.12403 -+ *[0-9a-f]*:	eb cf 00 70 	stm --pc,r4-r6
43.12404 -+ *[0-9a-f]*:	eb cc ff ff 	stm --r12,r0-pc
43.12405 -+ *[0-9a-f]*:	eb c5 80 00 	stm --r5,pc
43.12406 -+ *[0-9a-f]*:	eb c4 7f ff 	stm --r4,r0-lr
43.12407 -+ *[0-9a-f]*:	eb ce 00 01 	stm --lr,r0
43.12408 -+ *[0-9a-f]*:	eb cb fb f1 	stm --r11,r0,r4-r9,r11-pc
43.12409 -+ *[0-9a-f]*:	eb cb 56 09 	stm --r11,r0,r3,r9-r10,r12,lr
43.12410 -+ *[0-9a-f]*:	eb c6 63 04 	stm --r6,r2,r8-r9,sp-lr
43.12411 -+
43.12412 -+[0-9a-f]* <stmts>:
43.12413 -+ *[0-9a-f]*:	ed cf 01 00 	stmts pc,r8
43.12414 -+ *[0-9a-f]*:	ed cc ff ff 	stmts r12,r0-pc
43.12415 -+ *[0-9a-f]*:	ed c5 80 00 	stmts r5,pc
43.12416 -+ *[0-9a-f]*:	ed c4 7f ff 	stmts r4,r0-lr
43.12417 -+ *[0-9a-f]*:	ed ce 00 01 	stmts lr,r0
43.12418 -+ *[0-9a-f]*:	ed c1 c6 5b 	stmts r1,r0-r1,r3-r4,r6,r9-r10,lr-pc
43.12419 -+ *[0-9a-f]*:	ed c3 1d c1 	stmts r3,r0,r6-r8,r10-r12
43.12420 -+ *[0-9a-f]*:	ed cb d6 d1 	stmts r11,r0,r4,r6-r7,r9-r10,r12,lr-pc
43.12421 -+
43.12422 -+[0-9a-f]* <stmts_pu>:
43.12423 -+ *[0-9a-f]*:	ef cf 01 c0 	stmts --pc,r6-r8
43.12424 -+ *[0-9a-f]*:	ef cc ff ff 	stmts --r12,r0-pc
43.12425 -+ *[0-9a-f]*:	ef c5 80 00 	stmts --r5,pc
43.12426 -+ *[0-9a-f]*:	ef c4 7f ff 	stmts --r4,r0-lr
43.12427 -+ *[0-9a-f]*:	ef ce 00 01 	stmts --lr,r0
43.12428 -+ *[0-9a-f]*:	ef c2 36 19 	stmts --r2,r0,r3-r4,r9-r10,r12-sp
43.12429 -+ *[0-9a-f]*:	ef c3 c0 03 	stmts --r3,r0-r1,lr-pc
43.12430 -+ *[0-9a-f]*:	ef c0 44 7d 	stmts --r0,r0,r2-r6,r10,lr
43.12431 -+
43.12432 -+[0-9a-f]* <ldins_h>:
43.12433 -+ *[0-9a-f]*:	ff df 00 00 	ldins\.h pc:b,pc\[0\]
43.12434 -+ *[0-9a-f]*:	f9 dc 1f ff 	ldins\.h r12:t,r12\[-2\]
43.12435 -+ *[0-9a-f]*:	eb d5 18 00 	ldins\.h r5:t,r5\[-4096\]
43.12436 -+ *[0-9a-f]*:	e9 d4 07 ff 	ldins\.h r4:b,r4\[4094\]
43.12437 -+ *[0-9a-f]*:	fd de 10 01 	ldins\.h lr:t,lr\[2\]
43.12438 -+ *[0-9a-f]*:	fd d0 13 c5 	ldins\.h r0:t,lr\[1930\]
43.12439 -+ *[0-9a-f]*:	ef d3 0e f5 	ldins\.h r3:b,r7\[-534\]
43.12440 -+ *[0-9a-f]*:	f9 d2 0b 9a 	ldins\.h r2:b,r12\[-2252\]
43.12441 -+
43.12442 -+[0-9a-f]* <ldins_b>:
43.12443 -+ *[0-9a-f]*:	ff df 40 00 	ldins\.b pc:b,pc\[0\]
43.12444 -+ *[0-9a-f]*:	f9 dc 7f ff 	ldins\.b r12:t,r12\[-1\]
43.12445 -+ *[0-9a-f]*:	eb d5 68 00 	ldins\.b r5:u,r5\[-2048\]
43.12446 -+ *[0-9a-f]*:	e9 d4 57 ff 	ldins\.b r4:l,r4\[2047\]
43.12447 -+ *[0-9a-f]*:	fd de 50 01 	ldins\.b lr:l,lr\[1\]
43.12448 -+ *[0-9a-f]*:	e9 d6 7d 6a 	ldins\.b r6:t,r4\[-662\]
43.12449 -+ *[0-9a-f]*:	e3 d5 4f 69 	ldins\.b r5:b,r1\[-151\]
43.12450 -+ *[0-9a-f]*:	f7 da 78 7d 	ldins\.b r10:t,r11\[-1923\]
43.12451 -+
43.12452 -+[0-9a-f]* <ldswp_sh>:
43.12453 -+ *[0-9a-f]*:	ff df 20 00 	ldswp\.sh pc,pc\[0\]
43.12454 -+ *[0-9a-f]*:	f9 dc 2f ff 	ldswp\.sh r12,r12\[-2\]
43.12455 -+ *[0-9a-f]*:	eb d5 28 00 	ldswp\.sh r5,r5\[-4096\]
43.12456 -+ *[0-9a-f]*:	e9 d4 27 ff 	ldswp\.sh r4,r4\[4094\]
43.12457 -+ *[0-9a-f]*:	fd de 20 01 	ldswp\.sh lr,lr\[2\]
43.12458 -+ *[0-9a-f]*:	f5 d9 27 84 	ldswp\.sh r9,r10\[3848\]
43.12459 -+ *[0-9a-f]*:	f9 d4 2c 04 	ldswp\.sh r4,r12\[-2040\]
43.12460 -+ *[0-9a-f]*:	e5 da 26 08 	ldswp\.sh r10,r2\[3088\]
43.12461 -+
43.12462 -+[0-9a-f]* <ldswp_uh>:
43.12463 -+ *[0-9a-f]*:	ff df 30 00 	ldswp\.uh pc,pc\[0\]
43.12464 -+ *[0-9a-f]*:	f9 dc 3f ff 	ldswp\.uh r12,r12\[-2\]
43.12465 -+ *[0-9a-f]*:	eb d5 38 00 	ldswp\.uh r5,r5\[-4096\]
43.12466 -+ *[0-9a-f]*:	e9 d4 37 ff 	ldswp\.uh r4,r4\[4094\]
43.12467 -+ *[0-9a-f]*:	fd de 30 01 	ldswp\.uh lr,lr\[2\]
43.12468 -+ *[0-9a-f]*:	f3 d4 37 46 	ldswp\.uh r4,r9\[3724\]
43.12469 -+ *[0-9a-f]*:	fb de 3c bc 	ldswp\.uh lr,sp\[-1672\]
43.12470 -+ *[0-9a-f]*:	f9 d8 38 7d 	ldswp\.uh r8,r12\[-3846\]
43.12471 -+
43.12472 -+[0-9a-f]* <ldswp_w>:
43.12473 -+ *[0-9a-f]*:	ff df 80 00 	ldswp\.w pc,pc\[0\]
43.12474 -+ *[0-9a-f]*:	f9 dc 8f ff 	ldswp\.w r12,r12\[-4\]
43.12475 -+ *[0-9a-f]*:	eb d5 88 00 	ldswp\.w r5,r5\[-8192\]
43.12476 -+ *[0-9a-f]*:	e9 d4 87 ff 	ldswp\.w r4,r4\[8188\]
43.12477 -+ *[0-9a-f]*:	fd de 80 01 	ldswp\.w lr,lr\[4\]
43.12478 -+ *[0-9a-f]*:	ef dd 81 d1 	ldswp\.w sp,r7\[1860\]
43.12479 -+ *[0-9a-f]*:	eb df 8c c1 	ldswp\.w pc,r5\[-3324\]
43.12480 -+ *[0-9a-f]*:	f5 dc 8c c8 	ldswp\.w r12,r10\[-3296\]
43.12481 -+
43.12482 -+[0-9a-f]* <stswp_h>:
43.12483 -+ *[0-9a-f]*:	ff df 90 00 	stswp\.h pc\[0\],pc
43.12484 -+ *[0-9a-f]*:	f9 dc 9f ff 	stswp\.h r12\[-2\],r12
43.12485 -+ *[0-9a-f]*:	eb d5 98 00 	stswp\.h r5\[-4096\],r5
43.12486 -+ *[0-9a-f]*:	e9 d4 97 ff 	stswp\.h r4\[4094\],r4
43.12487 -+ *[0-9a-f]*:	fd de 90 01 	stswp\.h lr\[2\],lr
43.12488 -+ *[0-9a-f]*:	ef da 90 20 	stswp\.h r7\[64\],r10
43.12489 -+ *[0-9a-f]*:	f5 d2 95 e8 	stswp\.h r10\[3024\],r2
43.12490 -+ *[0-9a-f]*:	e1 da 9b 74 	stswp\.h r0\[-2328\],r10
43.12491 -+
43.12492 -+[0-9a-f]* <stswp_w>:
43.12493 -+ *[0-9a-f]*:	ff df a0 00 	stswp\.w pc\[0\],pc
43.12494 -+ *[0-9a-f]*:	f9 dc af ff 	stswp\.w r12\[-4\],r12
43.12495 -+ *[0-9a-f]*:	eb d5 a8 00 	stswp\.w r5\[-8192\],r5
43.12496 -+ *[0-9a-f]*:	e9 d4 a7 ff 	stswp\.w r4\[8188\],r4
43.12497 -+ *[0-9a-f]*:	fd de a0 01 	stswp\.w lr\[4\],lr
43.12498 -+ *[0-9a-f]*:	ff d8 a1 21 	stswp\.w pc\[1156\],r8
43.12499 -+ *[0-9a-f]*:	fb da a7 ce 	stswp\.w sp\[7992\],r10
43.12500 -+ *[0-9a-f]*:	f1 d5 ae db 	stswp\.w r8\[-1172\],r5
43.12501 -+
43.12502 -+[0-9a-f]* <and2>:
43.12503 -+ *[0-9a-f]*:	ff ef 00 0f 	and pc,pc,pc
43.12504 -+ *[0-9a-f]*:	f9 ec 01 fc 	and r12,r12,r12<<0x1f
43.12505 -+ *[0-9a-f]*:	eb e5 01 05 	and r5,r5,r5<<0x10
43.12506 -+ *[0-9a-f]*:	e9 e4 00 f4 	and r4,r4,r4<<0xf
43.12507 -+ *[0-9a-f]*:	fd ee 00 1e 	and lr,lr,lr<<0x1
43.12508 -+ *[0-9a-f]*:	e5 e1 00 1a 	and r10,r2,r1<<0x1
43.12509 -+ *[0-9a-f]*:	f1 eb 01 bc 	and r12,r8,r11<<0x1b
43.12510 -+ *[0-9a-f]*:	ef e0 00 3a 	and r10,r7,r0<<0x3
43.12511 -+
43.12512 -+[0-9a-f]* <and3>:
43.12513 -+ *[0-9a-f]*:	ff ef 02 0f 	and pc,pc,pc
43.12514 -+ *[0-9a-f]*:	f9 ec 03 fc 	and r12,r12,r12>>0x1f
43.12515 -+ *[0-9a-f]*:	eb e5 03 05 	and r5,r5,r5>>0x10
43.12516 -+ *[0-9a-f]*:	e9 e4 02 f4 	and r4,r4,r4>>0xf
43.12517 -+ *[0-9a-f]*:	fd ee 02 1e 	and lr,lr,lr>>0x1
43.12518 -+ *[0-9a-f]*:	f1 e7 03 1c 	and r12,r8,r7>>0x11
43.12519 -+ *[0-9a-f]*:	e9 e9 03 4f 	and pc,r4,r9>>0x14
43.12520 -+ *[0-9a-f]*:	f3 ea 02 ca 	and r10,r9,r10>>0xc
43.12521 -+
43.12522 -+[0-9a-f]* <or2>:
43.12523 -+ *[0-9a-f]*:	ff ef 10 0f 	or pc,pc,pc
43.12524 -+ *[0-9a-f]*:	f9 ec 11 fc 	or r12,r12,r12<<0x1f
43.12525 -+ *[0-9a-f]*:	eb e5 11 05 	or r5,r5,r5<<0x10
43.12526 -+ *[0-9a-f]*:	e9 e4 10 f4 	or r4,r4,r4<<0xf
43.12527 -+ *[0-9a-f]*:	fd ee 10 1e 	or lr,lr,lr<<0x1
43.12528 -+ *[0-9a-f]*:	fb eb 11 d8 	or r8,sp,r11<<0x1d
43.12529 -+ *[0-9a-f]*:	f3 e2 11 cf 	or pc,r9,r2<<0x1c
43.12530 -+ *[0-9a-f]*:	e3 e2 10 35 	or r5,r1,r2<<0x3
43.12531 -+
43.12532 -+[0-9a-f]* <or3>:
43.12533 -+ *[0-9a-f]*:	ff ef 12 0f 	or pc,pc,pc
43.12534 -+ *[0-9a-f]*:	f9 ec 13 fc 	or r12,r12,r12>>0x1f
43.12535 -+ *[0-9a-f]*:	eb e5 13 05 	or r5,r5,r5>>0x10
43.12536 -+ *[0-9a-f]*:	e9 e4 12 f4 	or r4,r4,r4>>0xf
43.12537 -+ *[0-9a-f]*:	fd ee 12 1e 	or lr,lr,lr>>0x1
43.12538 -+ *[0-9a-f]*:	fb ed 12 21 	or r1,sp,sp>>0x2
43.12539 -+ *[0-9a-f]*:	e3 e1 13 d0 	or r0,r1,r1>>0x1d
43.12540 -+ *[0-9a-f]*:	f9 e8 12 84 	or r4,r12,r8>>0x8
43.12541 -+
43.12542 -+[0-9a-f]* <eor2>:
43.12543 -+ *[0-9a-f]*:	ff ef 20 0f 	eor pc,pc,pc
43.12544 -+ *[0-9a-f]*:	f9 ec 21 fc 	eor r12,r12,r12<<0x1f
43.12545 -+ *[0-9a-f]*:	eb e5 21 05 	eor r5,r5,r5<<0x10
43.12546 -+ *[0-9a-f]*:	e9 e4 20 f4 	eor r4,r4,r4<<0xf
43.12547 -+ *[0-9a-f]*:	fd ee 20 1e 	eor lr,lr,lr<<0x1
43.12548 -+ *[0-9a-f]*:	f3 e4 20 ba 	eor r10,r9,r4<<0xb
43.12549 -+ *[0-9a-f]*:	e1 e1 21 f4 	eor r4,r0,r1<<0x1f
43.12550 -+ *[0-9a-f]*:	e5 ec 20 d6 	eor r6,r2,r12<<0xd
43.12551 -+
43.12552 -+[0-9a-f]* <eor3>:
43.12553 -+ *[0-9a-f]*:	ff ef 22 0f 	eor pc,pc,pc
43.12554 -+ *[0-9a-f]*:	f9 ec 23 fc 	eor r12,r12,r12>>0x1f
43.12555 -+ *[0-9a-f]*:	eb e5 23 05 	eor r5,r5,r5>>0x10
43.12556 -+ *[0-9a-f]*:	e9 e4 22 f4 	eor r4,r4,r4>>0xf
43.12557 -+ *[0-9a-f]*:	fd ee 22 1e 	eor lr,lr,lr>>0x1
43.12558 -+ *[0-9a-f]*:	eb e5 23 65 	eor r5,r5,r5>>0x16
43.12559 -+ *[0-9a-f]*:	e3 ee 22 3a 	eor r10,r1,lr>>0x3
43.12560 -+ *[0-9a-f]*:	fd ed 23 a7 	eor r7,lr,sp>>0x1a
43.12561 -+
43.12562 -+[0-9a-f]* <sthh_w2>:
43.12563 -+ *[0-9a-f]*:	ff ef 8f 0f 	sthh\.w pc\[pc\],pc:b,pc:b
43.12564 -+ *[0-9a-f]*:	f9 ec bc 3c 	sthh\.w r12\[r12<<0x3\],r12:t,r12:t
43.12565 -+ *[0-9a-f]*:	eb e5 b5 25 	sthh\.w r5\[r5<<0x2\],r5:t,r5:t
43.12566 -+ *[0-9a-f]*:	e9 e4 84 14 	sthh\.w r4\[r4<<0x1\],r4:b,r4:b
43.12567 -+ *[0-9a-f]*:	fd ee be 1e 	sthh\.w lr\[lr<<0x1\],lr:t,lr:t
43.12568 -+ *[0-9a-f]*:	e3 ec b6 3d 	sthh\.w sp\[r6<<0x3\],r1:t,r12:t
43.12569 -+ *[0-9a-f]*:	f3 e9 b6 06 	sthh\.w r6\[r6\],r9:t,r9:t
43.12570 -+ *[0-9a-f]*:	e1 eb 93 0a 	sthh\.w r10\[r3\],r0:b,r11:t
43.12571 -+
43.12572 -+[0-9a-f]* <sthh_w1>:
43.12573 -+ *[0-9a-f]*:	ff ef c0 0f 	sthh\.w pc\[0x0\],pc:b,pc:b
43.12574 -+ *[0-9a-f]*:	f9 ec ff fc 	sthh\.w r12\[0x3fc\],r12:t,r12:t
43.12575 -+ *[0-9a-f]*:	eb e5 f8 05 	sthh\.w r5\[0x200\],r5:t,r5:t
43.12576 -+ *[0-9a-f]*:	e9 e4 c7 f4 	sthh\.w r4\[0x1fc\],r4:b,r4:b
43.12577 -+ *[0-9a-f]*:	fd ee f0 1e 	sthh\.w lr\[0x4\],lr:t,lr:t
43.12578 -+ *[0-9a-f]*:	f3 e0 e6 54 	sthh\.w r4\[0x194\],r9:t,r0:b
43.12579 -+ *[0-9a-f]*:	e5 ea e5 78 	sthh\.w r8\[0x15c\],r2:t,r10:b
43.12580 -+ *[0-9a-f]*:	f3 e2 c2 bd 	sthh\.w sp\[0xac\],r9:b,r2:b
43.12581 -+
43.12582 -+[0-9a-f]* <cop>:
43.12583 -+ *[0-9a-f]*:	e1 a0 00 00 	cop cp0,cr0,cr0,cr0,0x0
43.12584 -+ *[0-9a-f]*:	e7 af ff ff 	cop cp7,cr15,cr15,cr15,0x7f
43.12585 -+ *[0-9a-f]*:	e3 a8 75 55 	cop cp3,cr5,cr5,cr5,0x31
43.12586 -+ *[0-9a-f]*:	e3 a8 44 44 	cop cp2,cr4,cr4,cr4,0x30
43.12587 -+ *[0-9a-f]*:	e5 ad a8 37 	cop cp5,cr8,cr3,cr7,0x5a
43.12588 -+
43.12589 -+[0-9a-f]* <ldc_w1>:
43.12590 -+ *[0-9a-f]*:	e9 a0 00 00 	ldc\.w cp0,cr0,r0\[0x0\]
43.12591 -+ *[0-9a-f]*:	e9 af ef ff 	ldc\.w cp7,cr15,pc\[0x3fc\]
43.12592 -+ *[0-9a-f]*:	e9 a5 65 80 	ldc\.w cp3,cr5,r5\[0x200\]
43.12593 -+ *[0-9a-f]*:	e9 a4 44 7f 	ldc\.w cp2,cr4,r4\[0x1fc\]
43.12594 -+ *[0-9a-f]*:	e9 ad 89 24 	ldc\.w cp4,cr9,sp\[0x90\]
43.12595 -+
43.12596 -+[0-9a-f]* <ldc_w2>:
43.12597 -+ *[0-9a-f]*:	ef a0 00 40 	ldc\.w cp0,cr0,--r0
43.12598 -+ *[0-9a-f]*:	ef af ef 40 	ldc\.w cp7,cr15,--pc
43.12599 -+ *[0-9a-f]*:	ef a5 65 40 	ldc\.w cp3,cr5,--r5
43.12600 -+ *[0-9a-f]*:	ef a4 44 40 	ldc\.w cp2,cr4,--r4
43.12601 -+ *[0-9a-f]*:	ef ad 89 40 	ldc\.w cp4,cr9,--sp
43.12602 -+
43.12603 -+[0-9a-f]* <ldc_w3>:
43.12604 -+ *[0-9a-f]*:	ef a0 10 00 	ldc\.w cp0,cr0,r0\[r0\]
43.12605 -+ *[0-9a-f]*:	ef af ff 3f 	ldc\.w cp7,cr15,pc\[pc<<0x3\]
43.12606 -+ *[0-9a-f]*:	ef a5 75 24 	ldc\.w cp3,cr5,r5\[r4<<0x2\]
43.12607 -+ *[0-9a-f]*:	ef a4 54 13 	ldc\.w cp2,cr4,r4\[r3<<0x1\]
43.12608 -+ *[0-9a-f]*:	ef ad 99 0c 	ldc\.w cp4,cr9,sp\[r12\]
43.12609 -+
43.12610 -+[0-9a-f]* <ldc_d1>:
43.12611 -+ *[0-9a-f]*:	e9 a0 10 00 	ldc\.d cp0,cr0,r0\[0x0\]
43.12612 -+ *[0-9a-f]*:	e9 af fe ff 	ldc\.d cp7,cr14,pc\[0x3fc\]
43.12613 -+ *[0-9a-f]*:	e9 a5 76 80 	ldc\.d cp3,cr6,r5\[0x200\]
43.12614 -+ *[0-9a-f]*:	e9 a4 54 7f 	ldc\.d cp2,cr4,r4\[0x1fc\]
43.12615 -+ *[0-9a-f]*:	e9 ad 98 24 	ldc\.d cp4,cr8,sp\[0x90\]
43.12616 -+
43.12617 -+[0-9a-f]* <ldc_d2>:
43.12618 -+ *[0-9a-f]*:	ef a0 00 50 	ldc\.d cp0,cr0,--r0
43.12619 -+ *[0-9a-f]*:	ef af ee 50 	ldc\.d cp7,cr14,--pc
43.12620 -+ *[0-9a-f]*:	ef a5 66 50 	ldc\.d cp3,cr6,--r5
43.12621 -+ *[0-9a-f]*:	ef a4 44 50 	ldc\.d cp2,cr4,--r4
43.12622 -+ *[0-9a-f]*:	ef ad 88 50 	ldc\.d cp4,cr8,--sp
43.12623 -+
43.12624 -+[0-9a-f]* <ldc_d3>:
43.12625 -+ *[0-9a-f]*:	ef a0 10 40 	ldc\.d cp0,cr0,r0\[r0\]
43.12626 -+ *[0-9a-f]*:	ef af fe 7f 	ldc\.d cp7,cr14,pc\[pc<<0x3\]
43.12627 -+ *[0-9a-f]*:	ef a5 76 64 	ldc\.d cp3,cr6,r5\[r4<<0x2\]
43.12628 -+ *[0-9a-f]*:	ef a4 54 53 	ldc\.d cp2,cr4,r4\[r3<<0x1\]
43.12629 -+ *[0-9a-f]*:	ef ad 98 4c 	ldc\.d cp4,cr8,sp\[r12\]
43.12630 -+
43.12631 -+[0-9a-f]* <stc_w1>:
43.12632 -+ *[0-9a-f]*:	eb a0 00 00 	stc\.w cp0,r0\[0x0\],cr0
43.12633 -+ *[0-9a-f]*:	eb af ef ff 	stc\.w cp7,pc\[0x3fc\],cr15
43.12634 -+ *[0-9a-f]*:	eb a5 65 80 	stc\.w cp3,r5\[0x200\],cr5
43.12635 -+ *[0-9a-f]*:	eb a4 44 7f 	stc\.w cp2,r4\[0x1fc\],cr4
43.12636 -+ *[0-9a-f]*:	eb ad 89 24 	stc\.w cp4,sp\[0x90\],cr9
43.12637 -+
43.12638 -+[0-9a-f]* <stc_w2>:
43.12639 -+ *[0-9a-f]*:	ef a0 00 60 	stc\.w cp0,r0\+\+,cr0
43.12640 -+ *[0-9a-f]*:	ef af ef 60 	stc\.w cp7,pc\+\+,cr15
43.12641 -+ *[0-9a-f]*:	ef a5 65 60 	stc\.w cp3,r5\+\+,cr5
43.12642 -+ *[0-9a-f]*:	ef a4 44 60 	stc\.w cp2,r4\+\+,cr4
43.12643 -+ *[0-9a-f]*:	ef ad 89 60 	stc\.w cp4,sp\+\+,cr9
43.12644 -+
43.12645 -+[0-9a-f]* <stc_w3>:
43.12646 -+ *[0-9a-f]*:	ef a0 10 80 	stc\.w cp0,r0\[r0\],cr0
43.12647 -+ *[0-9a-f]*:	ef af ff bf 	stc\.w cp7,pc\[pc<<0x3\],cr15
43.12648 -+ *[0-9a-f]*:	ef a5 75 a4 	stc\.w cp3,r5\[r4<<0x2\],cr5
43.12649 -+ *[0-9a-f]*:	ef a4 54 93 	stc\.w cp2,r4\[r3<<0x1\],cr4
43.12650 -+ *[0-9a-f]*:	ef ad 99 8c 	stc\.w cp4,sp\[r12\],cr9
43.12651 -+
43.12652 -+[0-9a-f]* <stc_d1>:
43.12653 -+ *[0-9a-f]*:	eb a0 10 00 	stc\.d cp0,r0\[0x0\],cr0
43.12654 -+ *[0-9a-f]*:	eb af fe ff 	stc\.d cp7,pc\[0x3fc\],cr14
43.12655 -+ *[0-9a-f]*:	eb a5 76 80 	stc\.d cp3,r5\[0x200\],cr6
43.12656 -+ *[0-9a-f]*:	eb a4 54 7f 	stc\.d cp2,r4\[0x1fc\],cr4
43.12657 -+ *[0-9a-f]*:	eb ad 98 24 	stc\.d cp4,sp\[0x90\],cr8
43.12658 -+
43.12659 -+[0-9a-f]* <stc_d2>:
43.12660 -+ *[0-9a-f]*:	ef a0 00 70 	stc\.d cp0,r0\+\+,cr0
43.12661 -+ *[0-9a-f]*:	ef af ee 70 	stc\.d cp7,pc\+\+,cr14
43.12662 -+ *[0-9a-f]*:	ef a5 66 70 	stc\.d cp3,r5\+\+,cr6
43.12663 -+ *[0-9a-f]*:	ef a4 44 70 	stc\.d cp2,r4\+\+,cr4
43.12664 -+ *[0-9a-f]*:	ef ad 88 70 	stc\.d cp4,sp\+\+,cr8
43.12665 -+
43.12666 -+[0-9a-f]* <stc_d3>:
43.12667 -+ *[0-9a-f]*:	ef a0 10 c0 	stc\.d cp0,r0\[r0\],cr0
43.12668 -+ *[0-9a-f]*:	ef af fe ff 	stc\.d cp7,pc\[pc<<0x3\],cr14
43.12669 -+ *[0-9a-f]*:	ef a5 76 e4 	stc\.d cp3,r5\[r4<<0x2\],cr6
43.12670 -+ *[0-9a-f]*:	ef a4 54 d3 	stc\.d cp2,r4\[r3<<0x1\],cr4
43.12671 -+ *[0-9a-f]*:	ef ad 98 cc 	stc\.d cp4,sp\[r12\],cr8
43.12672 -+
43.12673 -+[0-9a-f]* <ldc0_w>:
43.12674 -+ *[0-9a-f]*:	f1 a0 00 00 	ldc0\.w cr0,r0\[0x0\]
43.12675 -+ *[0-9a-f]*:	f1 af ff ff 	ldc0\.w cr15,pc\[0x3ffc\]
43.12676 -+ *[0-9a-f]*:	f1 a5 85 00 	ldc0\.w cr5,r5\[0x2000\]
43.12677 -+ *[0-9a-f]*:	f1 a4 74 ff 	ldc0\.w cr4,r4\[0x1ffc\]
43.12678 -+ *[0-9a-f]*:	f1 ad 09 93 	ldc0\.w cr9,sp\[0x24c\]
43.12679 -+
43.12680 -+[0-9a-f]* <ldc0_d>:
43.12681 -+ *[0-9a-f]*:	f3 a0 00 00 	ldc0\.d cr0,r0\[0x0\]
43.12682 -+ *[0-9a-f]*:	f3 af fe ff 	ldc0\.d cr14,pc\[0x3ffc\]
43.12683 -+ *[0-9a-f]*:	f3 a5 86 00 	ldc0\.d cr6,r5\[0x2000\]
43.12684 -+ *[0-9a-f]*:	f3 a4 74 ff 	ldc0\.d cr4,r4\[0x1ffc\]
43.12685 -+ *[0-9a-f]*:	f3 ad 08 93 	ldc0\.d cr8,sp\[0x24c\]
43.12686 -+
43.12687 -+[0-9a-f]* <stc0_w>:
43.12688 -+ *[0-9a-f]*:	f5 a0 00 00 	stc0\.w r0\[0x0\],cr0
43.12689 -+ *[0-9a-f]*:	f5 af ff ff 	stc0\.w pc\[0x3ffc\],cr15
43.12690 -+ *[0-9a-f]*:	f5 a5 85 00 	stc0\.w r5\[0x2000\],cr5
43.12691 -+ *[0-9a-f]*:	f5 a4 74 ff 	stc0\.w r4\[0x1ffc\],cr4
43.12692 -+ *[0-9a-f]*:	f5 ad 09 93 	stc0\.w sp\[0x24c\],cr9
43.12693 -+
43.12694 -+[0-9a-f]* <stc0_d>:
43.12695 -+ *[0-9a-f]*:	f7 a0 00 00 	stc0\.d r0\[0x0\],cr0
43.12696 -+ *[0-9a-f]*:	f7 af fe ff 	stc0\.d pc\[0x3ffc\],cr14
43.12697 -+ *[0-9a-f]*:	f7 a5 86 00 	stc0\.d r5\[0x2000\],cr6
43.12698 -+ *[0-9a-f]*:	f7 a4 74 ff 	stc0\.d r4\[0x1ffc\],cr4
43.12699 -+ *[0-9a-f]*:	f7 ad 08 93 	stc0\.d sp\[0x24c\],cr8
43.12700 -+
43.12701 -+[0-9a-f]* <memc>:
43.12702 -+ *[0-9a-f]*:	f6 10 00 00 	memc 0,0x0
43.12703 -+ *[0-9a-f]*:	f6 1f ff ff 	memc -4,0x1f
43.12704 -+ *[0-9a-f]*:	f6 18 40 00 	memc -65536,0x10
43.12705 -+ *[0-9a-f]*:	f6 17 bf ff 	memc 65532,0xf
43.12706 -+
43.12707 -+[0-9a-f]* <mems>:
43.12708 -+ *[0-9a-f]*:	f8 10 00 00 	mems 0,0x0
43.12709 -+ *[0-9a-f]*:	f8 1f ff ff 	mems -4,0x1f
43.12710 -+ *[0-9a-f]*:	f8 18 40 00 	mems -65536,0x10
43.12711 -+ *[0-9a-f]*:	f8 17 bf ff 	mems 65532,0xf
43.12712 -+
43.12713 -+[0-9a-f]* <memt>:
43.12714 -+ *[0-9a-f]*:	fa 10 00 00 	memt 0,0x0
43.12715 -+ *[0-9a-f]*:	fa 1f ff ff 	memt -4,0x1f
43.12716 -+ *[0-9a-f]*:	fa 18 40 00 	memt -65536,0x10
43.12717 -+ *[0-9a-f]*:	fa 17 bf ff 	memt 65532,0xf
43.12718 -+
43.12719 -+[0-9a-f]* <stcond>:
43.12720 -+ *[0-9a-f]*:	e1 70 00 00 	stcond r0\[0\],r0
43.12721 -+ *[0-9a-f]*:	ff 7f ff ff 	stcond pc\[-1\],pc
43.12722 -+ *[0-9a-f]*:	f1 77 80 00 	stcond r8\[-32768\],r7
43.12723 -+ *[0-9a-f]*:	ef 78 7f ff 	stcond r7\[32767\],r8
43.12724 -+ *[0-9a-f]*:	eb 7a 12 34 	stcond r5\[4660\],r10
43.12725 -+
43.12726 -+[0-9a-f]* <ldcm_w>:
43.12727 -+ *[0-9a-f]*:	ed af 00 ff 	ldcm\.w cp0,pc,cr0-cr7
43.12728 -+ *[0-9a-f]*:	ed a0 e0 01 	ldcm\.w cp7,r0,cr0
43.12729 -+ *[0-9a-f]*:	ed a4 90 7f 	ldcm\.w cp4,r4\+\+,cr0-cr6
43.12730 -+ *[0-9a-f]*:	ed a7 60 80 	ldcm\.w cp3,r7,cr7
43.12731 -+ *[0-9a-f]*:	ed ac 30 72 	ldcm\.w cp1,r12\+\+,cr1,cr4-cr6
43.12732 -+ *[0-9a-f]*:	ed af 01 ff 	ldcm\.w cp0,pc,cr8-cr15
43.12733 -+ *[0-9a-f]*:	ed a0 e1 01 	ldcm\.w cp7,r0,cr8
43.12734 -+ *[0-9a-f]*:	ed a4 91 7f 	ldcm\.w cp4,r4\+\+,cr8-cr14
43.12735 -+ *[0-9a-f]*:	ed a7 61 80 	ldcm\.w cp3,r7,cr15
43.12736 -+ *[0-9a-f]*:	ed ac 31 72 	ldcm\.w cp1,r12\+\+,cr9,cr12-cr14
43.12737 -+
43.12738 -+[0-9a-f]* <ldcm_d>:
43.12739 -+ *[0-9a-f]*:	ed af 04 ff 	ldcm\.d cp0,pc,cr0-cr15
43.12740 -+ *[0-9a-f]*:	ed a0 e4 01 	ldcm\.d cp7,r0,cr0-cr1
43.12741 -+ *[0-9a-f]*:	ed a4 94 7f 	ldcm\.d cp4,r4\+\+,cr0-cr13
43.12742 -+ *[0-9a-f]*:	ed a7 64 80 	ldcm\.d cp3,r7,cr14-cr15
43.12743 -+ *[0-9a-f]*:	ed ac 54 93 	ldcm\.d cp2,r12\+\+,cr0-cr3,cr8-cr9,cr14-cr15
43.12744 -+
43.12745 -+[0-9a-f]* <stcm_w>:
43.12746 -+ *[0-9a-f]*:	ed af 02 ff 	stcm\.w cp0,pc,cr0-cr7
43.12747 -+ *[0-9a-f]*:	ed a0 e2 01 	stcm\.w cp7,r0,cr0
43.12748 -+ *[0-9a-f]*:	ed a4 92 7f 	stcm\.w cp4,--r4,cr0-cr6
43.12749 -+ *[0-9a-f]*:	ed a7 62 80 	stcm\.w cp3,r7,cr7
43.12750 -+ *[0-9a-f]*:	ed ac 32 72 	stcm\.w cp1,--r12,cr1,cr4-cr6
43.12751 -+ *[0-9a-f]*:	ed af 03 ff 	stcm\.w cp0,pc,cr8-cr15
43.12752 -+ *[0-9a-f]*:	ed a0 e3 01 	stcm\.w cp7,r0,cr8
43.12753 -+ *[0-9a-f]*:	ed a4 93 7f 	stcm\.w cp4,--r4,cr8-cr14
43.12754 -+ *[0-9a-f]*:	ed a7 63 80 	stcm\.w cp3,r7,cr15
43.12755 -+ *[0-9a-f]*:	ed ac 33 72 	stcm\.w cp1,--r12,cr9,cr12-cr14
43.12756 -+
43.12757 -+[0-9a-f]* <stcm_d>:
43.12758 -+ *[0-9a-f]*:	ed af 05 ff 	stcm\.d cp0,pc,cr0-cr15
43.12759 -+ *[0-9a-f]*:	ed a0 e5 01 	stcm\.d cp7,r0,cr0-cr1
43.12760 -+ *[0-9a-f]*:	ed a4 95 7f 	stcm\.d cp4,--r4,cr0-cr13
43.12761 -+ *[0-9a-f]*:	ed a7 65 80 	stcm\.d cp3,r7,cr14-cr15
43.12762 -+ *[0-9a-f]*:	ed ac 55 93 	stcm\.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
43.12763 -+
43.12764 -+[0-9a-f]* <mvcr_w>:
43.12765 -+ *[0-9a-f]*:	ef af ef 00 	mvcr\.w cp7,pc,cr15
43.12766 -+ *[0-9a-f]*:	ef a0 00 00 	mvcr\.w cp0,r0,cr0
43.12767 -+ *[0-9a-f]*:	ef af 0f 00 	mvcr\.w cp0,pc,cr15
43.12768 -+ *[0-9a-f]*:	ef a0 ef 00 	mvcr\.w cp7,r0,cr15
43.12769 -+ *[0-9a-f]*:	ef af e0 00 	mvcr\.w cp7,pc,cr0
43.12770 -+ *[0-9a-f]*:	ef a7 88 00 	mvcr\.w cp4,r7,cr8
43.12771 -+ *[0-9a-f]*:	ef a8 67 00 	mvcr\.w cp3,r8,cr7
43.12772 -+
43.12773 -+[0-9a-f]* <mvcr_d>:
43.12774 -+ *[0-9a-f]*:	ef ae ee 10 	mvcr\.d cp7,lr,cr14
43.12775 -+ *[0-9a-f]*:	ef a0 00 10 	mvcr\.d cp0,r0,cr0
43.12776 -+ *[0-9a-f]*:	ef ae 0e 10 	mvcr\.d cp0,lr,cr14
43.12777 -+ *[0-9a-f]*:	ef a0 ee 10 	mvcr\.d cp7,r0,cr14
43.12778 -+ *[0-9a-f]*:	ef ae e0 10 	mvcr\.d cp7,lr,cr0
43.12779 -+ *[0-9a-f]*:	ef a6 88 10 	mvcr\.d cp4,r6,cr8
43.12780 -+ *[0-9a-f]*:	ef a8 66 10 	mvcr\.d cp3,r8,cr6
43.12781 -+
43.12782 -+[0-9a-f]* <mvrc_w>:
43.12783 -+ *[0-9a-f]*:	ef af ef 20 	mvrc\.w cp7,cr15,pc
43.12784 -+ *[0-9a-f]*:	ef a0 00 20 	mvrc\.w cp0,cr0,r0
43.12785 -+ *[0-9a-f]*:	ef af 0f 20 	mvrc\.w cp0,cr15,pc
43.12786 -+ *[0-9a-f]*:	ef a0 ef 20 	mvrc\.w cp7,cr15,r0
43.12787 -+ *[0-9a-f]*:	ef af e0 20 	mvrc\.w cp7,cr0,pc
43.12788 -+ *[0-9a-f]*:	ef a7 88 20 	mvrc\.w cp4,cr8,r7
43.12789 -+ *[0-9a-f]*:	ef a8 67 20 	mvrc\.w cp3,cr7,r8
43.12790 -+
43.12791 -+[0-9a-f]* <mvrc_d>:
43.12792 -+ *[0-9a-f]*:	ef ae ee 30 	mvrc\.d cp7,cr14,lr
43.12793 -+ *[0-9a-f]*:	ef a0 00 30 	mvrc\.d cp0,cr0,r0
43.12794 -+ *[0-9a-f]*:	ef ae 0e 30 	mvrc\.d cp0,cr14,lr
43.12795 -+ *[0-9a-f]*:	ef a0 ee 30 	mvrc\.d cp7,cr14,r0
43.12796 -+ *[0-9a-f]*:	ef ae e0 30 	mvrc\.d cp7,cr0,lr
43.12797 -+ *[0-9a-f]*:	ef a6 88 30 	mvrc\.d cp4,cr8,r6
43.12798 -+ *[0-9a-f]*:	ef a8 66 30 	mvrc\.d cp3,cr6,r8
43.12799 -+
43.12800 -+[0-9a-f]* <bfexts>:
43.12801 -+ *[0-9a-f]*:	ff df b3 ff 	bfexts pc,pc,0x1f,0x1f
43.12802 -+ *[0-9a-f]*:	e1 d0 b0 00 	bfexts r0,r0,0x0,0x0
43.12803 -+ *[0-9a-f]*:	e1 df b3 ff 	bfexts r0,pc,0x1f,0x1f
43.12804 -+ *[0-9a-f]*:	ff d0 b3 ff 	bfexts pc,r0,0x1f,0x1f
43.12805 -+ *[0-9a-f]*:	ff df b0 1f 	bfexts pc,pc,0x0,0x1f
43.12806 -+ *[0-9a-f]*:	ff df b3 e0 	bfexts pc,pc,0x1f,0x0
43.12807 -+ *[0-9a-f]*:	ef d8 b1 f0 	bfexts r7,r8,0xf,0x10
43.12808 -+ *[0-9a-f]*:	f1 d7 b2 0f 	bfexts r8,r7,0x10,0xf
43.12809 -+
43.12810 -+[0-9a-f]* <bfextu>:
43.12811 -+ *[0-9a-f]*:	ff df c3 ff 	bfextu pc,pc,0x1f,0x1f
43.12812 -+ *[0-9a-f]*:	e1 d0 c0 00 	bfextu r0,r0,0x0,0x0
43.12813 -+ *[0-9a-f]*:	e1 df c3 ff 	bfextu r0,pc,0x1f,0x1f
43.12814 -+ *[0-9a-f]*:	ff d0 c3 ff 	bfextu pc,r0,0x1f,0x1f
43.12815 -+ *[0-9a-f]*:	ff df c0 1f 	bfextu pc,pc,0x0,0x1f
43.12816 -+ *[0-9a-f]*:	ff df c3 e0 	bfextu pc,pc,0x1f,0x0
43.12817 -+ *[0-9a-f]*:	ef d8 c1 f0 	bfextu r7,r8,0xf,0x10
43.12818 -+ *[0-9a-f]*:	f1 d7 c2 0f 	bfextu r8,r7,0x10,0xf
43.12819 -+
43.12820 -+[0-9a-f]* <bfins>:
43.12821 -+ *[0-9a-f]*:	ff df d3 ff 	bfins pc,pc,0x1f,0x1f
43.12822 -+ *[0-9a-f]*:	e1 d0 d0 00 	bfins r0,r0,0x0,0x0
43.12823 -+ *[0-9a-f]*:	e1 df d3 ff 	bfins r0,pc,0x1f,0x1f
43.12824 -+ *[0-9a-f]*:	ff d0 d3 ff 	bfins pc,r0,0x1f,0x1f
43.12825 -+ *[0-9a-f]*:	ff df d0 1f 	bfins pc,pc,0x0,0x1f
43.12826 -+ *[0-9a-f]*:	ff df d3 e0 	bfins pc,pc,0x1f,0x0
43.12827 -+ *[0-9a-f]*:	ef d8 d1 f0 	bfins r7,r8,0xf,0x10
43.12828 -+ *[0-9a-f]*:	f1 d7 d2 0f 	bfins r8,r7,0x10,0xf
43.12829 -+
43.12830 -+[0-9a-f]* <rsubc>:
43.12831 -+ *[0-9a-f]*:	fb bf 00 00 	rsubeq pc,0
43.12832 -+ *[0-9a-f]*:	fb bc 0f ff 	rsubal r12,-1
43.12833 -+ *[0-9a-f]*:	fb b5 08 80 	rsubls r5,-128
43.12834 -+ *[0-9a-f]*:	fb b4 07 7f 	rsubpl r4,127
43.12835 -+ *[0-9a-f]*:	fb be 01 01 	rsubne lr,1
43.12836 -+ *[0-9a-f]*:	fb bc 08 76 	rsubls r12,118
43.12837 -+ *[0-9a-f]*:	fb be 0d f4 	rsubvc lr,-12
43.12838 -+ *[0-9a-f]*:	fb b4 06 f3 	rsubmi r4,-13
43.12839 -+
43.12840 -+[0-9a-f]* <addc>:
43.12841 -+ *[0-9a-f]*:	ff df e0 0f 	addeq pc,pc,pc
43.12842 -+ *[0-9a-f]*:	f9 dc ef 0c 	addal r12,r12,r12
43.12843 -+ *[0-9a-f]*:	eb d5 e8 05 	addls r5,r5,r5
43.12844 -+ *[0-9a-f]*:	e9 d4 e7 04 	addpl r4,r4,r4   
43.12845 -+ *[0-9a-f]*:	fd de e1 0e 	addne lr,lr,lr
43.12846 -+ *[0-9a-f]*:	e5 d1 e8 0a 	addls r10,r2,r1
43.12847 -+ *[0-9a-f]*:	f1 db ed 0c 	addvc r12,r8,r11
43.12848 -+ *[0-9a-f]*:	ef d0 e6 0a 	addmi r10,r7,r0
43.12849 -+
43.12850 -+[0-9a-f]* <subc2>:
43.12851 -+ *[0-9a-f]*:	ff df e0 1f 	subeq pc,pc,pc
43.12852 -+ *[0-9a-f]*:	f9 dc ef 1c 	subal r12,r12,r12
43.12853 -+ *[0-9a-f]*:	eb d5 e8 15 	subls r5,r5,r5
43.12854 -+ *[0-9a-f]*:	e9 d4 e7 14 	subpl r4,r4,r4   
43.12855 -+ *[0-9a-f]*:	fd de e1 1e 	subne lr,lr,lr
43.12856 -+ *[0-9a-f]*:	e5 d1 e8 1a 	subls r10,r2,r1
43.12857 -+ *[0-9a-f]*:	f1 db ed 1c 	subvc r12,r8,r11
43.12858 -+ *[0-9a-f]*:	ef d0 e6 1a 	submi r10,r7,r0
43.12859 -+
43.12860 -+[0-9a-f]* <andc>:
43.12861 -+ *[0-9a-f]*:	ff df e0 2f 	andeq pc,pc,pc
43.12862 -+ *[0-9a-f]*:	f9 dc ef 2c 	andal r12,r12,r12
43.12863 -+ *[0-9a-f]*:	eb d5 e8 25 	andls r5,r5,r5
43.12864 -+ *[0-9a-f]*:	e9 d4 e7 24 	andpl r4,r4,r4   
43.12865 -+ *[0-9a-f]*:	fd de e1 2e 	andne lr,lr,lr
43.12866 -+ *[0-9a-f]*:	e5 d1 e8 2a 	andls r10,r2,r1
43.12867 -+ *[0-9a-f]*:	f1 db ed 2c 	andvc r12,r8,r11
43.12868 -+ *[0-9a-f]*:	ef d0 e6 2a 	andmi r10,r7,r0
43.12869 -+
43.12870 -+[0-9a-f]* <orc>:
43.12871 -+ *[0-9a-f]*:	ff df e0 3f 	oreq pc,pc,pc
43.12872 -+ *[0-9a-f]*:	f9 dc ef 3c 	oral r12,r12,r12
43.12873 -+ *[0-9a-f]*:	eb d5 e8 35 	orls r5,r5,r5
43.12874 -+ *[0-9a-f]*:	e9 d4 e7 34 	orpl r4,r4,r4   
43.12875 -+ *[0-9a-f]*:	fd de e1 3e 	orne lr,lr,lr
43.12876 -+ *[0-9a-f]*:	e5 d1 e8 3a 	orls r10,r2,r1
43.12877 -+ *[0-9a-f]*:	f1 db ed 3c 	orvc r12,r8,r11
43.12878 -+ *[0-9a-f]*:	ef d0 e6 3a 	ormi r10,r7,r0
43.12879 -+
43.12880 -+[0-9a-f]* <eorc>:
43.12881 -+ *[0-9a-f]*:	ff df e0 4f 	eoreq pc,pc,pc
43.12882 -+ *[0-9a-f]*:	f9 dc ef 4c 	eoral r12,r12,r12
43.12883 -+ *[0-9a-f]*:	eb d5 e8 45 	eorls r5,r5,r5
43.12884 -+ *[0-9a-f]*:	e9 d4 e7 44 	eorpl r4,r4,r4   
43.12885 -+ *[0-9a-f]*:	fd de e1 4e 	eorne lr,lr,lr
43.12886 -+ *[0-9a-f]*:	e5 d1 e8 4a 	eorls r10,r2,r1
43.12887 -+ *[0-9a-f]*:	f1 db ed 4c 	eorvc r12,r8,r11
43.12888 -+ *[0-9a-f]*:	ef d0 e6 4a 	eormi r10,r7,r0
43.12889 -+
43.12890 -+[0-9a-f]* <ldcond>:
43.12891 -+ *[0-9a-f]*:	ff ff 01 ff     ld.weq  pc,pc[0x7fc]
43.12892 -+ *[0-9a-f]*:	f9 fc f3 ff     ld.shal r12,r12[0x3fe]
43.12893 -+ *[0-9a-f]*:	eb f5 84 00     ld.shls r5,r5[0x0]
43.12894 -+ *[0-9a-f]*:	e9 f4 79 ff     ld.ubpl r4,r4[0x1ff]
43.12895 -+ *[0-9a-f]*:	fd fe 16 00     ld.sbne lr,lr[0x0]
43.12896 -+ *[0-9a-f]*:	e5 fa 80 00     ld.wls  r10,r2[0x0]
43.12897 -+ *[0-9a-f]*:	f1 fc d3 ff     ld.shvc r12,r8[0x3fe]
43.12898 -+ *[0-9a-f]*:	ef fa 68 01     ld.ubmi r10,r7[0x1]
43.12899 -+
43.12900 -+[0-9a-f]* <stcond2>:
43.12901 -+ *[0-9a-f]*:	ff ff 0b ff     st.weq pc[0x7fc],pc
43.12902 -+ *[0-9a-f]*:	f9 fc fd ff     st.hal r12[0x3fe],r12
43.12903 -+ *[0-9a-f]*:	eb f5 8c 00     st.hls r5[0x0],r5
43.12904 -+ *[0-9a-f]*:	e9 f4 7f ff     st.bpl r4[0x1ff],r4
43.12905 -+ *[0-9a-f]*:	fd fe 1e 00     st.bne lr[0x0],lr
43.12906 -+ *[0-9a-f]*:	e5 fa 8a 00     st.wls r2[0x0],r10
43.12907 -+ *[0-9a-f]*:	f1 fc dd ff     st.hvc r8[0x3fe],r12
43.12908 -+ *[0-9a-f]*:	ef fa 6e 01     st.bmi r7[0x1],r10
43.12909 -+
43.12910 -+[0-9a-f]* <movh>:
43.12911 -+ *[0-9a-f]*:	fc 1f ff ff     movh pc,0xffff
43.12912 -+ *[0-9a-f]*:	fc 10 00 00     movh r0,0x0
43.12913 -+ *[0-9a-f]*:	fc 15 00 01     movh r5,0x1
43.12914 -+ *[0-9a-f]*:	fc 1c 7f ff     movh r12,0x7fff
43.12915 -+
43.12916 ---- /dev/null
43.12917 -+++ b/gas/testsuite/gas/avr32/allinsn.exp
43.12918 -@@ -0,0 +1,5 @@
43.12919 -+# AVR32 assembler testsuite. -*- Tcl -*-
43.12920 -+
43.12921 -+if [istarget avr32-*-*] {
43.12922 -+    run_dump_test "allinsn"
43.12923 -+}
43.12924 ---- /dev/null
43.12925 -+++ b/gas/testsuite/gas/avr32/allinsn.s
43.12926 -@@ -0,0 +1,3330 @@
43.12927 -+ .data
43.12928 -+foodata: .word 42
43.12929 -+ .text
43.12930 -+footext:
43.12931 -+	.text
43.12932 -+	.global ld_d5
43.12933 -+ld_d5:
43.12934 -+	ld.d lr,pc[pc<<3]
43.12935 -+	ld.d r0,r0[r0<<0]
43.12936 -+	ld.d r6,r5[r5<<2]
43.12937 -+	ld.d r4,r4[r4<<1]
43.12938 -+	ld.d lr,lr[lr<<1]
43.12939 -+	ld.d r10,r3[sp<<2]
43.12940 -+	ld.d r8,r10[r6<<2]
43.12941 -+	ld.d r2,r7[r9<<0]
43.12942 -+	.text
43.12943 -+	.global ld_w5
43.12944 -+ld_w5:
43.12945 -+	ld.w pc,pc[pc<<0]
43.12946 -+	ld.w r12,r12[r12<<3]
43.12947 -+	ld.w r5,r5[r5<<2]
43.12948 -+	ld.w r4,r4[r4<<1]
43.12949 -+	ld.w lr,lr[lr<<1]
43.12950 -+	ld.w r2,r9[r9<<0]
43.12951 -+	ld.w r11,r2[r6<<0]
43.12952 -+	ld.w r0,r2[sp<<3]
43.12953 -+	.text
43.12954 -+	.global ld_sh5
43.12955 -+ld_sh5:
43.12956 -+	ld.sh pc,pc[pc<<0]
43.12957 -+	ld.sh r12,r12[r12<<3]
43.12958 -+	ld.sh r5,r5[r5<<2]
43.12959 -+	ld.sh r4,r4[r4<<1]
43.12960 -+	ld.sh lr,lr[lr<<1]
43.12961 -+	ld.sh r11,r0[pc<<2]
43.12962 -+	ld.sh r10,sp[r6<<2]
43.12963 -+	ld.sh r12,r2[r2<<0]
43.12964 -+	.text
43.12965 -+	.global ld_uh5
43.12966 -+ld_uh5:
43.12967 -+	ld.uh pc,pc[pc<<0]
43.12968 -+	ld.uh r12,r12[r12<<3]
43.12969 -+	ld.uh r5,r5[r5<<2]
43.12970 -+	ld.uh r4,r4[r4<<1]
43.12971 -+	ld.uh lr,lr[lr<<1]
43.12972 -+	ld.uh r8,pc[lr<<3]
43.12973 -+	ld.uh r6,r1[pc<<1]
43.12974 -+	ld.uh r6,lr[sp<<1]
43.12975 -+	.text
43.12976 -+	.global ld_sb2
43.12977 -+ld_sb2:
43.12978 -+	ld.sb pc,pc[pc<<0]
43.12979 -+	ld.sb r12,r12[r12<<3]
43.12980 -+	ld.sb r5,r5[r5<<2]
43.12981 -+	ld.sb r4,r4[r4<<1]
43.12982 -+	ld.sb lr,lr[lr<<1]
43.12983 -+	ld.sb r9,r1[pc<<3]
43.12984 -+	ld.sb r0,r3[r11<<1]
43.12985 -+	ld.sb r10,r5[r5<<1]
43.12986 -+	.text
43.12987 -+	.global ld_ub5
43.12988 -+ld_ub5:
43.12989 -+	ld.ub pc,pc[pc<<0]
43.12990 -+	ld.ub r12,r12[r12<<3]
43.12991 -+	ld.ub r5,r5[r5<<2]
43.12992 -+	ld.ub r4,r4[r4<<1]
43.12993 -+	ld.ub lr,lr[lr<<1]
43.12994 -+	ld.ub r6,r12[r7<<3]
43.12995 -+	ld.ub r2,r6[r12<<0]
43.12996 -+	ld.ub r0,r7[r11<<1]
43.12997 -+	.text
43.12998 -+	.global st_d5
43.12999 -+st_d5:
43.13000 -+	st.d pc[pc<<0],r14
43.13001 -+	st.d r12[r12<<3],r12
43.13002 -+	st.d r5[r5<<2],r6
43.13003 -+	st.d r4[r4<<1],r4
43.13004 -+	st.d lr[lr<<1],lr
43.13005 -+	st.d r1[r9<<1],r4
43.13006 -+	st.d r10[r2<<1],r4
43.13007 -+	st.d r12[r6<<0],lr
43.13008 -+	.text
43.13009 -+	.global st_w5
43.13010 -+st_w5:
43.13011 -+	st.w pc[pc<<0],pc
43.13012 -+	st.w r12[r12<<3],r12
43.13013 -+	st.w r5[r5<<2],r5
43.13014 -+	st.w r4[r4<<1],r4
43.13015 -+	st.w lr[lr<<1],lr
43.13016 -+	st.w r1[r10<<0],r3
43.13017 -+	st.w r0[r10<<1],r9
43.13018 -+	st.w r4[r5<<3],pc
43.13019 -+	.text
43.13020 -+	.global st_h5
43.13021 -+st_h5:
43.13022 -+	st.h pc[pc<<0],pc
43.13023 -+	st.h r12[r12<<3],r12
43.13024 -+	st.h r5[r5<<2],r5
43.13025 -+	st.h r4[r4<<1],r4
43.13026 -+	st.h lr[lr<<1],lr
43.13027 -+	st.h r2[r9<<0],r11
43.13028 -+	st.h r5[r1<<2],r12
43.13029 -+	st.h pc[r8<<2],r3
43.13030 -+	.text
43.13031 -+	.global st_b5
43.13032 -+st_b5:
43.13033 -+	st.b pc[pc<<0],pc
43.13034 -+	st.b r12[r12<<3],r12
43.13035 -+	st.b r5[r5<<2],r5
43.13036 -+	st.b r4[r4<<1],r4
43.13037 -+	st.b lr[lr<<1],lr
43.13038 -+	st.b r1[r8<<1],r6
43.13039 -+	st.b lr[lr<<3],r1
43.13040 -+	st.b r5[r0<<2],pc
43.13041 -+	.text
43.13042 -+	.global divs
43.13043 -+divs:
43.13044 -+	divs pc,pc,pc
43.13045 -+	divs r12,r12,r12
43.13046 -+	divs r5,r5,r5
43.13047 -+	divs r4,r4,r4
43.13048 -+	divs lr,lr,lr
43.13049 -+	divs r3,pc,pc
43.13050 -+	divs r9,r12,r2
43.13051 -+	divs r7,r4,r1
43.13052 -+	.text
43.13053 -+	.global add1
43.13054 -+add1:
43.13055 -+	add pc,pc
43.13056 -+	add r12,r12
43.13057 -+	add r5,r5
43.13058 -+	add r4,r4
43.13059 -+	add lr,lr
43.13060 -+	add r12,r9
43.13061 -+	add r6,r3
43.13062 -+	add r10,r12
43.13063 -+	.text
43.13064 -+	.global sub1
43.13065 -+sub1:
43.13066 -+	sub pc,pc
43.13067 -+	sub r12,r12
43.13068 -+	sub r5,r5
43.13069 -+	sub r4,r4
43.13070 -+	sub lr,lr
43.13071 -+	sub lr,r6
43.13072 -+	sub r0,sp
43.13073 -+	sub r6,r12
43.13074 -+	.text
43.13075 -+	.global rsub1
43.13076 -+rsub1:
43.13077 -+	rsub pc,pc
43.13078 -+	rsub r12,r12
43.13079 -+	rsub r5,r5
43.13080 -+	rsub r4,r4
43.13081 -+	rsub lr,lr
43.13082 -+	rsub r11,sp
43.13083 -+	rsub r7,r4
43.13084 -+	rsub r9,r1
43.13085 -+	.text
43.13086 -+	.global cp1
43.13087 -+cp1:
43.13088 -+	cp pc,pc
43.13089 -+	cp r12,r12
43.13090 -+	cp r5,r5
43.13091 -+	cp r4,r4
43.13092 -+	cp lr,lr
43.13093 -+	cp r6,r2
43.13094 -+	cp r0,r9
43.13095 -+	cp r3,sp
43.13096 -+	.text
43.13097 -+	.global or1
43.13098 -+or1:
43.13099 -+	or pc,pc
43.13100 -+	or r12,r12
43.13101 -+	or r5,r5
43.13102 -+	or r4,r4
43.13103 -+	or lr,lr
43.13104 -+	or r4,r9
43.13105 -+	or r11,r4
43.13106 -+	or r4,r0
43.13107 -+	.text
43.13108 -+	.global eor1
43.13109 -+eor1:
43.13110 -+	eor pc,pc
43.13111 -+	eor r12,r12
43.13112 -+	eor r5,r5
43.13113 -+	eor r4,r4
43.13114 -+	eor lr,lr
43.13115 -+	eor r12,r11
43.13116 -+	eor r0,r1
43.13117 -+	eor r5,pc
43.13118 -+	.text
43.13119 -+	.global and1
43.13120 -+and1:
43.13121 -+	and pc,pc
43.13122 -+	and r12,r12
43.13123 -+	and r5,r5
43.13124 -+	and r4,r4
43.13125 -+	and lr,lr
43.13126 -+	and r8,r1
43.13127 -+	and r0,sp
43.13128 -+	and r10,r5
43.13129 -+	.text
43.13130 -+	.global tst
43.13131 -+tst:
43.13132 -+	tst pc,pc
43.13133 -+	tst r12,r12
43.13134 -+	tst r5,r5
43.13135 -+	tst r4,r4
43.13136 -+	tst lr,lr
43.13137 -+	tst r0,r12
43.13138 -+	tst r10,r6
43.13139 -+	tst sp,r4
43.13140 -+	.text
43.13141 -+	.global andn
43.13142 -+andn:
43.13143 -+	andn pc,pc
43.13144 -+	andn r12,r12
43.13145 -+	andn r5,r5
43.13146 -+	andn r4,r4
43.13147 -+	andn lr,lr
43.13148 -+	andn r9,r12
43.13149 -+	andn r11,sp
43.13150 -+	andn r12,r5
43.13151 -+	.text
43.13152 -+	.global mov3
43.13153 -+mov3:
43.13154 -+	mov pc,pc
43.13155 -+	mov r12,r12
43.13156 -+	mov r5,r5
43.13157 -+	mov r4,r4
43.13158 -+	mov lr,lr
43.13159 -+	mov r5,r9
43.13160 -+	mov r11,r11
43.13161 -+	mov r2,lr
43.13162 -+	.text
43.13163 -+	.global st_w1
43.13164 -+st_w1:
43.13165 -+	st.w pc++,pc
43.13166 -+	st.w r12++,r12
43.13167 -+	st.w r5++,r5
43.13168 -+	st.w r4++,r4
43.13169 -+	st.w lr++,lr
43.13170 -+	st.w r1++,r11
43.13171 -+	st.w sp++,r0
43.13172 -+	st.w sp++,r1
43.13173 -+	.text
43.13174 -+	.global st_h1
43.13175 -+st_h1:
43.13176 -+	st.h pc++,pc
43.13177 -+	st.h r12++,r12
43.13178 -+	st.h r5++,r5
43.13179 -+	st.h r4++,r4
43.13180 -+	st.h lr++,lr
43.13181 -+	st.h r12++,sp
43.13182 -+	st.h r7++,lr
43.13183 -+	st.h r7++,r4
43.13184 -+	.text
43.13185 -+	.global st_b1
43.13186 -+st_b1:
43.13187 -+	st.b pc++,pc
43.13188 -+	st.b r12++,r12
43.13189 -+	st.b r5++,r5
43.13190 -+	st.b r4++,r4
43.13191 -+	st.b lr++,lr
43.13192 -+	st.b r9++,sp
43.13193 -+	st.b r1++,sp
43.13194 -+	st.b r0++,r4
43.13195 -+	.text
43.13196 -+	.global st_w2
43.13197 -+st_w2:
43.13198 -+	st.w --pc,pc
43.13199 -+	st.w --r12,r12
43.13200 -+	st.w --r5,r5
43.13201 -+	st.w --r4,r4
43.13202 -+	st.w --lr,lr
43.13203 -+	st.w --r1,r7
43.13204 -+	st.w --r3,r9
43.13205 -+	st.w --r5,r5
43.13206 -+	.text
43.13207 -+	.global st_h2
43.13208 -+st_h2:
43.13209 -+	st.h --pc,pc
43.13210 -+	st.h --r12,r12
43.13211 -+	st.h --r5,r5
43.13212 -+	st.h --r4,r4
43.13213 -+	st.h --lr,lr
43.13214 -+	st.h --r5,r7
43.13215 -+	st.h --r8,r8
43.13216 -+	st.h --r7,r2
43.13217 -+	.text
43.13218 -+	.global st_b2
43.13219 -+st_b2:
43.13220 -+	st.b --pc,pc
43.13221 -+	st.b --r12,r12
43.13222 -+	st.b --r5,r5
43.13223 -+	st.b --r4,r4
43.13224 -+	st.b --lr,lr
43.13225 -+	st.b --sp,sp
43.13226 -+	st.b --sp,r11
43.13227 -+	st.b --r4,r5
43.13228 -+	.text
43.13229 -+	.global ld_w1
43.13230 -+ld_w1:
43.13231 -+	ld.w pc,pc++
43.13232 -+	ld.w r12,r12++
43.13233 -+	ld.w r5,r5++
43.13234 -+	ld.w r4,r4++
43.13235 -+	ld.w lr,lr++
43.13236 -+	ld.w r3,r7++
43.13237 -+	ld.w r3,lr++
43.13238 -+	ld.w r12,r5++
43.13239 -+	.text
43.13240 -+	.global ld_sh1
43.13241 -+ld_sh1:
43.13242 -+	ld.sh pc,pc++
43.13243 -+	ld.sh r12,r12++
43.13244 -+	ld.sh r5,r5++
43.13245 -+	ld.sh r4,r4++
43.13246 -+	ld.sh lr,lr++
43.13247 -+	ld.sh r11,r2++
43.13248 -+	ld.sh r2,r8++
43.13249 -+	ld.sh r7,r6++
43.13250 -+	.text
43.13251 -+	.global ld_uh1
43.13252 -+ld_uh1:
43.13253 -+	ld.uh pc,pc++
43.13254 -+	ld.uh r12,r12++
43.13255 -+	ld.uh r5,r5++
43.13256 -+	ld.uh r4,r4++
43.13257 -+	ld.uh lr,lr++
43.13258 -+	ld.uh r6,r7++
43.13259 -+	ld.uh r10,r11++
43.13260 -+	ld.uh lr,r4++
43.13261 -+	.text
43.13262 -+	.global ld_ub1
43.13263 -+ld_ub1:
43.13264 -+	ld.ub pc,pc++
43.13265 -+	ld.ub r12,r12++
43.13266 -+	ld.ub r5,r5++
43.13267 -+	ld.ub r4,r4++
43.13268 -+	ld.ub lr,lr++
43.13269 -+	ld.ub r8,lr++
43.13270 -+	ld.ub r12,r12++
43.13271 -+	ld.ub r11,r10++
43.13272 -+	.text
43.13273 -+	.global ld_w2
43.13274 -+ld_w2:
43.13275 -+	ld.w pc,--pc
43.13276 -+	ld.w r12,--r12
43.13277 -+	ld.w r5,--r5
43.13278 -+	ld.w r4,--r4
43.13279 -+	ld.w lr,--lr
43.13280 -+	ld.w r10,--lr
43.13281 -+	ld.w r12,--r9
43.13282 -+	ld.w r6,--r5
43.13283 -+	.text
43.13284 -+	.global ld_sh2
43.13285 -+ld_sh2:
43.13286 -+	ld.sh pc,--pc
43.13287 -+	ld.sh r12,--r12
43.13288 -+	ld.sh r5,--r5
43.13289 -+	ld.sh r4,--r4
43.13290 -+	ld.sh lr,--lr
43.13291 -+	ld.sh pc,--r10
43.13292 -+	ld.sh r6,--r3
43.13293 -+	ld.sh r4,--r6
43.13294 -+	.text
43.13295 -+	.global ld_uh2
43.13296 -+ld_uh2:
43.13297 -+	ld.uh pc,--pc
43.13298 -+	ld.uh r12,--r12
43.13299 -+	ld.uh r5,--r5
43.13300 -+	ld.uh r4,--r4
43.13301 -+	ld.uh lr,--lr
43.13302 -+	ld.uh r3,--r2
43.13303 -+	ld.uh r1,--r0
43.13304 -+	ld.uh r2,--r9
43.13305 -+	.text
43.13306 -+	.global ld_ub2
43.13307 -+ld_ub2:
43.13308 -+	ld.ub pc,--pc
43.13309 -+	ld.ub r12,--r12
43.13310 -+	ld.ub r5,--r5
43.13311 -+	ld.ub r4,--r4
43.13312 -+	ld.ub lr,--lr
43.13313 -+	ld.ub r1,--r1
43.13314 -+	ld.ub r0,--r6
43.13315 -+	ld.ub r2,--r7
43.13316 -+	.text
43.13317 -+	.global ld_ub3
43.13318 -+ld_ub3:
43.13319 -+	ld.ub pc,pc[0]
43.13320 -+	ld.ub r12,r12[7]
43.13321 -+	ld.ub r5,r5[4]
43.13322 -+	ld.ub r4,r4[3]
43.13323 -+	ld.ub lr,lr[1]
43.13324 -+	ld.ub r6,r9[6]
43.13325 -+	ld.ub r2,lr[4]
43.13326 -+	ld.ub r1,r8[0]
43.13327 -+	.text
43.13328 -+	.global sub3_sp
43.13329 -+sub3_sp:
43.13330 -+	sub sp,0
43.13331 -+	sub sp,-4
43.13332 -+	sub sp,-512
43.13333 -+	sub sp,508
43.13334 -+	sub sp,4
43.13335 -+	sub sp,44
43.13336 -+	sub sp,8
43.13337 -+	sub sp,348
43.13338 -+	.text
43.13339 -+	.global sub3
43.13340 -+sub3:
43.13341 -+	sub pc,0
43.13342 -+	sub r12,-1
43.13343 -+	sub r5,-128
43.13344 -+	sub r4,127
43.13345 -+	sub lr,1
43.13346 -+	sub r6,-41
43.13347 -+	sub r4,37
43.13348 -+	sub r12,56
43.13349 -+	.text
43.13350 -+	.global mov1
43.13351 -+mov1:
43.13352 -+	mov pc,0
43.13353 -+	mov r12,-1
43.13354 -+	mov r5,-128
43.13355 -+	mov r4,127
43.13356 -+	mov lr,1
43.13357 -+	mov pc,14
43.13358 -+	mov r6,-100
43.13359 -+	mov lr,-122
43.13360 -+	.text
43.13361 -+	.global lddsp
43.13362 -+lddsp:
43.13363 -+	lddsp pc,sp[0]
43.13364 -+	lddsp r12,sp[508]
43.13365 -+	lddsp r5,sp[256]
43.13366 -+	lddsp r4,sp[252]
43.13367 -+	lddsp lr,sp[4]
43.13368 -+	lddsp lr,sp[256]
43.13369 -+	lddsp r12,sp[20]
43.13370 -+	lddsp r9,sp[472]
43.13371 -+	.text
43.13372 -+	.global lddpc
43.13373 -+lddpc:
43.13374 -+	lddpc pc,pc[0]
43.13375 -+	lddpc r0,pc[508]
43.13376 -+	lddpc r8,pc[256]
43.13377 -+	lddpc r7,pc[252]
43.13378 -+	lddpc lr,pc[4]
43.13379 -+	lddpc sp,pc[472]
43.13380 -+	lddpc r6,pc[120]
43.13381 -+	lddpc r11,pc[28]
43.13382 -+	.text
43.13383 -+	.global stdsp
43.13384 -+stdsp:
43.13385 -+	stdsp sp[0],pc
43.13386 -+	stdsp sp[508],r12
43.13387 -+	stdsp sp[256],r5
43.13388 -+	stdsp sp[252],r4
43.13389 -+	stdsp sp[4],lr
43.13390 -+	stdsp sp[304],pc
43.13391 -+	stdsp sp[256],r0
43.13392 -+	stdsp sp[336],r5
43.13393 -+	.text
43.13394 -+	.global cp2
43.13395 -+cp2:
43.13396 -+	cp pc,0
43.13397 -+	cp r12,-1
43.13398 -+	cp r5,-32
43.13399 -+	cp r4,31
43.13400 -+	cp lr,1
43.13401 -+	cp r8,3
43.13402 -+	cp lr,16
43.13403 -+	cp r7,-26
43.13404 -+	.text
43.13405 -+	.global acr
43.13406 -+acr:
43.13407 -+	acr pc
43.13408 -+	acr r12
43.13409 -+	acr r5
43.13410 -+	acr r4
43.13411 -+	acr lr
43.13412 -+	acr r2
43.13413 -+	acr r12
43.13414 -+	acr pc
43.13415 -+	.text
43.13416 -+	.global scr
43.13417 -+scr:
43.13418 -+	scr pc
43.13419 -+	scr r12
43.13420 -+	scr r5
43.13421 -+	scr r4
43.13422 -+	scr lr
43.13423 -+	scr pc
43.13424 -+	scr r6
43.13425 -+	scr r1
43.13426 -+	.text
43.13427 -+	.global cpc0
43.13428 -+cpc0:
43.13429 -+	cpc pc
43.13430 -+	cpc r12
43.13431 -+	cpc r5
43.13432 -+	cpc r4
43.13433 -+	cpc lr
43.13434 -+	cpc pc
43.13435 -+	cpc r4
43.13436 -+	cpc r9
43.13437 -+	.text
43.13438 -+	.global neg
43.13439 -+neg:
43.13440 -+	neg pc
43.13441 -+	neg r12
43.13442 -+	neg r5
43.13443 -+	neg r4
43.13444 -+	neg lr
43.13445 -+	neg r7
43.13446 -+	neg r1
43.13447 -+	neg r9
43.13448 -+	.text
43.13449 -+	.global abs
43.13450 -+abs:
43.13451 -+	abs pc
43.13452 -+	abs r12
43.13453 -+	abs r5
43.13454 -+	abs r4
43.13455 -+	abs lr
43.13456 -+	abs r6
43.13457 -+	abs r6
43.13458 -+	abs r4
43.13459 -+	.text
43.13460 -+	.global castu_b
43.13461 -+castu_b:
43.13462 -+	castu.b pc
43.13463 -+	castu.b r12
43.13464 -+	castu.b r5
43.13465 -+	castu.b r4
43.13466 -+	castu.b lr
43.13467 -+	castu.b r7
43.13468 -+	castu.b sp
43.13469 -+	castu.b r9
43.13470 -+	.text
43.13471 -+	.global casts_b
43.13472 -+casts_b:
43.13473 -+	casts.b pc
43.13474 -+	casts.b r12
43.13475 -+	casts.b r5
43.13476 -+	casts.b r4
43.13477 -+	casts.b lr
43.13478 -+	casts.b r11
43.13479 -+	casts.b r1
43.13480 -+	casts.b r10
43.13481 -+	.text
43.13482 -+	.global castu_h
43.13483 -+castu_h:
43.13484 -+	castu.h pc
43.13485 -+	castu.h r12
43.13486 -+	castu.h r5
43.13487 -+	castu.h r4
43.13488 -+	castu.h lr
43.13489 -+	castu.h r10
43.13490 -+	castu.h r11
43.13491 -+	castu.h r1
43.13492 -+	.text
43.13493 -+	.global casts_h
43.13494 -+casts_h:
43.13495 -+	casts.h pc
43.13496 -+	casts.h r12
43.13497 -+	casts.h r5
43.13498 -+	casts.h r4
43.13499 -+	casts.h lr
43.13500 -+	casts.h r0
43.13501 -+	casts.h r5
43.13502 -+	casts.h r9
43.13503 -+	.text
43.13504 -+	.global brev
43.13505 -+brev:
43.13506 -+	brev pc
43.13507 -+	brev r12
43.13508 -+	brev r5
43.13509 -+	brev r4
43.13510 -+	brev lr
43.13511 -+	brev r5
43.13512 -+	brev r10
43.13513 -+	brev r8
43.13514 -+	.text
43.13515 -+	.global swap_h
43.13516 -+swap_h:
43.13517 -+	swap.h pc
43.13518 -+	swap.h r12
43.13519 -+	swap.h r5
43.13520 -+	swap.h r4
43.13521 -+	swap.h lr
43.13522 -+	swap.h r7
43.13523 -+	swap.h r0
43.13524 -+	swap.h r8
43.13525 -+	.text
43.13526 -+	.global swap_b
43.13527 -+swap_b:
43.13528 -+	swap.b pc
43.13529 -+	swap.b r12
43.13530 -+	swap.b r5
43.13531 -+	swap.b r4
43.13532 -+	swap.b lr
43.13533 -+	swap.b r10
43.13534 -+	swap.b r12
43.13535 -+	swap.b r1
43.13536 -+	.text
43.13537 -+	.global swap_bh
43.13538 -+swap_bh:
43.13539 -+	swap.bh pc
43.13540 -+	swap.bh r12
43.13541 -+	swap.bh r5
43.13542 -+	swap.bh r4
43.13543 -+	swap.bh lr
43.13544 -+	swap.bh r9
43.13545 -+	swap.bh r4
43.13546 -+	swap.bh r1
43.13547 -+	.text
43.13548 -+	.global One_s_compliment
43.13549 -+One_s_compliment:
43.13550 -+	com pc
43.13551 -+	com r12
43.13552 -+	com r5
43.13553 -+	com r4
43.13554 -+	com lr
43.13555 -+	com r2
43.13556 -+	com r2
43.13557 -+	com r7
43.13558 -+	.text
43.13559 -+	.global tnbz
43.13560 -+tnbz:
43.13561 -+	tnbz pc
43.13562 -+	tnbz r12
43.13563 -+	tnbz r5
43.13564 -+	tnbz r4
43.13565 -+	tnbz lr
43.13566 -+	tnbz r8
43.13567 -+	tnbz r12
43.13568 -+	tnbz pc
43.13569 -+	.text
43.13570 -+	.global rol
43.13571 -+rol:
43.13572 -+	rol pc
43.13573 -+	rol r12
43.13574 -+	rol r5
43.13575 -+	rol r4
43.13576 -+	rol lr
43.13577 -+	rol r10
43.13578 -+	rol r9
43.13579 -+	rol r5
43.13580 -+	.text
43.13581 -+	.global ror
43.13582 -+ror:
43.13583 -+	ror pc
43.13584 -+	ror r12
43.13585 -+	ror r5
43.13586 -+	ror r4
43.13587 -+	ror lr
43.13588 -+	ror r8
43.13589 -+	ror r4
43.13590 -+	ror r7
43.13591 -+	.text
43.13592 -+	.global icall
43.13593 -+icall:
43.13594 -+	icall pc
43.13595 -+	icall r12
43.13596 -+	icall r5
43.13597 -+	icall r4
43.13598 -+	icall lr
43.13599 -+	icall r3
43.13600 -+	icall r1
43.13601 -+	icall r3
43.13602 -+	.text
43.13603 -+	.global mustr
43.13604 -+mustr:
43.13605 -+	mustr pc
43.13606 -+	mustr r12
43.13607 -+	mustr r5
43.13608 -+	mustr r4
43.13609 -+	mustr lr
43.13610 -+	mustr r1
43.13611 -+	mustr r4
43.13612 -+	mustr r12
43.13613 -+	.text
43.13614 -+	.global musfr
43.13615 -+musfr:
43.13616 -+	musfr pc
43.13617 -+	musfr r12
43.13618 -+	musfr r5
43.13619 -+	musfr r4
43.13620 -+	musfr lr
43.13621 -+	musfr r11
43.13622 -+	musfr r12
43.13623 -+	musfr r2
43.13624 -+	.text
43.13625 -+	.global ret_cond
43.13626 -+ret_cond:
43.13627 -+	reteq pc
43.13628 -+	retal r12
43.13629 -+	retls r5
43.13630 -+	retpl r4
43.13631 -+	retne lr
43.13632 -+	retgt r0
43.13633 -+	retgt r12
43.13634 -+	retge r10
43.13635 -+	.text
43.13636 -+	.global sr_cond
43.13637 -+sr_cond:
43.13638 -+	sreq pc
43.13639 -+	sral r12
43.13640 -+	srls r5
43.13641 -+	srpl r4
43.13642 -+	srne lr
43.13643 -+	srlt r0
43.13644 -+	sral sp
43.13645 -+	srge r9
43.13646 -+	.text
43.13647 -+	.global ld_w3
43.13648 -+ld_w3:
43.13649 -+	ld.w pc,pc[0]
43.13650 -+	ld.w r12,r12[124]
43.13651 -+	ld.w r5,r5[64]
43.13652 -+	ld.w r4,r4[60]
43.13653 -+	ld.w lr,lr[4]
43.13654 -+	ld.w sp,r2[52]
43.13655 -+	ld.w r9,r1[8]
43.13656 -+	ld.w r5,sp[60]
43.13657 -+	.text
43.13658 -+	.global ld_sh3
43.13659 -+ld_sh3:
43.13660 -+	ld.sh pc,pc[0]
43.13661 -+	ld.sh r12,r12[14]
43.13662 -+	ld.sh r5,r5[8]
43.13663 -+	ld.sh r4,r4[6]
43.13664 -+	ld.sh lr,lr[2]
43.13665 -+	ld.sh r4,r2[8]
43.13666 -+	ld.sh sp,lr[10]
43.13667 -+	ld.sh r2,r11[2]
43.13668 -+	.text
43.13669 -+	.global ld_uh3
43.13670 -+ld_uh3:
43.13671 -+	ld.uh pc,pc[0]
43.13672 -+	ld.uh r12,r12[14]
43.13673 -+	ld.uh r5,r5[8]
43.13674 -+	ld.uh r4,r4[6]
43.13675 -+	ld.uh lr,lr[2]
43.13676 -+	ld.uh r10,r0[10]
43.13677 -+	ld.uh r8,r11[8]
43.13678 -+	ld.uh r10,r2[12]
43.13679 -+	.text
43.13680 -+	.global st_w3
43.13681 -+st_w3:
43.13682 -+	st.w pc[0],pc
43.13683 -+	st.w r12[60],r12
43.13684 -+	st.w r5[32],r5
43.13685 -+	st.w r4[28],r4
43.13686 -+	st.w lr[4],lr
43.13687 -+	st.w r7[44],r11
43.13688 -+	st.w r2[24],r6
43.13689 -+	st.w r4[12],r9
43.13690 -+	.text
43.13691 -+	.global st_h3
43.13692 -+st_h3:
43.13693 -+	st.h pc[0],pc
43.13694 -+	st.h r12[14],r12
43.13695 -+	st.h r5[8],r5
43.13696 -+	st.h r4[6],r4
43.13697 -+	st.h lr[2],lr
43.13698 -+	st.h lr[10],r12
43.13699 -+	st.h r6[4],r0
43.13700 -+	st.h r5[12],sp
43.13701 -+	.text
43.13702 -+	.global st_b3
43.13703 -+st_b3:
43.13704 -+	st.b pc[0],pc
43.13705 -+	st.b r12[7],r12
43.13706 -+	st.b r5[4],r5
43.13707 -+	st.b r4[3],r4
43.13708 -+	st.b lr[1],lr
43.13709 -+	st.b r12[6],r9
43.13710 -+	st.b r2[3],lr
43.13711 -+	st.b r1[3],r11
43.13712 -+	.text
43.13713 -+	.global ldd
43.13714 -+ldd:
43.13715 -+	ld.d r0,pc
43.13716 -+	ld.d r14,r12
43.13717 -+	ld.d r8,r5
43.13718 -+	ld.d r6,r4
43.13719 -+	ld.d r2,lr
43.13720 -+	ld.d r14,r7
43.13721 -+	ld.d r4,r4
43.13722 -+	ld.d r14,pc
43.13723 -+	.text
43.13724 -+	.global ldd_postinc
43.13725 -+ldd_postinc:
43.13726 -+	ld.d r0,pc++
43.13727 -+	ld.d r14,r12++
43.13728 -+	ld.d r8,r5++
43.13729 -+	ld.d r6,r4++
43.13730 -+	ld.d r2,lr++
43.13731 -+	ld.d r14,r5++
43.13732 -+	ld.d r12,r11++
43.13733 -+	ld.d r2,r12++
43.13734 -+	.text
43.13735 -+	.global ldd_predec
43.13736 -+ldd_predec:
43.13737 -+	ld.d r0,--pc
43.13738 -+	ld.d r14,--r12
43.13739 -+	ld.d r8,--r5
43.13740 -+	ld.d r6,--r4
43.13741 -+	ld.d r2,--lr
43.13742 -+	ld.d r8,--r0
43.13743 -+	ld.d r10,--pc
43.13744 -+	ld.d r2,--r4
43.13745 -+	.text
43.13746 -+	.global std
43.13747 -+std:
43.13748 -+	st.d pc,r0
43.13749 -+	st.d r12,r14
43.13750 -+	st.d r5,r8
43.13751 -+	st.d r4,r6
43.13752 -+	st.d lr,r2
43.13753 -+	st.d r0,r12
43.13754 -+	st.d sp,r4
43.13755 -+	st.d r12,r12
43.13756 -+	.text
43.13757 -+	.global std_postinc
43.13758 -+std_postinc:
43.13759 -+	st.d pc++,r0
43.13760 -+	st.d r12++,r14
43.13761 -+	st.d r5++,r8
43.13762 -+	st.d r4++,r6
43.13763 -+	st.d lr++,r2
43.13764 -+	st.d sp++,r6
43.13765 -+	st.d r10++,r6
43.13766 -+	st.d r7++,r2
43.13767 -+	.text
43.13768 -+	.global std_predec
43.13769 -+std_predec:
43.13770 -+	st.d --pc,r0
43.13771 -+	st.d --r12,r14
43.13772 -+	st.d --r5,r8
43.13773 -+	st.d --r4,r6
43.13774 -+	st.d --lr,r2
43.13775 -+	st.d --r3,r6
43.13776 -+	st.d --lr,r2
43.13777 -+	st.d --r0,r4
43.13778 -+	.text
43.13779 -+	.global mul
43.13780 -+mul:
43.13781 -+	mul pc,pc
43.13782 -+	mul r12,r12
43.13783 -+	mul r5,r5
43.13784 -+	mul r4,r4
43.13785 -+	mul lr,lr
43.13786 -+	mul r10,lr
43.13787 -+	mul r0,r8
43.13788 -+	mul r8,r5
43.13789 -+	.text
43.13790 -+	.global asr_imm5
43.13791 -+asr_imm5:
43.13792 -+	asr pc,0
43.13793 -+	asr r12,31
43.13794 -+	asr r5,16
43.13795 -+	asr r4,15
43.13796 -+	asr lr,1
43.13797 -+	asr r6,23
43.13798 -+	asr r6,18
43.13799 -+	asr r5,8
43.13800 -+	.text
43.13801 -+	.global lsl_imm5
43.13802 -+lsl_imm5:
43.13803 -+	lsl pc,0
43.13804 -+	lsl r12,31
43.13805 -+	lsl r5,16
43.13806 -+	lsl r4,15
43.13807 -+	lsl lr,1
43.13808 -+	lsl r12,13
43.13809 -+	lsl r6,16
43.13810 -+	lsl r1,25
43.13811 -+	.text
43.13812 -+	.global lsr_imm5
43.13813 -+lsr_imm5:
43.13814 -+	lsr pc,0
43.13815 -+	lsr r12,31
43.13816 -+	lsr r5,16
43.13817 -+	lsr r4,15
43.13818 -+	lsr lr,1
43.13819 -+	lsr r0,1
43.13820 -+	lsr r8,10
43.13821 -+	lsr r7,26
43.13822 -+	.text
43.13823 -+	.global sbr
43.13824 -+sbr:
43.13825 -+	sbr pc,0
43.13826 -+	sbr r12,31
43.13827 -+	sbr r5,16
43.13828 -+	sbr r4,15
43.13829 -+	sbr lr,1
43.13830 -+	sbr r8,31
43.13831 -+	sbr r6,22
43.13832 -+	sbr r1,23
43.13833 -+	.text
43.13834 -+	.global cbr
43.13835 -+cbr:
43.13836 -+	cbr pc,0
43.13837 -+	cbr r12,31
43.13838 -+	cbr r5,16
43.13839 -+	cbr r4,15
43.13840 -+	cbr lr,1
43.13841 -+	cbr r12,10
43.13842 -+	cbr r7,22
43.13843 -+	cbr r8,9
43.13844 -+	.text
43.13845 -+	.global brc1
43.13846 -+brc1:
43.13847 -+	breq 0
43.13848 -+	brpl -2
43.13849 -+	brge -256
43.13850 -+	brcs 254
43.13851 -+	brne 2
43.13852 -+	brcs 230
43.13853 -+	breq -18
43.13854 -+	breq 12
43.13855 -+	.text
43.13856 -+	.global rjmp
43.13857 -+rjmp:
43.13858 -+	rjmp 0
43.13859 -+	rjmp -2
43.13860 -+	rjmp -1024
43.13861 -+	rjmp 1022
43.13862 -+	rjmp 2
43.13863 -+	rjmp -962
43.13864 -+	rjmp 14
43.13865 -+	rjmp -516
43.13866 -+	.text
43.13867 -+	.global rcall1
43.13868 -+rcall1:
43.13869 -+	rcall 0
43.13870 -+	rcall -2
43.13871 -+	rcall -1024
43.13872 -+	rcall 1022
43.13873 -+	rcall 2
43.13874 -+	rcall 216
43.13875 -+	rcall -530
43.13876 -+	rcall -972
43.13877 -+	.text
43.13878 -+	.global acall
43.13879 -+acall:
43.13880 -+	acall 0
43.13881 -+	acall 1020
43.13882 -+	acall 512
43.13883 -+	acall 508
43.13884 -+	acall 4
43.13885 -+	acall 356
43.13886 -+	acall 304
43.13887 -+	acall 172
43.13888 -+	.text
43.13889 -+	.global scall
43.13890 -+scall:
43.13891 -+	scall
43.13892 -+	scall
43.13893 -+	scall
43.13894 -+	scall
43.13895 -+	scall
43.13896 -+	scall
43.13897 -+	scall
43.13898 -+	scall
43.13899 -+	.text
43.13900 -+	.global popm
43.13901 -+popm:
43.13902 -+	/* popm with no argument fails currently */
43.13903 -+	popm pc
43.13904 -+	popm r0-r11,pc,r12=-1
43.13905 -+	popm lr
43.13906 -+	popm r0-r11,pc,r12=1
43.13907 -+	popm r0-r3
43.13908 -+	popm r4-r10,pc
43.13909 -+	popm r0-r3,r11,pc,r12=0
43.13910 -+	popm r0-r7,r10-r12,lr
43.13911 -+	.text
43.13912 -+	.global pushm
43.13913 -+pushm:
43.13914 -+	pushm pc
43.13915 -+	pushm r0-r12,lr,pc
43.13916 -+	pushm pc
43.13917 -+	pushm r0-r12,lr
43.13918 -+	pushm r0-r3
43.13919 -+	pushm r8-r10,lr,pc
43.13920 -+	pushm r0-r3,r10
43.13921 -+	pushm r8-r9,r12
43.13922 -+	.text
43.13923 -+	.global popm_n
43.13924 -+popm_n:
43.13925 -+	popm pc
43.13926 -+	popm r0-r11,pc,r12=-1
43.13927 -+	popm lr
43.13928 -+	popm r0-r11,pc,r12=1
43.13929 -+	popm r0-r3
43.13930 -+	popm r4-r10,pc
43.13931 -+	popm r0-r3,r11,pc,r12=0
43.13932 -+	popm r0-r7,r10-r12,lr
43.13933 -+	.text
43.13934 -+	.global pushm_n
43.13935 -+pushm_n:
43.13936 -+	pushm pc
43.13937 -+	pushm r0-r12,lr,pc
43.13938 -+	pushm pc
43.13939 -+	pushm r0-r12,lr
43.13940 -+	pushm r0-r3
43.13941 -+	pushm r8-r10,lr,pc
43.13942 -+	pushm r0-r3,r10
43.13943 -+	pushm r8-r9,r12
43.13944 -+	.text
43.13945 -+	.global csrfcz
43.13946 -+csrfcz:
43.13947 -+	csrfcz 0
43.13948 -+	csrfcz 31
43.13949 -+	csrfcz 16
43.13950 -+	csrfcz 15
43.13951 -+	csrfcz 1
43.13952 -+	csrfcz 5
43.13953 -+	csrfcz 13
43.13954 -+	csrfcz 23
43.13955 -+	.text
43.13956 -+	.global ssrf
43.13957 -+ssrf:
43.13958 -+	ssrf 0
43.13959 -+	ssrf 31
43.13960 -+	ssrf 16
43.13961 -+	ssrf 15
43.13962 -+	ssrf 1
43.13963 -+	ssrf 29
43.13964 -+	ssrf 13
43.13965 -+	ssrf 13
43.13966 -+	.text
43.13967 -+	.global csrf
43.13968 -+csrf:
43.13969 -+	csrf 0
43.13970 -+	csrf 31
43.13971 -+	csrf 16
43.13972 -+	csrf 15
43.13973 -+	csrf 1
43.13974 -+	csrf 10
43.13975 -+	csrf 15
43.13976 -+	csrf 11
43.13977 -+	.text
43.13978 -+	.global rete
43.13979 -+rete:
43.13980 -+	rete
43.13981 -+	.text
43.13982 -+	.global rets
43.13983 -+rets:
43.13984 -+	rets
43.13985 -+	.text
43.13986 -+	.global retd
43.13987 -+retd:
43.13988 -+	retd
43.13989 -+	.text
43.13990 -+	.global retj
43.13991 -+retj:
43.13992 -+	retj
43.13993 -+	.text
43.13994 -+	.global tlbr
43.13995 -+tlbr:
43.13996 -+	tlbr
43.13997 -+	.text
43.13998 -+	.global tlbs
43.13999 -+tlbs:
43.14000 -+	tlbs
43.14001 -+	.text
43.14002 -+	.global tlbw
43.14003 -+tlbw:
43.14004 -+	tlbw
43.14005 -+	.text
43.14006 -+	.global breakpoint
43.14007 -+breakpoint:
43.14008 -+	breakpoint
43.14009 -+	.text
43.14010 -+	.global incjosp
43.14011 -+incjosp:
43.14012 -+	incjosp 1
43.14013 -+	incjosp 2
43.14014 -+	incjosp 3
43.14015 -+	incjosp 4
43.14016 -+	incjosp -4
43.14017 -+	incjosp -3
43.14018 -+	incjosp -2
43.14019 -+	incjosp -1
43.14020 -+	.text
43.14021 -+	.global nop
43.14022 -+nop:
43.14023 -+	nop
43.14024 -+	.text
43.14025 -+	.global popjc
43.14026 -+popjc:
43.14027 -+	popjc
43.14028 -+	.text
43.14029 -+	.global pushjc
43.14030 -+pushjc:
43.14031 -+	pushjc
43.14032 -+	.text
43.14033 -+	.global add2
43.14034 -+add2:
43.14035 -+	add pc,pc,pc<<0
43.14036 -+	add r12,r12,r12<<3
43.14037 -+	add r5,r5,r5<<2
43.14038 -+	add r4,r4,r4<<1
43.14039 -+	add lr,lr,lr<<1
43.14040 -+	add r0,r12,r0<<1
43.14041 -+	add r9,r12,r4<<0
43.14042 -+	add r12,r12,r7<<2
43.14043 -+	.text
43.14044 -+	.global sub2
43.14045 -+sub2:
43.14046 -+	sub pc,pc,pc<<0
43.14047 -+	sub r12,r12,r12<<3
43.14048 -+	sub r5,r5,r5<<2
43.14049 -+	sub r4,r4,r4<<1
43.14050 -+	sub lr,lr,lr<<1
43.14051 -+	sub sp,r3,r4<<0
43.14052 -+	sub r3,r7,r3<<0
43.14053 -+	sub sp,r10,sp<<1
43.14054 -+	.text
43.14055 -+	.global divu
43.14056 -+divu:
43.14057 -+	divu pc,pc,pc
43.14058 -+	divu r12,r12,r12
43.14059 -+	divu r5,r5,r5
43.14060 -+	divu r4,r4,r4
43.14061 -+	divu lr,lr,lr
43.14062 -+	divu sp,r4,pc
43.14063 -+	divu r5,r5,sp
43.14064 -+	divu r10,sp,r0
43.14065 -+	.text
43.14066 -+	.global addhh_w
43.14067 -+addhh_w:
43.14068 -+	addhh.w pc,pc:b,pc:b
43.14069 -+	addhh.w r12,r12:t,r12:t
43.14070 -+	addhh.w r5,r5:t,r5:t
43.14071 -+	addhh.w r4,r4:b,r4:b
43.14072 -+	addhh.w lr,lr:t,lr:t
43.14073 -+	addhh.w r0,r0:b,r3:b
43.14074 -+	addhh.w lr,r12:t,r7:b
43.14075 -+	addhh.w r3,r10:t,r2:b
43.14076 -+	.text
43.14077 -+	.global subhh_w
43.14078 -+subhh_w:
43.14079 -+	subhh.w pc,pc:b,pc:b
43.14080 -+	subhh.w r12,r12:t,r12:t
43.14081 -+	subhh.w r5,r5:t,r5:t
43.14082 -+	subhh.w r4,r4:b,r4:b
43.14083 -+	subhh.w lr,lr:t,lr:t
43.14084 -+	subhh.w r10,r1:t,r7:b
43.14085 -+	subhh.w pc,r10:t,lr:t
43.14086 -+	subhh.w r3,r0:t,r12:b
43.14087 -+	.text
43.14088 -+	.global adc
43.14089 -+adc:
43.14090 -+	adc pc,pc,pc
43.14091 -+	adc r12,r12,r12
43.14092 -+	adc r5,r5,r5
43.14093 -+	adc r4,r4,r4
43.14094 -+	adc lr,lr,lr
43.14095 -+	adc r4,r0,r7
43.14096 -+	adc sp,r4,r3
43.14097 -+	adc r2,r12,r0
43.14098 -+	.text
43.14099 -+	.global sbc
43.14100 -+sbc:
43.14101 -+	sbc pc,pc,pc
43.14102 -+	sbc r12,r12,r12
43.14103 -+	sbc r5,r5,r5
43.14104 -+	sbc r4,r4,r4
43.14105 -+	sbc lr,lr,lr
43.14106 -+	sbc r6,r7,r9
43.14107 -+	sbc r0,r8,r5
43.14108 -+	sbc r1,r0,r4
43.14109 -+	.text
43.14110 -+	.global mul_2
43.14111 -+mul_2:
43.14112 -+	mul pc,pc,pc
43.14113 -+	mul r12,r12,r12
43.14114 -+	mul r5,r5,r5
43.14115 -+	mul r4,r4,r4
43.14116 -+	mul lr,lr,lr
43.14117 -+	mul pc,r0,r0
43.14118 -+	mul r8,pc,lr
43.14119 -+	mul r4,r12,pc
43.14120 -+	.text
43.14121 -+	.global mac
43.14122 -+mac:
43.14123 -+	mac pc,pc,pc
43.14124 -+	mac r12,r12,r12
43.14125 -+	mac r5,r5,r5
43.14126 -+	mac r4,r4,r4
43.14127 -+	mac lr,lr,lr
43.14128 -+	mac r10,r4,r0
43.14129 -+	mac r7,lr,r0
43.14130 -+	mac r2,r9,r12
43.14131 -+	.text
43.14132 -+	.global mulsd
43.14133 -+mulsd:
43.14134 -+	muls.d pc,pc,pc
43.14135 -+	muls.d r12,r12,r12
43.14136 -+	muls.d r5,r5,r5
43.14137 -+	muls.d r4,r4,r4
43.14138 -+	muls.d lr,lr,lr
43.14139 -+	muls.d r2,r8,lr
43.14140 -+	muls.d r4,r0,r11
43.14141 -+	muls.d r5,lr,r6
43.14142 -+	.text
43.14143 -+	.global macsd
43.14144 -+macsd:
43.14145 -+	macs.d r0,pc,pc
43.14146 -+	macs.d r14,r12,r12
43.14147 -+	macs.d r8,r5,r5
43.14148 -+	macs.d r6,r4,r4
43.14149 -+	macs.d r2,lr,lr
43.14150 -+	macs.d r8,r1,r9
43.14151 -+	macs.d r14,r8,r8
43.14152 -+	macs.d r4,r3,r12
43.14153 -+	.text
43.14154 -+	.global mulud
43.14155 -+mulud:
43.14156 -+	mulu.d r0,pc,pc
43.14157 -+	mulu.d r14,r12,r12
43.14158 -+	mulu.d r8,r5,r5
43.14159 -+	mulu.d r6,r4,r4
43.14160 -+	mulu.d r2,lr,lr
43.14161 -+	mulu.d r6,r5,r0
43.14162 -+	mulu.d r4,r6,r1
43.14163 -+	mulu.d r8,r8,r2
43.14164 -+	.text
43.14165 -+	.global macud
43.14166 -+macud:
43.14167 -+	macu.d r0,pc,pc
43.14168 -+	macu.d r14,r12,r12
43.14169 -+	macu.d r8,r5,r5
43.14170 -+	macu.d r6,r4,r4
43.14171 -+	macu.d r2,lr,lr
43.14172 -+	macu.d r6,sp,r11
43.14173 -+	macu.d r2,r4,r8
43.14174 -+	macu.d r6,r10,r9
43.14175 -+	.text
43.14176 -+	.global asr_1
43.14177 -+asr_1:
43.14178 -+	asr pc,pc,pc
43.14179 -+	asr r12,r12,r12
43.14180 -+	asr r5,r5,r5
43.14181 -+	asr r4,r4,r4
43.14182 -+	asr lr,lr,lr
43.14183 -+	asr pc,r6,pc
43.14184 -+	asr r0,r6,r12
43.14185 -+	asr r4,sp,r0
43.14186 -+	.text
43.14187 -+	.global lsl_1
43.14188 -+lsl_1:
43.14189 -+	lsl pc,pc,pc
43.14190 -+	lsl r12,r12,r12
43.14191 -+	lsl r5,r5,r5
43.14192 -+	lsl r4,r4,r4
43.14193 -+	lsl lr,lr,lr
43.14194 -+	lsl lr,r5,lr
43.14195 -+	lsl r5,pc,r3
43.14196 -+	lsl r1,pc,r9
43.14197 -+	.text
43.14198 -+	.global lsr_1
43.14199 -+lsr_1:
43.14200 -+	lsr pc,pc,pc
43.14201 -+	lsr r12,r12,r12
43.14202 -+	lsr r5,r5,r5
43.14203 -+	lsr r4,r4,r4
43.14204 -+	lsr lr,lr,lr
43.14205 -+	lsr r2,r4,r1
43.14206 -+	lsr r5,r1,r6
43.14207 -+	lsr sp,r6,r7
43.14208 -+	.text
43.14209 -+	.global xchg
43.14210 -+xchg:
43.14211 -+	xchg pc,pc,pc
43.14212 -+	xchg r12,r12,r12
43.14213 -+	xchg r5,r5,r5
43.14214 -+	xchg r4,r4,r4
43.14215 -+	xchg lr,lr,lr
43.14216 -+	xchg lr,r4,sp
43.14217 -+	xchg r1,r5,r12
43.14218 -+	xchg lr,r12,r0
43.14219 -+	.text
43.14220 -+	.global max
43.14221 -+max:
43.14222 -+	max pc,pc,pc
43.14223 -+	max r12,r12,r12
43.14224 -+	max r5,r5,r5
43.14225 -+	max r4,r4,r4
43.14226 -+	max lr,lr,lr
43.14227 -+	max lr,r2,sp
43.14228 -+	max r4,r10,r9
43.14229 -+	max lr,r9,lr
43.14230 -+	.text
43.14231 -+	.global min
43.14232 -+min:
43.14233 -+	min pc,pc,pc
43.14234 -+	min r12,r12,r12
43.14235 -+	min r5,r5,r5
43.14236 -+	min r4,r4,r4
43.14237 -+	min lr,lr,lr
43.14238 -+	min r9,r7,r8
43.14239 -+	min sp,r5,r5
43.14240 -+	min r4,r1,r4
43.14241 -+	.text
43.14242 -+	.global addabs
43.14243 -+addabs:
43.14244 -+	addabs pc,pc,pc
43.14245 -+	addabs r12,r12,r12
43.14246 -+	addabs r5,r5,r5
43.14247 -+	addabs r4,r4,r4
43.14248 -+	addabs lr,lr,lr
43.14249 -+	addabs r7,r10,r0
43.14250 -+	addabs r9,r9,r7
43.14251 -+	addabs r2,r8,r12
43.14252 -+	.text
43.14253 -+	.global mulnhh_w
43.14254 -+mulnhh_w:
43.14255 -+	mulnhh.w pc,pc:b,pc:b
43.14256 -+	mulnhh.w r12,r12:t,r12:t
43.14257 -+	mulnhh.w r5,r5:t,r5:t
43.14258 -+	mulnhh.w r4,r4:b,r4:b
43.14259 -+	mulnhh.w lr,lr:t,lr:t
43.14260 -+	mulnhh.w r11,sp:t,r9:b
43.14261 -+	mulnhh.w sp,r4:b,lr:t
43.14262 -+	mulnhh.w r12,r2:t,r11:b
43.14263 -+	.text
43.14264 -+	.global mulnwh_d
43.14265 -+mulnwh_d:
43.14266 -+	mulnwh.d r0,pc,pc:b
43.14267 -+	mulnwh.d r14,r12,r12:t
43.14268 -+	mulnwh.d r8,r5,r5:t
43.14269 -+	mulnwh.d r6,r4,r4:b
43.14270 -+	mulnwh.d r2,lr,lr:t
43.14271 -+	mulnwh.d r14,r3,r2:t
43.14272 -+	mulnwh.d r4,r5,r9:b
43.14273 -+	mulnwh.d r12,r4,r4:t
43.14274 -+	.text
43.14275 -+	.global machh_w
43.14276 -+machh_w:
43.14277 -+	machh.w pc,pc:b,pc:b
43.14278 -+	machh.w r12,r12:t,r12:t
43.14279 -+	machh.w r5,r5:t,r5:t
43.14280 -+	machh.w r4,r4:b,r4:b
43.14281 -+	machh.w lr,lr:t,lr:t
43.14282 -+	machh.w lr,r5:b,r1:t
43.14283 -+	machh.w r9,r6:b,r7:b
43.14284 -+	machh.w r5,lr:t,r12:b
43.14285 -+	.text
43.14286 -+	.global machh_d
43.14287 -+machh_d:
43.14288 -+	machh.d r0,pc:b,pc:b
43.14289 -+	machh.d r14,r12:t,r12:t
43.14290 -+	machh.d r8,r5:t,r5:t
43.14291 -+	machh.d r6,r4:b,r4:b
43.14292 -+	machh.d r2,lr:t,lr:t
43.14293 -+	machh.d r10,r0:b,r8:b
43.14294 -+	machh.d r14,r4:b,r5:t
43.14295 -+	machh.d r8,r0:b,r4:t
43.14296 -+	.text
43.14297 -+	.global macsathh_w
43.14298 -+macsathh_w:
43.14299 -+	macsathh.w pc,pc:b,pc:b
43.14300 -+	macsathh.w r12,r12:t,r12:t
43.14301 -+	macsathh.w r5,r5:t,r5:t
43.14302 -+	macsathh.w r4,r4:b,r4:b
43.14303 -+	macsathh.w lr,lr:t,lr:t
43.14304 -+	macsathh.w r7,r7:t,pc:t
43.14305 -+	macsathh.w r4,r2:t,r4:b
43.14306 -+	macsathh.w r4,r8:t,r3:t
43.14307 -+	.text
43.14308 -+	.global mulhh_w
43.14309 -+mulhh_w:
43.14310 -+	mulhh.w pc,pc:b,pc:b
43.14311 -+	mulhh.w r12,r12:t,r12:t
43.14312 -+	mulhh.w r5,r5:t,r5:t
43.14313 -+	mulhh.w r4,r4:b,r4:b
43.14314 -+	mulhh.w lr,lr:t,lr:t
43.14315 -+	mulhh.w r7,r4:t,r9:b
43.14316 -+	mulhh.w pc,r3:t,r7:t
43.14317 -+	mulhh.w pc,r4:b,r9:t
43.14318 -+	.text
43.14319 -+	.global mulsathh_h
43.14320 -+mulsathh_h:
43.14321 -+	mulsathh.h pc,pc:b,pc:b
43.14322 -+	mulsathh.h r12,r12:t,r12:t
43.14323 -+	mulsathh.h r5,r5:t,r5:t
43.14324 -+	mulsathh.h r4,r4:b,r4:b
43.14325 -+	mulsathh.h lr,lr:t,lr:t
43.14326 -+	mulsathh.h r3,r1:b,sp:b
43.14327 -+	mulsathh.h r11,lr:t,r11:b
43.14328 -+	mulsathh.h r8,r8:b,r11:t
43.14329 -+	.text
43.14330 -+	.global mulsathh_w
43.14331 -+mulsathh_w:
43.14332 -+	mulsathh.w pc,pc:b,pc:b
43.14333 -+	mulsathh.w r12,r12:t,r12:t
43.14334 -+	mulsathh.w r5,r5:t,r5:t
43.14335 -+	mulsathh.w r4,r4:b,r4:b
43.14336 -+	mulsathh.w lr,lr:t,lr:t
43.14337 -+	mulsathh.w lr,r11:t,r6:b
43.14338 -+	mulsathh.w r6,r6:b,r7:t
43.14339 -+	mulsathh.w r10,r2:b,r3:b
43.14340 -+	.text
43.14341 -+	.global mulsatrndhh_h
43.14342 -+mulsatrndhh_h:
43.14343 -+	mulsatrndhh.h pc,pc:b,pc:b
43.14344 -+	mulsatrndhh.h r12,r12:t,r12:t
43.14345 -+	mulsatrndhh.h r5,r5:t,r5:t
43.14346 -+	mulsatrndhh.h r4,r4:b,r4:b
43.14347 -+	mulsatrndhh.h lr,lr:t,lr:t
43.14348 -+	mulsatrndhh.h r11,r6:b,r9:b
43.14349 -+	mulsatrndhh.h r11,r3:b,r8:t
43.14350 -+	mulsatrndhh.h r5,sp:t,r7:t
43.14351 -+	.text
43.14352 -+	.global mulsatrndwh_w
43.14353 -+mulsatrndwh_w:
43.14354 -+	mulsatrndwh.w pc,pc,pc:b
43.14355 -+	mulsatrndwh.w r12,r12,r12:t
43.14356 -+	mulsatrndwh.w r5,r5,r5:t
43.14357 -+	mulsatrndwh.w r4,r4,r4:b
43.14358 -+	mulsatrndwh.w lr,lr,lr:t
43.14359 -+	mulsatrndwh.w r5,r12,r0:b
43.14360 -+	mulsatrndwh.w r7,r10,pc:b
43.14361 -+	mulsatrndwh.w r10,r8,r5:t
43.14362 -+	.text
43.14363 -+	.global macwh_d
43.14364 -+macwh_d:
43.14365 -+	macwh.d r0,pc,pc:b
43.14366 -+	macwh.d r14,r12,r12:t
43.14367 -+	macwh.d r8,r5,r5:t
43.14368 -+	macwh.d r6,r4,r4:b
43.14369 -+	macwh.d r2,lr,lr:t
43.14370 -+	macwh.d r4,r10,r12:t
43.14371 -+	macwh.d r4,r7,sp:b
43.14372 -+	macwh.d r14,r9,r11:b
43.14373 -+	.text
43.14374 -+	.global mulwh_d
43.14375 -+mulwh_d:
43.14376 -+	mulwh.d r0,pc,pc:b
43.14377 -+	mulwh.d r14,r12,r12:t
43.14378 -+	mulwh.d r8,r5,r5:t
43.14379 -+	mulwh.d r6,r4,r4:b
43.14380 -+	mulwh.d r2,lr,lr:t
43.14381 -+	mulwh.d r12,r5,r1:b
43.14382 -+	mulwh.d r0,r1,r3:t
43.14383 -+	mulwh.d r0,r9,r2:b
43.14384 -+	.text
43.14385 -+	.global mulsatwh_w
43.14386 -+mulsatwh_w:
43.14387 -+	mulsatwh.w pc,pc,pc:b
43.14388 -+	mulsatwh.w r12,r12,r12:t
43.14389 -+	mulsatwh.w r5,r5,r5:t
43.14390 -+	mulsatwh.w r4,r4,r4:b
43.14391 -+	mulsatwh.w lr,lr,lr:t
43.14392 -+	mulsatwh.w r11,pc,r10:t
43.14393 -+	mulsatwh.w sp,r12,r9:t
43.14394 -+	mulsatwh.w r0,r3,r2:t
43.14395 -+	.text
43.14396 -+	.global ldw7
43.14397 -+ldw7:
43.14398 -+	ld.w pc,pc[pc:b<<2]
43.14399 -+	ld.w r12,r12[r12:t<<2]
43.14400 -+	ld.w r5,r5[r5:u<<2]
43.14401 -+	ld.w r4,r4[r4:l<<2]
43.14402 -+	ld.w lr,lr[lr:l<<2]
43.14403 -+	ld.w r9,r10[r6:l<<2]
43.14404 -+	ld.w r2,r10[r10:b<<2]
43.14405 -+	ld.w r11,r5[pc:b<<2]
43.14406 -+	.text
43.14407 -+	.global satadd_w
43.14408 -+satadd_w:
43.14409 -+	satadd.w pc,pc,pc
43.14410 -+	satadd.w r12,r12,r12
43.14411 -+	satadd.w r5,r5,r5
43.14412 -+	satadd.w r4,r4,r4
43.14413 -+	satadd.w lr,lr,lr
43.14414 -+	satadd.w r4,r8,r11
43.14415 -+	satadd.w r3,r12,r6
43.14416 -+	satadd.w r3,lr,r9
43.14417 -+	.text
43.14418 -+	.global satsub_w1
43.14419 -+satsub_w1:
43.14420 -+	satsub.w pc,pc,pc
43.14421 -+	satsub.w r12,r12,r12
43.14422 -+	satsub.w r5,r5,r5
43.14423 -+	satsub.w r4,r4,r4
43.14424 -+	satsub.w lr,lr,lr
43.14425 -+	satsub.w r8,sp,r0
43.14426 -+	satsub.w r9,r8,r4
43.14427 -+	satsub.w pc,lr,r2
43.14428 -+	.text
43.14429 -+	.global satadd_h
43.14430 -+satadd_h:
43.14431 -+	satadd.h pc,pc,pc
43.14432 -+	satadd.h r12,r12,r12
43.14433 -+	satadd.h r5,r5,r5
43.14434 -+	satadd.h r4,r4,r4
43.14435 -+	satadd.h lr,lr,lr
43.14436 -+	satadd.h r7,r3,r9
43.14437 -+	satadd.h r1,r0,r2
43.14438 -+	satadd.h r1,r4,lr
43.14439 -+	.text
43.14440 -+	.global satsub_h
43.14441 -+satsub_h:
43.14442 -+	satsub.h pc,pc,pc
43.14443 -+	satsub.h r12,r12,r12
43.14444 -+	satsub.h r5,r5,r5
43.14445 -+	satsub.h r4,r4,r4
43.14446 -+	satsub.h lr,lr,lr
43.14447 -+	satsub.h lr,lr,r3
43.14448 -+	satsub.h r11,r6,r5
43.14449 -+	satsub.h r3,sp,r0
43.14450 -+	.text
43.14451 -+	.global mul3
43.14452 -+mul3:
43.14453 -+	mul pc,pc,0
43.14454 -+	mul r12,r12,-1
43.14455 -+	mul r5,r5,-128
43.14456 -+	mul r4,r4,127
43.14457 -+	mul lr,lr,1
43.14458 -+	mul r12,r2,-7
43.14459 -+	mul r1,pc,95
43.14460 -+	mul r4,r6,19
43.14461 -+	.text
43.14462 -+	.global rsub2
43.14463 -+rsub2:
43.14464 -+	rsub pc,pc,0
43.14465 -+	rsub r12,r12,-1
43.14466 -+	rsub r5,r5,-128
43.14467 -+	rsub r4,r4,127
43.14468 -+	rsub lr,lr,1
43.14469 -+	rsub r9,lr,96
43.14470 -+	rsub r11,r1,56
43.14471 -+	rsub r0,r7,-87
43.14472 -+	.text
43.14473 -+	.global clz
43.14474 -+clz:
43.14475 -+	clz pc,pc
43.14476 -+	clz r12,r12
43.14477 -+	clz r5,r5
43.14478 -+	clz r4,r4
43.14479 -+	clz lr,lr
43.14480 -+	clz r2,r3
43.14481 -+	clz r5,r11
43.14482 -+	clz pc,r3
43.14483 -+	.text
43.14484 -+	.global cpc1
43.14485 -+cpc1:
43.14486 -+	cpc pc,pc
43.14487 -+	cpc r12,r12
43.14488 -+	cpc r5,r5
43.14489 -+	cpc r4,r4
43.14490 -+	cpc lr,lr
43.14491 -+	cpc pc,r4
43.14492 -+	cpc r5,r9
43.14493 -+	cpc r6,r7
43.14494 -+	.text
43.14495 -+	.global asr3
43.14496 -+asr3:
43.14497 -+	asr pc,pc,0
43.14498 -+	asr r12,r12,31
43.14499 -+	asr r5,r5,16
43.14500 -+	asr r4,r4,15
43.14501 -+	asr lr,lr,1
43.14502 -+	asr r4,r11,19
43.14503 -+	asr sp,pc,26
43.14504 -+	asr r11,sp,8
43.14505 -+	.text
43.14506 -+	.global lsl3
43.14507 -+lsl3:
43.14508 -+	lsl pc,pc,0
43.14509 -+	lsl r12,r12,31
43.14510 -+	lsl r5,r5,16
43.14511 -+	lsl r4,r4,15
43.14512 -+	lsl lr,lr,1
43.14513 -+	lsl r8,r10,17
43.14514 -+	lsl r2,lr,3
43.14515 -+	lsl lr,r11,14
43.14516 -+	.text
43.14517 -+	.global lsr3
43.14518 -+lsr3:
43.14519 -+	lsr pc,pc,0
43.14520 -+	lsr r12,r12,31
43.14521 -+	lsr r5,r5,16
43.14522 -+	lsr r4,r4,15
43.14523 -+	lsr lr,lr,1
43.14524 -+	lsr r4,r3,31
43.14525 -+	lsr pc,r9,14
43.14526 -+	lsr r3,r0,6
43.14527 -+/*	.text
43.14528 -+	.global extract_b
43.14529 -+extract_b:
43.14530 -+	extract.b pc,pc:b
43.14531 -+	extract.b r12,r12:t
43.14532 -+	extract.b r5,r5:u
43.14533 -+	extract.b r4,r4:l
43.14534 -+	extract.b lr,lr:l
43.14535 -+	extract.b r2,r5:l
43.14536 -+	extract.b r12,r3:l
43.14537 -+	extract.b sp,r3:l
43.14538 -+	.text
43.14539 -+	.global insert_b
43.14540 -+insert_b:
43.14541 -+	insert.b pc:b,pc
43.14542 -+	insert.b r12:t,r12
43.14543 -+	insert.b r5:u,r5
43.14544 -+	insert.b r4:l,r4
43.14545 -+	insert.b lr:l,lr
43.14546 -+	insert.b r12:u,r3
43.14547 -+	insert.b r10:l,lr
43.14548 -+	insert.b r11:l,r12
43.14549 -+	.text
43.14550 -+	.global extract_h
43.14551 -+extract_h:
43.14552 -+	extract.h pc,pc:b
43.14553 -+	extract.h r12,r12:t
43.14554 -+	extract.h r5,r5:t
43.14555 -+	extract.h r4,r4:b
43.14556 -+	extract.h lr,lr:t
43.14557 -+	extract.h r11,lr:b
43.14558 -+	extract.h r10,r0:b
43.14559 -+	extract.h r11,r12:b
43.14560 -+	.text
43.14561 -+	.global insert_h
43.14562 -+insert_h:
43.14563 -+	insert.h pc:b,pc
43.14564 -+	insert.h r12:t,r12
43.14565 -+	insert.h r5:t,r5
43.14566 -+	insert.h r4:b,r4
43.14567 -+	insert.h lr:t,lr
43.14568 -+	insert.h r12:t,r11
43.14569 -+	insert.h r7:b,r6
43.14570 -+	insert.h r1:t,r11 */
43.14571 -+	.text
43.14572 -+	.global movc1
43.14573 -+movc1:
43.14574 -+	moveq pc,pc
43.14575 -+	moval r12,r12
43.14576 -+	movls r5,r5
43.14577 -+	movpl r4,r4
43.14578 -+	movne lr,lr
43.14579 -+	movne pc,r11
43.14580 -+	movmi r10,r2
43.14581 -+	movls r8,r12
43.14582 -+	.text
43.14583 -+	.global padd_h
43.14584 -+padd_h:
43.14585 -+	padd.h pc,pc,pc
43.14586 -+	padd.h r12,r12,r12
43.14587 -+	padd.h r5,r5,r5
43.14588 -+	padd.h r4,r4,r4
43.14589 -+	padd.h lr,lr,lr
43.14590 -+	padd.h r8,r2,r7
43.14591 -+	padd.h r0,r0,r3
43.14592 -+	padd.h sp,r11,r6
43.14593 -+	.text
43.14594 -+	.global psub_h
43.14595 -+psub_h:
43.14596 -+	psub.h pc,pc,pc
43.14597 -+	psub.h r12,r12,r12
43.14598 -+	psub.h r5,r5,r5
43.14599 -+	psub.h r4,r4,r4
43.14600 -+	psub.h lr,lr,lr
43.14601 -+	psub.h lr,r6,r8
43.14602 -+	psub.h r0,r1,sp
43.14603 -+	psub.h pc,pc,sp
43.14604 -+	.text
43.14605 -+	.global paddx_h
43.14606 -+paddx_h:
43.14607 -+	paddx.h pc,pc,pc
43.14608 -+	paddx.h r12,r12,r12
43.14609 -+	paddx.h r5,r5,r5
43.14610 -+	paddx.h r4,r4,r4
43.14611 -+	paddx.h lr,lr,lr
43.14612 -+	paddx.h pc,pc,r1
43.14613 -+	paddx.h r10,r4,r5
43.14614 -+	paddx.h r5,pc,r2
43.14615 -+	.text
43.14616 -+	.global psubx_h
43.14617 -+psubx_h:
43.14618 -+	psubx.h pc,pc,pc
43.14619 -+	psubx.h r12,r12,r12
43.14620 -+	psubx.h r5,r5,r5
43.14621 -+	psubx.h r4,r4,r4
43.14622 -+	psubx.h lr,lr,lr
43.14623 -+	psubx.h r5,r12,r5
43.14624 -+	psubx.h r3,r8,r3
43.14625 -+	psubx.h r5,r2,r3
43.14626 -+	.text
43.14627 -+	.global padds_sh
43.14628 -+padds_sh:
43.14629 -+	padds.sh pc,pc,pc
43.14630 -+	padds.sh r12,r12,r12
43.14631 -+	padds.sh r5,r5,r5
43.14632 -+	padds.sh r4,r4,r4
43.14633 -+	padds.sh lr,lr,lr
43.14634 -+	padds.sh r9,lr,r2
43.14635 -+	padds.sh r6,r8,r1
43.14636 -+	padds.sh r6,r4,r10
43.14637 -+	.text
43.14638 -+	.global psubs_sh
43.14639 -+psubs_sh:
43.14640 -+	psubs.sh pc,pc,pc
43.14641 -+	psubs.sh r12,r12,r12
43.14642 -+	psubs.sh r5,r5,r5
43.14643 -+	psubs.sh r4,r4,r4
43.14644 -+	psubs.sh lr,lr,lr
43.14645 -+	psubs.sh r6,lr,r11
43.14646 -+	psubs.sh r2,r12,r4
43.14647 -+	psubs.sh r0,r9,r0
43.14648 -+	.text
43.14649 -+	.global paddxs_sh
43.14650 -+paddxs_sh:
43.14651 -+	paddxs.sh pc,pc,pc
43.14652 -+	paddxs.sh r12,r12,r12
43.14653 -+	paddxs.sh r5,r5,r5
43.14654 -+	paddxs.sh r4,r4,r4
43.14655 -+	paddxs.sh lr,lr,lr
43.14656 -+	paddxs.sh r0,r3,r9
43.14657 -+	paddxs.sh pc,r10,r11
43.14658 -+	paddxs.sh pc,r10,pc
43.14659 -+	.text
43.14660 -+	.global psubxs_sh
43.14661 -+psubxs_sh:
43.14662 -+	psubxs.sh pc,pc,pc
43.14663 -+	psubxs.sh r12,r12,r12
43.14664 -+	psubxs.sh r5,r5,r5
43.14665 -+	psubxs.sh r4,r4,r4
43.14666 -+	psubxs.sh lr,lr,lr
43.14667 -+	psubxs.sh r7,r4,r4
43.14668 -+	psubxs.sh r7,r8,r3
43.14669 -+	psubxs.sh pc,r6,r5
43.14670 -+	.text
43.14671 -+	.global padds_uh
43.14672 -+padds_uh:
43.14673 -+	padds.uh pc,pc,pc
43.14674 -+	padds.uh r12,r12,r12
43.14675 -+	padds.uh r5,r5,r5
43.14676 -+	padds.uh r4,r4,r4
43.14677 -+	padds.uh lr,lr,lr
43.14678 -+	padds.uh r12,r11,r7
43.14679 -+	padds.uh r7,r8,lr
43.14680 -+	padds.uh r6,r9,r7
43.14681 -+	.text
43.14682 -+	.global psubs_uh
43.14683 -+psubs_uh:
43.14684 -+	psubs.uh pc,pc,pc
43.14685 -+	psubs.uh r12,r12,r12
43.14686 -+	psubs.uh r5,r5,r5
43.14687 -+	psubs.uh r4,r4,r4
43.14688 -+	psubs.uh lr,lr,lr
43.14689 -+	psubs.uh lr,r10,r6
43.14690 -+	psubs.uh sp,r2,pc
43.14691 -+	psubs.uh r2,r9,r2
43.14692 -+	.text
43.14693 -+	.global paddxs_uh
43.14694 -+paddxs_uh:
43.14695 -+	paddxs.uh pc,pc,pc
43.14696 -+	paddxs.uh r12,r12,r12
43.14697 -+	paddxs.uh r5,r5,r5
43.14698 -+	paddxs.uh r4,r4,r4
43.14699 -+	paddxs.uh lr,lr,lr
43.14700 -+	paddxs.uh r7,r9,r5
43.14701 -+	paddxs.uh r9,r1,r4
43.14702 -+	paddxs.uh r5,r2,r3
43.14703 -+	.text
43.14704 -+	.global psubxs_uh
43.14705 -+psubxs_uh:
43.14706 -+	psubxs.uh pc,pc,pc
43.14707 -+	psubxs.uh r12,r12,r12
43.14708 -+	psubxs.uh r5,r5,r5
43.14709 -+	psubxs.uh r4,r4,r4
43.14710 -+	psubxs.uh lr,lr,lr
43.14711 -+	psubxs.uh sp,r5,sp
43.14712 -+	psubxs.uh sp,r6,r6
43.14713 -+	psubxs.uh r3,r11,r8
43.14714 -+	.text
43.14715 -+	.global paddh_sh
43.14716 -+paddh_sh:
43.14717 -+	paddh.sh pc,pc,pc
43.14718 -+	paddh.sh r12,r12,r12
43.14719 -+	paddh.sh r5,r5,r5
43.14720 -+	paddh.sh r4,r4,r4
43.14721 -+	paddh.sh lr,lr,lr
43.14722 -+	paddh.sh r12,sp,r3
43.14723 -+	paddh.sh pc,r5,r3
43.14724 -+	paddh.sh r8,r8,sp
43.14725 -+	.text
43.14726 -+	.global psubh_sh
43.14727 -+psubh_sh:
43.14728 -+	psubh.sh pc,pc,pc
43.14729 -+	psubh.sh r12,r12,r12
43.14730 -+	psubh.sh r5,r5,r5
43.14731 -+	psubh.sh r4,r4,r4
43.14732 -+	psubh.sh lr,lr,lr
43.14733 -+	psubh.sh r1,r5,r8
43.14734 -+	psubh.sh r7,r3,r6
43.14735 -+	psubh.sh r4,r3,r3
43.14736 -+	.text
43.14737 -+	.global paddxh_sh
43.14738 -+paddxh_sh:
43.14739 -+	paddxh.sh pc,pc,pc
43.14740 -+	paddxh.sh r12,r12,r12
43.14741 -+	paddxh.sh r5,r5,r5
43.14742 -+	paddxh.sh r4,r4,r4
43.14743 -+	paddxh.sh lr,lr,lr
43.14744 -+	paddxh.sh r6,r0,r4
43.14745 -+	paddxh.sh r9,r8,r9
43.14746 -+	paddxh.sh r3,r0,sp
43.14747 -+	.text
43.14748 -+	.global psubxh_sh
43.14749 -+psubxh_sh:
43.14750 -+	psubxh.sh pc,pc,pc
43.14751 -+	psubxh.sh r12,r12,r12
43.14752 -+	psubxh.sh r5,r5,r5
43.14753 -+	psubxh.sh r4,r4,r4
43.14754 -+	psubxh.sh lr,lr,lr
43.14755 -+	psubxh.sh r4,pc,r12
43.14756 -+	psubxh.sh r8,r4,r6
43.14757 -+	psubxh.sh r12,r9,r4
43.14758 -+	.text
43.14759 -+	.global paddsub_h
43.14760 -+paddsub_h:
43.14761 -+	paddsub.h pc,pc:b,pc:b
43.14762 -+	paddsub.h r12,r12:t,r12:t
43.14763 -+	paddsub.h r5,r5:t,r5:t
43.14764 -+	paddsub.h r4,r4:b,r4:b
43.14765 -+	paddsub.h lr,lr:t,lr:t
43.14766 -+	paddsub.h r5,r2:t,lr:b
43.14767 -+	paddsub.h r7,r1:b,r8:b
43.14768 -+	paddsub.h r6,r10:t,r5:t
43.14769 -+	.text
43.14770 -+	.global psubadd_h
43.14771 -+psubadd_h:
43.14772 -+	psubadd.h pc,pc:b,pc:b
43.14773 -+	psubadd.h r12,r12:t,r12:t
43.14774 -+	psubadd.h r5,r5:t,r5:t
43.14775 -+	psubadd.h r4,r4:b,r4:b
43.14776 -+	psubadd.h lr,lr:t,lr:t
43.14777 -+	psubadd.h r9,r11:t,r8:t
43.14778 -+	psubadd.h r10,r7:t,lr:t
43.14779 -+	psubadd.h r6,pc:t,pc:b
43.14780 -+	.text
43.14781 -+	.global paddsubs_sh
43.14782 -+paddsubs_sh:
43.14783 -+	paddsubs.sh pc,pc:b,pc:b
43.14784 -+	paddsubs.sh r12,r12:t,r12:t
43.14785 -+	paddsubs.sh r5,r5:t,r5:t
43.14786 -+	paddsubs.sh r4,r4:b,r4:b
43.14787 -+	paddsubs.sh lr,lr:t,lr:t
43.14788 -+	paddsubs.sh r0,lr:t,r0:b
43.14789 -+	paddsubs.sh r9,r2:t,r4:t
43.14790 -+	paddsubs.sh r12,r9:t,sp:t
43.14791 -+	.text
43.14792 -+	.global psubadds_sh
43.14793 -+psubadds_sh:
43.14794 -+	psubadds.sh pc,pc:b,pc:b
43.14795 -+	psubadds.sh r12,r12:t,r12:t
43.14796 -+	psubadds.sh r5,r5:t,r5:t
43.14797 -+	psubadds.sh r4,r4:b,r4:b
43.14798 -+	psubadds.sh lr,lr:t,lr:t
43.14799 -+	psubadds.sh pc,lr:b,r1:t
43.14800 -+	psubadds.sh r11,r3:b,r12:b
43.14801 -+	psubadds.sh r10,r2:t,r8:t
43.14802 -+	.text
43.14803 -+	.global paddsubs_uh
43.14804 -+paddsubs_uh:
43.14805 -+	paddsubs.uh pc,pc:b,pc:b
43.14806 -+	paddsubs.uh r12,r12:t,r12:t
43.14807 -+	paddsubs.uh r5,r5:t,r5:t
43.14808 -+	paddsubs.uh r4,r4:b,r4:b
43.14809 -+	paddsubs.uh lr,lr:t,lr:t
43.14810 -+	paddsubs.uh r9,r2:b,r3:b
43.14811 -+	paddsubs.uh sp,sp:b,r7:t
43.14812 -+	paddsubs.uh lr,r0:b,r10:t
43.14813 -+	.text
43.14814 -+	.global psubadds_uh
43.14815 -+psubadds_uh:
43.14816 -+	psubadds.uh pc,pc:b,pc:b
43.14817 -+	psubadds.uh r12,r12:t,r12:t
43.14818 -+	psubadds.uh r5,r5:t,r5:t
43.14819 -+	psubadds.uh r4,r4:b,r4:b
43.14820 -+	psubadds.uh lr,lr:t,lr:t
43.14821 -+	psubadds.uh r12,r9:t,pc:t
43.14822 -+	psubadds.uh r8,r6:b,r8:b
43.14823 -+	psubadds.uh r8,r8:b,r4:b
43.14824 -+	.text
43.14825 -+	.global paddsubh_sh
43.14826 -+paddsubh_sh:
43.14827 -+	paddsubh.sh pc,pc:b,pc:b
43.14828 -+	paddsubh.sh r12,r12:t,r12:t
43.14829 -+	paddsubh.sh r5,r5:t,r5:t
43.14830 -+	paddsubh.sh r4,r4:b,r4:b
43.14831 -+	paddsubh.sh lr,lr:t,lr:t
43.14832 -+	paddsubh.sh r8,r9:t,r9:b
43.14833 -+	paddsubh.sh r0,sp:t,r1:t
43.14834 -+	paddsubh.sh r3,r1:b,r0:t
43.14835 -+	.text
43.14836 -+	.global psubaddh_sh
43.14837 -+psubaddh_sh:
43.14838 -+	psubaddh.sh pc,pc:b,pc:b
43.14839 -+	psubaddh.sh r12,r12:t,r12:t
43.14840 -+	psubaddh.sh r5,r5:t,r5:t
43.14841 -+	psubaddh.sh r4,r4:b,r4:b
43.14842 -+	psubaddh.sh lr,lr:t,lr:t
43.14843 -+	psubaddh.sh r7,r3:t,r10:b
43.14844 -+	psubaddh.sh r7,r2:t,r1:t
43.14845 -+	psubaddh.sh r11,r3:b,r6:b
43.14846 -+	.text
43.14847 -+	.global padd_b
43.14848 -+padd_b:
43.14849 -+	padd.b pc,pc,pc
43.14850 -+	padd.b r12,r12,r12
43.14851 -+	padd.b r5,r5,r5
43.14852 -+	padd.b r4,r4,r4
43.14853 -+	padd.b lr,lr,lr
43.14854 -+	padd.b r2,r6,pc
43.14855 -+	padd.b r8,r9,r12
43.14856 -+	padd.b r5,r12,r3
43.14857 -+	.text
43.14858 -+	.global psub_b
43.14859 -+psub_b:
43.14860 -+	psub.b pc,pc,pc
43.14861 -+	psub.b r12,r12,r12
43.14862 -+	psub.b r5,r5,r5
43.14863 -+	psub.b r4,r4,r4
43.14864 -+	psub.b lr,lr,lr
43.14865 -+	psub.b r0,r12,pc
43.14866 -+	psub.b r7,sp,r10
43.14867 -+	psub.b r5,sp,r12
43.14868 -+	.text
43.14869 -+	.global padds_sb
43.14870 -+padds_sb:
43.14871 -+	padds.sb pc,pc,pc
43.14872 -+	padds.sb r12,r12,r12
43.14873 -+	padds.sb r5,r5,r5
43.14874 -+	padds.sb r4,r4,r4
43.14875 -+	padds.sb lr,lr,lr
43.14876 -+	padds.sb sp,r11,r4
43.14877 -+	padds.sb r11,r10,r11
43.14878 -+	padds.sb r5,r12,r6
43.14879 -+	.text
43.14880 -+	.global psubs_sb
43.14881 -+psubs_sb:
43.14882 -+	psubs.sb pc,pc,pc
43.14883 -+	psubs.sb r12,r12,r12
43.14884 -+	psubs.sb r5,r5,r5
43.14885 -+	psubs.sb r4,r4,r4
43.14886 -+	psubs.sb lr,lr,lr
43.14887 -+	psubs.sb r7,r6,r8
43.14888 -+	psubs.sb r12,r10,r9
43.14889 -+	psubs.sb pc,r11,r0
43.14890 -+	.text
43.14891 -+	.global padds_ub
43.14892 -+padds_ub:
43.14893 -+	padds.ub pc,pc,pc
43.14894 -+	padds.ub r12,r12,r12
43.14895 -+	padds.ub r5,r5,r5
43.14896 -+	padds.ub r4,r4,r4
43.14897 -+	padds.ub lr,lr,lr
43.14898 -+	padds.ub r3,r2,r11
43.14899 -+	padds.ub r10,r8,r1
43.14900 -+	padds.ub r11,r8,r10
43.14901 -+	.text
43.14902 -+	.global psubs_ub
43.14903 -+psubs_ub:
43.14904 -+	psubs.ub pc,pc,pc
43.14905 -+	psubs.ub r12,r12,r12
43.14906 -+	psubs.ub r5,r5,r5
43.14907 -+	psubs.ub r4,r4,r4
43.14908 -+	psubs.ub lr,lr,lr
43.14909 -+	psubs.ub r0,r2,r7
43.14910 -+	psubs.ub lr,r5,r3
43.14911 -+	psubs.ub r6,r7,r9
43.14912 -+	.text
43.14913 -+	.global paddh_ub
43.14914 -+paddh_ub:
43.14915 -+	paddh.ub pc,pc,pc
43.14916 -+	paddh.ub r12,r12,r12
43.14917 -+	paddh.ub r5,r5,r5
43.14918 -+	paddh.ub r4,r4,r4
43.14919 -+	paddh.ub lr,lr,lr
43.14920 -+	paddh.ub lr,r1,r0
43.14921 -+	paddh.ub r2,r7,r7
43.14922 -+	paddh.ub r2,r1,r2
43.14923 -+	.text
43.14924 -+	.global psubh_ub
43.14925 -+psubh_ub:
43.14926 -+	psubh.ub pc,pc,pc
43.14927 -+	psubh.ub r12,r12,r12
43.14928 -+	psubh.ub r5,r5,r5
43.14929 -+	psubh.ub r4,r4,r4
43.14930 -+	psubh.ub lr,lr,lr
43.14931 -+	psubh.ub r0,r1,r6
43.14932 -+	psubh.ub r4,lr,r10
43.14933 -+	psubh.ub r9,r8,r1
43.14934 -+	.text
43.14935 -+	.global pmax_ub
43.14936 -+pmax_ub:
43.14937 -+	pmax.ub pc,pc,pc
43.14938 -+	pmax.ub r12,r12,r12
43.14939 -+	pmax.ub r5,r5,r5
43.14940 -+	pmax.ub r4,r4,r4
43.14941 -+	pmax.ub lr,lr,lr
43.14942 -+	pmax.ub pc,r2,r11
43.14943 -+	pmax.ub r12,r1,r1
43.14944 -+	pmax.ub r5,r2,r0
43.14945 -+	.text
43.14946 -+	.global pmax_sh
43.14947 -+pmax_sh:
43.14948 -+	pmax.sh pc,pc,pc
43.14949 -+	pmax.sh r12,r12,r12
43.14950 -+	pmax.sh r5,r5,r5
43.14951 -+	pmax.sh r4,r4,r4
43.14952 -+	pmax.sh lr,lr,lr
43.14953 -+	pmax.sh lr,r6,r12
43.14954 -+	pmax.sh r2,pc,r5
43.14955 -+	pmax.sh pc,r2,r7
43.14956 -+	.text
43.14957 -+	.global pmin_ub
43.14958 -+pmin_ub:
43.14959 -+	pmin.ub pc,pc,pc
43.14960 -+	pmin.ub r12,r12,r12
43.14961 -+	pmin.ub r5,r5,r5
43.14962 -+	pmin.ub r4,r4,r4
43.14963 -+	pmin.ub lr,lr,lr
43.14964 -+	pmin.ub r8,r1,r5
43.14965 -+	pmin.ub r1,r8,r3
43.14966 -+	pmin.ub r0,r2,r7
43.14967 -+	.text
43.14968 -+	.global pmin_sh
43.14969 -+pmin_sh:
43.14970 -+	pmin.sh pc,pc,pc
43.14971 -+	pmin.sh r12,r12,r12
43.14972 -+	pmin.sh r5,r5,r5
43.14973 -+	pmin.sh r4,r4,r4
43.14974 -+	pmin.sh lr,lr,lr
43.14975 -+	pmin.sh r8,r4,r10
43.14976 -+	pmin.sh lr,r10,r12
43.14977 -+	pmin.sh r2,r6,r2
43.14978 -+	.text
43.14979 -+	.global pavg_ub
43.14980 -+pavg_ub:
43.14981 -+	pavg.ub pc,pc,pc
43.14982 -+	pavg.ub r12,r12,r12
43.14983 -+	pavg.ub r5,r5,r5
43.14984 -+	pavg.ub r4,r4,r4
43.14985 -+	pavg.ub lr,lr,lr
43.14986 -+	pavg.ub r0,r1,r6
43.14987 -+	pavg.ub r8,r3,r6
43.14988 -+	pavg.ub pc,r12,r10
43.14989 -+	.text
43.14990 -+	.global pavg_sh
43.14991 -+pavg_sh:
43.14992 -+	pavg.sh pc,pc,pc
43.14993 -+	pavg.sh r12,r12,r12
43.14994 -+	pavg.sh r5,r5,r5
43.14995 -+	pavg.sh r4,r4,r4
43.14996 -+	pavg.sh lr,lr,lr
43.14997 -+	pavg.sh r9,pc,sp
43.14998 -+	pavg.sh pc,sp,r3
43.14999 -+	pavg.sh r6,r1,r9
43.15000 -+	.text
43.15001 -+	.global pabs_sb
43.15002 -+pabs_sb:
43.15003 -+	pabs.sb pc,pc
43.15004 -+	pabs.sb r12,r12
43.15005 -+	pabs.sb r5,r5
43.15006 -+	pabs.sb r4,r4
43.15007 -+	pabs.sb lr,lr
43.15008 -+	pabs.sb r11,r6
43.15009 -+	pabs.sb lr,r9
43.15010 -+	pabs.sb sp,r7
43.15011 -+	.text
43.15012 -+	.global pabs_sh
43.15013 -+pabs_sh:
43.15014 -+	pabs.sh pc,pc
43.15015 -+	pabs.sh r12,r12
43.15016 -+	pabs.sh r5,r5
43.15017 -+	pabs.sh r4,r4
43.15018 -+	pabs.sh lr,lr
43.15019 -+	pabs.sh pc,r3
43.15020 -+	pabs.sh r5,r7
43.15021 -+	pabs.sh r4,r0
43.15022 -+	.text
43.15023 -+	.global psad
43.15024 -+psad:
43.15025 -+	psad pc,pc,pc
43.15026 -+	psad r12,r12,r12
43.15027 -+	psad r5,r5,r5
43.15028 -+	psad r4,r4,r4
43.15029 -+	psad lr,lr,lr
43.15030 -+	psad r9,r11,r11
43.15031 -+	psad lr,r4,sp
43.15032 -+	psad lr,r4,r5
43.15033 -+	.text
43.15034 -+	.global pasr_b
43.15035 -+pasr_b:
43.15036 -+	pasr.b pc,pc,0
43.15037 -+	pasr.b r12,r12,7
43.15038 -+	pasr.b r5,r5,4
43.15039 -+	pasr.b r4,r4,3
43.15040 -+	pasr.b lr,lr,1
43.15041 -+	pasr.b pc,r7,1
43.15042 -+	pasr.b sp,lr,6
43.15043 -+	pasr.b sp,r3,2
43.15044 -+	.text
43.15045 -+	.global plsl_b
43.15046 -+plsl_b:
43.15047 -+	plsl.b pc,pc,0
43.15048 -+	plsl.b r12,r12,7
43.15049 -+	plsl.b r5,r5,4
43.15050 -+	plsl.b r4,r4,3
43.15051 -+	plsl.b lr,lr,1
43.15052 -+	plsl.b r2,r11,4
43.15053 -+	plsl.b r8,r5,7
43.15054 -+	plsl.b pc,r0,2
43.15055 -+	.text
43.15056 -+	.global plsr_b
43.15057 -+plsr_b:
43.15058 -+	plsr.b pc,pc,0
43.15059 -+	plsr.b r12,r12,7
43.15060 -+	plsr.b r5,r5,4
43.15061 -+	plsr.b r4,r4,3
43.15062 -+	plsr.b lr,lr,1
43.15063 -+	plsr.b r12,r1,2
43.15064 -+	plsr.b r6,pc,7
43.15065 -+	plsr.b r12,r11,2
43.15066 -+	.text
43.15067 -+	.global pasr_h
43.15068 -+pasr_h:
43.15069 -+	pasr.h pc,pc,0
43.15070 -+	pasr.h r12,r12,15
43.15071 -+	pasr.h r5,r5,8
43.15072 -+	pasr.h r4,r4,7
43.15073 -+	pasr.h lr,lr,1
43.15074 -+	pasr.h r0,r11,10
43.15075 -+	pasr.h r4,r6,8
43.15076 -+	pasr.h r6,r2,4
43.15077 -+	.text
43.15078 -+	.global plsl_h
43.15079 -+plsl_h:
43.15080 -+	plsl.h pc,pc,0
43.15081 -+	plsl.h r12,r12,15
43.15082 -+	plsl.h r5,r5,8
43.15083 -+	plsl.h r4,r4,7
43.15084 -+	plsl.h lr,lr,1
43.15085 -+	plsl.h r5,r10,9
43.15086 -+	plsl.h sp,lr,8
43.15087 -+	plsl.h r0,lr,7
43.15088 -+	.text
43.15089 -+	.global plsr_h
43.15090 -+plsr_h:
43.15091 -+	plsr.h pc,pc,0
43.15092 -+	plsr.h r12,r12,15
43.15093 -+	plsr.h r5,r5,8
43.15094 -+	plsr.h r4,r4,7
43.15095 -+	plsr.h lr,lr,1
43.15096 -+	plsr.h r11,r0,15
43.15097 -+	plsr.h lr,r3,3
43.15098 -+	plsr.h r8,lr,10
43.15099 -+	.text
43.15100 -+	.global packw_sh
43.15101 -+packw_sh:
43.15102 -+	packw.sh pc,pc,pc
43.15103 -+	packw.sh r12,r12,r12
43.15104 -+	packw.sh r5,r5,r5
43.15105 -+	packw.sh r4,r4,r4
43.15106 -+	packw.sh lr,lr,lr
43.15107 -+	packw.sh sp,r11,r10
43.15108 -+	packw.sh r8,r2,r12
43.15109 -+	packw.sh r8,r1,r5
43.15110 -+	.text
43.15111 -+	.global punpckub_h
43.15112 -+punpckub_h:
43.15113 -+	punpckub.h pc,pc:b
43.15114 -+	punpckub.h r12,r12:t
43.15115 -+	punpckub.h r5,r5:t
43.15116 -+	punpckub.h r4,r4:b
43.15117 -+	punpckub.h lr,lr:t
43.15118 -+	punpckub.h r6,r1:t
43.15119 -+	punpckub.h lr,r5:b
43.15120 -+	punpckub.h lr,r2:t
43.15121 -+	.text
43.15122 -+	.global punpcksb_h
43.15123 -+punpcksb_h:
43.15124 -+	punpcksb.h pc,pc:b
43.15125 -+	punpcksb.h r12,r12:t
43.15126 -+	punpcksb.h r5,r5:t
43.15127 -+	punpcksb.h r4,r4:b
43.15128 -+	punpcksb.h lr,lr:t
43.15129 -+	punpcksb.h r4,r7:t
43.15130 -+	punpcksb.h r6,lr:b
43.15131 -+	punpcksb.h r12,r12:t
43.15132 -+	.text
43.15133 -+	.global packsh_ub
43.15134 -+packsh_ub:
43.15135 -+	packsh.ub pc,pc,pc
43.15136 -+	packsh.ub r12,r12,r12
43.15137 -+	packsh.ub r5,r5,r5
43.15138 -+	packsh.ub r4,r4,r4
43.15139 -+	packsh.ub lr,lr,lr
43.15140 -+	packsh.ub r3,r6,r3
43.15141 -+	packsh.ub r8,r0,r3
43.15142 -+	packsh.ub r9,r3,lr
43.15143 -+	.text
43.15144 -+	.global packsh_sb
43.15145 -+packsh_sb:
43.15146 -+	packsh.sb pc,pc,pc
43.15147 -+	packsh.sb r12,r12,r12
43.15148 -+	packsh.sb r5,r5,r5
43.15149 -+	packsh.sb r4,r4,r4
43.15150 -+	packsh.sb lr,lr,lr
43.15151 -+	packsh.sb r6,r8,r1
43.15152 -+	packsh.sb lr,r9,r8
43.15153 -+	packsh.sb sp,r6,r6
43.15154 -+	.text
43.15155 -+	.global andl
43.15156 -+andl:
43.15157 -+	andl pc,0
43.15158 -+	andl r12,65535
43.15159 -+	andl r5,32768
43.15160 -+	andl r4,32767
43.15161 -+	andl lr,1
43.15162 -+	andl pc,23128
43.15163 -+	andl r8,47262
43.15164 -+	andl r7,13719
43.15165 -+	.text
43.15166 -+	.global andl_coh
43.15167 -+andl_coh:
43.15168 -+	andl pc,0,COH
43.15169 -+	andl r12,65535,COH
43.15170 -+	andl r5,32768,COH
43.15171 -+	andl r4,32767,COH
43.15172 -+	andl lr,1,COH
43.15173 -+	andl r6,22753,COH
43.15174 -+	andl r0,40653,COH
43.15175 -+	andl r4,48580,COH
43.15176 -+	.text
43.15177 -+	.global andh
43.15178 -+andh:
43.15179 -+	andh pc,0
43.15180 -+	andh r12,65535
43.15181 -+	andh r5,32768
43.15182 -+	andh r4,32767
43.15183 -+	andh lr,1
43.15184 -+	andh r12,52312
43.15185 -+	andh r3,8675
43.15186 -+	andh r2,42987
43.15187 -+	.text
43.15188 -+	.global andh_coh
43.15189 -+andh_coh:
43.15190 -+	andh pc,0,COH
43.15191 -+	andh r12,65535,COH
43.15192 -+	andh r5,32768,COH
43.15193 -+	andh r4,32767,COH
43.15194 -+	andh lr,1,COH
43.15195 -+	andh r11,34317,COH
43.15196 -+	andh r8,52982,COH
43.15197 -+	andh r10,23683,COH
43.15198 -+	.text
43.15199 -+	.global orl
43.15200 -+orl:
43.15201 -+	orl pc,0
43.15202 -+	orl r12,65535
43.15203 -+	orl r5,32768
43.15204 -+	orl r4,32767
43.15205 -+	orl lr,1
43.15206 -+	orl sp,16766
43.15207 -+	orl r0,21181
43.15208 -+	orl pc,44103
43.15209 -+	.text
43.15210 -+	.global orh
43.15211 -+orh:
43.15212 -+	orh pc,0
43.15213 -+	orh r12,65535
43.15214 -+	orh r5,32768
43.15215 -+	orh r4,32767
43.15216 -+	orh lr,1
43.15217 -+	orh r8,28285
43.15218 -+	orh r12,30492
43.15219 -+	orh r1,59930
43.15220 -+	.text
43.15221 -+	.global eorl
43.15222 -+eorl:
43.15223 -+	eorl pc,0
43.15224 -+	eorl r12,65535
43.15225 -+	eorl r5,32768
43.15226 -+	eorl r4,32767
43.15227 -+	eorl lr,1
43.15228 -+	eorl r4,51129
43.15229 -+	eorl r6,64477
43.15230 -+	eorl r1,20913
43.15231 -+	.text
43.15232 -+	.global eorh
43.15233 -+eorh:
43.15234 -+	eorh pc,0
43.15235 -+	eorh r12,65535
43.15236 -+	eorh r5,32768
43.15237 -+	eorh r4,32767
43.15238 -+	eorh lr,1
43.15239 -+	eorh r0,11732
43.15240 -+	eorh r10,38069
43.15241 -+	eorh r9,57130
43.15242 -+	.text
43.15243 -+	.global mcall
43.15244 -+mcall:
43.15245 -+	mcall pc[0]
43.15246 -+	mcall r12[-4]
43.15247 -+	mcall r5[-131072]
43.15248 -+	mcall r4[131068]
43.15249 -+	mcall lr[4]
43.15250 -+	mcall sp[61180]
43.15251 -+	mcall r4[-35000]
43.15252 -+	mcall r0[9924]
43.15253 -+	.text
43.15254 -+	.global pref
43.15255 -+pref:
43.15256 -+	pref pc[0]
43.15257 -+	pref r12[-1]
43.15258 -+	pref r5[-32768]
43.15259 -+	pref r4[32767]
43.15260 -+	pref lr[1]
43.15261 -+	pref r7[7748]
43.15262 -+	pref r7[-7699]
43.15263 -+	pref r2[-25892]
43.15264 -+	.text
43.15265 -+	.global cache
43.15266 -+cache:
43.15267 -+	cache pc[0],0
43.15268 -+	cache r12[-1],31
43.15269 -+	cache r5[-1024],16
43.15270 -+	cache r4[1023],15
43.15271 -+	cache lr[1],1
43.15272 -+	cache r3[-964],17
43.15273 -+	cache r4[-375],22
43.15274 -+	cache r3[-888],17
43.15275 -+	.text
43.15276 -+	.global sub4
43.15277 -+sub4:
43.15278 -+	sub pc,0
43.15279 -+	sub r12,-1
43.15280 -+	sub r5,-1048576
43.15281 -+	sub r4,1048575
43.15282 -+	sub lr,1
43.15283 -+	sub r2,-619156
43.15284 -+	sub lr,461517
43.15285 -+	sub r8,-185051
43.15286 -+	.text
43.15287 -+	.global cp3
43.15288 -+cp3:
43.15289 -+	cp pc,0
43.15290 -+	cp r12,-1
43.15291 -+	cp r5,-1048576
43.15292 -+	cp r4,1048575
43.15293 -+	cp lr,1
43.15294 -+	cp r1,124078
43.15295 -+	cp r0,-378909
43.15296 -+	cp r4,-243180
43.15297 -+	.text
43.15298 -+	.global mov2
43.15299 -+mov2:
43.15300 -+	mov pc,0
43.15301 -+	mov r12,-1
43.15302 -+	mov r5,-1048576
43.15303 -+	mov r4,1048575
43.15304 -+	mov lr,1
43.15305 -+	mov r5,-317021
43.15306 -+	mov sp,-749164
43.15307 -+	mov r5,940179
43.15308 -+	.text
43.15309 -+	.global brc2
43.15310 -+brc2:
43.15311 -+	breq 0
43.15312 -+	bral -2
43.15313 -+	brls -2097152
43.15314 -+	brpl 2097150
43.15315 -+	brne 2
43.15316 -+	brhi -1796966
43.15317 -+	brqs 1321368
43.15318 -+	brls -577434
43.15319 -+	.text
43.15320 -+	.global rcall2
43.15321 -+rcall2:
43.15322 -+	rcall 0
43.15323 -+	rcall -2
43.15324 -+	rcall -2097152
43.15325 -+	rcall 2097150
43.15326 -+	rcall 2
43.15327 -+	rcall 496820
43.15328 -+	rcall 1085092
43.15329 -+	rcall -1058
43.15330 -+	.text
43.15331 -+	.global sub5
43.15332 -+sub5:
43.15333 -+	sub pc,pc,0
43.15334 -+	sub r12,r12,-1
43.15335 -+	sub r5,r5,-32768
43.15336 -+	sub r4,r4,32767
43.15337 -+	sub lr,lr,1
43.15338 -+	sub pc,pc,-12744
43.15339 -+	sub r7,r7,-27365
43.15340 -+	sub r2,r9,-17358
43.15341 -+	.text
43.15342 -+	.global satsub_w2
43.15343 -+satsub_w2:
43.15344 -+	satsub.w pc,pc,0
43.15345 -+	satsub.w r12,r12,-1
43.15346 -+	satsub.w r5,r5,-32768
43.15347 -+	satsub.w r4,r4,32767
43.15348 -+	satsub.w lr,lr,1
43.15349 -+	satsub.w r2,lr,-2007
43.15350 -+	satsub.w r7,r12,-784
43.15351 -+	satsub.w r4,r7,23180
43.15352 -+	.text
43.15353 -+	.global ld_d4
43.15354 -+ld_d4:
43.15355 -+	ld.d r0,pc[0]
43.15356 -+	ld.d r14,r12[-1]
43.15357 -+	ld.d r8,r5[-32768]
43.15358 -+	ld.d r6,r4[32767]
43.15359 -+	ld.d r2,lr[1]
43.15360 -+	ld.d r14,r11[14784]
43.15361 -+	ld.d r6,r9[-18905]
43.15362 -+	ld.d r2,r3[-6355]
43.15363 -+	.text
43.15364 -+	.global ld_w4
43.15365 -+ld_w4:
43.15366 -+	ld.w pc,pc[0]
43.15367 -+	ld.w r12,r12[-1]
43.15368 -+	ld.w r5,r5[-32768]
43.15369 -+	ld.w r4,r4[32767]
43.15370 -+	ld.w lr,lr[1]
43.15371 -+	ld.w r0,r12[-22133]
43.15372 -+	ld.w sp,pc[-20521]
43.15373 -+	/* ld.w r3,r5[29035] */
43.15374 -+	nop
43.15375 -+	.text
43.15376 -+	.global ld_sh4
43.15377 -+ld_sh4:
43.15378 -+	ld.sh pc,pc[0]
43.15379 -+	ld.sh r12,r12[-1]
43.15380 -+	ld.sh r5,r5[-32768]
43.15381 -+	ld.sh r4,r4[32767]
43.15382 -+	ld.sh lr,lr[1]
43.15383 -+	ld.sh r6,r10[30930]
43.15384 -+	ld.sh r6,r10[21973]
43.15385 -+	/* ld.sh r11,r10[-2058] */
43.15386 -+	nop
43.15387 -+	.text
43.15388 -+	.global ld_uh4
43.15389 -+ld_uh4:
43.15390 -+	ld.uh pc,pc[0]
43.15391 -+	ld.uh r12,r12[-1]
43.15392 -+	ld.uh r5,r5[-32768]
43.15393 -+	ld.uh r4,r4[32767]
43.15394 -+	ld.uh lr,lr[1]
43.15395 -+	ld.uh r1,r9[-13354]
43.15396 -+	ld.uh lr,r11[21337]
43.15397 -+	/* ld.uh r2,lr[-25370] */
43.15398 -+	nop
43.15399 -+	.text
43.15400 -+	.global ld_sb1
43.15401 -+ld_sb1:
43.15402 -+	ld.sb pc,pc[0]
43.15403 -+	ld.sb r12,r12[-1]
43.15404 -+	ld.sb r5,r5[-32768]
43.15405 -+	ld.sb r4,r4[32767]
43.15406 -+	ld.sb lr,lr[1]
43.15407 -+	ld.sb r7,sp[-28663]
43.15408 -+	ld.sb r2,r1[-5879]
43.15409 -+	ld.sb r12,r3[18734]
43.15410 -+	.text
43.15411 -+	.global ld_ub4
43.15412 -+ld_ub4:
43.15413 -+	ld.ub pc,pc[0]
43.15414 -+	ld.ub r12,r12[-1]
43.15415 -+	ld.ub r5,r5[-32768]
43.15416 -+	ld.ub r4,r4[32767]
43.15417 -+	ld.ub lr,lr[1]
43.15418 -+	ld.ub pc,r4[8277]
43.15419 -+	ld.ub r5,r12[19172]
43.15420 -+	ld.ub r10,lr[26347]
43.15421 -+	.text
43.15422 -+	.global st_d4
43.15423 -+st_d4:
43.15424 -+	st.d pc[0],r0
43.15425 -+	st.d r12[-1],r14
43.15426 -+	st.d r5[-32768],r8
43.15427 -+	st.d r4[32767],r6
43.15428 -+	st.d lr[1],r2
43.15429 -+	st.d r5[13200],r10
43.15430 -+	st.d r5[9352],r10
43.15431 -+	st.d r5[32373],r4
43.15432 -+	.text
43.15433 -+	.global st_w4
43.15434 -+st_w4:
43.15435 -+	st.w pc[0],pc
43.15436 -+	st.w r12[-1],r12
43.15437 -+	st.w r5[-32768],r5
43.15438 -+	st.w r4[32767],r4
43.15439 -+	st.w lr[1],lr
43.15440 -+	st.w sp[6136],r7
43.15441 -+	st.w r6[27087],r12
43.15442 -+	/* st.w r3[20143],r7 */
43.15443 -+	nop
43.15444 -+	.text
43.15445 -+	.global st_h4
43.15446 -+st_h4:
43.15447 -+	st.h pc[0],pc
43.15448 -+	st.h r12[-1],r12
43.15449 -+	st.h r5[-32768],r5
43.15450 -+	st.h r4[32767],r4
43.15451 -+	st.h lr[1],lr
43.15452 -+	st.h r4[-9962],r7
43.15453 -+	st.h r9[-16250],r3
43.15454 -+	/* st.h r8[-28810],r7 */
43.15455 -+	nop
43.15456 -+	.text
43.15457 -+	.global st_b4
43.15458 -+st_b4:
43.15459 -+	st.b pc[0],pc
43.15460 -+	st.b r12[-1],r12
43.15461 -+	st.b r5[-32768],r5
43.15462 -+	st.b r4[32767],r4
43.15463 -+	st.b lr[1],lr
43.15464 -+	st.b r12[30102],r6
43.15465 -+	st.b r5[28977],r1
43.15466 -+	st.b r0[5470],r1
43.15467 -+	.text
43.15468 -+	.global mfsr
43.15469 -+mfsr:
43.15470 -+	mfsr pc,0
43.15471 -+	mfsr r12,1020
43.15472 -+	mfsr r5,512
43.15473 -+	mfsr r4,508
43.15474 -+	mfsr lr,4
43.15475 -+	mfsr r2,696
43.15476 -+	mfsr r4,260
43.15477 -+	mfsr r10,1016
43.15478 -+	.text
43.15479 -+	.global mtsr
43.15480 -+mtsr:
43.15481 -+	mtsr 0,pc
43.15482 -+	mtsr 1020,r12
43.15483 -+	mtsr 512,r5
43.15484 -+	mtsr 508,r4
43.15485 -+	mtsr 4,lr
43.15486 -+	mtsr 224,r10
43.15487 -+	mtsr 836,r12
43.15488 -+	mtsr 304,r9
43.15489 -+	.text
43.15490 -+	.global mfdr
43.15491 -+mfdr:
43.15492 -+	mfdr pc,0
43.15493 -+	mfdr r12,1020
43.15494 -+	mfdr r5,512
43.15495 -+	mfdr r4,508
43.15496 -+	mfdr lr,4
43.15497 -+	mfdr r6,932
43.15498 -+	mfdr r5,36
43.15499 -+	mfdr r9,300
43.15500 -+	.text
43.15501 -+	.global mtdr
43.15502 -+mtdr:
43.15503 -+	mtdr 0,pc
43.15504 -+	mtdr 1020,r12
43.15505 -+	mtdr 512,r5
43.15506 -+	mtdr 508,r4
43.15507 -+	mtdr 4,lr
43.15508 -+	mtdr 180,r8
43.15509 -+	mtdr 720,r10
43.15510 -+	mtdr 408,lr
43.15511 -+	.text
43.15512 -+	.global sleep
43.15513 -+sleep:
43.15514 -+	sleep 0
43.15515 -+	sleep 255
43.15516 -+	sleep 128
43.15517 -+	sleep 127
43.15518 -+	sleep 1
43.15519 -+	sleep 254
43.15520 -+	sleep 15
43.15521 -+	sleep 43
43.15522 -+	.text
43.15523 -+	.global sync
43.15524 -+sync:
43.15525 -+	sync 0
43.15526 -+	sync 255
43.15527 -+	sync 128
43.15528 -+	sync 127
43.15529 -+	sync 1
43.15530 -+	sync 166
43.15531 -+	sync 230
43.15532 -+	sync 180
43.15533 -+	.text
43.15534 -+	.global bld
43.15535 -+bld:
43.15536 -+	bld pc,0
43.15537 -+	bld r12,31
43.15538 -+	bld r5,16
43.15539 -+	bld r4,15
43.15540 -+	bld lr,1
43.15541 -+	bld r9,15
43.15542 -+	bld r0,4
43.15543 -+	bld lr,26
43.15544 -+	.text
43.15545 -+	.global bst
43.15546 -+bst:
43.15547 -+	bst pc,0
43.15548 -+	bst r12,31
43.15549 -+	bst r5,16
43.15550 -+	bst r4,15
43.15551 -+	bst lr,1
43.15552 -+	bst r10,28
43.15553 -+	bst r0,3
43.15554 -+	bst sp,2
43.15555 -+	.text
43.15556 -+	.global sats
43.15557 -+sats:
43.15558 -+	sats pc>>0,0
43.15559 -+	sats r12>>31,31
43.15560 -+	sats r5>>16,16
43.15561 -+	sats r4>>15,15
43.15562 -+	sats lr>>1,1
43.15563 -+	sats r10>>3,19
43.15564 -+	sats r10>>2,26
43.15565 -+	sats r1>>20,1
43.15566 -+	.text
43.15567 -+	.global satu
43.15568 -+satu:
43.15569 -+	satu pc>>0,0
43.15570 -+	satu r12>>31,31
43.15571 -+	satu r5>>16,16
43.15572 -+	satu r4>>15,15
43.15573 -+	satu lr>>1,1
43.15574 -+	satu pc>>5,7
43.15575 -+	satu r7>>5,5
43.15576 -+	satu r2>>26,19
43.15577 -+	.text
43.15578 -+	.global satrnds
43.15579 -+satrnds:
43.15580 -+	satrnds pc>>0,0
43.15581 -+	satrnds r12>>31,31
43.15582 -+	satrnds r5>>16,16
43.15583 -+	satrnds r4>>15,15
43.15584 -+	satrnds lr>>1,1
43.15585 -+	satrnds r0>>21,19
43.15586 -+	satrnds sp>>0,2
43.15587 -+	satrnds r7>>6,29
43.15588 -+	.text
43.15589 -+	.global satrndu
43.15590 -+satrndu:
43.15591 -+	satrndu pc>>0,0
43.15592 -+	satrndu r12>>31,31
43.15593 -+	satrndu r5>>16,16
43.15594 -+	satrndu r4>>15,15
43.15595 -+	satrndu lr>>1,1
43.15596 -+	satrndu r12>>0,26
43.15597 -+	satrndu r4>>21,3
43.15598 -+	satrndu r10>>3,16
43.15599 -+	.text
43.15600 -+	.global subfc
43.15601 -+subfc:
43.15602 -+	subfeq pc,0
43.15603 -+	subfal r12,-1
43.15604 -+	subfls r5,-128
43.15605 -+	subfpl r4,127
43.15606 -+	subfne lr,1
43.15607 -+	subfls r10,8
43.15608 -+	subfvc r11,99
43.15609 -+	subfvs r2,73
43.15610 -+	.text
43.15611 -+	.global subc
43.15612 -+subc:
43.15613 -+	subeq pc,0
43.15614 -+	subal r12,-1
43.15615 -+	subls r5,-128
43.15616 -+	subpl r4,127
43.15617 -+	subne lr,1
43.15618 -+	subls r12,118
43.15619 -+	subvc lr,-12
43.15620 -+	submi r4,-13
43.15621 -+	.text
43.15622 -+	.global movc2
43.15623 -+movc2:
43.15624 -+	moveq pc,0
43.15625 -+	moval r12,-1
43.15626 -+	movls r5,-128
43.15627 -+	movpl r4,127
43.15628 -+	movne lr,1
43.15629 -+	movlt r3,-122
43.15630 -+	movvc r8,2
43.15631 -+	movne r7,-111
43.15632 -+	.text
43.15633 -+	.global cp_b
43.15634 -+cp_b:
43.15635 -+	cp.b pc,r0
43.15636 -+	cp.b r0,pc
43.15637 -+	cp.b r7,r8
43.15638 -+	cp.b r8,r7
43.15639 -+	.text
43.15640 -+	.global cp_h
43.15641 -+cp_h:
43.15642 -+	cp.h pc,r0
43.15643 -+	cp.h r0,pc
43.15644 -+	cp.h r7,r8
43.15645 -+	cp.h r8,r7
43.15646 -+	.text
43.15647 -+	.global ldm
43.15648 -+ldm:
43.15649 -+	ldm pc,r1-r6
43.15650 -+	ldm r12,r0-r15
43.15651 -+	ldm r5,r15
43.15652 -+	ldm r4,r0-r14
43.15653 -+	ldm lr,r0
43.15654 -+	ldm r9,r1,r5,r14
43.15655 -+	ldm r11,r2-r3,r5-r8,r15
43.15656 -+	ldm r6,r0,r3,r9,r13,r15
43.15657 -+	.text
43.15658 -+	.global ldm_pu
43.15659 -+ldm_pu:
43.15660 -+	ldm pc++,r6-r9
43.15661 -+	ldm r12++,r0-r15
43.15662 -+	ldm r5++,r15
43.15663 -+	ldm r4++,r0-r14
43.15664 -+	ldm lr++,r0
43.15665 -+	ldm r12++,r3-r5,r8,r10,r12,r14-r15
43.15666 -+	ldm r10++,r2,r4-r6,r14-r15
43.15667 -+	ldm r6++,r1,r3-r4,r9-r14
43.15668 -+	.text
43.15669 -+	.global ldmts
43.15670 -+ldmts:
43.15671 -+	ldmts pc,r7-r8
43.15672 -+	ldmts r12,r0-r15
43.15673 -+	ldmts r5,r15
43.15674 -+	ldmts r4,r0-r14
43.15675 -+	ldmts lr,r0
43.15676 -+	ldmts r0,r1-r2,r11-r12
43.15677 -+	ldmts lr,r0-r2,r4,r7-r8,r13-r14
43.15678 -+	ldmts r12,r0-r1,r3-r5,r9,r14-r15
43.15679 -+	.text
43.15680 -+	.global ldmts_pu
43.15681 -+ldmts_pu:
43.15682 -+	ldmts pc++,r9
43.15683 -+	ldmts r12++,r0-r15
43.15684 -+	ldmts r5++,r15
43.15685 -+	ldmts r4++,r0-r14
43.15686 -+	ldmts lr++,r0
43.15687 -+	ldmts sp++,r0,r2-r5,r7,r9,r11
43.15688 -+	ldmts r5++,r1-r3,r7,r10-r11
43.15689 -+	ldmts r8++,r2-r4,r7-r8,r13,r15
43.15690 -+	.text
43.15691 -+	.global stm
43.15692 -+stm:
43.15693 -+	stm pc,r7
43.15694 -+	stm r12,r0-r15
43.15695 -+	stm r5,r15
43.15696 -+	stm r4,r0-r14
43.15697 -+	stm lr,r0
43.15698 -+	stm sp,r2-r3,r5,r8,r11,r14
43.15699 -+	stm r4,r0-r4,r6,r10-r11,r14
43.15700 -+	stm r9,r1,r5,r9,r12-r15
43.15701 -+	.text
43.15702 -+	.global stm_pu
43.15703 -+stm_pu:
43.15704 -+	stm --pc,r4-r6
43.15705 -+	stm --r12,r0-r15
43.15706 -+	stm --r5,r15
43.15707 -+	stm --r4,r0-r14
43.15708 -+	stm --lr,r0
43.15709 -+	stm --r11,r0,r4-r9,r11-r15
43.15710 -+	stm --r11,r0,r3,r9-r10,r12,r14
43.15711 -+	stm --r6,r2,r8-r9,r13-r14
43.15712 -+	.text
43.15713 -+	.global stmts
43.15714 -+stmts:
43.15715 -+	stmts pc,r8
43.15716 -+	stmts r12,r0-r15
43.15717 -+	stmts r5,r15
43.15718 -+	stmts r4,r0-r14
43.15719 -+	stmts lr,r0
43.15720 -+	stmts r1,r0-r1,r3-r4,r6,r9-r10,r14-r15
43.15721 -+	stmts r3,r0,r6-r8,r10-r12
43.15722 -+	stmts r11,r0,r4,r6-r7,r9-r10,r12,r14-r15
43.15723 -+	.text
43.15724 -+	.global stmts_pu
43.15725 -+stmts_pu:
43.15726 -+	stmts --pc,r6-r8
43.15727 -+	stmts --r12,r0-r15
43.15728 -+	stmts --r5,r15
43.15729 -+	stmts --r4,r0-r14
43.15730 -+	stmts --lr,r0
43.15731 -+	stmts --r2,r0,r3-r4,r9-r10,r12-r13
43.15732 -+	stmts --r3,r0-r1,r14-r15
43.15733 -+	stmts --r0,r0,r2-r6,r10,r14
43.15734 -+	.text
43.15735 -+	.global ldins_h
43.15736 -+ldins_h:
43.15737 -+	ldins.h pc:b,pc[0]
43.15738 -+	ldins.h r12:t,r12[-2]
43.15739 -+	ldins.h r5:t,r5[-4096]
43.15740 -+	ldins.h r4:b,r4[4094]
43.15741 -+	ldins.h lr:t,lr[2]
43.15742 -+	ldins.h r0:t,lr[1930]
43.15743 -+	ldins.h r3:b,r7[-534]
43.15744 -+	ldins.h r2:b,r12[-2252]
43.15745 -+	.text
43.15746 -+	.global ldins_b
43.15747 -+ldins_b:
43.15748 -+	ldins.b pc:b,pc[0]
43.15749 -+	ldins.b r12:t,r12[-1]
43.15750 -+	ldins.b r5:u,r5[-2048]
43.15751 -+	ldins.b r4:l,r4[2047]
43.15752 -+	ldins.b lr:l,lr[1]
43.15753 -+	ldins.b r6:t,r4[-662]
43.15754 -+	ldins.b r5:b,r1[-151]
43.15755 -+	ldins.b r10:t,r11[-1923]
43.15756 -+	.text
43.15757 -+	.global ldswp_sh
43.15758 -+ldswp_sh:
43.15759 -+	ldswp.sh pc,pc[0]
43.15760 -+	ldswp.sh r12,r12[-2]
43.15761 -+	ldswp.sh r5,r5[-4096]
43.15762 -+	ldswp.sh r4,r4[4094]
43.15763 -+	ldswp.sh lr,lr[2]
43.15764 -+	ldswp.sh r9,r10[3848]
43.15765 -+	ldswp.sh r4,r12[-2040]
43.15766 -+	ldswp.sh r10,r2[3088]
43.15767 -+	.text
43.15768 -+	.global ldswp_uh
43.15769 -+ldswp_uh:
43.15770 -+	ldswp.uh pc,pc[0]
43.15771 -+	ldswp.uh r12,r12[-2]
43.15772 -+	ldswp.uh r5,r5[-4096]
43.15773 -+	ldswp.uh r4,r4[4094]
43.15774 -+	ldswp.uh lr,lr[2]
43.15775 -+	ldswp.uh r4,r9[3724]
43.15776 -+	ldswp.uh lr,sp[-1672]
43.15777 -+	ldswp.uh r8,r12[-3846]
43.15778 -+	.text
43.15779 -+	.global ldswp_w
43.15780 -+ldswp_w:
43.15781 -+	ldswp.w pc,pc[0]
43.15782 -+	ldswp.w r12,r12[-4]
43.15783 -+	ldswp.w r5,r5[-8192]
43.15784 -+	ldswp.w r4,r4[8188]
43.15785 -+	ldswp.w lr,lr[4]
43.15786 -+	ldswp.w sp,r7[1860]
43.15787 -+	ldswp.w pc,r5[-3324]
43.15788 -+	ldswp.w r12,r10[-3296]
43.15789 -+	.text
43.15790 -+	.global stswp_h
43.15791 -+stswp_h:
43.15792 -+	stswp.h pc[0],pc
43.15793 -+	stswp.h r12[-2],r12
43.15794 -+	stswp.h r5[-4096],r5
43.15795 -+	stswp.h r4[4094],r4
43.15796 -+	stswp.h lr[2],lr
43.15797 -+	stswp.h r7[64],r10
43.15798 -+	stswp.h r10[3024],r2
43.15799 -+	stswp.h r0[-2328],r10
43.15800 -+	.text
43.15801 -+	.global stswp_w
43.15802 -+stswp_w:
43.15803 -+	stswp.w pc[0],pc
43.15804 -+	stswp.w r12[-4],r12
43.15805 -+	stswp.w r5[-8192],r5
43.15806 -+	stswp.w r4[8188],r4
43.15807 -+	stswp.w lr[4],lr
43.15808 -+	stswp.w pc[1156],r8
43.15809 -+	stswp.w sp[7992],r10
43.15810 -+	stswp.w r8[-1172],r5
43.15811 -+	.text
43.15812 -+	.global and2
43.15813 -+and2:
43.15814 -+	and pc,pc,pc<<0
43.15815 -+	and r12,r12,r12<<31
43.15816 -+	and r5,r5,r5<<16
43.15817 -+	and r4,r4,r4<<15
43.15818 -+	and lr,lr,lr<<1
43.15819 -+	and r10,r2,r1<<1
43.15820 -+	and r12,r8,r11<<27
43.15821 -+	and r10,r7,r0<<3
43.15822 -+	.text
43.15823 -+	.global and3
43.15824 -+and3:
43.15825 -+	and pc,pc,pc>>0
43.15826 -+	and r12,r12,r12>>31
43.15827 -+	and r5,r5,r5>>16
43.15828 -+	and r4,r4,r4>>15
43.15829 -+	and lr,lr,lr>>1
43.15830 -+	and r12,r8,r7>>17
43.15831 -+	and pc,r4,r9>>20
43.15832 -+	and r10,r9,r10>>12
43.15833 -+	.text
43.15834 -+	.global or2
43.15835 -+or2:
43.15836 -+	or pc,pc,pc<<0
43.15837 -+	or r12,r12,r12<<31
43.15838 -+	or r5,r5,r5<<16
43.15839 -+	or r4,r4,r4<<15
43.15840 -+	or lr,lr,lr<<1
43.15841 -+	or r8,sp,r11<<29
43.15842 -+	or pc,r9,r2<<28
43.15843 -+	or r5,r1,r2<<3
43.15844 -+	.text
43.15845 -+	.global or3
43.15846 -+or3:
43.15847 -+	or pc,pc,pc>>0
43.15848 -+	or r12,r12,r12>>31
43.15849 -+	or r5,r5,r5>>16
43.15850 -+	or r4,r4,r4>>15
43.15851 -+	or lr,lr,lr>>1
43.15852 -+	or r1,sp,sp>>2
43.15853 -+	or r0,r1,r1>>29
43.15854 -+	or r4,r12,r8>>8
43.15855 -+	.text
43.15856 -+	.global eor2
43.15857 -+eor2:
43.15858 -+	eor pc,pc,pc<<0
43.15859 -+	eor r12,r12,r12<<31
43.15860 -+	eor r5,r5,r5<<16
43.15861 -+	eor r4,r4,r4<<15
43.15862 -+	eor lr,lr,lr<<1
43.15863 -+	eor r10,r9,r4<<11
43.15864 -+	eor r4,r0,r1<<31
43.15865 -+	eor r6,r2,r12<<13
43.15866 -+	.text
43.15867 -+	.global eor3
43.15868 -+eor3:
43.15869 -+	eor pc,pc,pc>>0
43.15870 -+	eor r12,r12,r12>>31
43.15871 -+	eor r5,r5,r5>>16
43.15872 -+	eor r4,r4,r4>>15
43.15873 -+	eor lr,lr,lr>>1
43.15874 -+	eor r5,r5,r5>>22
43.15875 -+	eor r10,r1,lr>>3
43.15876 -+	eor r7,lr,sp>>26
43.15877 -+	.text
43.15878 -+	.global sthh_w2
43.15879 -+sthh_w2:
43.15880 -+	sthh.w pc[pc<<0],pc:b,pc:b
43.15881 -+	sthh.w r12[r12<<3],r12:t,r12:t
43.15882 -+	sthh.w r5[r5<<2],r5:t,r5:t
43.15883 -+	sthh.w r4[r4<<1],r4:b,r4:b
43.15884 -+	sthh.w lr[lr<<1],lr:t,lr:t
43.15885 -+	sthh.w sp[r6<<3],r1:t,r12:t
43.15886 -+	sthh.w r6[r6<<0],r9:t,r9:t
43.15887 -+	sthh.w r10[r3<<0],r0:b,r11:t
43.15888 -+	.text
43.15889 -+	.global sthh_w1
43.15890 -+sthh_w1:
43.15891 -+	sthh.w pc[0],pc:b,pc:b
43.15892 -+	sthh.w r12[1020],r12:t,r12:t
43.15893 -+	sthh.w r5[512],r5:t,r5:t
43.15894 -+	sthh.w r4[508],r4:b,r4:b
43.15895 -+	sthh.w lr[4],lr:t,lr:t
43.15896 -+	sthh.w r4[404],r9:t,r0:b
43.15897 -+	sthh.w r8[348],r2:t,r10:b
43.15898 -+	sthh.w sp[172],r9:b,r2:b
43.15899 -+	.text
43.15900 -+	.global cop
43.15901 -+cop:
43.15902 -+	cop cp0,cr0,cr0,cr0,0
43.15903 -+	cop cp7,cr15,cr15,cr15,0x7f
43.15904 -+	cop cp3,cr5,cr5,cr5,0x31
43.15905 -+	cop cp2,cr4,cr4,cr4,0x30
43.15906 -+	cop cp5,cr8,cr3,cr7,0x5a
43.15907 -+	.text
43.15908 -+	.global ldc_w1
43.15909 -+ldc_w1:
43.15910 -+	ldc.w cp0,cr0,r0[0]
43.15911 -+	ldc.w cp7,cr15,pc[255<<2]
43.15912 -+	ldc.w cp3,cr5,r5[128<<2]
43.15913 -+	ldc.w cp2,cr4,r4[127<<2]
43.15914 -+	ldc.w cp4,cr9,r13[36<<2]
43.15915 -+	.text
43.15916 -+	.global ldc_w2
43.15917 -+ldc_w2:
43.15918 -+	ldc.w cp0,cr0,--r0
43.15919 -+	ldc.w cp7,cr15,--pc
43.15920 -+	ldc.w cp3,cr5,--r5
43.15921 -+	ldc.w cp2,cr4,--r4
43.15922 -+	ldc.w cp4,cr9,--r13
43.15923 -+	.text
43.15924 -+	.global ldc_w3
43.15925 -+ldc_w3:
43.15926 -+	ldc.w cp0,cr0,r0[r0]
43.15927 -+	ldc.w cp7,cr15,pc[pc<<3]
43.15928 -+	ldc.w cp3,cr5,r5[r4<<2]
43.15929 -+	ldc.w cp2,cr4,r4[r3<<1]
43.15930 -+	ldc.w cp4,cr9,r13[r12<<0]
43.15931 -+	.text
43.15932 -+	.global ldc_d1
43.15933 -+ldc_d1:
43.15934 -+	ldc.d cp0,cr0,r0[0]
43.15935 -+	ldc.d cp7,cr14,pc[255<<2]
43.15936 -+	ldc.d cp3,cr6,r5[128<<2]
43.15937 -+	ldc.d cp2,cr4,r4[127<<2]
43.15938 -+	ldc.d cp4,cr8,r13[36<<2]
43.15939 -+	.text
43.15940 -+	.global ldc_d2
43.15941 -+ldc_d2:
43.15942 -+	ldc.d cp0,cr0,--r0
43.15943 -+	ldc.d cp7,cr14,--pc
43.15944 -+	ldc.d cp3,cr6,--r5
43.15945 -+	ldc.d cp2,cr4,--r4
43.15946 -+	ldc.d cp4,cr8,--r13
43.15947 -+	.text
43.15948 -+	.global ldc_d3
43.15949 -+ldc_d3:
43.15950 -+	ldc.d cp0,cr0,r0[r0]
43.15951 -+	ldc.d cp7,cr14,pc[pc<<3]
43.15952 -+	ldc.d cp3,cr6,r5[r4<<2]
43.15953 -+	ldc.d cp2,cr4,r4[r3<<1]
43.15954 -+	ldc.d cp4,cr8,r13[r12<<0]
43.15955 -+	.text
43.15956 -+	.global stc_w1
43.15957 -+stc_w1:
43.15958 -+	stc.w cp0,r0[0],cr0
43.15959 -+	stc.w cp7,pc[255<<2],cr15
43.15960 -+	stc.w cp3,r5[128<<2],cr5
43.15961 -+	stc.w cp2,r4[127<<2],cr4
43.15962 -+	stc.w cp4,r13[36<<2],cr9
43.15963 -+	.text
43.15964 -+	.global stc_w2
43.15965 -+stc_w2:
43.15966 -+	stc.w cp0,r0++,cr0
43.15967 -+	stc.w cp7,pc++,cr15
43.15968 -+	stc.w cp3,r5++,cr5
43.15969 -+	stc.w cp2,r4++,cr4
43.15970 -+	stc.w cp4,r13++,cr9
43.15971 -+	.text
43.15972 -+	.global stc_w3
43.15973 -+stc_w3:
43.15974 -+	stc.w cp0,r0[r0],cr0
43.15975 -+	stc.w cp7,pc[pc<<3],cr15
43.15976 -+	stc.w cp3,r5[r4<<2],cr5
43.15977 -+	stc.w cp2,r4[r3<<1],cr4
43.15978 -+	stc.w cp4,r13[r12<<0],cr9
43.15979 -+	.text
43.15980 -+	.global stc_d1
43.15981 -+stc_d1:
43.15982 -+	stc.d cp0,r0[0],cr0
43.15983 -+	stc.d cp7,pc[255<<2],cr14
43.15984 -+	stc.d cp3,r5[128<<2],cr6
43.15985 -+	stc.d cp2,r4[127<<2],cr4
43.15986 -+	stc.d cp4,r13[36<<2],cr8
43.15987 -+	.text
43.15988 -+	.global stc_d2
43.15989 -+stc_d2:
43.15990 -+	stc.d cp0,r0++,cr0
43.15991 -+	stc.d cp7,pc++,cr14
43.15992 -+	stc.d cp3,r5++,cr6
43.15993 -+	stc.d cp2,r4++,cr4
43.15994 -+	stc.d cp4,r13++,cr8
43.15995 -+	.text
43.15996 -+	.global stc_d3
43.15997 -+stc_d3:
43.15998 -+	stc.d cp0,r0[r0],cr0
43.15999 -+	stc.d cp7,pc[pc<<3],cr14
43.16000 -+	stc.d cp3,r5[r4<<2],cr6
43.16001 -+	stc.d cp2,r4[r3<<1],cr4
43.16002 -+	stc.d cp4,r13[r12<<0],cr8
43.16003 -+	.text
43.16004 -+	.global ldc0_w
43.16005 -+ldc0_w:
43.16006 -+	ldc0.w cr0,r0[0]
43.16007 -+	ldc0.w cr15,pc[4095<<2]
43.16008 -+	ldc0.w cr5,r5[2048<<2]
43.16009 -+	ldc0.w cr4,r4[2047<<2]
43.16010 -+	ldc0.w cr9,r13[147<<2]
43.16011 -+	.text
43.16012 -+	.global ldc0_d
43.16013 -+ldc0_d:
43.16014 -+	ldc0.d cr0,r0[0]
43.16015 -+	ldc0.d cr14,pc[4095<<2]
43.16016 -+	ldc0.d cr6,r5[2048<<2]
43.16017 -+	ldc0.d cr4,r4[2047<<2]
43.16018 -+	ldc0.d cr8,r13[147<<2]
43.16019 -+	.text
43.16020 -+	.global stc0_w
43.16021 -+stc0_w:
43.16022 -+	stc0.w r0[0],cr0
43.16023 -+	stc0.w pc[4095<<2],cr15
43.16024 -+	stc0.w r5[2048<<2],cr5
43.16025 -+	stc0.w r4[2047<<2],cr4
43.16026 -+	stc0.w r13[147<<2],cr9
43.16027 -+	.text
43.16028 -+	.global stc0_d
43.16029 -+stc0_d:
43.16030 -+	stc0.d r0[0],cr0
43.16031 -+	stc0.d pc[4095<<2],cr14
43.16032 -+	stc0.d r5[2048<<2],cr6
43.16033 -+	stc0.d r4[2047<<2],cr4
43.16034 -+	stc0.d r13[147<<2],cr8
43.16035 -+	.text
43.16036 -+	.global memc
43.16037 -+memc:
43.16038 -+	memc 0, 0
43.16039 -+	memc -4, 31
43.16040 -+	memc -65536, 16
43.16041 -+	memc 65532, 15
43.16042 -+	.text
43.16043 -+	.global mems
43.16044 -+mems:
43.16045 -+	mems 0, 0
43.16046 -+	mems -4, 31
43.16047 -+	mems -65536, 16
43.16048 -+	mems 65532, 15
43.16049 -+	.text
43.16050 -+	.global memt
43.16051 -+memt:
43.16052 -+	memt 0, 0
43.16053 -+	memt -4, 31
43.16054 -+	memt -65536, 16
43.16055 -+	memt 65532, 15
43.16056 -+
43.16057 -+	.text
43.16058 -+	.global stcond
43.16059 -+stcond:
43.16060 -+	stcond r0[0], r0
43.16061 -+	stcond pc[-1], pc
43.16062 -+	stcond r8[-32768], r7
43.16063 -+	stcond r7[32767], r8
43.16064 -+	stcond r5[0x1234], r10
43.16065 -+
43.16066 -+ldcm_w:
43.16067 -+	ldcm.w cp0,pc,cr0-cr7
43.16068 -+	ldcm.w cp7,r0,cr0
43.16069 -+	ldcm.w cp4,r4++,cr0-cr6
43.16070 -+	ldcm.w cp3,r7,cr7
43.16071 -+	ldcm.w cp1,r12++,cr1,cr4-cr6
43.16072 -+	ldcm.w cp0,pc,cr8-cr15
43.16073 -+	ldcm.w cp7,r0,cr8
43.16074 -+	ldcm.w cp4,r4++,cr8-cr14
43.16075 -+	ldcm.w cp3,r7,cr15
43.16076 -+	ldcm.w cp1,r12++,cr9,cr12-cr14
43.16077 -+
43.16078 -+ldcm_d:
43.16079 -+	ldcm.d cp0,pc,cr0-cr15
43.16080 -+	ldcm.d cp7,r0,cr0,cr1
43.16081 -+	ldcm.d cp4,r4++,cr0-cr13
43.16082 -+	ldcm.d cp3,r7,cr14-cr15
43.16083 -+	ldcm.d cp2,r12++,cr0-cr3,cr8-cr9,cr14-cr15
43.16084 -+
43.16085 -+stcm_w:
43.16086 -+	stcm.w cp0,pc,cr0-cr7
43.16087 -+	stcm.w cp7,r0,cr0
43.16088 -+	stcm.w cp4,--r4,cr0-cr6
43.16089 -+	stcm.w cp3,r7,cr7
43.16090 -+	stcm.w cp1,--r12,cr1,cr4-cr6
43.16091 -+	stcm.w cp0,pc,cr8-cr15
43.16092 -+	stcm.w cp7,r0,cr8
43.16093 -+	stcm.w cp4,--r4,cr8-cr14
43.16094 -+	stcm.w cp3,r7,cr15
43.16095 -+	stcm.w cp1,--r12,cr9,cr12-cr14
43.16096 -+
43.16097 -+stcm_d:
43.16098 -+	stcm.d cp0,pc,cr0-cr15
43.16099 -+	stcm.d cp7,r0,cr0,cr1
43.16100 -+	stcm.d cp4,--r4,cr0-cr13
43.16101 -+	stcm.d cp3,r7,cr14-cr15
43.16102 -+	stcm.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
43.16103 -+
43.16104 -+mvcr_w:
43.16105 -+	mvcr.w cp7,pc,cr15
43.16106 -+	mvcr.w cp0,r0,cr0
43.16107 -+	mvcr.w cp0,pc,cr15
43.16108 -+	mvcr.w cp7,r0,cr15
43.16109 -+	mvcr.w cp7,pc,cr0
43.16110 -+	mvcr.w cp4,r7,cr8
43.16111 -+	mvcr.w cp3,r8,cr7
43.16112 -+
43.16113 -+mvcr_d:
43.16114 -+	mvcr.d cp7,lr,cr14
43.16115 -+	mvcr.d cp0,r0,cr0
43.16116 -+	mvcr.d cp0,lr,cr14
43.16117 -+	mvcr.d cp7,r0,cr14
43.16118 -+	mvcr.d cp7,lr,cr0
43.16119 -+	mvcr.d cp4,r6,cr8
43.16120 -+	mvcr.d cp3,r8,cr6
43.16121 -+
43.16122 -+mvrc_w:
43.16123 -+	mvrc.w cp7,cr15,pc
43.16124 -+	mvrc.w cp0,cr0,r0
43.16125 -+	mvrc.w cp0,cr15,pc
43.16126 -+	mvrc.w cp7,cr15,r0
43.16127 -+	mvrc.w cp7,cr0,pc
43.16128 -+	mvrc.w cp4,cr8,r7
43.16129 -+	mvrc.w cp3,cr7,r8
43.16130 -+
43.16131 -+mvrc_d:
43.16132 -+	mvrc.d cp7,cr14,lr
43.16133 -+	mvrc.d cp0,cr0,r0
43.16134 -+	mvrc.d cp0,cr14,lr
43.16135 -+	mvrc.d cp7,cr14,r0
43.16136 -+	mvrc.d cp7,cr0,lr
43.16137 -+	mvrc.d cp4,cr8,r6
43.16138 -+	mvrc.d cp3,cr6,r8
43.16139 -+
43.16140 -+bfexts:
43.16141 -+	bfexts pc,pc,31,31
43.16142 -+	bfexts r0,r0,0,0
43.16143 -+	bfexts r0,pc,31,31
43.16144 -+	bfexts pc,r0,31,31
43.16145 -+	bfexts pc,pc,0,31
43.16146 -+	bfexts pc,pc,31,0
43.16147 -+	bfexts r7,r8,15,16
43.16148 -+	bfexts r8,r7,16,15
43.16149 -+
43.16150 -+bfextu:
43.16151 -+	bfextu pc,pc,31,31
43.16152 -+	bfextu r0,r0,0,0
43.16153 -+	bfextu r0,pc,31,31
43.16154 -+	bfextu pc,r0,31,31
43.16155 -+	bfextu pc,pc,0,31
43.16156 -+	bfextu pc,pc,31,0
43.16157 -+	bfextu r7,r8,15,16
43.16158 -+	bfextu r8,r7,16,15
43.16159 -+
43.16160 -+bfins:
43.16161 -+	bfins pc,pc,31,31
43.16162 -+	bfins r0,r0,0,0
43.16163 -+	bfins r0,pc,31,31
43.16164 -+	bfins pc,r0,31,31
43.16165 -+	bfins pc,pc,0,31
43.16166 -+	bfins pc,pc,31,0
43.16167 -+	bfins r7,r8,15,16
43.16168 -+	bfins r8,r7,16,15
43.16169 -+
43.16170 -+rsubc:
43.16171 -+	rsubeq pc,0
43.16172 -+	rsubal r12,-1
43.16173 -+	rsubls r5,-128
43.16174 -+	rsubpl r4,127
43.16175 -+	rsubne lr,1
43.16176 -+	rsubls r12,118
43.16177 -+	rsubvc lr,-12
43.16178 -+	rsubmi r4,-13
43.16179 -+
43.16180 -+addc:
43.16181 -+	addeq pc,pc,pc
43.16182 -+	addal r12,r12,r12
43.16183 -+	addls r5,r5,r5
43.16184 -+	addpl r4,r4,r4
43.16185 -+	addne lr,lr,lr
43.16186 -+	addls r10,r2,r1
43.16187 -+	addvc r12,r8,r11
43.16188 -+	addmi r10,r7,r0   
43.16189 -+
43.16190 -+subc2:
43.16191 -+	subeq pc,pc,pc
43.16192 -+	subal r12,r12,r12
43.16193 -+	subls r5,r5,r5
43.16194 -+	subpl r4,r4,r4
43.16195 -+	subne lr,lr,lr
43.16196 -+	subls r10,r2,r1
43.16197 -+	subvc r12,r8,r11
43.16198 -+	submi r10,r7,r0   
43.16199 -+
43.16200 -+andc:
43.16201 -+	andeq pc,pc,pc
43.16202 -+	andal r12,r12,r12
43.16203 -+	andls r5,r5,r5
43.16204 -+	andpl r4,r4,r4
43.16205 -+	andne lr,lr,lr
43.16206 -+	andls r10,r2,r1
43.16207 -+	andvc r12,r8,r11
43.16208 -+	andmi r10,r7,r0   
43.16209 -+
43.16210 -+orc:
43.16211 -+	oreq pc,pc,pc
43.16212 -+	oral r12,r12,r12
43.16213 -+	orls r5,r5,r5
43.16214 -+	orpl r4,r4,r4
43.16215 -+	orne lr,lr,lr
43.16216 -+	orls r10,r2,r1
43.16217 -+	orvc r12,r8,r11
43.16218 -+	ormi r10,r7,r0   
43.16219 -+
43.16220 -+eorc:
43.16221 -+	eoreq pc,pc,pc
43.16222 -+	eoral r12,r12,r12
43.16223 -+	eorls r5,r5,r5
43.16224 -+	eorpl r4,r4,r4
43.16225 -+	eorne lr,lr,lr
43.16226 -+	eorls r10,r2,r1
43.16227 -+	eorvc r12,r8,r11
43.16228 -+	eormi r10,r7,r0   
43.16229 -+
43.16230 -+ldcond:
43.16231 -+	ld.weq  pc,pc[2044]
43.16232 -+	ld.shal r12,r12[1022]
43.16233 -+	ld.uhls r5,r5[0]
43.16234 -+	ld.ubpl r4,r4[511]
43.16235 -+	ld.sbne lr,lr[0]
43.16236 -+	ld.wls  r10,r2[0]
43.16237 -+	ld.shvc r12,r8[0x3fe]
43.16238 -+	ld.ubmi r10,r7[1]
43.16239 -+  
43.16240 -+stcond2:
43.16241 -+	st.weq pc[2044],pc
43.16242 -+	st.hal r12[1022],r12
43.16243 -+	st.hls r5[0],r5
43.16244 -+	st.bpl r4[511],r4
43.16245 -+	st.bne lr[0],lr
43.16246 -+	st.wls r2[0],r10
43.16247 -+	st.hvc r8[0x3fe],r12
43.16248 -+	st.bmi r7[1],r10
43.16249 -+	
43.16250 -+movh:	
43.16251 -+	movh	pc, 65535
43.16252 -+	movh	r0, 0
43.16253 -+	movh	r5, 1
43.16254 -+	movh	r12, 32767
43.16255 -+	
43.16256 -+		
43.16257 ---- /dev/null
43.16258 -+++ b/gas/testsuite/gas/avr32/avr32.exp
43.16259 -@@ -0,0 +1,23 @@
43.16260 -+# AVR32 assembler testsuite. -*- Tcl -*-
43.16261 -+
43.16262 -+if [istarget avr32-*-*] {
43.16263 -+    run_dump_test "hwrd-lwrd"
43.16264 -+    run_dump_test "pcrel"
43.16265 -+    run_dump_test "aliases"
43.16266 -+    run_dump_test "dwarf2"
43.16267 -+    run_dump_test "pic_reloc"
43.16268 -+    run_dump_test "fpinsn"
43.16269 -+    run_dump_test "pico"
43.16270 -+    run_dump_test "lda_pic"
43.16271 -+    run_dump_test "lda_pic_linkrelax"
43.16272 -+    run_dump_test "lda_nopic"
43.16273 -+    run_dump_test "lda_nopic_linkrelax"
43.16274 -+    run_dump_test "call_pic"
43.16275 -+    run_dump_test "call_pic_linkrelax"
43.16276 -+    run_dump_test "call_nopic"
43.16277 -+    run_dump_test "call_nopic_linkrelax"
43.16278 -+    run_dump_test "jmptable"
43.16279 -+    run_dump_test "jmptable_linkrelax"
43.16280 -+    run_dump_test "symdiff"
43.16281 -+    run_dump_test "symdiff_linkrelax"
43.16282 -+}
43.16283 ---- /dev/null
43.16284 -+++ b/gas/testsuite/gas/avr32/call_nopic.d
43.16285 -@@ -0,0 +1,36 @@
43.16286 -+#source: call.s
43.16287 -+#as:
43.16288 -+#objdump: -dr
43.16289 -+#name: call_nopic
43.16290 -+
43.16291 -+.*: +file format .*
43.16292 -+
43.16293 -+Disassembly of section \.text:
43.16294 -+
43.16295 -+00000000 <call_test>:
43.16296 -+       0:	d7 03       	nop
43.16297 -+
43.16298 -+00000002 <toofar_negative>:
43.16299 -+	\.\.\.
43.16300 -+  1ffffe:	00 00       	add r0,r0
43.16301 -+  200000:	f0 a0 00 00 	rcall 0 <call_test>
43.16302 -+  200004:	f0 1f 00 0c 	mcall 200034 <toofar_negative\+0x200032>
43.16303 -+  200008:	f0 1f 00 0c 	mcall 200038 <toofar_negative\+0x200036>
43.16304 -+  20000c:	f0 1f 00 0c 	mcall 20003c <toofar_negative\+0x20003a>
43.16305 -+  200010:	f0 1f 00 0c 	mcall 200040 <toofar_negative\+0x20003e>
43.16306 -+	\.\.\.
43.16307 -+  200030:	ee b0 ff ff 	rcall 40002e <far_positive>
43.16308 -+	\.\.\.
43.16309 -+			200034: R_AVR32_32_CPENT	\.text\+0x2
43.16310 -+			200038: R_AVR32_32_CPENT	\.text\.init
43.16311 -+			20003c: R_AVR32_32_CPENT	undefined
43.16312 -+			200040: R_AVR32_32_CPENT	\.text\+0x40002c
43.16313 -+
43.16314 -+0040002c <toofar_positive>:
43.16315 -+  40002c:	d7 03       	nop
43.16316 -+0040002e <far_positive>:
43.16317 -+  40002e:	d7 03       	nop
43.16318 -+Disassembly of section \.text\.init:
43.16319 -+
43.16320 -+00000000 <different_section>:
43.16321 -+   0:	e2 c0 00 00 	sub r0,r1,0
43.16322 ---- /dev/null
43.16323 -+++ b/gas/testsuite/gas/avr32/call_nopic_linkrelax.d
43.16324 -@@ -0,0 +1,43 @@
43.16325 -+#source: call.s
43.16326 -+#as: --linkrelax
43.16327 -+#objdump: -dr
43.16328 -+#name: call_nopic_linkrelax
43.16329 -+
43.16330 -+.*: +file format .*
43.16331 -+
43.16332 -+Disassembly of section \.text:
43.16333 -+
43.16334 -+00000000 <call_test>:
43.16335 -+       0:	d7 03       	nop
43.16336 -+
43.16337 -+00000002 <toofar_negative>:
43.16338 -+	\.\.\.
43.16339 -+  1ffffe:	00 00       	add r0,r0
43.16340 -+  200000:	e0 a0 00 00 	rcall 200000 <toofar_negative\+0x1ffffe>
43.16341 -+			200000: R_AVR32_22H_PCREL	\.text
43.16342 -+  200004:	f0 1f 00 00 	mcall 200004 <toofar_negative\+0x200002>
43.16343 -+			200004: R_AVR32_CPCALL	\.text\+0x200034
43.16344 -+  200008:	f0 1f 00 00 	mcall 200008 <toofar_negative\+0x200006>
43.16345 -+			200008: R_AVR32_CPCALL	\.text\+0x200038
43.16346 -+  20000c:	f0 1f 00 00 	mcall 20000c <toofar_negative\+0x20000a>
43.16347 -+			20000c: R_AVR32_CPCALL	\.text\+0x20003c
43.16348 -+  200010:	f0 1f 00 00 	mcall 200010 <toofar_negative\+0x20000e>
43.16349 -+			200010: R_AVR32_CPCALL	\.text\+0x200040
43.16350 -+	\.\.\.
43.16351 -+  200030:	e0 a0 00 00 	rcall 200030 <toofar_negative\+0x20002e>
43.16352 -+			200030: R_AVR32_22H_PCREL	\.text\+0x40002e
43.16353 -+	\.\.\.
43.16354 -+			200034: R_AVR32_ALIGN	\*ABS\*\+0x2
43.16355 -+			200034: R_AVR32_32_CPENT	\.text\+0x2
43.16356 -+			200038: R_AVR32_32_CPENT	\.text\.init
43.16357 -+			20003c: R_AVR32_32_CPENT	undefined
43.16358 -+			200040: R_AVR32_32_CPENT	\.text\+0x40002c
43.16359 -+
43.16360 -+0040002c <toofar_positive>:
43.16361 -+  40002c:	d7 03       	nop
43.16362 -+0040002e <far_positive>:
43.16363 -+  40002e:	d7 03       	nop
43.16364 -+Disassembly of section \.text\.init:
43.16365 -+
43.16366 -+00000000 <different_section>:
43.16367 -+   0:	e2 c0 00 00 	sub r0,r1,0
43.16368 ---- /dev/null
43.16369 -+++ b/gas/testsuite/gas/avr32/call_pic.d
43.16370 -@@ -0,0 +1,36 @@
43.16371 -+#source: call.s
43.16372 -+#as: --pic
43.16373 -+#objdump: -dr
43.16374 -+#name: call_pic
43.16375 -+
43.16376 -+.*: +file format .*
43.16377 -+
43.16378 -+Disassembly of section \.text:
43.16379 -+
43.16380 -+00000000 <call_test>:
43.16381 -+       0:	d7 03       	nop
43.16382 -+
43.16383 -+00000002 <toofar_negative>:
43.16384 -+	\.\.\.
43.16385 -+  1ffffe:	00 00       	add r0,r0
43.16386 -+  200000:	f0 a0 00 00 	rcall 0 <call_test>
43.16387 -+  200004:	f0 16 00 00 	mcall r6\[0\]
43.16388 -+			200004: R_AVR32_GOT18SW	toofar_negative
43.16389 -+  200008:	f0 16 00 00 	mcall r6\[0\]
43.16390 -+			200008: R_AVR32_GOT18SW	different_section
43.16391 -+  20000c:	f0 16 00 00 	mcall r6\[0\]
43.16392 -+			20000c: R_AVR32_GOT18SW	undefined
43.16393 -+  200010:	f0 16 00 00 	mcall r6\[0\]
43.16394 -+			200010: R_AVR32_GOT18SW	toofar_positive
43.16395 -+	\.\.\.
43.16396 -+  200030:	ee b0 ff ff 	rcall 40002e <far_positive>
43.16397 -+	\.\.\.
43.16398 -+
43.16399 -+0040002c <toofar_positive>:
43.16400 -+  40002c:	d7 03       	nop
43.16401 -+0040002e <far_positive>:
43.16402 -+  40002e:	d7 03       	nop
43.16403 -+Disassembly of section \.text\.init:
43.16404 -+
43.16405 -+00000000 <different_section>:
43.16406 -+   0:	e2 c0 00 00 	sub r0,r1,0
43.16407 ---- /dev/null
43.16408 -+++ b/gas/testsuite/gas/avr32/call_pic_linkrelax.d
43.16409 -@@ -0,0 +1,47 @@
43.16410 -+#source: call.s
43.16411 -+#as: --pic --linkrelax
43.16412 -+#objdump: -dr
43.16413 -+#name: call_pic_linkrelax
43.16414 -+
43.16415 -+.*: +file format .*
43.16416 -+
43.16417 -+Disassembly of section \.text:
43.16418 -+
43.16419 -+00000000 <call_test>:
43.16420 -+       0:	d7 03       	nop
43.16421 -+
43.16422 -+00000002 <toofar_negative>:
43.16423 -+	\.\.\.
43.16424 -+  1ffffe:	00 00       	add r0,r0
43.16425 -+  200000:	e0 a0 00 00 	rcall 200000 <toofar_negative\+0x1ffffe>
43.16426 -+			200000: R_AVR32_22H_PCREL	\.text
43.16427 -+  200004:	e0 6e 00 00 	mov lr,0
43.16428 -+			200004: R_AVR32_GOTCALL	toofar_negative
43.16429 -+  200008:	ec 0e 03 2e 	ld\.w lr,r6\[lr<<0x2\]
43.16430 -+  20000c:	5d 1e       	icall lr
43.16431 -+  20000e:	e0 6e 00 00 	mov lr,0
43.16432 -+			20000e: R_AVR32_GOTCALL	different_section
43.16433 -+  200012:	ec 0e 03 2e 	ld\.w lr,r6\[lr<<0x2\]
43.16434 -+  200016:	5d 1e       	icall lr
43.16435 -+  200018:	e0 6e 00 00 	mov lr,0
43.16436 -+			200018: R_AVR32_GOTCALL	undefined
43.16437 -+  20001c:	ec 0e 03 2e 	ld\.w lr,r6\[lr<<0x2\]
43.16438 -+  200020:	5d 1e       	icall lr
43.16439 -+  200022:	e0 6e 00 00 	mov lr,0
43.16440 -+			200022: R_AVR32_GOTCALL	toofar_positive
43.16441 -+  200026:	ec 0e 03 2e 	ld\.w lr,r6\[lr<<0x2\]
43.16442 -+  20002a:	5d 1e       	icall lr
43.16443 -+  20002c:	00 00       	add r0,r0
43.16444 -+  20002e:	00 00       	add r0,r0
43.16445 -+  200030:	e0 a0 00 00 	rcall 200030 <toofar_negative\+0x20002e>
43.16446 -+			200030: R_AVR32_22H_PCREL	\.text\+0x40002e
43.16447 -+	\.\.\.
43.16448 -+
43.16449 -+0040002c <toofar_positive>:
43.16450 -+  40002c:	d7 03       	nop
43.16451 -+0040002e <far_positive>:
43.16452 -+  40002e:	d7 03       	nop
43.16453 -+Disassembly of section \.text\.init:
43.16454 -+
43.16455 -+00000000 <different_section>:
43.16456 -+   0:	e2 c0 00 00 	sub r0,r1,0
43.16457 ---- /dev/null
43.16458 -+++ b/gas/testsuite/gas/avr32/call.s
43.16459 -@@ -0,0 +1,30 @@
43.16460 -+
43.16461 -+	.text
43.16462 -+	.global call_test
43.16463 -+call_test:
43.16464 -+far_negative:
43.16465 -+	nop
43.16466 -+toofar_negative:
43.16467 -+
43.16468 -+	.org	0x200000
43.16469 -+
43.16470 -+	call	far_negative
43.16471 -+	call	toofar_negative
43.16472 -+	call	different_section
43.16473 -+	call	undefined
43.16474 -+	call	toofar_positive
43.16475 -+	.org	0x200030
43.16476 -+	call	far_positive
43.16477 -+
43.16478 -+	.cpool
43.16479 -+
43.16480 -+	.org	0x40002c
43.16481 -+
43.16482 -+toofar_positive:
43.16483 -+	nop
43.16484 -+far_positive:
43.16485 -+	nop
43.16486 -+
43.16487 -+	.section .text.init,"ax",@progbits
43.16488 -+different_section:
43.16489 -+	sub	r0, r1, 0
43.16490 ---- /dev/null
43.16491 -+++ b/gas/testsuite/gas/avr32/dwarf2.d
43.16492 -@@ -0,0 +1,42 @@
43.16493 -+#readelf: -wl
43.16494 -+#name: dwarf2
43.16495 -+#source: dwarf2.s
43.16496 -+
43.16497 -+Dump of debug contents of section \.debug_line:
43.16498 -+
43.16499 -+  Length:                      53
43.16500 -+  DWARF Version:               2
43.16501 -+  Prologue Length:             26
43.16502 -+  Minimum Instruction Length:  1
43.16503 -+  Initial value of 'is_stmt':  1
43.16504 -+  Line Base:                   -5
43.16505 -+  Line Range:                  14
43.16506 -+  Opcode Base:                 10
43.16507 -+  \(Pointer size:               4\)
43.16508 -+
43.16509 -+ Opcodes:
43.16510 -+  Opcode 1 has 0 args
43.16511 -+  Opcode 2 has 1 args
43.16512 -+  Opcode 3 has 1 args
43.16513 -+  Opcode 4 has 1 args
43.16514 -+  Opcode 5 has 1 args
43.16515 -+  Opcode 6 has 0 args
43.16516 -+  Opcode 7 has 0 args
43.16517 -+  Opcode 8 has 0 args
43.16518 -+  Opcode 9 has 1 args
43.16519 -+
43.16520 -+ The Directory Table is empty\.
43.16521 -+
43.16522 -+ The File Name Table:
43.16523 -+  Entry	Dir	Time	Size	Name
43.16524 -+  1	0	0	0	main\.c
43.16525 -+
43.16526 -+ Line Number Statements:
43.16527 -+  Extended opcode 2: set Address to 0x0
43.16528 -+  Advance Line by 87 to 88
43.16529 -+  Copy
43.16530 -+  Advance Line by 23 to 111
43.16531 -+  Special opcode .*: advance Address by 4 to 0x4 and Line by 0 to 111
43.16532 -+  Special opcode .*: advance Address by 10 to 0xe and Line by 1 to 112
43.16533 -+  Advance PC by 530 to 220
43.16534 -+  Extended opcode 1: End of Sequence
43.16535 ---- /dev/null
43.16536 -+++ b/gas/testsuite/gas/avr32/dwarf2.s
43.16537 -@@ -0,0 +1,67 @@
43.16538 -+# Source file used to test DWARF2 information for AVR32.
43.16539 -+
43.16540 -+	.file	"main.c"
43.16541 -+
43.16542 -+	.section .debug_abbrev,"",@progbits
43.16543 -+.Ldebug_abbrev0:
43.16544 -+	.section .debug_info,"",@progbits
43.16545 -+.Ldebug_info0:
43.16546 -+	.section .debug_line,"",@progbits
43.16547 -+.Ldebug_line0:
43.16548 -+
43.16549 -+	.text
43.16550 -+	.align	1
43.16551 -+	.globl	main
43.16552 -+	.type	main, @function
43.16553 -+.Ltext0:
43.16554 -+main:
43.16555 -+	.file 1 "main.c"
43.16556 -+	.loc 1 88 0
43.16557 -+	pushm	r0-r7,lr
43.16558 -+	sub	sp, 4
43.16559 -+	.loc 1 111 0
43.16560 -+	lddpc	r12, .LC1
43.16561 -+	lddpc	r7, .LC1
43.16562 -+	icall	r7
43.16563 -+	.loc 1 112 0
43.16564 -+	lddpc	r6, .LC4
43.16565 -+
43.16566 -+	.align	2
43.16567 -+.LC4:	.int	0
43.16568 -+
43.16569 -+	.fill	256, 2, 0
43.16570 -+
43.16571 -+	.align	2
43.16572 -+.LC1:
43.16573 -+	.int	0
43.16574 -+.LC2:
43.16575 -+	.int	0
43.16576 -+.LC3:
43.16577 -+	.int	0
43.16578 -+	.size	main, . - main
43.16579 -+
43.16580 -+.Letext0:
43.16581 -+
43.16582 -+	.section .debug_info
43.16583 -+	.int	.Ledebug_info0 - .Ldebug_info0	// size
43.16584 -+	.short	2				// version
43.16585 -+	.int	.Ldebug_abbrev0			// abbrev offset
43.16586 -+	.byte	4				// bytes per addr
43.16587 -+
43.16588 -+	.uleb128 1				// abbrev 1
43.16589 -+	.int	.Ldebug_line0			// DW_AT_stmt_list
43.16590 -+	.int	.Letext0			// DW_AT_high_pc
43.16591 -+	.int	.Ltext0				// DW_AT_low_pc
43.16592 -+
43.16593 -+.Ledebug_info0:
43.16594 -+
43.16595 -+	.section .debug_abbrev
43.16596 -+	.uleb128 0x01
43.16597 -+	.uleb128 0x11		// DW_TAG_compile_unit
43.16598 -+	.byte	0		// DW_CHILDREN_no
43.16599 -+	.uleb128 0x10, 0x6	// DW_AT_stmt_list
43.16600 -+	.uleb128 0x12, 0x1	// DW_AT_high_pc
43.16601 -+	.uleb128 0x11, 0x1	// DW_AT_low_pc
43.16602 -+	.uleb128 0, 0
43.16603 -+
43.16604 -+	.byte	0
43.16605 ---- /dev/null
43.16606 -+++ b/gas/testsuite/gas/avr32/fpinsn.d
43.16607 -@@ -0,0 +1,271 @@
43.16608 -+#as:
43.16609 -+#objdump: -dr
43.16610 -+#name: fpinsn
43.16611 -+
43.16612 -+.*: +file format .*
43.16613 -+
43.16614 -+Disassembly of section \.text:
43.16615 -+
43.16616 -+[0-9a-f]* <fadd_s>:
43.16617 -+ *[0-9a-f]*:	e1 a2 0f ff 	cop cp0,cr15,cr15,cr15,0x4
43.16618 -+ *[0-9a-f]*:	e1 a2 00 00 	cop cp0,cr0,cr0,cr0,0x4
43.16619 -+ *[0-9a-f]*:	e1 a2 00 ff 	cop cp0,cr0,cr15,cr15,0x4
43.16620 -+ *[0-9a-f]*:	e1 a2 0f 0f 	cop cp0,cr15,cr0,cr15,0x4
43.16621 -+ *[0-9a-f]*:	e1 a2 0f f0 	cop cp0,cr15,cr15,cr0,0x4
43.16622 -+ *[0-9a-f]*:	e1 a2 07 88 	cop cp0,cr7,cr8,cr8,0x4
43.16623 -+ *[0-9a-f]*:	e1 a2 08 78 	cop cp0,cr8,cr7,cr8,0x4
43.16624 -+ *[0-9a-f]*:	e1 a2 08 87 	cop cp0,cr8,cr8,cr7,0x4
43.16625 -+
43.16626 -+[0-9a-f]* <fsub_s>:
43.16627 -+ *[0-9a-f]*:	e1 a2 1f ff 	cop cp0,cr15,cr15,cr15,0x5
43.16628 -+ *[0-9a-f]*:	e1 a2 10 00 	cop cp0,cr0,cr0,cr0,0x5
43.16629 -+ *[0-9a-f]*:	e1 a2 10 ff 	cop cp0,cr0,cr15,cr15,0x5
43.16630 -+ *[0-9a-f]*:	e1 a2 1f 0f 	cop cp0,cr15,cr0,cr15,0x5
43.16631 -+ *[0-9a-f]*:	e1 a2 1f f0 	cop cp0,cr15,cr15,cr0,0x5
43.16632 -+ *[0-9a-f]*:	e1 a2 17 88 	cop cp0,cr7,cr8,cr8,0x5
43.16633 -+ *[0-9a-f]*:	e1 a2 18 78 	cop cp0,cr8,cr7,cr8,0x5
43.16634 -+ *[0-9a-f]*:	e1 a2 18 87 	cop cp0,cr8,cr8,cr7,0x5
43.16635 -+
43.16636 -+[0-9a-f]* <fmac_s>:
43.16637 -+ *[0-9a-f]*:	e1 a0 0f ff 	cop cp0,cr15,cr15,cr15,0x0
43.16638 -+ *[0-9a-f]*:	e1 a0 00 00 	cop cp0,cr0,cr0,cr0,0x0
43.16639 -+ *[0-9a-f]*:	e1 a0 00 ff 	cop cp0,cr0,cr15,cr15,0x0
43.16640 -+ *[0-9a-f]*:	e1 a0 0f 0f 	cop cp0,cr15,cr0,cr15,0x0
43.16641 -+ *[0-9a-f]*:	e1 a0 0f f0 	cop cp0,cr15,cr15,cr0,0x0
43.16642 -+ *[0-9a-f]*:	e1 a0 07 88 	cop cp0,cr7,cr8,cr8,0x0
43.16643 -+ *[0-9a-f]*:	e1 a0 08 78 	cop cp0,cr8,cr7,cr8,0x0
43.16644 -+ *[0-9a-f]*:	e1 a0 08 87 	cop cp0,cr8,cr8,cr7,0x0
43.16645 -+
43.16646 -+[0-9a-f]* <fnmac_s>:
43.16647 -+ *[0-9a-f]*:	e1 a0 1f ff 	cop cp0,cr15,cr15,cr15,0x1
43.16648 -+ *[0-9a-f]*:	e1 a0 10 00 	cop cp0,cr0,cr0,cr0,0x1
43.16649 -+ *[0-9a-f]*:	e1 a0 10 ff 	cop cp0,cr0,cr15,cr15,0x1
43.16650 -+ *[0-9a-f]*:	e1 a0 1f 0f 	cop cp0,cr15,cr0,cr15,0x1
43.16651 -+ *[0-9a-f]*:	e1 a0 1f f0 	cop cp0,cr15,cr15,cr0,0x1
43.16652 -+ *[0-9a-f]*:	e1 a0 17 88 	cop cp0,cr7,cr8,cr8,0x1
43.16653 -+ *[0-9a-f]*:	e1 a0 18 78 	cop cp0,cr8,cr7,cr8,0x1
43.16654 -+ *[0-9a-f]*:	e1 a0 18 87 	cop cp0,cr8,cr8,cr7,0x1
43.16655 -+
43.16656 -+[0-9a-f]* <fmsc_s>:
43.16657 -+ *[0-9a-f]*:	e1 a1 0f ff 	cop cp0,cr15,cr15,cr15,0x2
43.16658 -+ *[0-9a-f]*:	e1 a1 00 00 	cop cp0,cr0,cr0,cr0,0x2
43.16659 -+ *[0-9a-f]*:	e1 a1 00 ff 	cop cp0,cr0,cr15,cr15,0x2
43.16660 -+ *[0-9a-f]*:	e1 a1 0f 0f 	cop cp0,cr15,cr0,cr15,0x2
43.16661 -+ *[0-9a-f]*:	e1 a1 0f f0 	cop cp0,cr15,cr15,cr0,0x2
43.16662 -+ *[0-9a-f]*:	e1 a1 07 88 	cop cp0,cr7,cr8,cr8,0x2
43.16663 -+ *[0-9a-f]*:	e1 a1 08 78 	cop cp0,cr8,cr7,cr8,0x2
43.16664 -+ *[0-9a-f]*:	e1 a1 08 87 	cop cp0,cr8,cr8,cr7,0x2
43.16665 -+
43.16666 -+[0-9a-f]* <fnmsc_s>:
43.16667 -+ *[0-9a-f]*:	e1 a1 1f ff 	cop cp0,cr15,cr15,cr15,0x3
43.16668 -+ *[0-9a-f]*:	e1 a1 10 00 	cop cp0,cr0,cr0,cr0,0x3
43.16669 -+ *[0-9a-f]*:	e1 a1 10 ff 	cop cp0,cr0,cr15,cr15,0x3
43.16670 -+ *[0-9a-f]*:	e1 a1 1f 0f 	cop cp0,cr15,cr0,cr15,0x3
43.16671 -+ *[0-9a-f]*:	e1 a1 1f f0 	cop cp0,cr15,cr15,cr0,0x3
43.16672 -+ *[0-9a-f]*:	e1 a1 17 88 	cop cp0,cr7,cr8,cr8,0x3
43.16673 -+ *[0-9a-f]*:	e1 a1 18 78 	cop cp0,cr8,cr7,cr8,0x3
43.16674 -+ *[0-9a-f]*:	e1 a1 18 87 	cop cp0,cr8,cr8,cr7,0x3
43.16675 -+
43.16676 -+[0-9a-f]* <fmul_s>:
43.16677 -+ *[0-9a-f]*:	e1 a3 0f ff 	cop cp0,cr15,cr15,cr15,0x6
43.16678 -+ *[0-9a-f]*:	e1 a3 00 00 	cop cp0,cr0,cr0,cr0,0x6
43.16679 -+ *[0-9a-f]*:	e1 a3 00 ff 	cop cp0,cr0,cr15,cr15,0x6
43.16680 -+ *[0-9a-f]*:	e1 a3 0f 0f 	cop cp0,cr15,cr0,cr15,0x6
43.16681 -+ *[0-9a-f]*:	e1 a3 0f f0 	cop cp0,cr15,cr15,cr0,0x6
43.16682 -+ *[0-9a-f]*:	e1 a3 07 88 	cop cp0,cr7,cr8,cr8,0x6
43.16683 -+ *[0-9a-f]*:	e1 a3 08 78 	cop cp0,cr8,cr7,cr8,0x6
43.16684 -+ *[0-9a-f]*:	e1 a3 08 87 	cop cp0,cr8,cr8,cr7,0x6
43.16685 -+
43.16686 -+[0-9a-f]* <fnmul_s>:
43.16687 -+ *[0-9a-f]*:	e1 a3 1f ff 	cop cp0,cr15,cr15,cr15,0x7
43.16688 -+ *[0-9a-f]*:	e1 a3 10 00 	cop cp0,cr0,cr0,cr0,0x7
43.16689 -+ *[0-9a-f]*:	e1 a3 10 ff 	cop cp0,cr0,cr15,cr15,0x7
43.16690 -+ *[0-9a-f]*:	e1 a3 1f 0f 	cop cp0,cr15,cr0,cr15,0x7
43.16691 -+ *[0-9a-f]*:	e1 a3 1f f0 	cop cp0,cr15,cr15,cr0,0x7
43.16692 -+ *[0-9a-f]*:	e1 a3 17 88 	cop cp0,cr7,cr8,cr8,0x7
43.16693 -+ *[0-9a-f]*:	e1 a3 18 78 	cop cp0,cr8,cr7,cr8,0x7
43.16694 -+ *[0-9a-f]*:	e1 a3 18 87 	cop cp0,cr8,cr8,cr7,0x7
43.16695 -+
43.16696 -+[0-9a-f]* <fneg_s>:
43.16697 -+ *[0-9a-f]*:	e1 a4 0f f0 	cop cp0,cr15,cr15,cr0,0x8
43.16698 -+ *[0-9a-f]*:	e1 a4 00 00 	cop cp0,cr0,cr0,cr0,0x8
43.16699 -+ *[0-9a-f]*:	e1 a4 00 f0 	cop cp0,cr0,cr15,cr0,0x8
43.16700 -+ *[0-9a-f]*:	e1 a4 0f 00 	cop cp0,cr15,cr0,cr0,0x8
43.16701 -+ *[0-9a-f]*:	e1 a4 07 80 	cop cp0,cr7,cr8,cr0,0x8
43.16702 -+ *[0-9a-f]*:	e1 a4 08 70 	cop cp0,cr8,cr7,cr0,0x8
43.16703 -+
43.16704 -+[0-9a-f]* <fabs_s>:
43.16705 -+ *[0-9a-f]*:	e1 a4 1f f0 	cop cp0,cr15,cr15,cr0,0x9
43.16706 -+ *[0-9a-f]*:	e1 a4 10 00 	cop cp0,cr0,cr0,cr0,0x9
43.16707 -+ *[0-9a-f]*:	e1 a4 10 f0 	cop cp0,cr0,cr15,cr0,0x9
43.16708 -+ *[0-9a-f]*:	e1 a4 1f 00 	cop cp0,cr15,cr0,cr0,0x9
43.16709 -+ *[0-9a-f]*:	e1 a4 17 80 	cop cp0,cr7,cr8,cr0,0x9
43.16710 -+ *[0-9a-f]*:	e1 a4 18 70 	cop cp0,cr8,cr7,cr0,0x9
43.16711 -+
43.16712 -+[0-9a-f]* <fcmp_s>:
43.16713 -+ *[0-9a-f]*:	e1 a6 10 ff 	cop cp0,cr0,cr15,cr15,0xd
43.16714 -+ *[0-9a-f]*:	e1 a6 10 00 	cop cp0,cr0,cr0,cr0,0xd
43.16715 -+ *[0-9a-f]*:	e1 a6 10 0f 	cop cp0,cr0,cr0,cr15,0xd
43.16716 -+ *[0-9a-f]*:	e1 a6 10 f0 	cop cp0,cr0,cr15,cr0,0xd
43.16717 -+ *[0-9a-f]*:	e1 a6 10 78 	cop cp0,cr0,cr7,cr8,0xd
43.16718 -+ *[0-9a-f]*:	e1 a6 10 87 	cop cp0,cr0,cr8,cr7,0xd
43.16719 -+
43.16720 -+[0-9a-f]* <fadd_d>:
43.16721 -+ *[0-9a-f]*:	e5 a2 0e ee 	cop cp0,cr14,cr14,cr14,0x44
43.16722 -+ *[0-9a-f]*:	e5 a2 00 00 	cop cp0,cr0,cr0,cr0,0x44
43.16723 -+ *[0-9a-f]*:	e5 a2 00 ee 	cop cp0,cr0,cr14,cr14,0x44
43.16724 -+ *[0-9a-f]*:	e5 a2 0e 0e 	cop cp0,cr14,cr0,cr14,0x44
43.16725 -+ *[0-9a-f]*:	e5 a2 0e e0 	cop cp0,cr14,cr14,cr0,0x44
43.16726 -+ *[0-9a-f]*:	e5 a2 06 88 	cop cp0,cr6,cr8,cr8,0x44
43.16727 -+ *[0-9a-f]*:	e5 a2 08 68 	cop cp0,cr8,cr6,cr8,0x44
43.16728 -+ *[0-9a-f]*:	e5 a2 08 86 	cop cp0,cr8,cr8,cr6,0x44
43.16729 -+
43.16730 -+[0-9a-f]* <fsub_d>:
43.16731 -+ *[0-9a-f]*:	e5 a2 1e ee 	cop cp0,cr14,cr14,cr14,0x45
43.16732 -+ *[0-9a-f]*:	e5 a2 10 00 	cop cp0,cr0,cr0,cr0,0x45
43.16733 -+ *[0-9a-f]*:	e5 a2 10 ee 	cop cp0,cr0,cr14,cr14,0x45
43.16734 -+ *[0-9a-f]*:	e5 a2 1e 0e 	cop cp0,cr14,cr0,cr14,0x45
43.16735 -+ *[0-9a-f]*:	e5 a2 1e e0 	cop cp0,cr14,cr14,cr0,0x45
43.16736 -+ *[0-9a-f]*:	e5 a2 16 88 	cop cp0,cr6,cr8,cr8,0x45
43.16737 -+ *[0-9a-f]*:	e5 a2 18 68 	cop cp0,cr8,cr6,cr8,0x45
43.16738 -+ *[0-9a-f]*:	e5 a2 18 86 	cop cp0,cr8,cr8,cr6,0x45
43.16739 -+
43.16740 -+[0-9a-f]* <fmac_d>:
43.16741 -+ *[0-9a-f]*:	e5 a0 0e ee 	cop cp0,cr14,cr14,cr14,0x40
43.16742 -+ *[0-9a-f]*:	e5 a0 00 00 	cop cp0,cr0,cr0,cr0,0x40
43.16743 -+ *[0-9a-f]*:	e5 a0 00 ee 	cop cp0,cr0,cr14,cr14,0x40
43.16744 -+ *[0-9a-f]*:	e5 a0 0e 0e 	cop cp0,cr14,cr0,cr14,0x40
43.16745 -+ *[0-9a-f]*:	e5 a0 0e e0 	cop cp0,cr14,cr14,cr0,0x40
43.16746 -+ *[0-9a-f]*:	e5 a0 06 88 	cop cp0,cr6,cr8,cr8,0x40
43.16747 -+ *[0-9a-f]*:	e5 a0 08 68 	cop cp0,cr8,cr6,cr8,0x40
43.16748 -+ *[0-9a-f]*:	e5 a0 08 86 	cop cp0,cr8,cr8,cr6,0x40
43.16749 -+
43.16750 -+[0-9a-f]* <fnmac_d>:
43.16751 -+ *[0-9a-f]*:	e5 a0 1e ee 	cop cp0,cr14,cr14,cr14,0x41
43.16752 -+ *[0-9a-f]*:	e5 a0 10 00 	cop cp0,cr0,cr0,cr0,0x41
43.16753 -+ *[0-9a-f]*:	e5 a0 10 ee 	cop cp0,cr0,cr14,cr14,0x41
43.16754 -+ *[0-9a-f]*:	e5 a0 1e 0e 	cop cp0,cr14,cr0,cr14,0x41
43.16755 -+ *[0-9a-f]*:	e5 a0 1e e0 	cop cp0,cr14,cr14,cr0,0x41
43.16756 -+ *[0-9a-f]*:	e5 a0 16 88 	cop cp0,cr6,cr8,cr8,0x41
43.16757 -+ *[0-9a-f]*:	e5 a0 18 68 	cop cp0,cr8,cr6,cr8,0x41
43.16758 -+ *[0-9a-f]*:	e5 a0 18 86 	cop cp0,cr8,cr8,cr6,0x41
43.16759 -+
43.16760 -+[0-9a-f]* <fmsc_d>:
43.16761 -+ *[0-9a-f]*:	e5 a1 0e ee 	cop cp0,cr14,cr14,cr14,0x42
43.16762 -+ *[0-9a-f]*:	e5 a1 00 00 	cop cp0,cr0,cr0,cr0,0x42
43.16763 -+ *[0-9a-f]*:	e5 a1 00 ee 	cop cp0,cr0,cr14,cr14,0x42
43.16764 -+ *[0-9a-f]*:	e5 a1 0e 0e 	cop cp0,cr14,cr0,cr14,0x42
43.16765 -+ *[0-9a-f]*:	e5 a1 0e e0 	cop cp0,cr14,cr14,cr0,0x42
43.16766 -+ *[0-9a-f]*:	e5 a1 06 88 	cop cp0,cr6,cr8,cr8,0x42
43.16767 -+ *[0-9a-f]*:	e5 a1 08 68 	cop cp0,cr8,cr6,cr8,0x42
43.16768 -+ *[0-9a-f]*:	e5 a1 08 86 	cop cp0,cr8,cr8,cr6,0x42
43.16769 -+
43.16770 -+[0-9a-f]* <fnmsc_d>:
43.16771 -+ *[0-9a-f]*:	e5 a1 1e ee 	cop cp0,cr14,cr14,cr14,0x43
43.16772 -+ *[0-9a-f]*:	e5 a1 10 00 	cop cp0,cr0,cr0,cr0,0x43
43.16773 -+ *[0-9a-f]*:	e5 a1 10 ee 	cop cp0,cr0,cr14,cr14,0x43
43.16774 -+ *[0-9a-f]*:	e5 a1 1e 0e 	cop cp0,cr14,cr0,cr14,0x43
43.16775 -+ *[0-9a-f]*:	e5 a1 1e e0 	cop cp0,cr14,cr14,cr0,0x43
43.16776 -+ *[0-9a-f]*:	e5 a1 16 88 	cop cp0,cr6,cr8,cr8,0x43
43.16777 -+ *[0-9a-f]*:	e5 a1 18 68 	cop cp0,cr8,cr6,cr8,0x43
43.16778 -+ *[0-9a-f]*:	e5 a1 18 86 	cop cp0,cr8,cr8,cr6,0x43
43.16779 -+
43.16780 -+[0-9a-f]* <fmul_d>:
43.16781 -+ *[0-9a-f]*:	e5 a3 0e ee 	cop cp0,cr14,cr14,cr14,0x46
43.16782 -+ *[0-9a-f]*:	e5 a3 00 00 	cop cp0,cr0,cr0,cr0,0x46
43.16783 -+ *[0-9a-f]*:	e5 a3 00 ee 	cop cp0,cr0,cr14,cr14,0x46
43.16784 -+ *[0-9a-f]*:	e5 a3 0e 0e 	cop cp0,cr14,cr0,cr14,0x46
43.16785 -+ *[0-9a-f]*:	e5 a3 0e e0 	cop cp0,cr14,cr14,cr0,0x46
43.16786 -+ *[0-9a-f]*:	e5 a3 06 88 	cop cp0,cr6,cr8,cr8,0x46
43.16787 -+ *[0-9a-f]*:	e5 a3 08 68 	cop cp0,cr8,cr6,cr8,0x46
43.16788 -+ *[0-9a-f]*:	e5 a3 08 86 	cop cp0,cr8,cr8,cr6,0x46
43.16789 -+
43.16790 -+[0-9a-f]* <fnmul_d>:
43.16791 -+ *[0-9a-f]*:	e5 a3 1e ee 	cop cp0,cr14,cr14,cr14,0x47
43.16792 -+ *[0-9a-f]*:	e5 a3 10 00 	cop cp0,cr0,cr0,cr0,0x47
43.16793 -+ *[0-9a-f]*:	e5 a3 10 ee 	cop cp0,cr0,cr14,cr14,0x47
43.16794 -+ *[0-9a-f]*:	e5 a3 1e 0e 	cop cp0,cr14,cr0,cr14,0x47
43.16795 -+ *[0-9a-f]*:	e5 a3 1e e0 	cop cp0,cr14,cr14,cr0,0x47
43.16796 -+ *[0-9a-f]*:	e5 a3 16 88 	cop cp0,cr6,cr8,cr8,0x47
43.16797 -+ *[0-9a-f]*:	e5 a3 18 68 	cop cp0,cr8,cr6,cr8,0x47
43.16798 -+ *[0-9a-f]*:	e5 a3 18 86 	cop cp0,cr8,cr8,cr6,0x47
43.16799 -+
43.16800 -+[0-9a-f]* <fneg_d>:
43.16801 -+ *[0-9a-f]*:	e5 a4 0e e0 	cop cp0,cr14,cr14,cr0,0x48
43.16802 -+ *[0-9a-f]*:	e5 a4 00 00 	cop cp0,cr0,cr0,cr0,0x48
43.16803 -+ *[0-9a-f]*:	e5 a4 00 e0 	cop cp0,cr0,cr14,cr0,0x48
43.16804 -+ *[0-9a-f]*:	e5 a4 0e 00 	cop cp0,cr14,cr0,cr0,0x48
43.16805 -+ *[0-9a-f]*:	e5 a4 06 80 	cop cp0,cr6,cr8,cr0,0x48
43.16806 -+ *[0-9a-f]*:	e5 a4 08 60 	cop cp0,cr8,cr6,cr0,0x48
43.16807 -+
43.16808 -+[0-9a-f]* <fabs_d>:
43.16809 -+ *[0-9a-f]*:	e5 a4 1e e0 	cop cp0,cr14,cr14,cr0,0x49
43.16810 -+ *[0-9a-f]*:	e5 a4 10 00 	cop cp0,cr0,cr0,cr0,0x49
43.16811 -+ *[0-9a-f]*:	e5 a4 10 e0 	cop cp0,cr0,cr14,cr0,0x49
43.16812 -+ *[0-9a-f]*:	e5 a4 1e 00 	cop cp0,cr14,cr0,cr0,0x49
43.16813 -+ *[0-9a-f]*:	e5 a4 16 80 	cop cp0,cr6,cr8,cr0,0x49
43.16814 -+ *[0-9a-f]*:	e5 a4 18 60 	cop cp0,cr8,cr6,cr0,0x49
43.16815 -+
43.16816 -+[0-9a-f]* <fcmp_d>:
43.16817 -+ *[0-9a-f]*:	e5 a6 10 ee 	cop cp0,cr0,cr14,cr14,0x4d
43.16818 -+ *[0-9a-f]*:	e5 a6 10 00 	cop cp0,cr0,cr0,cr0,0x4d
43.16819 -+ *[0-9a-f]*:	e5 a6 10 0e 	cop cp0,cr0,cr0,cr14,0x4d
43.16820 -+ *[0-9a-f]*:	e5 a6 10 e0 	cop cp0,cr0,cr14,cr0,0x4d
43.16821 -+ *[0-9a-f]*:	e5 a6 10 68 	cop cp0,cr0,cr6,cr8,0x4d
43.16822 -+ *[0-9a-f]*:	e5 a6 10 86 	cop cp0,cr0,cr8,cr6,0x4d
43.16823 -+
43.16824 -+[0-9a-f]* <fmov_s>:
43.16825 -+ *[0-9a-f]*:	e1 a5 0f f0 	cop cp0,cr15,cr15,cr0,0xa
43.16826 -+ *[0-9a-f]*:	e1 a5 00 00 	cop cp0,cr0,cr0,cr0,0xa
43.16827 -+ *[0-9a-f]*:	e1 a5 0f 00 	cop cp0,cr15,cr0,cr0,0xa
43.16828 -+ *[0-9a-f]*:	e1 a5 00 f0 	cop cp0,cr0,cr15,cr0,0xa
43.16829 -+ *[0-9a-f]*:	e1 a5 08 70 	cop cp0,cr8,cr7,cr0,0xa
43.16830 -+ *[0-9a-f]*:	e1 a5 07 80 	cop cp0,cr7,cr8,cr0,0xa
43.16831 -+ *[0-9a-f]*:	ef af 0f 00 	mvcr.w cp0,pc,cr15
43.16832 -+ *[0-9a-f]*:	ef a0 00 00 	mvcr.w cp0,r0,cr0
43.16833 -+ *[0-9a-f]*:	ef af 00 00 	mvcr.w cp0,pc,cr0
43.16834 -+ *[0-9a-f]*:	ef a0 0f 00 	mvcr.w cp0,r0,cr15
43.16835 -+ *[0-9a-f]*:	ef a8 07 00 	mvcr.w cp0,r8,cr7
43.16836 -+ *[0-9a-f]*:	ef a7 08 00 	mvcr.w cp0,r7,cr8
43.16837 -+ *[0-9a-f]*:	ef af 0f 20 	mvrc.w cp0,cr15,pc
43.16838 -+ *[0-9a-f]*:	ef a0 00 20 	mvrc.w cp0,cr0,r0
43.16839 -+ *[0-9a-f]*:	ef a0 0f 20 	mvrc.w cp0,cr15,r0
43.16840 -+ *[0-9a-f]*:	ef af 00 20 	mvrc.w cp0,cr0,pc
43.16841 -+ *[0-9a-f]*:	ef a7 08 20 	mvrc.w cp0,cr8,r7
43.16842 -+ *[0-9a-f]*:	ef a8 07 20 	mvrc.w cp0,cr7,r8
43.16843 -+
43.16844 -+[0-9a-f]* <fmov_d>:
43.16845 -+ *[0-9a-f]*:	e5 a5 0e e0 	cop cp0,cr14,cr14,cr0,0x4a
43.16846 -+ *[0-9a-f]*:	e5 a5 00 00 	cop cp0,cr0,cr0,cr0,0x4a
43.16847 -+ *[0-9a-f]*:	e5 a5 0e 00 	cop cp0,cr14,cr0,cr0,0x4a
43.16848 -+ *[0-9a-f]*:	e5 a5 00 e0 	cop cp0,cr0,cr14,cr0,0x4a
43.16849 -+ *[0-9a-f]*:	e5 a5 08 60 	cop cp0,cr8,cr6,cr0,0x4a
43.16850 -+ *[0-9a-f]*:	e5 a5 06 80 	cop cp0,cr6,cr8,cr0,0x4a
43.16851 -+ *[0-9a-f]*:	ef ae 0e 10 	mvcr.d cp0,lr,cr14
43.16852 -+ *[0-9a-f]*:	ef a0 00 10 	mvcr.d cp0,r0,cr0
43.16853 -+ *[0-9a-f]*:	ef ae 00 10 	mvcr.d cp0,lr,cr0
43.16854 -+ *[0-9a-f]*:	ef a0 0e 10 	mvcr.d cp0,r0,cr14
43.16855 -+ *[0-9a-f]*:	ef a8 06 10 	mvcr.d cp0,r8,cr6
43.16856 -+ *[0-9a-f]*:	ef a6 08 10 	mvcr.d cp0,r6,cr8
43.16857 -+ *[0-9a-f]*:	ef ae 0e 30 	mvrc.d cp0,cr14,lr
43.16858 -+ *[0-9a-f]*:	ef a0 00 30 	mvrc.d cp0,cr0,r0
43.16859 -+ *[0-9a-f]*:	ef a0 0e 30 	mvrc.d cp0,cr14,r0
43.16860 -+ *[0-9a-f]*:	ef ae 00 30 	mvrc.d cp0,cr0,lr
43.16861 -+ *[0-9a-f]*:	ef a6 08 30 	mvrc.d cp0,cr8,r6
43.16862 -+ *[0-9a-f]*:	ef a8 06 30 	mvrc.d cp0,cr6,r8
43.16863 -+
43.16864 -+[0-9a-f]* <fcasts_d>:
43.16865 -+ *[0-9a-f]*:	e1 a7 1f e0 	cop cp0,cr15,cr14,cr0,0xf
43.16866 -+ *[0-9a-f]*:	e1 a7 10 00 	cop cp0,cr0,cr0,cr0,0xf
43.16867 -+ *[0-9a-f]*:	e1 a7 1f 00 	cop cp0,cr15,cr0,cr0,0xf
43.16868 -+ *[0-9a-f]*:	e1 a7 10 e0 	cop cp0,cr0,cr14,cr0,0xf
43.16869 -+ *[0-9a-f]*:	e1 a7 18 60 	cop cp0,cr8,cr6,cr0,0xf
43.16870 -+ *[0-9a-f]*:	e1 a7 17 80 	cop cp0,cr7,cr8,cr0,0xf
43.16871 -+
43.16872 -+[0-9a-f]* <fcastd_s>:
43.16873 -+ *[0-9a-f]*:	e1 a8 0e f0 	cop cp0,cr14,cr15,cr0,0x10
43.16874 -+ *[0-9a-f]*:	e1 a8 00 00 	cop cp0,cr0,cr0,cr0,0x10
43.16875 -+ *[0-9a-f]*:	e1 a8 0e 00 	cop cp0,cr14,cr0,cr0,0x10
43.16876 -+ *[0-9a-f]*:	e1 a8 00 f0 	cop cp0,cr0,cr15,cr0,0x10
43.16877 -+ *[0-9a-f]*:	e1 a8 08 70 	cop cp0,cr8,cr7,cr0,0x10
43.16878 -+ *[0-9a-f]*:	e1 a8 06 80 	cop cp0,cr6,cr8,cr0,0x10
43.16879 ---- /dev/null
43.16880 -+++ b/gas/testsuite/gas/avr32/fpinsn.s
43.16881 -@@ -0,0 +1,266 @@
43.16882 -+
43.16883 -+	.text
43.16884 -+	.global	fadd_s
43.16885 -+fadd_s:
43.16886 -+	fadd.s fr15, fr15, fr15
43.16887 -+	fadd.s fr0, fr0, fr0
43.16888 -+	fadd.s fr0, fr15, fr15
43.16889 -+	fadd.s fr15, fr0, fr15
43.16890 -+	fadd.s fr15, fr15, fr0
43.16891 -+	fadd.s fr7, fr8, fr8
43.16892 -+	fadd.s fr8, fr7, fr8
43.16893 -+	fadd.s fr8, fr8, fr7
43.16894 -+	.global	fsub_s
43.16895 -+fsub_s:
43.16896 -+	fsub.s fr15, fr15, fr15
43.16897 -+	fsub.s fr0, fr0, fr0
43.16898 -+	fsub.s fr0, fr15, fr15
43.16899 -+	fsub.s fr15, fr0, fr15
43.16900 -+	fsub.s fr15, fr15, fr0
43.16901 -+	fsub.s fr7, fr8, fr8
43.16902 -+	fsub.s fr8, fr7, fr8
43.16903 -+	fsub.s fr8, fr8, fr7
43.16904 -+	.global	fmac_s
43.16905 -+fmac_s:
43.16906 -+	fmac.s fr15, fr15, fr15
43.16907 -+	fmac.s fr0, fr0, fr0
43.16908 -+	fmac.s fr0, fr15, fr15
43.16909 -+	fmac.s fr15, fr0, fr15
43.16910 -+	fmac.s fr15, fr15, fr0
43.16911 -+	fmac.s fr7, fr8, fr8
43.16912 -+	fmac.s fr8, fr7, fr8
43.16913 -+	fmac.s fr8, fr8, fr7
43.16914 -+	.global	fnmac_s
43.16915 -+fnmac_s:
43.16916 -+	fnmac.s fr15, fr15, fr15
43.16917 -+	fnmac.s fr0, fr0, fr0
43.16918 -+	fnmac.s fr0, fr15, fr15
43.16919 -+	fnmac.s fr15, fr0, fr15
43.16920 -+	fnmac.s fr15, fr15, fr0
43.16921 -+	fnmac.s fr7, fr8, fr8
43.16922 -+	fnmac.s fr8, fr7, fr8
43.16923 -+	fnmac.s fr8, fr8, fr7
43.16924 -+	.global	fmsc_s
43.16925 -+fmsc_s:
43.16926 -+	fmsc.s fr15, fr15, fr15
43.16927 -+	fmsc.s fr0, fr0, fr0
43.16928 -+	fmsc.s fr0, fr15, fr15
43.16929 -+	fmsc.s fr15, fr0, fr15
43.16930 -+	fmsc.s fr15, fr15, fr0
43.16931 -+	fmsc.s fr7, fr8, fr8
43.16932 -+	fmsc.s fr8, fr7, fr8
43.16933 -+	fmsc.s fr8, fr8, fr7
43.16934 -+	.global	fnmsc_s
43.16935 -+fnmsc_s:
43.16936 -+	fnmsc.s fr15, fr15, fr15
43.16937 -+	fnmsc.s fr0, fr0, fr0
43.16938 -+	fnmsc.s fr0, fr15, fr15
43.16939 -+	fnmsc.s fr15, fr0, fr15
43.16940 -+	fnmsc.s fr15, fr15, fr0
43.16941 -+	fnmsc.s fr7, fr8, fr8
43.16942 -+	fnmsc.s fr8, fr7, fr8
43.16943 -+	fnmsc.s fr8, fr8, fr7
43.16944 -+	.global	fmul_s
43.16945 -+fmul_s:
43.16946 -+	fmul.s fr15, fr15, fr15
43.16947 -+	fmul.s fr0, fr0, fr0
43.16948 -+	fmul.s fr0, fr15, fr15
43.16949 -+	fmul.s fr15, fr0, fr15
43.16950 -+	fmul.s fr15, fr15, fr0
43.16951 -+	fmul.s fr7, fr8, fr8
43.16952 -+	fmul.s fr8, fr7, fr8
43.16953 -+	fmul.s fr8, fr8, fr7
43.16954 -+	.global	fnmul_s
43.16955 -+fnmul_s:
43.16956 -+	fnmul.s fr15, fr15, fr15
43.16957 -+	fnmul.s fr0, fr0, fr0
43.16958 -+	fnmul.s fr0, fr15, fr15
43.16959 -+	fnmul.s fr15, fr0, fr15
43.16960 -+	fnmul.s fr15, fr15, fr0
43.16961 -+	fnmul.s fr7, fr8, fr8
43.16962 -+	fnmul.s fr8, fr7, fr8
43.16963 -+	fnmul.s fr8, fr8, fr7
43.16964 -+	.global	fneg_s
43.16965 -+fneg_s:
43.16966 -+	fneg.s fr15, fr15
43.16967 -+	fneg.s fr0, fr0
43.16968 -+	fneg.s fr0, fr15
43.16969 -+	fneg.s fr15, fr0
43.16970 -+	fneg.s fr7, fr8
43.16971 -+	fneg.s fr8, fr7
43.16972 -+	.global	fabs_s
43.16973 -+fabs_s:
43.16974 -+	fabs.s fr15, fr15
43.16975 -+	fabs.s fr0, fr0
43.16976 -+	fabs.s fr0, fr15
43.16977 -+	fabs.s fr15, fr0
43.16978 -+	fabs.s fr7, fr8
43.16979 -+	fabs.s fr8, fr7
43.16980 -+	.global	fcmp_s
43.16981 -+fcmp_s:
43.16982 -+	fcmp.s fr15, fr15
43.16983 -+	fcmp.s fr0, fr0
43.16984 -+	fcmp.s fr0, fr15
43.16985 -+	fcmp.s fr15, fr0
43.16986 -+	fcmp.s fr7, fr8
43.16987 -+	fcmp.s fr8, fr7
43.16988 -+	.global	fadd_d
43.16989 -+fadd_d:
43.16990 -+	fadd.d fr14, fr14, fr14
43.16991 -+	fadd.d fr0, fr0, fr0
43.16992 -+	fadd.d fr0, fr14, fr14
43.16993 -+	fadd.d fr14, fr0, fr14
43.16994 -+	fadd.d fr14, fr14, fr0
43.16995 -+	fadd.d fr6, fr8, fr8
43.16996 -+	fadd.d fr8, fr6, fr8
43.16997 -+	fadd.d fr8, fr8, fr6
43.16998 -+	.global	fsub_d
43.16999 -+fsub_d:
43.17000 -+	fsub.d fr14, fr14, fr14
43.17001 -+	fsub.d fr0, fr0, fr0
43.17002 -+	fsub.d fr0, fr14, fr14
43.17003 -+	fsub.d fr14, fr0, fr14
43.17004 -+	fsub.d fr14, fr14, fr0
43.17005 -+	fsub.d fr6, fr8, fr8
43.17006 -+	fsub.d fr8, fr6, fr8
43.17007 -+	fsub.d fr8, fr8, fr6
43.17008 -+	.global	fmac_d
43.17009 -+fmac_d:
43.17010 -+	fmac.d fr14, fr14, fr14
43.17011 -+	fmac.d fr0, fr0, fr0
43.17012 -+	fmac.d fr0, fr14, fr14
43.17013 -+	fmac.d fr14, fr0, fr14
43.17014 -+	fmac.d fr14, fr14, fr0
43.17015 -+	fmac.d fr6, fr8, fr8
43.17016 -+	fmac.d fr8, fr6, fr8
43.17017 -+	fmac.d fr8, fr8, fr6
43.17018 -+	.global	fnmac_d
43.17019 -+fnmac_d:
43.17020 -+	fnmac.d fr14, fr14, fr14
43.17021 -+	fnmac.d fr0, fr0, fr0
43.17022 -+	fnmac.d fr0, fr14, fr14
43.17023 -+	fnmac.d fr14, fr0, fr14
43.17024 -+	fnmac.d fr14, fr14, fr0
43.17025 -+	fnmac.d fr6, fr8, fr8
43.17026 -+	fnmac.d fr8, fr6, fr8
43.17027 -+	fnmac.d fr8, fr8, fr6
43.17028 -+	.global	fmsc_d
43.17029 -+fmsc_d:
43.17030 -+	fmsc.d fr14, fr14, fr14
43.17031 -+	fmsc.d fr0, fr0, fr0
43.17032 -+	fmsc.d fr0, fr14, fr14
43.17033 -+	fmsc.d fr14, fr0, fr14
43.17034 -+	fmsc.d fr14, fr14, fr0
43.17035 -+	fmsc.d fr6, fr8, fr8
43.17036 -+	fmsc.d fr8, fr6, fr8
43.17037 -+	fmsc.d fr8, fr8, fr6
43.17038 -+	.global	fnmsc_d
43.17039 -+fnmsc_d:
43.17040 -+	fnmsc.d fr14, fr14, fr14
43.17041 -+	fnmsc.d fr0, fr0, fr0
43.17042 -+	fnmsc.d fr0, fr14, fr14
43.17043 -+	fnmsc.d fr14, fr0, fr14
43.17044 -+	fnmsc.d fr14, fr14, fr0
43.17045 -+	fnmsc.d fr6, fr8, fr8
43.17046 -+	fnmsc.d fr8, fr6, fr8
43.17047 -+	fnmsc.d fr8, fr8, fr6
43.17048 -+	.global	fmul_d
43.17049 -+fmul_d:
43.17050 -+	fmul.d fr14, fr14, fr14
43.17051 -+	fmul.d fr0, fr0, fr0
43.17052 -+	fmul.d fr0, fr14, fr14
43.17053 -+	fmul.d fr14, fr0, fr14
43.17054 -+	fmul.d fr14, fr14, fr0
43.17055 -+	fmul.d fr6, fr8, fr8
43.17056 -+	fmul.d fr8, fr6, fr8
43.17057 -+	fmul.d fr8, fr8, fr6
43.17058 -+	.global	fnmul_d
43.17059 -+fnmul_d:
43.17060 -+	fnmul.d fr14, fr14, fr14
43.17061 -+	fnmul.d fr0, fr0, fr0
43.17062 -+	fnmul.d fr0, fr14, fr14
43.17063 -+	fnmul.d fr14, fr0, fr14
43.17064 -+	fnmul.d fr14, fr14, fr0
43.17065 -+	fnmul.d fr6, fr8, fr8
43.17066 -+	fnmul.d fr8, fr6, fr8
43.17067 -+	fnmul.d fr8, fr8, fr6
43.17068 -+	.global	fneg_d
43.17069 -+fneg_d:
43.17070 -+	fneg.d fr14, fr14
43.17071 -+	fneg.d fr0, fr0
43.17072 -+	fneg.d fr0, fr14
43.17073 -+	fneg.d fr14, fr0
43.17074 -+	fneg.d fr6, fr8
43.17075 -+	fneg.d fr8, fr6
43.17076 -+	.global	fabs_d
43.17077 -+fabs_d:
43.17078 -+	fabs.d fr14, fr14
43.17079 -+	fabs.d fr0, fr0
43.17080 -+	fabs.d fr0, fr14
43.17081 -+	fabs.d fr14, fr0
43.17082 -+	fabs.d fr6, fr8
43.17083 -+	fabs.d fr8, fr6
43.17084 -+	.global	fcmp_d
43.17085 -+fcmp_d:
43.17086 -+	fcmp.d fr14, fr14
43.17087 -+	fcmp.d fr0, fr0
43.17088 -+	fcmp.d fr0, fr14
43.17089 -+	fcmp.d fr14, fr0
43.17090 -+	fcmp.d fr6, fr8
43.17091 -+	fcmp.d fr8, fr6
43.17092 -+	.global fmov_s
43.17093 -+fmov_s:
43.17094 -+	fmov.s fr15, fr15
43.17095 -+	fmov.s fr0, fr0
43.17096 -+	fmov.s fr15, fr0
43.17097 -+	fmov.s fr0, fr15
43.17098 -+	fmov.s fr8, fr7
43.17099 -+	fmov.s fr7, fr8
43.17100 -+	fmov.s pc, fr15
43.17101 -+	fmov.s r0, fr0
43.17102 -+	fmov.s pc, fr0
43.17103 -+	fmov.s r0, fr15
43.17104 -+	fmov.s r8, fr7
43.17105 -+	fmov.s r7, fr8
43.17106 -+	fmov.s fr15, pc
43.17107 -+	fmov.s fr0, r0
43.17108 -+	fmov.s fr15, r0
43.17109 -+	fmov.s fr0, pc
43.17110 -+	fmov.s fr8, r7
43.17111 -+	fmov.s fr7, r8
43.17112 -+	.global fmov_d
43.17113 -+fmov_d:
43.17114 -+	fmov.d fr14, fr14
43.17115 -+	fmov.d fr0, fr0
43.17116 -+	fmov.d fr14, fr0
43.17117 -+	fmov.d fr0, fr14
43.17118 -+	fmov.d fr8, fr6
43.17119 -+	fmov.d fr6, fr8
43.17120 -+	fmov.d lr, fr14
43.17121 -+	fmov.d r0, fr0
43.17122 -+	fmov.d lr, fr0
43.17123 -+	fmov.d r0, fr14
43.17124 -+	fmov.d r8, fr6
43.17125 -+	fmov.d r6, fr8
43.17126 -+	fmov.d fr14, lr
43.17127 -+	fmov.d fr0, r0
43.17128 -+	fmov.d fr14, r0
43.17129 -+	fmov.d fr0, lr
43.17130 -+	fmov.d fr8, r6
43.17131 -+	fmov.d fr6, r8
43.17132 -+	.global fcasts_d
43.17133 -+fcasts_d:
43.17134 -+	fcasts.d fr15, fr14
43.17135 -+	fcasts.d fr0, fr0
43.17136 -+	fcasts.d fr15, fr0
43.17137 -+	fcasts.d fr0, fr14
43.17138 -+	fcasts.d fr8, fr6
43.17139 -+	fcasts.d fr7, fr8
43.17140 -+	.global fcastd_s
43.17141 -+fcastd_s:
43.17142 -+	fcastd.s fr14, fr15
43.17143 -+	fcastd.s fr0, fr0
43.17144 -+	fcastd.s fr14, fr0
43.17145 -+	fcastd.s fr0, fr15
43.17146 -+	fcastd.s fr8, fr7
43.17147 -+	fcastd.s fr6, fr8
43.17148 ---- /dev/null
43.17149 -+++ b/gas/testsuite/gas/avr32/hwrd-lwrd.d
43.17150 -@@ -0,0 +1,47 @@
43.17151 -+#as:
43.17152 -+#objdump: -dr
43.17153 -+#name: hwrd-lwrd
43.17154 -+
43.17155 -+.*: +file format .*
43.17156 -+
43.17157 -+Disassembly of section \.text:
43.17158 -+
43.17159 -+00000000 <test_hwrd>:
43.17160 -+   0:	e0 60 87 65 	mov r0,34661
43.17161 -+   4:	e0 60 12 34 	mov r0,4660
43.17162 -+   8:	e0 60 00 00 	mov r0,0
43.17163 -+			8: R_AVR32_HI16	\.text\+0x60
43.17164 -+   c:	e0 60 00 00 	mov r0,0
43.17165 -+			c: R_AVR32_HI16	extsym1
43.17166 -+  10:	ea 10 87 65 	orh r0,0x8765
43.17167 -+  14:	ea 10 12 34 	orh r0,0x1234
43.17168 -+  18:	ea 10 00 00 	orh r0,0x0
43.17169 -+			18: R_AVR32_HI16	\.text\+0x60
43.17170 -+  1c:	ea 10 00 00 	orh r0,0x0
43.17171 -+			1c: R_AVR32_HI16	extsym1
43.17172 -+  20:	e4 10 87 65 	andh r0,0x8765
43.17173 -+  24:	e4 10 12 34 	andh r0,0x1234
43.17174 -+  28:	e4 10 00 00 	andh r0,0x0
43.17175 -+			28: R_AVR32_HI16	\.text\+0x60
43.17176 -+  2c:	e4 10 00 00 	andh r0,0x0
43.17177 -+			2c: R_AVR32_HI16	extsym1
43.17178 -+
43.17179 -+00000030 <test_lwrd>:
43.17180 -+  30:	e0 60 43 21 	mov r0,17185
43.17181 -+  34:	e0 60 56 78 	mov r0,22136
43.17182 -+  38:	e0 60 00 00 	mov r0,0
43.17183 -+			38: R_AVR32_LO16	\.text\+0x60
43.17184 -+  3c:	e0 60 00 00 	mov r0,0
43.17185 -+			3c: R_AVR32_LO16	extsym1
43.17186 -+  40:	e8 10 43 21 	orl r0,0x4321
43.17187 -+  44:	e8 10 56 78 	orl r0,0x5678
43.17188 -+  48:	e8 10 00 00 	orl r0,0x0
43.17189 -+			48: R_AVR32_LO16	\.text\+0x60
43.17190 -+  4c:	e8 10 00 00 	orl r0,0x0
43.17191 -+			4c: R_AVR32_LO16	extsym1
43.17192 -+  50:	e0 10 43 21 	andl r0,0x4321
43.17193 -+  54:	e0 10 56 78 	andl r0,0x5678
43.17194 -+  58:	e0 10 00 00 	andl r0,0x0
43.17195 -+			58: R_AVR32_LO16	\.text\+0x60
43.17196 -+  5c:	e0 10 00 00 	andl r0,0x0
43.17197 -+			5c: R_AVR32_LO16	extsym1
43.17198 ---- /dev/null
43.17199 -+++ b/gas/testsuite/gas/avr32/hwrd-lwrd.s
43.17200 -@@ -0,0 +1,39 @@
43.17201 -+
43.17202 -+        .equ    sym1, 0x12345678
43.17203 -+
43.17204 -+        .text
43.17205 -+        .global test_hwrd
43.17206 -+test_hwrd:
43.17207 -+        mov     r0, hi(0x87654321)
43.17208 -+        mov     r0, hi(sym1)
43.17209 -+        mov     r0, hi(sym2)
43.17210 -+        mov     r0, hi(extsym1)
43.17211 -+
43.17212 -+        orh	r0, hi(0x87654321)
43.17213 -+        orh	r0, hi(sym1)
43.17214 -+        orh	r0, hi(sym2)
43.17215 -+        orh	r0, hi(extsym1)
43.17216 -+
43.17217 -+        andh	r0, hi(0x87654321)
43.17218 -+        andh	r0, hi(sym1)
43.17219 -+        andh	r0, hi(sym2)
43.17220 -+        andh	r0, hi(extsym1)
43.17221 -+
43.17222 -+        .global test_lwrd
43.17223 -+test_lwrd:
43.17224 -+        mov     r0, lo(0x87654321)
43.17225 -+        mov     r0, lo(sym1)
43.17226 -+        mov     r0, lo(sym2)
43.17227 -+        mov     r0, lo(extsym1)
43.17228 -+
43.17229 -+        orl	r0, lo(0x87654321)
43.17230 -+        orl	r0, lo(sym1)
43.17231 -+        orl	r0, lo(sym2)
43.17232 -+        orl	r0, lo(extsym1)
43.17233 -+
43.17234 -+        andl	r0, lo(0x87654321)
43.17235 -+        andl	r0, lo(sym1)
43.17236 -+        andl	r0, lo(sym2)
43.17237 -+        andl	r0, lo(extsym1)
43.17238 -+
43.17239 -+sym2:
43.17240 ---- /dev/null
43.17241 -+++ b/gas/testsuite/gas/avr32/jmptable.d
43.17242 -@@ -0,0 +1,20 @@
43.17243 -+#source: jmptable.s
43.17244 -+#as:
43.17245 -+#objdump: -dr
43.17246 -+#name: jmptable
43.17247 -+
43.17248 -+.*: +file format .*
43.17249 -+
43.17250 -+Disassembly of section \.text:
43.17251 -+
43.17252 -+00000000 <jmptable_test>:
43.17253 -+   0:	fe c8 ff f4 	sub r8,pc,-12
43.17254 -+   4:	f0 00 00 2f 	add pc,r8,r0<<0x2
43.17255 -+   8:	d7 03       	nop
43.17256 -+   a:	00 00       	add r0,r0
43.17257 -+   c:	c0 38       	rjmp 12 <jmptable_test\+0x12>
43.17258 -+   e:	c0 38       	rjmp 14 <jmptable_test\+0x14>
43.17259 -+  10:	c0 38       	rjmp 16 <jmptable_test\+0x16>
43.17260 -+  12:	d7 03       	nop
43.17261 -+  14:	d7 03       	nop
43.17262 -+  16:	d7 03       	nop
43.17263 ---- /dev/null
43.17264 -+++ b/gas/testsuite/gas/avr32/jmptable_linkrelax.d
43.17265 -@@ -0,0 +1,25 @@
43.17266 -+#source: jmptable.s
43.17267 -+#as: --linkrelax
43.17268 -+#objdump: -dr
43.17269 -+#name: jmptable_linkrelax
43.17270 -+
43.17271 -+.*: +file format .*
43.17272 -+
43.17273 -+Disassembly of section \.text:
43.17274 -+
43.17275 -+00000000 <jmptable_test>:
43.17276 -+   0:	fe c8 00 00 	sub r8,pc,0
43.17277 -+			0: R_AVR32_16N_PCREL	\.text\+0xc
43.17278 -+   4:	f0 00 00 2f 	add pc,r8,r0<<0x2
43.17279 -+   8:	d7 03       	nop
43.17280 -+   a:	00 00       	add r0,r0
43.17281 -+			a: R_AVR32_ALIGN	\*ABS\*\+0x2
43.17282 -+   c:	c0 08       	rjmp c <jmptable_test\+0xc>
43.17283 -+			c: R_AVR32_11H_PCREL	\.text\+0x12
43.17284 -+   e:	c0 08       	rjmp e <jmptable_test\+0xe>
43.17285 -+			e: R_AVR32_11H_PCREL	\.text\+0x14
43.17286 -+  10:	c0 08       	rjmp 10 <jmptable_test\+0x10>
43.17287 -+			10: R_AVR32_11H_PCREL	\.text\+0x16
43.17288 -+  12:	d7 03       	nop
43.17289 -+  14:	d7 03       	nop
43.17290 -+  16:	d7 03       	nop
43.17291 ---- /dev/null
43.17292 -+++ b/gas/testsuite/gas/avr32/jmptable.s
43.17293 -@@ -0,0 +1,14 @@
43.17294 -+
43.17295 -+	.text
43.17296 -+	.global	jmptable_test
43.17297 -+jmptable_test:
43.17298 -+	sub	r8, pc, -(.L1 - .)
43.17299 -+	add	pc, r8, r0 << 2
43.17300 -+	nop
43.17301 -+	.align	2
43.17302 -+.L1:	rjmp	1f
43.17303 -+	rjmp	2f
43.17304 -+	rjmp	3f
43.17305 -+1:	nop
43.17306 -+2:	nop
43.17307 -+3:	nop
43.17308 ---- /dev/null
43.17309 -+++ b/gas/testsuite/gas/avr32/lda_nopic.d
43.17310 -@@ -0,0 +1,32 @@
43.17311 -+#source: lda.s
43.17312 -+#as:
43.17313 -+#objdump: -dr
43.17314 -+#name: lda_nopic
43.17315 -+
43.17316 -+.*: +file format .*
43.17317 -+
43.17318 -+Disassembly of section \.text:
43.17319 -+
43.17320 -+00000000 <lda_test>:
43.17321 -+       0:	f2 c8 00 00 	sub r8,r9,0
43.17322 -+
43.17323 -+00000004 <far_negative>:
43.17324 -+       4:	f6 ca 00 00 	sub r10,r11,0
43.17325 -+	...
43.17326 -+    8000:	fe c0 7f fc 	sub r0,pc,32764
43.17327 -+    8004:	48 31       	lddpc r1,8010 <far_negative\+0x800c>
43.17328 -+    8006:	48 42       	lddpc r2,8014 <far_negative\+0x8010>
43.17329 -+    8008:	48 43       	lddpc r3,8018 <far_negative\+0x8014>
43.17330 -+    800a:	48 54       	lddpc r4,801c <far_negative\+0x8018>
43.17331 -+    800c:	fe c5 80 04 	sub r5,pc,-32764
43.17332 -+	...
43.17333 -+			8010: R_AVR32_32_CPENT	\.text
43.17334 -+			8014: R_AVR32_32_CPENT	\.data
43.17335 -+			8018: R_AVR32_32_CPENT	undefined
43.17336 -+			801c: R_AVR32_32_CPENT	\.text\+0x1001c
43.17337 -+
43.17338 -+00010008 <far_positive>:
43.17339 -+   10008:	fa cc 00 00 	sub r12,sp,0
43.17340 -+	...
43.17341 -+0001001c <toofar_positive>:
43.17342 -+   1001c:	fe ce 00 00 	sub lr,pc,0
43.17343 ---- /dev/null
43.17344 -+++ b/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d
43.17345 -@@ -0,0 +1,41 @@
43.17346 -+#source: lda.s
43.17347 -+#as: --linkrelax
43.17348 -+#objdump: -dr
43.17349 -+#name: lda_nopic_linkrelax
43.17350 -+
43.17351 -+.*: +file format .*
43.17352 -+
43.17353 -+Disassembly of section \.text:
43.17354 -+
43.17355 -+00000000 <lda_test>:
43.17356 -+       0:	f2 c8 00 00 	sub r8,r9,0
43.17357 -+
43.17358 -+00000004 <far_negative>:
43.17359 -+       4:	f6 ca 00 00 	sub r10,r11,0
43.17360 -+	\.\.\.
43.17361 -+    8000:	48 00       	lddpc r0,8000 <far_negative\+0x7ffc>
43.17362 -+			8000: R_AVR32_9W_CP	\.text\+0x800c
43.17363 -+    8002:	48 01       	lddpc r1,8000 <far_negative\+0x7ffc>
43.17364 -+			8002: R_AVR32_9W_CP	\.text\+0x8010
43.17365 -+    8004:	48 02       	lddpc r2,8004 <far_negative\+0x8000>
43.17366 -+			8004: R_AVR32_9W_CP	\.text\+0x8014
43.17367 -+    8006:	48 03       	lddpc r3,8004 <far_negative\+0x8000>
43.17368 -+			8006: R_AVR32_9W_CP	\.text\+0x8018
43.17369 -+    8008:	48 04       	lddpc r4,8008 <far_negative\+0x8004>
43.17370 -+			8008: R_AVR32_9W_CP	\.text\+0x801c
43.17371 -+    800a:	48 05       	lddpc r5,8008 <far_negative\+0x8004>
43.17372 -+			800a: R_AVR32_9W_CP	\.text\+0x8020
43.17373 -+	\.\.\.
43.17374 -+			800c: R_AVR32_ALIGN	\*ABS\*\+0x2
43.17375 -+			800c: R_AVR32_32_CPENT	\.text\+0x4
43.17376 -+			8010: R_AVR32_32_CPENT	\.text
43.17377 -+			8014: R_AVR32_32_CPENT	\.data
43.17378 -+			8018: R_AVR32_32_CPENT	undefined
43.17379 -+			801c: R_AVR32_32_CPENT	\.text\+0x10020
43.17380 -+			8020: R_AVR32_32_CPENT	\.text\+0x1000c
43.17381 -+
43.17382 -+0001000c <far_positive>:
43.17383 -+   1000c:	fa cc 00 00 	sub r12,sp,0
43.17384 -+	\.\.\.
43.17385 -+00010020 <toofar_positive>:
43.17386 -+   10020:	fe ce 00 00 	sub lr,pc,0
43.17387 ---- /dev/null
43.17388 -+++ b/gas/testsuite/gas/avr32/lda_pic.d
43.17389 -@@ -0,0 +1,32 @@
43.17390 -+#source: lda.s
43.17391 -+#as: --pic
43.17392 -+#objdump: -dr
43.17393 -+#name: lda_pic
43.17394 -+
43.17395 -+.*: +file format .*
43.17396 -+
43.17397 -+Disassembly of section \.text:
43.17398 -+
43.17399 -+00000000 <lda_test>:
43.17400 -+       0:	f2 c8 00 00 	sub r8,r9,0
43.17401 -+
43.17402 -+00000004 <far_negative>:
43.17403 -+       4:	f6 ca 00 00 	sub r10,r11,0
43.17404 -+	...
43.17405 -+    8000:	fe c0 7f fc 	sub r0,pc,32764
43.17406 -+    8004:	ec f1 00 00 	ld.w r1,r6\[0\]
43.17407 -+			8004: R_AVR32_GOT16S	toofar_negative
43.17408 -+    8008:	ec f2 00 00 	ld.w r2,r6\[0\]
43.17409 -+			8008: R_AVR32_GOT16S	different_section
43.17410 -+    800c:	ec f3 00 00 	ld.w r3,r6\[0\]
43.17411 -+			800c: R_AVR32_GOT16S	undefined
43.17412 -+    8010:	ec f4 00 00 	ld.w r4,r6\[0\]
43.17413 -+			8010: R_AVR32_GOT16S	toofar_positive
43.17414 -+    8014:	fe c5 80 14 	sub r5,pc,-32748
43.17415 -+	...
43.17416 -+
43.17417 -+00010000 <far_positive>:
43.17418 -+   10000:	fa cc 00 00 	sub r12,sp,0
43.17419 -+	...
43.17420 -+00010014 <toofar_positive>:
43.17421 -+   10014:	fe ce 00 00 	sub lr,pc,0
43.17422 ---- /dev/null
43.17423 -+++ b/gas/testsuite/gas/avr32/lda_pic_linkrelax.d
43.17424 -@@ -0,0 +1,40 @@
43.17425 -+#source: lda.s
43.17426 -+#as: --pic --linkrelax
43.17427 -+#objdump: -dr
43.17428 -+#name: lda_pic_linkrelax
43.17429 -+
43.17430 -+.*: +file format .*
43.17431 -+
43.17432 -+Disassembly of section \.text:
43.17433 -+
43.17434 -+00000000 <lda_test>:
43.17435 -+       0:	f2 c8 00 00 	sub r8,r9,0
43.17436 -+
43.17437 -+00000004 <far_negative>:
43.17438 -+       4:	f6 ca 00 00 	sub r10,r11,0
43.17439 -+	...
43.17440 -+    8000:	e0 60 00 00 	mov r0,0
43.17441 -+			8000: R_AVR32_LDA_GOT	far_negative
43.17442 -+    8004:	ec 00 03 20 	ld\.w r0,r6\[r0<<0x2\]
43.17443 -+    8008:	e0 61 00 00 	mov r1,0
43.17444 -+			8008: R_AVR32_LDA_GOT	toofar_negative
43.17445 -+    800c:	ec 01 03 21 	ld\.w r1,r6\[r1<<0x2\]
43.17446 -+    8010:	e0 62 00 00 	mov r2,0
43.17447 -+			8010: R_AVR32_LDA_GOT	different_section
43.17448 -+    8014:	ec 02 03 22 	ld\.w r2,r6\[r2<<0x2\]
43.17449 -+    8018:	e0 63 00 00 	mov r3,0
43.17450 -+			8018: R_AVR32_LDA_GOT	undefined
43.17451 -+    801c:	ec 03 03 23 	ld\.w r3,r6\[r3<<0x2\]
43.17452 -+    8020:	e0 64 00 00 	mov r4,0
43.17453 -+			8020: R_AVR32_LDA_GOT	toofar_positive
43.17454 -+    8024:	ec 04 03 24 	ld\.w r4,r6\[r4<<0x2\]
43.17455 -+    8028:	e0 65 00 00 	mov r5,0
43.17456 -+			8028: R_AVR32_LDA_GOT	far_positive
43.17457 -+    802c:	ec 05 03 25 	ld\.w r5,r6\[r5<<0x2\]
43.17458 -+	...
43.17459 -+
43.17460 -+00010018 <far_positive>:
43.17461 -+   10018:	fa cc 00 00 	sub r12,sp,0
43.17462 -+	...
43.17463 -+0001002c <toofar_positive>:
43.17464 -+   1002c:	fe ce 00 00 	sub lr,pc,0
43.17465 ---- /dev/null
43.17466 -+++ b/gas/testsuite/gas/avr32/lda.s
43.17467 -@@ -0,0 +1,30 @@
43.17468 -+
43.17469 -+	.text
43.17470 -+	.global lda_test
43.17471 -+lda_test:
43.17472 -+toofar_negative:
43.17473 -+	sub	r8, r9, 0
43.17474 -+far_negative:
43.17475 -+	sub	r10, r11, 0
43.17476 -+
43.17477 -+	.fill	32760, 1, 0x00
43.17478 -+
43.17479 -+	lda.w	r0, far_negative
43.17480 -+	lda.w	r1, toofar_negative
43.17481 -+	lda.w	r2, different_section
43.17482 -+	lda.w	r3, undefined
43.17483 -+	lda.w	r4, toofar_positive
43.17484 -+	lda.w	r5, far_positive
43.17485 -+
43.17486 -+	.cpool
43.17487 -+
43.17488 -+	.fill	32744, 1, 0x00
43.17489 -+far_positive:
43.17490 -+	sub	r12, sp, 0
43.17491 -+	.fill	16, 1, 0x00
43.17492 -+toofar_positive:
43.17493 -+	sub	lr, pc, 0
43.17494 -+
43.17495 -+	.data
43.17496 -+different_section:
43.17497 -+	.long	0x12345678
43.17498 ---- /dev/null
43.17499 -+++ b/gas/testsuite/gas/avr32/pcrel.d
43.17500 -@@ -0,0 +1,64 @@
43.17501 -+#as:
43.17502 -+#objdump: -dr
43.17503 -+#name: pcrel
43.17504 -+
43.17505 -+.*: +file format .*
43.17506 -+
43.17507 -+Disassembly of section \.text:
43.17508 -+
43.17509 -+00000000 <test_rjmp>:
43.17510 -+   0:	d7 03       	nop
43.17511 -+   2:	c0 28       	rjmp 6 <test_rjmp\+0x6>
43.17512 -+   4:	d7 03       	nop
43.17513 -+   6:	e0 8f 00 00 	bral 6 <test_rjmp\+0x6>
43.17514 -+			6: R_AVR32_22H_PCREL	extsym10
43.17515 -+
43.17516 -+0000000a <test_rcall>:
43.17517 -+   a:	d7 03       	nop
43.17518 -+0000000c <test_rcall2>:
43.17519 -+   c:	c0 2c       	rcall 10 <test_rcall2\+0x4>
43.17520 -+   e:	d7 03       	nop
43.17521 -+  10:	e0 a0 00 00 	rcall 10 <test_rcall2\+0x4>
43.17522 -+			10: R_AVR32_22H_PCREL	extsym21
43.17523 -+
43.17524 -+00000014 <test_branch>:
43.17525 -+  14:	c0 31       	brne 1a <test_branch\+0x6>
43.17526 -+  16:	e0 8f 00 00 	bral 16 <test_branch\+0x2>
43.17527 -+			16: R_AVR32_22H_PCREL	test_branch
43.17528 -+  1a:	e0 80 00 00 	breq 1a <test_branch\+0x6>
43.17529 -+			1a: R_AVR32_22H_PCREL	extsym21
43.17530 -+
43.17531 -+0000001e <test_lddpc>:
43.17532 -+  1e:	48 30       	lddpc r0,28 <sym1>
43.17533 -+  20:	48 20       	lddpc r0,28 <sym1>
43.17534 -+  22:	fe f0 00 00 	ld.w r0,pc\[0\]
43.17535 -+			22: R_AVR32_16B_PCREL	extsym16
43.17536 -+	\.\.\.
43.17537 -+
43.17538 -+00000028 <sym1>:
43.17539 -+  28:	d7 03       	nop
43.17540 -+  2a:	d7 03       	nop
43.17541 -+
43.17542 -+0000002c <test_local>:
43.17543 -+  2c:	48 20       	lddpc r0,34 <test_local\+0x8>
43.17544 -+  2e:	48 30       	lddpc r0,38 <test_local\+0xc>
43.17545 -+  30:	48 20       	lddpc r0,38 <test_local\+0xc>
43.17546 -+  32:	00 00       	add r0,r0
43.17547 -+  34:	d7 03       	nop
43.17548 -+  36:	d7 03       	nop
43.17549 -+  38:	d7 03       	nop
43.17550 -+  3a:	d7 03       	nop
43.17551 -+
43.17552 -+Disassembly of section \.text\.init:
43.17553 -+
43.17554 -+00000000 <test_inter_section>:
43.17555 -+   0:	e0 a0 .. .. 	rcall [0-9a-f]+ <.*>
43.17556 -+			0: R_AVR32_22H_PCREL	test_rcall
43.17557 -+   4:	d7 03       	nop
43.17558 -+   6:	e0 a0 .. .. 	rcall [0-9a-f]+ <.*>
43.17559 -+			6: R_AVR32_22H_PCREL	test_rcall
43.17560 -+   a:	e0 a0 .. .. 	rcall [0-9a-z]+ <.*>
43.17561 -+			a: R_AVR32_22H_PCREL	\.text\+0xc
43.17562 -+   e:	d7 03       	nop
43.17563 -+  10:	e0 a0 .. .. 	rcall [0-9a-f]+ <.*>
43.17564 -+			10: R_AVR32_22H_PCREL	\.text\+0xc
43.17565 ---- /dev/null
43.17566 -+++ b/gas/testsuite/gas/avr32/pcrel.s
43.17567 -@@ -0,0 +1,57 @@
43.17568 -+
43.17569 -+        .text
43.17570 -+        .global test_rjmp
43.17571 -+test_rjmp:
43.17572 -+        nop
43.17573 -+        rjmp    0f
43.17574 -+        nop
43.17575 -+0:      rjmp    extsym10
43.17576 -+
43.17577 -+        .global test_rcall
43.17578 -+test_rcall:
43.17579 -+        nop
43.17580 -+test_rcall2:
43.17581 -+        rcall   0f
43.17582 -+        nop
43.17583 -+0:      rcall   extsym21
43.17584 -+
43.17585 -+        .global test_branch
43.17586 -+test_branch:
43.17587 -+        brne    0f
43.17588 -+	/* This will generate a reloc since test_branch is global */
43.17589 -+        bral    test_branch
43.17590 -+0:	breq    extsym21
43.17591 -+
43.17592 -+        .global test_lddpc
43.17593 -+test_lddpc:
43.17594 -+        lddpc   r0,sym1
43.17595 -+        lddpc   r0,sym1
43.17596 -+        lddpc   r0,extsym16
43.17597 -+
43.17598 -+        .align	2
43.17599 -+sym1:   nop
43.17600 -+        nop
43.17601 -+
43.17602 -+	.global	test_local
43.17603 -+test_local:
43.17604 -+	lddpc	r0, .LC1
43.17605 -+	lddpc	r0, .LC2
43.17606 -+	lddpc	r0, .LC1 + 0x4
43.17607 -+
43.17608 -+	.align	2
43.17609 -+.LC1:
43.17610 -+	nop
43.17611 -+	nop
43.17612 -+.LC2:
43.17613 -+	nop
43.17614 -+	nop
43.17615 -+
43.17616 -+	.section .text.init,"ax"
43.17617 -+	.global test_inter_section
43.17618 -+test_inter_section:
43.17619 -+	rcall	test_rcall
43.17620 -+	nop
43.17621 -+	rcall	test_rcall
43.17622 -+	rcall	test_rcall2
43.17623 -+	nop
43.17624 -+	rcall	test_rcall2
43.17625 ---- /dev/null
43.17626 -+++ b/gas/testsuite/gas/avr32/pico.d
43.17627 -@@ -0,0 +1,149 @@
43.17628 -+#as:
43.17629 -+#objdump: -dr
43.17630 -+#name: pico
43.17631 -+
43.17632 -+.*: +file format .*
43.17633 -+
43.17634 -+Disassembly of section \.text:
43.17635 -+
43.17636 -+[0-9a-f]* <picosvmac>:
43.17637 -+ *[0-9a-f]*:	e1 a6 20 00 	cop cp1,cr0,cr0,cr0,0xc
43.17638 -+ *[0-9a-f]*:	e1 a7 2b bb 	cop cp1,cr11,cr11,cr11,0xe
43.17639 -+ *[0-9a-f]*:	e1 a6 3a 05 	cop cp1,cr10,cr0,cr5,0xd
43.17640 -+ *[0-9a-f]*:	e1 a7 36 90 	cop cp1,cr6,cr9,cr0,0xf
43.17641 -+
43.17642 -+[0-9a-f]* <picosvmul>:
43.17643 -+ *[0-9a-f]*:	e1 a4 20 00 	cop cp1,cr0,cr0,cr0,0x8
43.17644 -+ *[0-9a-f]*:	e1 a5 2b bb 	cop cp1,cr11,cr11,cr11,0xa
43.17645 -+ *[0-9a-f]*:	e1 a4 3a 05 	cop cp1,cr10,cr0,cr5,0x9
43.17646 -+ *[0-9a-f]*:	e1 a5 36 90 	cop cp1,cr6,cr9,cr0,0xb
43.17647 -+
43.17648 -+[0-9a-f]* <picovmac>:
43.17649 -+ *[0-9a-f]*:	e1 a2 20 00 	cop cp1,cr0,cr0,cr0,0x4
43.17650 -+ *[0-9a-f]*:	e1 a3 2b bb 	cop cp1,cr11,cr11,cr11,0x6
43.17651 -+ *[0-9a-f]*:	e1 a2 3a 05 	cop cp1,cr10,cr0,cr5,0x5
43.17652 -+ *[0-9a-f]*:	e1 a3 36 90 	cop cp1,cr6,cr9,cr0,0x7
43.17653 -+
43.17654 -+[0-9a-f]* <picovmul>:
43.17655 -+ *[0-9a-f]*:	e1 a0 20 00 	cop cp1,cr0,cr0,cr0,0x0
43.17656 -+ *[0-9a-f]*:	e1 a1 2b bb 	cop cp1,cr11,cr11,cr11,0x2
43.17657 -+ *[0-9a-f]*:	e1 a0 3a 05 	cop cp1,cr10,cr0,cr5,0x1
43.17658 -+ *[0-9a-f]*:	e1 a1 36 90 	cop cp1,cr6,cr9,cr0,0x3
43.17659 -+
43.17660 -+[0-9a-f]* <picold_d>:
43.17661 -+ *[0-9a-f]*:	e9 af 3e ff 	ldc\.d cp1,cr14,pc\[0x3fc\]
43.17662 -+ *[0-9a-f]*:	e9 a0 30 ff 	ldc\.d cp1,cr0,r0\[0x3fc\]
43.17663 -+ *[0-9a-f]*:	e9 a0 30 00 	ldc\.d cp1,cr0,r0\[0x0\]
43.17664 -+ *[0-9a-f]*:	ef a8 26 50 	ldc\.d cp1,cr6,--r8
43.17665 -+ *[0-9a-f]*:	ef a7 28 50 	ldc\.d cp1,cr8,--r7
43.17666 -+ *[0-9a-f]*:	ef aa 32 65 	ldc\.d cp1,cr2,r10\[r5<<0x2\]
43.17667 -+ *[0-9a-f]*:	ef a3 3c 46 	ldc\.d cp1,cr12,r3\[r6\]
43.17668 -+
43.17669 -+[0-9a-f]* <picold_w>:
43.17670 -+ *[0-9a-f]*:	e9 af 2f ff 	ldc\.w cp1,cr15,pc\[0x3fc\]
43.17671 -+ *[0-9a-f]*:	e9 a0 20 ff 	ldc\.w cp1,cr0,r0\[0x3fc\]
43.17672 -+ *[0-9a-f]*:	e9 a0 20 00 	ldc\.w cp1,cr0,r0\[0x0\]
43.17673 -+ *[0-9a-f]*:	ef a8 27 40 	ldc\.w cp1,cr7,--r8
43.17674 -+ *[0-9a-f]*:	ef a7 28 40 	ldc\.w cp1,cr8,--r7
43.17675 -+ *[0-9a-f]*:	ef aa 31 25 	ldc\.w cp1,cr1,r10\[r5<<0x2\]
43.17676 -+ *[0-9a-f]*:	ef a3 3d 06 	ldc\.w cp1,cr13,r3\[r6\]
43.17677 -+
43.17678 -+[0-9a-f]* <picoldm_d>:
43.17679 -+ *[0-9a-f]*:	ed af 24 ff 	ldcm\.d cp1,pc,cr0-cr15
43.17680 -+ *[0-9a-f]*:	ed a0 24 01 	ldcm\.d cp1,r0,cr0-cr1
43.17681 -+ *[0-9a-f]*:	ed a7 24 80 	ldcm\.d cp1,r7,cr14-cr15
43.17682 -+ *[0-9a-f]*:	ed a8 24 7f 	ldcm\.d cp1,r8,cr0-cr13
43.17683 -+
43.17684 -+[0-9a-f]* <picoldm_d_pu>:
43.17685 -+ *[0-9a-f]*:	ed af 34 ff 	ldcm\.d cp1,pc\+\+,cr0-cr15
43.17686 -+ *[0-9a-f]*:	ed a0 34 01 	ldcm\.d cp1,r0\+\+,cr0-cr1
43.17687 -+ *[0-9a-f]*:	ed a7 34 80 	ldcm\.d cp1,r7\+\+,cr14-cr15
43.17688 -+ *[0-9a-f]*:	ed a8 34 7f 	ldcm\.d cp1,r8\+\+,cr0-cr13
43.17689 -+
43.17690 -+[0-9a-f]* <picoldm_w>:
43.17691 -+ *[0-9a-f]*:	ed af 20 ff 	ldcm\.w cp1,pc,cr0-cr7
43.17692 -+ *[0-9a-f]*:	ed a0 20 01 	ldcm\.w cp1,r0,cr0
43.17693 -+ *[0-9a-f]*:	ed a7 20 80 	ldcm\.w cp1,r7,cr7
43.17694 -+ *[0-9a-f]*:	ed a8 20 7f 	ldcm\.w cp1,r8,cr0-cr6
43.17695 -+ *[0-9a-f]*:	ed af 21 ff 	ldcm\.w cp1,pc,cr8-cr15
43.17696 -+ *[0-9a-f]*:	ed a0 21 01 	ldcm\.w cp1,r0,cr8
43.17697 -+ *[0-9a-f]*:	ed a7 21 80 	ldcm\.w cp1,r7,cr15
43.17698 -+ *[0-9a-f]*:	ed a8 21 7f 	ldcm\.w cp1,r8,cr8-cr14
43.17699 -+
43.17700 -+[0-9a-f]* <picoldm_w_pu>:
43.17701 -+ *[0-9a-f]*:	ed af 30 ff 	ldcm\.w cp1,pc\+\+,cr0-cr7
43.17702 -+ *[0-9a-f]*:	ed a0 30 01 	ldcm\.w cp1,r0\+\+,cr0
43.17703 -+ *[0-9a-f]*:	ed a7 30 80 	ldcm\.w cp1,r7\+\+,cr7
43.17704 -+ *[0-9a-f]*:	ed a8 30 7f 	ldcm\.w cp1,r8\+\+,cr0-cr6
43.17705 -+ *[0-9a-f]*:	ed af 31 ff 	ldcm\.w cp1,pc\+\+,cr8-cr15
43.17706 -+ *[0-9a-f]*:	ed a0 31 01 	ldcm\.w cp1,r0\+\+,cr8
43.17707 -+ *[0-9a-f]*:	ed a7 31 80 	ldcm\.w cp1,r7\+\+,cr15
43.17708 -+ *[0-9a-f]*:	ed a8 31 7f 	ldcm\.w cp1,r8\+\+,cr8-cr14
43.17709 -+
43.17710 -+[0-9a-f]* <picomv_d>:
43.17711 -+ *[0-9a-f]*:	ef ae 2e 30 	mvrc\.d cp1,cr14,lr
43.17712 -+ *[0-9a-f]*:	ef a0 20 30 	mvrc\.d cp1,cr0,r0
43.17713 -+ *[0-9a-f]*:	ef a8 26 30 	mvrc\.d cp1,cr6,r8
43.17714 -+ *[0-9a-f]*:	ef a6 28 30 	mvrc\.d cp1,cr8,r6
43.17715 -+ *[0-9a-f]*:	ef ae 2e 10 	mvcr\.d cp1,lr,cr14
43.17716 -+ *[0-9a-f]*:	ef a0 20 10 	mvcr\.d cp1,r0,cr0
43.17717 -+ *[0-9a-f]*:	ef a8 26 10 	mvcr\.d cp1,r8,cr6
43.17718 -+ *[0-9a-f]*:	ef a6 28 10 	mvcr\.d cp1,r6,cr8
43.17719 -+
43.17720 -+[0-9a-f]* <picomv_w>:
43.17721 -+ *[0-9a-f]*:	ef af 2f 20 	mvrc\.w cp1,cr15,pc
43.17722 -+ *[0-9a-f]*:	ef a0 20 20 	mvrc\.w cp1,cr0,r0
43.17723 -+ *[0-9a-f]*:	ef a8 27 20 	mvrc\.w cp1,cr7,r8
43.17724 -+ *[0-9a-f]*:	ef a7 28 20 	mvrc\.w cp1,cr8,r7
43.17725 -+ *[0-9a-f]*:	ef af 2f 00 	mvcr\.w cp1,pc,cr15
43.17726 -+ *[0-9a-f]*:	ef a0 20 00 	mvcr\.w cp1,r0,cr0
43.17727 -+ *[0-9a-f]*:	ef a8 27 00 	mvcr\.w cp1,r8,cr7
43.17728 -+ *[0-9a-f]*:	ef a7 28 00 	mvcr\.w cp1,r7,cr8
43.17729 -+
43.17730 -+[0-9a-f]* <picost_d>:
43.17731 -+ *[0-9a-f]*:	eb af 3e ff 	stc\.d cp1,pc\[0x3fc\],cr14
43.17732 -+ *[0-9a-f]*:	eb a0 30 00 	stc\.d cp1,r0\[0x0\],cr0
43.17733 -+ *[0-9a-f]*:	ef a8 26 70 	stc\.d cp1,r8\+\+,cr6
43.17734 -+ *[0-9a-f]*:	ef a7 28 70 	stc\.d cp1,r7\+\+,cr8
43.17735 -+ *[0-9a-f]*:	ef aa 32 e5 	stc\.d cp1,r10\[r5<<0x2\],cr2
43.17736 -+ *[0-9a-f]*:	ef a3 3c c6 	stc\.d cp1,r3\[r6\],cr12
43.17737 -+
43.17738 -+[0-9a-f]* <picost_w>:
43.17739 -+ *[0-9a-f]*:	eb af 2f ff 	stc\.w cp1,pc\[0x3fc\],cr15
43.17740 -+ *[0-9a-f]*:	eb a0 20 00 	stc\.w cp1,r0\[0x0\],cr0
43.17741 -+ *[0-9a-f]*:	ef a8 27 60 	stc\.w cp1,r8\+\+,cr7
43.17742 -+ *[0-9a-f]*:	ef a7 28 60 	stc\.w cp1,r7\+\+,cr8
43.17743 -+ *[0-9a-f]*:	ef aa 31 a5 	stc\.w cp1,r10\[r5<<0x2\],cr1
43.17744 -+ *[0-9a-f]*:	ef a3 3d 86 	stc\.w cp1,r3\[r6\],cr13
43.17745 -+
43.17746 -+[0-9a-f]* <picostm_d>:
43.17747 -+ *[0-9a-f]*:	ed af 25 ff 	stcm\.d cp1,pc,cr0-cr15
43.17748 -+ *[0-9a-f]*:	ed a0 25 01 	stcm\.d cp1,r0,cr0-cr1
43.17749 -+ *[0-9a-f]*:	ed a7 25 80 	stcm\.d cp1,r7,cr14-cr15
43.17750 -+ *[0-9a-f]*:	ed a8 25 7f 	stcm\.d cp1,r8,cr0-cr13
43.17751 -+
43.17752 -+[0-9a-f]* <picostm_d_pu>:
43.17753 -+ *[0-9a-f]*:	ed af 35 ff 	stcm\.d cp1,--pc,cr0-cr15
43.17754 -+ *[0-9a-f]*:	ed a0 35 01 	stcm\.d cp1,--r0,cr0-cr1
43.17755 -+ *[0-9a-f]*:	ed a7 35 80 	stcm\.d cp1,--r7,cr14-cr15
43.17756 -+ *[0-9a-f]*:	ed a8 35 7f 	stcm\.d cp1,--r8,cr0-cr13
43.17757 -+
43.17758 -+[0-9a-f]* <picostm_w>:
43.17759 -+ *[0-9a-f]*:	ed af 22 ff 	stcm\.w cp1,pc,cr0-cr7
43.17760 -+ *[0-9a-f]*:	ed a0 22 01 	stcm\.w cp1,r0,cr0
43.17761 -+ *[0-9a-f]*:	ed a7 22 80 	stcm\.w cp1,r7,cr7
43.17762 -+ *[0-9a-f]*:	ed a8 22 7f 	stcm\.w cp1,r8,cr0-cr6
43.17763 -+ *[0-9a-f]*:	ed af 23 ff 	stcm\.w cp1,pc,cr8-cr15
43.17764 -+ *[0-9a-f]*:	ed a0 23 01 	stcm\.w cp1,r0,cr8
43.17765 -+ *[0-9a-f]*:	ed a7 23 80 	stcm\.w cp1,r7,cr15
43.17766 -+ *[0-9a-f]*:	ed a8 23 7f 	stcm\.w cp1,r8,cr8-cr14
43.17767 -+
43.17768 -+[0-9a-f]* <picostm_w_pu>:
43.17769 -+ *[0-9a-f]*:	ed af 32 ff 	stcm\.w cp1,--pc,cr0-cr7
43.17770 -+ *[0-9a-f]*:	ed a0 32 01 	stcm\.w cp1,--r0,cr0
43.17771 -+ *[0-9a-f]*:	ed a7 32 80 	stcm\.w cp1,--r7,cr7
43.17772 -+ *[0-9a-f]*:	ed a8 32 7f 	stcm\.w cp1,--r8,cr0-cr6
43.17773 -+ *[0-9a-f]*:	ed af 33 ff 	stcm\.w cp1,--pc,cr8-cr15
43.17774 -+ *[0-9a-f]*:	ed a0 33 01 	stcm\.w cp1,--r0,cr8
43.17775 -+ *[0-9a-f]*:	ed a7 33 80 	stcm\.w cp1,--r7,cr15
43.17776 -+ *[0-9a-f]*:	ed a8 33 7f 	stcm\.w cp1,--r8,cr8-cr14
43.17777 ---- /dev/null
43.17778 -+++ b/gas/testsuite/gas/avr32/pico.s
43.17779 -@@ -0,0 +1,144 @@
43.17780 -+
43.17781 -+	.text
43.17782 -+	.global	picosvmac
43.17783 -+picosvmac:
43.17784 -+	picosvmac	out0, in0, in0, in0
43.17785 -+	picosvmac	out2, in11, in11, in11
43.17786 -+	picosvmac	out1, in10, in0, in5
43.17787 -+	picosvmac	out3, in6, in9, in0
43.17788 -+	.global picosvmul
43.17789 -+picosvmul:
43.17790 -+	picosvmul	out0, in0, in0, in0
43.17791 -+	picosvmul	out2, in11, in11, in11
43.17792 -+	picosvmul	out1, in10, in0, in5
43.17793 -+	picosvmul	out3, in6, in9, in0
43.17794 -+	.global picovmac
43.17795 -+picovmac:
43.17796 -+	picovmac	out0, in0, in0, in0
43.17797 -+	picovmac	out2, in11, in11, in11
43.17798 -+	picovmac	out1, in10, in0, in5
43.17799 -+	picovmac	out3, in6, in9, in0
43.17800 -+	.global picovmul
43.17801 -+picovmul:
43.17802 -+	picovmul	out0, in0, in0, in0
43.17803 -+	picovmul	out2, in11, in11, in11
43.17804 -+	picovmul	out1, in10, in0, in5
43.17805 -+	picovmul	out3, in6, in9, in0
43.17806 -+	.global	picold_d
43.17807 -+picold_d:
43.17808 -+	picold.d	vmu2_out, pc[1020]
43.17809 -+	picold.d	inpix2, r0[1020]
43.17810 -+	picold.d	inpix2, r0[0]
43.17811 -+	picold.d	coeff0_a, --r8
43.17812 -+	picold.d	coeff1_a, --r7
43.17813 -+	picold.d	inpix0, r10[r5 << 2]
43.17814 -+	picold.d	vmu0_out, r3[r6 << 0]
43.17815 -+	.global	picold_w
43.17816 -+picold_w:	
43.17817 -+	picold.w	config, pc[1020]
43.17818 -+	picold.w	inpix2, r0[1020]
43.17819 -+	picold.w	inpix2, r0[0]
43.17820 -+	picold.w	coeff0_b, --r8
43.17821 -+	picold.w	coeff1_a, --r7
43.17822 -+	picold.w	inpix1, r10[r5 << 2]
43.17823 -+	picold.w	vmu1_out, r3[r6 << 0]
43.17824 -+	.global	picoldm_d
43.17825 -+picoldm_d:
43.17826 -+	picoldm.d	pc, inpix2-config
43.17827 -+	picoldm.d	r0, inpix2, inpix1
43.17828 -+	picoldm.d	r7, vmu2_out, config
43.17829 -+	picoldm.d	r8, inpix2-vmu1_out
43.17830 -+	.global	picoldm_d_pu
43.17831 -+picoldm_d_pu:
43.17832 -+	picoldm.d	pc++, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out, vmu2_out, config
43.17833 -+	picoldm.d	r0++, inpix2, inpix1
43.17834 -+	picoldm.d	r7++, vmu2_out, config
43.17835 -+	picoldm.d	r8++, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out
43.17836 -+	.global	picoldm_w
43.17837 -+picoldm_w:
43.17838 -+	picoldm.w	pc, inpix2-coeff0_b
43.17839 -+	picoldm.w	r0, inpix2
43.17840 -+	picoldm.w	r7, coeff0_b
43.17841 -+	picoldm.w	r8, inpix2-coeff0_a
43.17842 -+	picoldm.w	pc, coeff1_a-config
43.17843 -+	picoldm.w	r0, coeff1_a
43.17844 -+	picoldm.w	r7, config
43.17845 -+	picoldm.w	r8, coeff1_a-vmu2_out
43.17846 -+	.global	picoldm_w_pu
43.17847 -+picoldm_w_pu:
43.17848 -+	picoldm.w	pc++, inpix2-coeff0_b
43.17849 -+	picoldm.w	r0++, inpix2
43.17850 -+	picoldm.w	r7++, coeff0_b
43.17851 -+	picoldm.w	r8++, inpix2-coeff0_a
43.17852 -+	picoldm.w	pc++, coeff1_a-config
43.17853 -+	picoldm.w	r0++, coeff1_a
43.17854 -+	picoldm.w	r7++, config
43.17855 -+	picoldm.w	r8++, coeff1_a-vmu2_out
43.17856 -+	.global	picomv_d
43.17857 -+picomv_d:
43.17858 -+	picomv.d	vmu2_out, lr
43.17859 -+	picomv.d	inpix2, r0
43.17860 -+	picomv.d	coeff0_a, r8
43.17861 -+	picomv.d	coeff1_a, r6
43.17862 -+	picomv.d	pc, vmu2_out
43.17863 -+	picomv.d	r0, inpix2
43.17864 -+	picomv.d	r8, coeff0_a
43.17865 -+	picomv.d	r6, coeff1_a
43.17866 -+	.global	picomv_w
43.17867 -+picomv_w:
43.17868 -+	picomv.w	config, pc
43.17869 -+	picomv.w	inpix2, r0
43.17870 -+	picomv.w	coeff0_b, r8
43.17871 -+	picomv.w	coeff1_a, r7
43.17872 -+	picomv.w	pc, config
43.17873 -+	picomv.w	r0, inpix2
43.17874 -+	picomv.w	r8, coeff0_b
43.17875 -+	picomv.w	r7, coeff1_a
43.17876 -+	.global	picost_d
43.17877 -+picost_d:
43.17878 -+	picost.d	pc[1020], vmu2_out
43.17879 -+	picost.d	r0[0], inpix2
43.17880 -+	picost.d	r8++, coeff0_a
43.17881 -+	picost.d	r7++, coeff1_a
43.17882 -+	picost.d	r10[r5 << 2], inpix0
43.17883 -+	picost.d	r3[r6 << 0], vmu0_out
43.17884 -+	.global	picost_w
43.17885 -+picost_w:	
43.17886 -+	picost.w	pc[1020], config
43.17887 -+	picost.w	r0[0], inpix2
43.17888 -+	picost.w	r8++, coeff0_b
43.17889 -+	picost.w	r7++, coeff1_a
43.17890 -+	picost.w	r10[r5 << 2], inpix1
43.17891 -+	picost.w	r3[r6 << 0], vmu1_out
43.17892 -+	.global	picostm_d
43.17893 -+picostm_d:
43.17894 -+	picostm.d	pc, inpix2-config
43.17895 -+	picostm.d	r0, inpix2, inpix1
43.17896 -+	picostm.d	r7, vmu2_out, config
43.17897 -+	picostm.d	r8, inpix2-vmu1_out
43.17898 -+	.global	picostm_d_pu
43.17899 -+picostm_d_pu:
43.17900 -+	picostm.d	--pc, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out, vmu2_out, config
43.17901 -+	picostm.d	--r0, inpix2, inpix1
43.17902 -+	picostm.d	--r7, vmu2_out, config
43.17903 -+	picostm.d	--r8, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out
43.17904 -+	.global	picostm_w
43.17905 -+picostm_w:
43.17906 -+	picostm.w	pc, inpix2-coeff0_b
43.17907 -+	picostm.w	r0, inpix2
43.17908 -+	picostm.w	r7, coeff0_b
43.17909 -+	picostm.w	r8, inpix2-coeff0_a
43.17910 -+	picostm.w	pc, coeff1_a-config
43.17911 -+	picostm.w	r0, coeff1_a
43.17912 -+	picostm.w	r7, config
43.17913 -+	picostm.w	r8, coeff1_a-vmu2_out
43.17914 -+	.global	picostm_w_pu
43.17915 -+picostm_w_pu:
43.17916 -+	picostm.w	--pc, inpix2-coeff0_b
43.17917 -+	picostm.w	--r0, inpix2
43.17918 -+	picostm.w	--r7, coeff0_b
43.17919 -+	picostm.w	--r8, inpix2-coeff0_a
43.17920 -+	picostm.w	--pc, coeff1_a-config
43.17921 -+	picostm.w	--r0, coeff1_a
43.17922 -+	picostm.w	--r7, config
43.17923 -+	picostm.w	--r8, coeff1_a-vmu2_out
43.17924 ---- /dev/null
43.17925 -+++ b/gas/testsuite/gas/avr32/pic_reloc.d
43.17926 -@@ -0,0 +1,27 @@
43.17927 -+#as:
43.17928 -+#objdump: -dr
43.17929 -+#name: pic_reloc
43.17930 -+
43.17931 -+.*: +file format .*
43.17932 -+
43.17933 -+Disassembly of section \.text:
43.17934 -+
43.17935 -+00000000 <mcall_got>:
43.17936 -+   0:	f0 16 00 00 	mcall r6\[0\]
43.17937 -+			0: R_AVR32_GOT18SW	extfunc
43.17938 -+   4:	f0 16 00 00 	mcall r6\[0\]
43.17939 -+			4: R_AVR32_GOT18SW	\.L1
43.17940 -+   8:	f0 16 00 00 	mcall r6\[0\]
43.17941 -+			8: R_AVR32_GOT18SW	\.L2
43.17942 -+   c:	f0 16 00 00 	mcall r6\[0\]
43.17943 -+			c: R_AVR32_GOT18SW	mcall_got
43.17944 -+
43.17945 -+00000010 <ldw_got>:
43.17946 -+  10:	ec f0 00 00 	ld.w r0,r6\[0\]
43.17947 -+			10: R_AVR32_GOT16S	extvar
43.17948 -+  14:	ec f0 00 00 	ld.w r0,r6\[0\]
43.17949 -+			14: R_AVR32_GOT16S	\.L3
43.17950 -+  18:	ec f0 00 00 	ld.w r0,r6\[0\]
43.17951 -+			18: R_AVR32_GOT16S	\.L4
43.17952 -+  1c:	ec f0 00 00 	ld.w r0,r6\[0\]
43.17953 -+			1c: R_AVR32_GOT16S	ldw_got
43.17954 ---- /dev/null
43.17955 -+++ b/gas/testsuite/gas/avr32/pic_reloc.s
43.17956 -@@ -0,0 +1,18 @@
43.17957 -+
43.17958 -+	.text
43.17959 -+	.global	mcall_got
43.17960 -+mcall_got:
43.17961 -+.L1:
43.17962 -+	mcall	r6[extfunc@got]
43.17963 -+	mcall	r6[.L1@got]
43.17964 -+	mcall	r6[.L2@got]
43.17965 -+	mcall	r6[mcall_got@got]
43.17966 -+.L2:
43.17967 -+
43.17968 -+	.global	ldw_got
43.17969 -+ldw_got:
43.17970 -+.L3:	ld.w	r0,r6[extvar@got]
43.17971 -+	ld.w	r0,r6[.L3@got]
43.17972 -+	ld.w	r0,r6[.L4@got]
43.17973 -+	ld.w	r0,r6[ldw_got@got]
43.17974 -+.L4:
43.17975 ---- /dev/null
43.17976 -+++ b/gas/testsuite/gas/avr32/symdiff.d
43.17977 -@@ -0,0 +1,24 @@
43.17978 -+#source: symdiff.s
43.17979 -+#as:
43.17980 -+#objdump: -dr
43.17981 -+#name: symdiff
43.17982 -+
43.17983 -+.*: +file format .*
43.17984 -+
43.17985 -+Disassembly of section \.text:
43.17986 -+
43.17987 -+00000000 <diff32>:
43.17988 -+   0:	00 00       	add r0,r0
43.17989 -+   2:	00 04       	add r4,r0
43.17990 -+
43.17991 -+00000004 <diff16>:
43.17992 -+   4:	00 04       	add r4,r0
43.17993 -+
43.17994 -+00000006 <diff8>:
43.17995 -+   6:	04 00       	add r0,r2
43.17996 -+
43.17997 -+00000008 <symdiff_test>:
43.17998 -+   8:	d7 03       	nop
43.17999 -+   a:	d7 03       	nop
43.18000 -+   c:	d7 03       	nop
43.18001 -+   e:	d7 03       	nop
43.18002 ---- /dev/null
43.18003 -+++ b/gas/testsuite/gas/avr32/symdiff_linkrelax.d
43.18004 -@@ -0,0 +1,28 @@
43.18005 -+#source: symdiff.s
43.18006 -+#as: --linkrelax
43.18007 -+#objdump: -dr
43.18008 -+#name: symdiff_linkrelax
43.18009 -+
43.18010 -+.*: +file format .*
43.18011 -+
43.18012 -+Disassembly of section \.text:
43.18013 -+
43.18014 -+00000000 <diff32>:
43.18015 -+   0:	00 00       	add r0,r0
43.18016 -+			0: R_AVR32_DIFF32	\.text\+0xa
43.18017 -+   2:	00 04       	add r4,r0
43.18018 -+
43.18019 -+00000004 <diff16>:
43.18020 -+   4:	00 04       	add r4,r0
43.18021 -+			4: R_AVR32_DIFF16	\.text\+0xa
43.18022 -+
43.18023 -+00000006 <diff8>:
43.18024 -+   6:	04 00       	add r0,r2
43.18025 -+			6: R_AVR32_DIFF8	\.text\+0xa
43.18026 -+			7: R_AVR32_ALIGN	\*ABS\*\+0x1
43.18027 -+
43.18028 -+00000008 <symdiff_test>:
43.18029 -+   8:	d7 03       	nop
43.18030 -+   a:	d7 03       	nop
43.18031 -+   c:	d7 03       	nop
43.18032 -+   e:	d7 03       	nop
43.18033 ---- /dev/null
43.18034 -+++ b/gas/testsuite/gas/avr32/symdiff.s
43.18035 -@@ -0,0 +1,19 @@
43.18036 -+
43.18037 -+	.text
43.18038 -+	.global	diff32
43.18039 -+diff32:
43.18040 -+	.long	.L2 - .L1
43.18041 -+	.global	diff16
43.18042 -+diff16:
43.18043 -+	.short	.L2 - .L1
43.18044 -+	.global	diff8
43.18045 -+diff8:
43.18046 -+	.byte	.L2 - .L1
43.18047 -+
43.18048 -+	.global	symdiff_test
43.18049 -+	.align	1
43.18050 -+symdiff_test:
43.18051 -+	nop
43.18052 -+.L1:	nop
43.18053 -+	nop
43.18054 -+.L2:	nop
43.18055 ---- a/gas/write.c
43.18056 -+++ b/gas/write.c
43.18057 -@@ -1955,6 +1955,10 @@ relax_frag (segT segment, fragS *fragP, 
43.18058 - 
43.18059 - #endif /* defined (TC_GENERIC_RELAX_TABLE)  */
43.18060 - 
43.18061 -+#ifdef TC_RELAX_ALIGN
43.18062 -+#define RELAX_ALIGN(SEG, FRAG, ADDR) TC_RELAX_ALIGN(SEG, FRAG, ADDR)
43.18063 -+#else
43.18064 -+#define RELAX_ALIGN(SEG, FRAG, ADDR) relax_align(ADDR, (FRAG)->fr_offset)
43.18065 - /* Relax_align. Advance location counter to next address that has 'alignment'
43.18066 -    lowest order bits all 0s, return size of adjustment made.  */
43.18067 - static relax_addressT
43.18068 -@@ -1974,6 +1978,7 @@ relax_align (register relax_addressT add
43.18069 - #endif
43.18070 -   return (new_address - address);
43.18071 - }
43.18072 -+#endif
43.18073 - 
43.18074 - /* Now we have a segment, not a crowd of sub-segments, we can make
43.18075 -    fr_address values.
43.18076 -@@ -2017,7 +2022,7 @@ relax_segment (struct frag *segment_frag
43.18077 - 	case rs_align_code:
43.18078 - 	case rs_align_test:
43.18079 - 	  {
43.18080 --	    addressT offset = relax_align (address, (int) fragP->fr_offset);
43.18081 -+	    addressT offset = RELAX_ALIGN(segment, fragP, address);
43.18082 - 
43.18083 - 	    if (fragP->fr_subtype != 0 && offset > fragP->fr_subtype)
43.18084 - 	      offset = 0;
43.18085 -@@ -2218,10 +2223,10 @@ relax_segment (struct frag *segment_frag
43.18086 - 		{
43.18087 - 		  addressT oldoff, newoff;
43.18088 - 
43.18089 --		  oldoff = relax_align (was_address + fragP->fr_fix,
43.18090 --					(int) offset);
43.18091 --		  newoff = relax_align (address + fragP->fr_fix,
43.18092 --					(int) offset);
43.18093 -+		  oldoff = RELAX_ALIGN (segment, fragP,
43.18094 -+					was_address + fragP->fr_fix);
43.18095 -+		  newoff = RELAX_ALIGN (segment, fragP,
43.18096 -+					address + fragP->fr_fix);
43.18097 - 
43.18098 - 		  if (fragP->fr_subtype != 0)
43.18099 - 		    {
43.18100 ---- a/include/dis-asm.h
43.18101 -+++ b/include/dis-asm.h
43.18102 -@@ -204,13 +204,14 @@ typedef struct disassemble_info
43.18103 - 
43.18104 - } disassemble_info;
43.18105 - 
43.18106 --
43.18107 -+
43.18108 - /* Standard disassemblers.  Disassemble one instruction at the given
43.18109 -    target address.  Return number of octets processed.  */
43.18110 - typedef int (*disassembler_ftype) (bfd_vma, disassemble_info *);
43.18111 - 
43.18112 - extern int print_insn_alpha		(bfd_vma, disassemble_info *);
43.18113 - extern int print_insn_avr		(bfd_vma, disassemble_info *);
43.18114 -+extern int print_insn_avr32		(bfd_vma, disassemble_info *);
43.18115 - extern int print_insn_bfin		(bfd_vma, disassemble_info *);
43.18116 - extern int print_insn_big_arm		(bfd_vma, disassemble_info *);
43.18117 - extern int print_insn_big_mips		(bfd_vma, disassemble_info *);
43.18118 -@@ -242,7 +243,7 @@ extern int print_insn_little_arm	(bfd_vm
43.18119 - extern int print_insn_little_mips	(bfd_vma, disassemble_info *);
43.18120 - extern int print_insn_little_or32	(bfd_vma, disassemble_info *);
43.18121 - extern int print_insn_little_powerpc	(bfd_vma, disassemble_info *);
43.18122 --extern int print_insn_little_score      (bfd_vma, disassemble_info *); 
43.18123 -+extern int print_insn_little_score      (bfd_vma, disassemble_info *);
43.18124 - extern int print_insn_m32c	        (bfd_vma, disassemble_info *);
43.18125 - extern int print_insn_m32r		(bfd_vma, disassemble_info *);
43.18126 - extern int print_insn_m68hc11		(bfd_vma, disassemble_info *);
43.18127 -@@ -290,7 +291,9 @@ extern void print_i386_disassembler_opti
43.18128 - extern void print_mips_disassembler_options (FILE *);
43.18129 - extern void print_ppc_disassembler_options (FILE *);
43.18130 - extern void print_arm_disassembler_options (FILE *);
43.18131 -+extern void print_avr32_disassembler_options (FILE *);
43.18132 - extern void parse_arm_disassembler_option (char *);
43.18133 -+extern void parse_avr32_disassembler_option (char *);
43.18134 - extern int  get_arm_regname_num_options (void);
43.18135 - extern int  set_arm_regname_option (int);
43.18136 - extern int  get_arm_regnames (int, const char **, const char **, const char *const **);
43.18137 -@@ -306,7 +309,7 @@ extern void disassemble_init_for_target 
43.18138 - /* Document any target specific options available from the disassembler.  */
43.18139 - extern void disassembler_usage (FILE *);
43.18140 - 
43.18141 --
43.18142 -+
43.18143 - /* This block of definitions is for particular callers who read instructions
43.18144 -    into a buffer before calling the instruction decoder.  */
43.18145 - 
43.18146 ---- /dev/null
43.18147 -+++ b/include/elf/avr32.h
43.18148 -@@ -0,0 +1,98 @@
43.18149 -+/* AVR32 ELF support for BFD.
43.18150 -+   Copyright 2003-2006 Atmel Corporation.
43.18151 -+
43.18152 -+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
43.18153 -+
43.18154 -+   This file is part of BFD, the Binary File Descriptor library.
43.18155 -+
43.18156 -+   This program is free software; you can redistribute it and/or
43.18157 -+   modify it under the terms of the GNU General Public License as
43.18158 -+   published by the Free Software Foundation; either version 2 of the
43.18159 -+   License, or (at your option) any later version.
43.18160 -+
43.18161 -+   This program is distributed in the hope that it will be useful, but
43.18162 -+   WITHOUT ANY WARRANTY; without even the implied warranty of
43.18163 -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
43.18164 -+   General Public License for more details.
43.18165 -+
43.18166 -+   You should have received a copy of the GNU General Public License
43.18167 -+   along with this program; if not, write to the Free Software
43.18168 -+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
43.18169 -+   02111-1307, USA.  */
43.18170 -+
43.18171 -+#include "elf/reloc-macros.h"
43.18172 -+
43.18173 -+/* CPU-specific flags for the ELF header e_flags field */
43.18174 -+#define EF_AVR32_LINKRELAX		0x01
43.18175 -+#define EF_AVR32_PIC			0x02
43.18176 -+
43.18177 -+START_RELOC_NUMBERS (elf_avr32_reloc_type)
43.18178 -+    RELOC_NUMBER (R_AVR32_NONE,			0)
43.18179 -+
43.18180 -+    /* Data Relocations */
43.18181 -+    RELOC_NUMBER (R_AVR32_32,			1)
43.18182 -+    RELOC_NUMBER (R_AVR32_16,			2)
43.18183 -+    RELOC_NUMBER (R_AVR32_8,			3)
43.18184 -+    RELOC_NUMBER (R_AVR32_32_PCREL,		4)
43.18185 -+    RELOC_NUMBER (R_AVR32_16_PCREL,		5)
43.18186 -+    RELOC_NUMBER (R_AVR32_8_PCREL,		6)
43.18187 -+    RELOC_NUMBER (R_AVR32_DIFF32,		7)
43.18188 -+    RELOC_NUMBER (R_AVR32_DIFF16,		8)
43.18189 -+    RELOC_NUMBER (R_AVR32_DIFF8,		9)
43.18190 -+    RELOC_NUMBER (R_AVR32_GOT32,		10)
43.18191 -+    RELOC_NUMBER (R_AVR32_GOT16,		11)
43.18192 -+    RELOC_NUMBER (R_AVR32_GOT8,			12)
43.18193 -+
43.18194 -+    /* Normal Code Relocations */
43.18195 -+    RELOC_NUMBER (R_AVR32_21S,			13)
43.18196 -+    RELOC_NUMBER (R_AVR32_16U,			14)
43.18197 -+    RELOC_NUMBER (R_AVR32_16S,			15)
43.18198 -+    RELOC_NUMBER (R_AVR32_8S,			16)
43.18199 -+    RELOC_NUMBER (R_AVR32_8S_EXT,		17)
43.18200 -+
43.18201 -+    /* PC-Relative Code Relocations */
43.18202 -+    RELOC_NUMBER (R_AVR32_22H_PCREL,		18)
43.18203 -+    RELOC_NUMBER (R_AVR32_18W_PCREL,		19)
43.18204 -+    RELOC_NUMBER (R_AVR32_16B_PCREL,		20)
43.18205 -+    RELOC_NUMBER (R_AVR32_16N_PCREL,		21)
43.18206 -+    RELOC_NUMBER (R_AVR32_14UW_PCREL,		22)
43.18207 -+    RELOC_NUMBER (R_AVR32_11H_PCREL,		23)
43.18208 -+    RELOC_NUMBER (R_AVR32_10UW_PCREL,		24)
43.18209 -+    RELOC_NUMBER (R_AVR32_9H_PCREL,		25)
43.18210 -+    RELOC_NUMBER (R_AVR32_9UW_PCREL,		26)
43.18211 -+
43.18212 -+    /* Special Code Relocations */
43.18213 -+    RELOC_NUMBER (R_AVR32_HI16,			27)
43.18214 -+    RELOC_NUMBER (R_AVR32_LO16,			28)
43.18215 -+
43.18216 -+    /* PIC Relocations */
43.18217 -+    RELOC_NUMBER (R_AVR32_GOTPC,		29)
43.18218 -+    RELOC_NUMBER (R_AVR32_GOTCALL,		30)
43.18219 -+    RELOC_NUMBER (R_AVR32_LDA_GOT,		31)
43.18220 -+    RELOC_NUMBER (R_AVR32_GOT21S,		32)
43.18221 -+    RELOC_NUMBER (R_AVR32_GOT18SW,		33)
43.18222 -+    RELOC_NUMBER (R_AVR32_GOT16S,		34)
43.18223 -+    RELOC_NUMBER (R_AVR32_GOT7UW,		35)
43.18224 -+
43.18225 -+    /* Constant Pool Relocations */
43.18226 -+    RELOC_NUMBER (R_AVR32_32_CPENT,		36)
43.18227 -+    RELOC_NUMBER (R_AVR32_CPCALL,		37)
43.18228 -+    RELOC_NUMBER (R_AVR32_16_CP,		38)
43.18229 -+    RELOC_NUMBER (R_AVR32_9W_CP,		39)
43.18230 -+
43.18231 -+    /* Dynamic Relocations */
43.18232 -+    RELOC_NUMBER (R_AVR32_RELATIVE,		40)
43.18233 -+    RELOC_NUMBER (R_AVR32_GLOB_DAT,		41)
43.18234 -+    RELOC_NUMBER (R_AVR32_JMP_SLOT,		42)
43.18235 -+
43.18236 -+    /* Linkrelax Information */
43.18237 -+    RELOC_NUMBER (R_AVR32_ALIGN,		43)
43.18238 -+
43.18239 -+    RELOC_NUMBER (R_AVR32_15S,		        44)
43.18240 -+
43.18241 -+END_RELOC_NUMBERS (R_AVR32_max)
43.18242 -+
43.18243 -+/* Processor specific dynamic array tags.  */
43.18244 -+
43.18245 -+/* The total size in bytes of the Global Offset Table */
43.18246 -+#define DT_AVR32_GOTSZ			0x70000001
43.18247 ---- a/include/elf/common.h
43.18248 -+++ b/include/elf/common.h
43.18249 -@@ -259,6 +259,9 @@
43.18250 - /* V850 backend magic number.  Written in the absense of an ABI.  */
43.18251 - #define EM_CYGNUS_V850		0x9080
43.18252 - 
43.18253 -+/* AVR32 magic number, picked by IAR Systems. */
43.18254 -+#define EM_AVR32		0x18ad
43.18255 -+
43.18256 - /* old S/390 backend magic number. Written in the absence of an ABI.  */
43.18257 - #define EM_S390_OLD		0xa390
43.18258 - 
43.18259 ---- a/ld/configdoc.texi
43.18260 -+++ b/ld/configdoc.texi
43.18261 -@@ -7,6 +7,7 @@
43.18262 - @set H8300
43.18263 - @set HPPA
43.18264 - @set I960
43.18265 -+@set AVR32
43.18266 - @set M68HC11
43.18267 - @set MMIX
43.18268 - @set MSP430
43.18269 ---- a/ld/configure.tgt
43.18270 -+++ b/ld/configure.tgt
43.18271 -@@ -109,6 +109,9 @@ xscale-*-elf)		targ_emul=armelf
43.18272 - avr-*-*)		targ_emul=avr2
43.18273 - 			targ_extra_emuls="avr1 avr3 avr4 avr5 avr6"
43.18274 - 			;;
43.18275 -+avr32-*-none)       targ_emul=avr32elf_ap7000
43.18276 -+            targ_extra_emuls="avr32elf_ap7001 avr32elf_ap7002 avr32elf_ap7200 avr32elf_uc3a0128 avr32elf_uc3a0256 avr32elf_uc3a0512 avr32elf_uc3a0512es avr32elf_uc3a1128 avr32elf_uc3a1256 avr32elf_uc3a1512es avr32elf_uc3a1512 avr32elf_uc3a364 avr32elf_uc3a364s avr32elf_uc3a3128 avr32elf_uc3a3128s avr32elf_uc3a3256 avr32elf_uc3a3256s avr32elf_uc3b064 avr32elf_uc3b0128 avr32elf_uc3b0256es avr32elf_uc3b0256 avr32elf_uc3b164 avr32elf_uc3b1128 avr32elf_uc3b1256es avr32elf_uc3b1256" ;;
43.18277 -+avr32-*-linux*)     targ_emul=avr32linux ;;
43.18278 - bfin-*-elf)		targ_emul=elf32bfin;
43.18279 - 			targ_extra_emuls="elf32bfinfd"
43.18280 - 			targ_extra_libpath=$targ_extra_emuls
43.18281 ---- /dev/null
43.18282 -+++ b/ld/emulparams/avr32elf.sh
43.18283 -@@ -0,0 +1,163 @@
43.18284 -+# This script is called from ld/genscript.sh 
43.18285 -+# There is a difference on how 'bash' and POSIX handles 
43.18286 -+# the  '.' (source) command in a script.
43.18287 -+# genscript.sh calls this script with argument ${EMULATION_NAME}
43.18288 -+# but that will fail on POSIX compilant shells like 'sh' or 'dash'
43.18289 -+# therefor I use the variable directly instead of $1 
43.18290 -+EMULATION=${EMULATION_NAME}
43.18291 -+SCRIPT_NAME=elf_xip
43.18292 -+TEMPLATE_NAME=elf32
43.18293 -+EXTRA_EM_FILE=avr32elf
43.18294 -+OUTPUT_FORMAT="elf32-avr32"
43.18295 -+ARCH=avr32
43.18296 -+MAXPAGESIZE=4096
43.18297 -+ENTRY=_start
43.18298 -+EMBEDDED=yes
43.18299 -+NO_SMALL_DATA=yes
43.18300 -+NOP=0xd703d703
43.18301 -+
43.18302 -+DATA_SEGMENT_ALIGN=8
43.18303 -+BSS_ALIGNMENT=8
43.18304 -+
43.18305 -+RO_LMA_REGION="FLASH"
43.18306 -+RO_VMA_REGION="FLASH"
43.18307 -+RW_LMA_REGION="FLASH"
43.18308 -+RW_VMA_REGION="CPUSRAM"
43.18309 -+
43.18310 -+STACK_SIZE=0x1000
43.18311 -+STACK_ADDR="ORIGIN(CPUSRAM) + LENGTH(CPUSRAM) - ${STACK_SIZE}"
43.18312 -+
43.18313 -+DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
43.18314 -+  . = ${STACK_ADDR};
43.18315 -+  __heap_end__ = .;"
43.18316 -+
43.18317 -+case "$EMULATION" in
43.18318 -+avr32elf_ap*)
43.18319 -+    MACHINE=ap
43.18320 -+    INITIAL_READONLY_SECTIONS=".reset : {  *(.reset) } >FLASH AT>FLASH
43.18321 -+    . = . & 0x9fffffff;"
43.18322 -+    TEXT_START_ADDR=0xa0000000
43.18323 -+    case "$EMULATION" in
43.18324 -+	    avr32elf_ap700[0-2])
43.18325 -+	       MEMORY="MEMORY
43.18326 -+  {
43.18327 -+	FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 64M
43.18328 -+	CPUSRAM (rwxa) : ORIGIN = 0x24000000, LENGTH = 32K
43.18329 -+  }"
43.18330 -+        ;;
43.18331 -+    avr32elf_ap7200)
43.18332 -+        MEMORY="MEMORY
43.18333 -+  {
43.18334 -+    FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 64M
43.18335 -+    CPUSRAM (rwxa) : ORIGIN = 0x08000000, LENGTH = 64K
43.18336 -+  }"
43.18337 -+        ;;
43.18338 -+    esac
43.18339 -+    ;;
43.18340 -+
43.18341 -+avr32elf_uc3*)
43.18342 -+    MACHINE=uc
43.18343 -+    INITIAL_READONLY_SECTIONS=".reset : {  *(.reset) } >FLASH AT>FLASH"
43.18344 -+    TEXT_START_ADDR=0x80000000
43.18345 -+    OTHER_SECTIONS=".userpage :  {	*(.userpage .userpage.*)  } >USERPAGE AT>USERPAGE
43.18346 -+  	.factorypage :  {	*(.factorypage .factorypage.*)  } >FACTORYPAGE AT>FACTORYPAGE"
43.18347 -+
43.18348 -+    case "$EMULATION" in
43.18349 -+    avr32elf_uc3a[01]512*)
43.18350 -+       MEMORY="MEMORY
43.18351 -+  {
43.18352 -+    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 512K
43.18353 -+    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
43.18354 -+	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
43.18355 -+	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
43.18356 -+  }"
43.18357 -+        ;;
43.18358 -+
43.18359 -+    avr32elf_uc3a[01]256)
43.18360 -+        MEMORY="MEMORY
43.18361 -+  {
43.18362 -+    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
43.18363 -+    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
43.18364 -+	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
43.18365 -+	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
43.18366 -+  }"
43.18367 -+        ;;
43.18368 -+
43.18369 -+    avr32elf_uc3b[01]256*)
43.18370 -+        MEMORY="MEMORY
43.18371 -+  {
43.18372 -+    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
43.18373 -+    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 32K
43.18374 -+	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
43.18375 -+	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
43.18376 -+  }"
43.18377 -+        ;;
43.18378 -+
43.18379 -+    avr32elf_uc3[ab][01]128)
43.18380 -+        MEMORY="MEMORY
43.18381 -+  {
43.18382 -+    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 128K
43.18383 -+    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 32K
43.18384 -+	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
43.18385 -+	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
43.18386 -+  }"
43.18387 -+        ;;
43.18388 -+
43.18389 -+    avr32elf_uc3b[01]64)
43.18390 -+        MEMORY="MEMORY
43.18391 -+  {
43.18392 -+    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 64K
43.18393 -+    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 16K
43.18394 -+	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
43.18395 -+	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
43.18396 -+  }"
43.18397 -+        ;;
43.18398 -+
43.18399 -+    avr32elf_uc3a3256*)
43.18400 -+        MEMORY="MEMORY
43.18401 -+  {
43.18402 -+    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
43.18403 -+    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
43.18404 -+    HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
43.18405 -+	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
43.18406 -+	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
43.18407 -+  }"
43.18408 -+  		OTHER_SECTIONS ="${OTHER_SECTIONS}
43.18409 -+  	.hsbsram       : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
43.18410 -+"
43.18411 -+  		
43.18412 -+        ;;
43.18413 -+
43.18414 -+    avr32elf_uc3a3128*)
43.18415 -+        MEMORY="MEMORY
43.18416 -+  {
43.18417 -+    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 128K
43.18418 -+    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
43.18419 -+    HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
43.18420 -+    USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
43.18421 -+    FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
43.18422 -+  }"
43.18423 -+  		OTHER_SECTIONS ="${OTHER_SECTIONS}
43.18424 -+  	.hsbsram       : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
43.18425 -+"
43.18426 -+        ;;
43.18427 -+
43.18428 -+    avr32elf_uc3a364*)
43.18429 -+        MEMORY="MEMORY
43.18430 -+  {
43.18431 -+    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 64K
43.18432 -+    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
43.18433 -+    HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
43.18434 -+	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
43.18435 -+	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
43.18436 -+  }"
43.18437 -+  		OTHER_SECTIONS ="${OTHER_SECTIONS}
43.18438 -+  	.hsbsram       : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
43.18439 -+"
43.18440 -+        ;;
43.18441 -+
43.18442 -+
43.18443 -+    esac
43.18444 -+    ;;
43.18445 -+
43.18446 -+esac
43.18447 ---- /dev/null
43.18448 -+++ b/ld/emulparams/avr32linux.sh
43.18449 -@@ -0,0 +1,14 @@
43.18450 -+ARCH=avr32
43.18451 -+SCRIPT_NAME=elf
43.18452 -+TEMPLATE_NAME=elf32
43.18453 -+EXTRA_EM_FILE=avr32elf
43.18454 -+OUTPUT_FORMAT="elf32-avr32"
43.18455 -+GENERATE_SHLIB_SCRIPT=yes
43.18456 -+MAXPAGESIZE=0x1000
43.18457 -+TEXT_START_ADDR=0x00001000
43.18458 -+NOP=0xd703d703
43.18459 -+
43.18460 -+# This appears to place the GOT before the data section, which is
43.18461 -+# essential for uClinux.  We don't use those .s* sections on AVR32
43.18462 -+# anyway, so it shouldn't hurt for regular Linux either...
43.18463 -+NO_SMALL_DATA=yes
43.18464 ---- /dev/null
43.18465 -+++ b/ld/emultempl/avr32elf.em
43.18466 -@@ -0,0 +1,133 @@
43.18467 -+# This shell script emits a C file. -*- C -*-
43.18468 -+#   Copyright (C) 2007 Atmel Corporation
43.18469 -+#
43.18470 -+# This file is part of GLD, the Gnu Linker.
43.18471 -+#
43.18472 -+# This program is free software; you can redistribute it and/or modify
43.18473 -+# it under the terms of the GNU General Public License as published by
43.18474 -+# the Free Software Foundation; either version 2 of the License, or
43.18475 -+# (at your option) any later version.
43.18476 -+#
43.18477 -+# This program is distributed in the hope that it will be useful,
43.18478 -+# but WITHOUT ANY WARRANTY; without even the implied warranty of
43.18479 -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
43.18480 -+# GNU General Public License for more details.
43.18481 -+#
43.18482 -+# You should have received a copy of the GNU General Public License
43.18483 -+# along with this program; if not, write to the Free Software
43.18484 -+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
43.18485 -+#
43.18486 -+
43.18487 -+# This file is sourced from elf32.em, and defines extra avr32-elf
43.18488 -+# specific routines.
43.18489 -+#
43.18490 -+
43.18491 -+# Generate linker script for writable rodata
43.18492 -+LD_FLAG=rodata-writable
43.18493 -+DATA_ALIGNMENT=${DATA_ALIGNMENT_}
43.18494 -+RELOCATING=" "
43.18495 -+WRITABLE_RODATA=" "
43.18496 -+( echo "/* Linker script for writable rodata */"
43.18497 -+  . ${CUSTOMIZER_SCRIPT} ${EMULATION_NAME}
43.18498 -+  . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
43.18499 -+) | sed -e '/^ *$/d;s/[ 	]*$//' > ldscripts/${EMULATION_NAME}.xwr
43.18500 -+
43.18501 -+
43.18502 -+cat >> e${EMULATION_NAME}.c <<EOF
43.18503 -+
43.18504 -+#include "libbfd.h"
43.18505 -+#include "elf32-avr32.h"
43.18506 -+
43.18507 -+/* Whether to allow direct references (sub or mov) to SEC_DATA and
43.18508 -+   !SEC_CONTENTS sections when optimizing.  Not enabled by default
43.18509 -+   since it might cause link errors.  */
43.18510 -+static int direct_data_refs = 0;
43.18511 -+
43.18512 -+static void avr32_elf_after_open (void)
43.18513 -+{
43.18514 -+  bfd_elf32_avr32_set_options (&link_info, direct_data_refs);
43.18515 -+  gld${EMULATION_NAME}_after_open ();
43.18516 -+}
43.18517 -+
43.18518 -+static int rodata_writable = 0;
43.18519 -+
43.18520 -+static char * gld${EMULATION_NAME}_get_script (int *isfile);
43.18521 -+
43.18522 -+static char * avr32_elf_get_script (int *isfile)
43.18523 -+{
43.18524 -+  if ( rodata_writable )
43.18525 -+    {
43.18526 -+EOF
43.18527 -+if test -n "$COMPILE_IN"
43.18528 -+then
43.18529 -+# Scripts compiled in.
43.18530 -+
43.18531 -+# sed commands to quote an ld script as a C string.
43.18532 -+sc="-f stringify.sed"
43.18533 -+
43.18534 -+cat >>e${EMULATION_NAME}.c <<EOF
43.18535 -+      *isfile = 0;
43.18536 -+      return
43.18537 -+EOF
43.18538 -+sed $sc ldscripts/${EMULATION_NAME}.xwr			>> e${EMULATION_NAME}.c
43.18539 -+echo  ';'	                                        >> e${EMULATION_NAME}.c
43.18540 -+else
43.18541 -+# Scripts read from the filesystem.
43.18542 -+
43.18543 -+cat >>e${EMULATION_NAME}.c <<EOF
43.18544 -+      *isfile = 1;
43.18545 -+      return "ldscripts/${EMULATION_NAME}.xwr";
43.18546 -+EOF
43.18547 -+fi
43.18548 -+
43.18549 -+cat >>e${EMULATION_NAME}.c <<EOF
43.18550 -+    }
43.18551 -+  return gld${EMULATION_NAME}_get_script (isfile);
43.18552 -+}
43.18553 -+
43.18554 -+
43.18555 -+EOF
43.18556 -+
43.18557 -+# Define some shell vars to insert bits of code into the standard elf
43.18558 -+# parse_args and list_options functions.
43.18559 -+#
43.18560 -+PARSE_AND_LIST_PROLOGUE='
43.18561 -+#define OPTION_DIRECT_DATA		300
43.18562 -+#define OPTION_NO_DIRECT_DATA		301
43.18563 -+#define OPTION_RODATA_WRITABLE		302
43.18564 -+#define OPTION_NO_RODATA_WRITABLE	303
43.18565 -+'
43.18566 -+
43.18567 -+PARSE_AND_LIST_LONGOPTS='
43.18568 -+  { "direct-data", no_argument, NULL, OPTION_DIRECT_DATA },
43.18569 -+  { "no-direct-data", no_argument, NULL, OPTION_NO_DIRECT_DATA },
43.18570 -+  { "rodata-writable", no_argument, NULL, OPTION_RODATA_WRITABLE },
43.18571 -+  { "no-rodata-writable", no_argument, NULL, OPTION_NO_RODATA_WRITABLE },
43.18572 -+'
43.18573 -+
43.18574 -+PARSE_AND_LIST_OPTIONS='
43.18575 -+  fprintf (file, _("  --direct-data\t\tAllow direct data references when optimizing\n"));
43.18576 -+  fprintf (file, _("  --no-direct-data\tDo not allow direct data references when optimizing\n"));
43.18577 -+  fprintf (file, _("  --rodata-writable\tPut read-only data in writable data section\n"));
43.18578 -+  fprintf (file, _("  --no-rodata-writable\tDo not put read-only data in writable data section\n"));
43.18579 -+'
43.18580 -+
43.18581 -+PARSE_AND_LIST_ARGS_CASES='
43.18582 -+    case OPTION_DIRECT_DATA:
43.18583 -+      direct_data_refs = 1;
43.18584 -+      break;
43.18585 -+    case OPTION_NO_DIRECT_DATA:
43.18586 -+      direct_data_refs = 0;
43.18587 -+      break;
43.18588 -+    case OPTION_RODATA_WRITABLE:
43.18589 -+      rodata_writable = 1;
43.18590 -+      break;
43.18591 -+    case OPTION_NO_RODATA_WRITABLE:
43.18592 -+      rodata_writable = 0;
43.18593 -+      break;
43.18594 -+'
43.18595 -+
43.18596 -+# Replace some of the standard ELF functions with our own versions.
43.18597 -+#
43.18598 -+LDEMUL_AFTER_OPEN=avr32_elf_after_open
43.18599 -+LDEMUL_GET_SCRIPT=avr32_elf_get_script
43.18600 ---- a/ld/ld.info
43.18601 -+++ b/ld/ld.info
43.18602 -@@ -4347,6 +4347,8 @@ not listed.
43.18603 - 
43.18604 - * ARM::				`ld' and the ARM family
43.18605 - 
43.18606 -+* AVR32::                       `ld' and AVR32 processors
43.18607 -+
43.18608 - * HPPA ELF32::                  `ld' and HPPA 32-bit ELF
43.18609 - 
43.18610 - * MMIX::			`ld' and MMIX
43.18611 -@@ -4487,7 +4489,7 @@ PIC.  This avoids problems on uClinux ta
43.18612 - used to generate relocatable binaries.
43.18613 - 
43.18614 - 
43.18615 --File: ld.info,  Node: ARM,  Next: HPPA ELF32,  Prev: i960,  Up: Machine Dependent
43.18616 -+File: ld.info,  Node: ARM,  Next: AV32,  Prev: i960,  Up: Machine Dependent
43.18617 - 
43.18618 - 4.4 `ld' and the ARM family
43.18619 - ===========================
43.18620 -@@ -4588,7 +4590,31 @@ enumeration values fitted into the small
43.18621 - diagnosed.
43.18622 - 
43.18623 - 
43.18624 --File: ld.info,  Node: HPPA ELF32,  Next: MMIX,  Prev: ARM,  Up: Machine Dependent
43.18625 -+File: ld.info,  Node: AVR32,  Next: HPPA ELF32,  Prev: ARM,  Up: Machine Dependent
43.18626 -+
43.18627 -+4.4 `ld' and AVR32 processors
43.18628 -+=============================
43.18629 -+
43.18630 -+`--direct-data'
43.18631 -+
43.18632 -+`--no-direct-data'
43.18633 -+     Taking the address of a symbol can often be done by using a direct
43.18634 -+     `mov' or pc-relative `sub' instruction, which is faster than using
43.18635 -+     a PC- or GOT-relative load, especially on the uC3 processors.
43.18636 -+     However, this does not always work when dealing with symbols in
43.18637 -+     the `.data' section so this optimization is disabled by default.
43.18638 -+
43.18639 -+     Specifying `--direct-data' will enable this optimization. Note
43.18640 -+     that this may cause `relocation truncated to fit' errors for
43.18641 -+     certain large programs. If this happens, the optimization can be
43.18642 -+     turned off by specifying `--no-direct-data'.
43.18643 -+
43.18644 -+     All known issues with direct data optimizations are detected at
43.18645 -+     link time, so if the linker doesn't complain, the result should
43.18646 -+     run just fine.
43.18647 -+
43.18648 -+
43.18649 -+File: ld.info,  Node: HPPA ELF32,  Next: MMIX,  Prev: AVR32,  Up: Machine Dependent
43.18650 - 
43.18651 - 4.5 `ld' and HPPA 32-bit ELF Support
43.18652 - ====================================
43.18653 -@@ -6336,6 +6362,7 @@ LD Index
43.18654 - * --no-check-sections:                   Options.            (line  765)
43.18655 - * --no-define-common:                    Options.            (line  787)
43.18656 - * --no-demangle:                         Options.            (line  816)
43.18657 -+* --no-direct-data:                      AVR32.              (line    6)
43.18658 - * --no-dotsyms:                          PowerPC64 ELF64.    (line   33)
43.18659 - * --no-enum-size-warning:                ARM.                (line   94)
43.18660 - * --no-gc-sections:                      Options.            (line  848)
43.18661 -@@ -6534,6 +6561,7 @@ LD Index
43.18662 - * AT(LMA):                               Output Section LMA. (line    6)
43.18663 - * AT>LMA_REGION:                         Output Section LMA. (line    6)
43.18664 - * automatic data imports:                WIN32.              (line  170)
43.18665 -+* AVR32 options:                         AVR32.              (line    6)
43.18666 - * back end:                              BFD.                (line    6)
43.18667 - * BASE (MRI):                            MRI.                (line   54)
43.18668 - * BE8:                                   ARM.                (line   23)
43.18669 -@@ -7018,6 +7046,7 @@ Node: H8/300183897
43.18670 - Node: i960185522
43.18671 - Node: M68HC11/68HC12187207
43.18672 - Node: ARM188910
43.18673 -+Node: AVR32182578
43.18674 - Node: HPPA ELF32193760
43.18675 - Node: MMIX195383
43.18676 - Node: MSP430196600
43.18677 ---- a/ld/ld.texinfo
43.18678 -+++ b/ld/ld.texinfo
43.18679 -@@ -21,6 +21,7 @@
43.18680 - @set UsesEnvVars
43.18681 - @set GENERIC
43.18682 - @set ARM
43.18683 -+@set AVR32
43.18684 - @set H8300
43.18685 - @set HPPA
43.18686 - @set I960
43.18687 -@@ -139,6 +140,9 @@ section entitled ``GNU Free Documentatio
43.18688 - @ifset ARM
43.18689 - * ARM::				ld and the ARM family
43.18690 - @end ifset
43.18691 -+@ifset AVR32
43.18692 -+* AVR32::                       ld and AVR32 processors
43.18693 -+@end ifset
43.18694 - @ifset HPPA
43.18695 - * HPPA ELF32::                  ld and HPPA 32-bit ELF
43.18696 - @end ifset
43.18697 -@@ -5248,6 +5252,9 @@ functionality are not listed.
43.18698 - @ifset ARM
43.18699 - * ARM::				@command{ld} and the ARM family
43.18700 - @end ifset
43.18701 -+@ifset AVR32
43.18702 -+* AVR32::                       @command{ld} and AVR32 processors
43.18703 -+@end ifset
43.18704 - @ifset HPPA
43.18705 - * HPPA ELF32::                  @command{ld} and HPPA 32-bit ELF
43.18706 - @end ifset
43.18707 -@@ -5589,6 +5596,52 @@ not be diagnosed.
43.18708 - @end ifclear
43.18709 - @end ifset
43.18710 - 
43.18711 -+@ifset AVR32
43.18712 -+@ifclear GENERIC
43.18713 -+@raisesections
43.18714 -+@end ifclear
43.18715 -+
43.18716 -+@node AVR32
43.18717 -+@section @command{ld} and AVR32 processors
43.18718 -+@cindex AVR32 options
43.18719 -+@table @option
43.18720 -+@kindex --direct-data
43.18721 -+@kindex --no-direct-data
43.18722 -+@item --direct-data
43.18723 -+@item --no-direct-data
43.18724 -+Taking the address of a symbol can often be done by using a direct
43.18725 -+@code{mov} or pc-relative @code{sub} instruction, which is faster than
43.18726 -+using a PC- or GOT-relative load, especially on the uC3
43.18727 -+processors. However, this does not always work when dealing with
43.18728 -+symbols in the @code{.data} section so this optimization is disabled
43.18729 -+by default.
43.18730 -+
43.18731 -+Specifying @option{--direct-data} will enable this optimization. Note
43.18732 -+that this may cause @samp{relocation truncated to fit} errors for
43.18733 -+certain large programs. If this happens, the optimization can be
43.18734 -+turned off by specifying @option{--no-direct-data}.
43.18735 -+
43.18736 -+All known issues with direct data optimizations are detected at link
43.18737 -+time, so if the linker doesn't complain, the result should run just
43.18738 -+fine.
43.18739 -+
43.18740 -+@kindex --rodata-writable
43.18741 -+@kindex --no-rodata-writable
43.18742 -+@item --rodata-writable
43.18743 -+@item --no-rodata-writable
43.18744 -+Using the @option{--rodata-writable} options will cause the linker
43.18745 -+to try and use a linker script where read-only data will be placed
43.18746 -+in the same section as writable data. This can give great performance 
43.18747 -+gain on cacheless processors where read-only data normally is placed in
43.18748 -+flash, and writable data is placed in internal sram. This will however 
43.18749 -+come at the expence of a larger memory footprint.
43.18750 -+@end table
43.18751 -+
43.18752 -+@ifclear GENERIC
43.18753 -+@lowersections
43.18754 -+@end ifclear
43.18755 -+@end ifset
43.18756 -+
43.18757 - @ifset HPPA
43.18758 - @ifclear GENERIC
43.18759 - @raisesections
43.18760 ---- a/ld/Makefile.am
43.18761 -+++ b/ld/Makefile.am
43.18762 -@@ -137,7 +137,34 @@ ALL_EMULATIONS = \
43.18763 - 	eavr3.o \
43.18764 - 	eavr4.o \
43.18765 - 	eavr5.o \
43.18766 --	eavr6.o \
43.18767 -+    eavr6.o \
43.18768 -+	eavr32elf_ap7000.o \
43.18769 -+	eavr32elf_ap7001.o \
43.18770 -+	eavr32elf_ap7002.o \
43.18771 -+	eavr32elf_ap7200.o \
43.18772 -+	eavr32elf_uc3a0128.o \
43.18773 -+	eavr32elf_uc3a0256.o \
43.18774 -+	eavr32elf_uc3a0512.o \
43.18775 -+	eavr32elf_uc3a0512es.o \
43.18776 -+	eavr32elf_uc3a1128.o \
43.18777 -+	eavr32elf_uc3a1256.o \
43.18778 -+	eavr32elf_uc3a1512es.o \
43.18779 -+	eavr32elf_uc3a1512.o \
43.18780 -+	eavr32elf_uc3a364.o \
43.18781 -+	eavr32elf_uc3a364s.o \
43.18782 -+	eavr32elf_uc3a3128.o \
43.18783 -+	eavr32elf_uc3a3128s.o \
43.18784 -+	eavr32elf_uc3a3256.o \
43.18785 -+	eavr32elf_uc3a3256s.o \
43.18786 -+	eavr32elf_uc3b064.o \
43.18787 -+	eavr32elf_uc3b0128.o \
43.18788 -+	eavr32elf_uc3b0256es.o \
43.18789 -+	eavr32elf_uc3b0256.o \
43.18790 -+	eavr32elf_uc3b164.o \
43.18791 -+	eavr32elf_uc3b1128.o \
43.18792 -+	eavr32elf_uc3b1256es.o \
43.18793 -+	eavr32elf_uc3b1256.o \
43.18794 -+	eavr32linux.o \
43.18795 - 	ecoff_i860.o \
43.18796 - 	ecoff_sparc.o \
43.18797 - 	eelf32_spu.o \
43.18798 -@@ -622,6 +649,114 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
43.18799 -   $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
43.18800 -   ${GEN_DEPENDS}
43.18801 - 	${GENSCRIPTS} avr6 "$(tdir_avr2)"
43.18802 -+eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf.sh \
43.18803 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18804 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18805 -+	${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" avr32elf
43.18806 -+eavr32elf_ap7001.c: $(srcdir)/emulparams/avr32elf.sh \
43.18807 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18808 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18809 -+	${GENSCRIPTS} avr32elf_ap7001 "$(tdir_avr32)" avr32elf
43.18810 -+eavr32elf_ap7002.c: $(srcdir)/emulparams/avr32elf.sh \
43.18811 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18812 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18813 -+	${GENSCRIPTS} avr32elf_ap7002 "$(tdir_avr32)" avr32elf
43.18814 -+eavr32elf_ap7200.c: $(srcdir)/emulparams/avr32elf.sh \
43.18815 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18816 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18817 -+	${GENSCRIPTS} avr32elf_ap7200 "$(tdir_avr32)" avr32elf
43.18818 -+eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf.sh \
43.18819 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18820 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18821 -+	${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)" avr32elf
43.18822 -+eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf.sh \
43.18823 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18824 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18825 -+	${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)" avr32elf
43.18826 -+eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf.sh \
43.18827 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18828 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18829 -+	${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" avr32elf
43.18830 -+eavr32elf_uc3a0512es.c: $(srcdir)/emulparams/avr32elf.sh \
43.18831 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18832 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18833 -+	${GENSCRIPTS} avr32elf_uc3a0512es "$(tdir_avr32)" avr32elf
43.18834 -+eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf.sh \
43.18835 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18836 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18837 -+	${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)" avr32elf
43.18838 -+eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf.sh \
43.18839 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18840 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18841 -+	${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)" avr32elf
43.18842 -+eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf.sh \
43.18843 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18844 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18845 -+	${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)" avr32elf
43.18846 -+eavr32elf_uc3a1512es.c: $(srcdir)/emulparams/avr32elf.sh \
43.18847 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18848 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18849 -+	${GENSCRIPTS} avr32elf_uc3a1512es "$(tdir_avr32)" avr32elf
43.18850 -+eavr32elf_uc3a364.c: $(srcdir)/emulparams/avr32elf.sh \
43.18851 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18852 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18853 -+	${GENSCRIPTS} avr32elf_uc3a364 "$(tdir_avr32)" avr32elf
43.18854 -+eavr32elf_uc3a364s.c: $(srcdir)/emulparams/avr32elf.sh \
43.18855 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18856 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18857 -+	${GENSCRIPTS} avr32elf_uc3a364s "$(tdir_avr32)" avr32elf
43.18858 -+eavr32elf_uc3a3128.c: $(srcdir)/emulparams/avr32elf.sh \
43.18859 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18860 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18861 -+	${GENSCRIPTS} avr32elf_uc3a3128 "$(tdir_avr32)" avr32elf
43.18862 -+eavr32elf_uc3a3128s.c: $(srcdir)/emulparams/avr32elf.sh \
43.18863 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18864 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18865 -+	${GENSCRIPTS} avr32elf_uc3a3128s "$(tdir_avr32)" avr32elf
43.18866 -+eavr32elf_uc3a3256.c: $(srcdir)/emulparams/avr32elf.sh \
43.18867 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18868 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18869 -+	${GENSCRIPTS} avr32elf_uc3a3256 "$(tdir_avr32)" avr32elf
43.18870 -+eavr32elf_uc3a3256s.c: $(srcdir)/emulparams/avr32elf.sh \
43.18871 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18872 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18873 -+	${GENSCRIPTS} avr32elf_uc3a3256s "$(tdir_avr32)" avr32elf
43.18874 -+eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf.sh \
43.18875 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18876 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18877 -+	${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)" avr32elf
43.18878 -+eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf.sh \
43.18879 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18880 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18881 -+	${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)" avr32elf
43.18882 -+eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf.sh \
43.18883 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18884 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18885 -+	${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)" avr32elf
43.18886 -+eavr32elf_uc3b0256es.c: $(srcdir)/emulparams/avr32elf.sh \
43.18887 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18888 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18889 -+	${GENSCRIPTS} avr32elf_uc3b0256es "$(tdir_avr32)" avr32elf
43.18890 -+eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf.sh \
43.18891 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18892 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18893 -+	${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)" avr32elf
43.18894 -+eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf.sh \
43.18895 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18896 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18897 -+	${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)" avr32elf
43.18898 -+eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf.sh \
43.18899 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18900 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18901 -+	${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)" avr32elf
43.18902 -+eavr32elf_uc3b1256es.c: $(srcdir)/emulparams/avr32elf.sh \
43.18903 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18904 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.18905 -+	${GENSCRIPTS} avr32elf_uc3b1256es "$(tdir_avr32)" avr32elf
43.18906 -+eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
43.18907 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.18908 -+  $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
43.18909 -+	${GENSCRIPTS} avr32linux "$(tdir_avr32)"
43.18910 - ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
43.18911 -   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
43.18912 - 	${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
43.18913 -@@ -1877,7 +2012,9 @@ install-exec-local: ld-new$(EXEEXT)
43.18914 - 	  || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
43.18915 - 	fi
43.18916 - 
43.18917 --install-data-local:
43.18918 -+# We want install to imply install-info as per GNU standards, despite the
43.18919 -+# cygnus option.
43.18920 -+install-data-local: install-info
43.18921 - 	$(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
43.18922 - 	for f in ldscripts/*; do \
43.18923 - 	  $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
43.18924 ---- /dev/null
43.18925 -+++ b/ld/scripttempl/elf_xip.sc
43.18926 -@@ -0,0 +1,456 @@
43.18927 -+#
43.18928 -+# Unusual variables checked by this code:
43.18929 -+#	NOP - four byte opcode for no-op (defaults to 0)
43.18930 -+#	NO_SMALL_DATA - no .sbss/.sbss2/.sdata/.sdata2 sections if not
43.18931 -+#		empty.
43.18932 -+#	SMALL_DATA_CTOR - .ctors contains small data.
43.18933 -+#	SMALL_DATA_DTOR - .dtors contains small data.
43.18934 -+#	DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
43.18935 -+#	INITIAL_READONLY_SECTIONS - at start of text segment
43.18936 -+#	OTHER_READONLY_SECTIONS - other than .text .init .rodata ...
43.18937 -+#		(e.g., .PARISC.milli)
43.18938 -+#	OTHER_TEXT_SECTIONS - these get put in .text when relocating
43.18939 -+#	OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
43.18940 -+#		(e.g., .PARISC.global)
43.18941 -+#	OTHER_RELRO_SECTIONS - other than .data.rel.ro ...
43.18942 -+#		(e.g. PPC32 .fixup, .got[12])
43.18943 -+#	OTHER_BSS_SECTIONS - other than .bss .sbss ...
43.18944 -+#	OTHER_SECTIONS - at the end
43.18945 -+#	EXECUTABLE_SYMBOLS - symbols that must be defined for an
43.18946 -+#		executable (e.g., _DYNAMIC_LINK)
43.18947 -+#       TEXT_START_ADDR - the first byte of the text segment, after any
43.18948 -+#               headers.
43.18949 -+#       TEXT_BASE_ADDRESS - the first byte of the text segment.
43.18950 -+#	TEXT_START_SYMBOLS - symbols that appear at the start of the
43.18951 -+#		.text section.
43.18952 -+#	DATA_START_SYMBOLS - symbols that appear at the start of the
43.18953 -+#		.data section.
43.18954 -+#	OTHER_GOT_SYMBOLS - symbols defined just before .got.
43.18955 -+#	OTHER_GOT_SECTIONS - sections just after .got.
43.18956 -+#	OTHER_SDATA_SECTIONS - sections just after .sdata.
43.18957 -+#	OTHER_BSS_SYMBOLS - symbols that appear at the start of the
43.18958 -+#		.bss section besides __bss_start.
43.18959 -+#	DATA_PLT - .plt should be in data segment, not text segment.
43.18960 -+#	PLT_BEFORE_GOT - .plt just before .got when .plt is in data segement.
43.18961 -+#	BSS_PLT - .plt should be in bss segment
43.18962 -+#	TEXT_DYNAMIC - .dynamic in text segment, not data segment.
43.18963 -+#	EMBEDDED - whether this is for an embedded system.
43.18964 -+#	SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
43.18965 -+#		start address of shared library.
43.18966 -+#	INPUT_FILES - INPUT command of files to always include
43.18967 -+#	WRITABLE_RODATA - if set, the .rodata section should be writable
43.18968 -+#	INIT_START, INIT_END -  statements just before and just after
43.18969 -+# 	combination of .init sections.
43.18970 -+#	FINI_START, FINI_END - statements just before and just after
43.18971 -+# 	combination of .fini sections.
43.18972 -+#	STACK_ADDR - start of a .stack section.
43.18973 -+#	OTHER_END_SYMBOLS - symbols to place right at the end of the script.
43.18974 -+#	SEPARATE_GOTPLT - if set, .got.plt should be separate output section,
43.18975 -+#		so that .got can be in the RELRO area.  It should be set to
43.18976 -+#		the number of bytes in the beginning of .got.plt which can be
43.18977 -+#		in the RELRO area as well.
43.18978 -+#
43.18979 -+# When adding sections, do note that the names of some sections are used
43.18980 -+# when specifying the start address of the next.
43.18981 -+#
43.18982 -+
43.18983 -+#  Many sections come in three flavours.  There is the 'real' section,
43.18984 -+#  like ".data".  Then there are the per-procedure or per-variable
43.18985 -+#  sections, generated by -ffunction-sections and -fdata-sections in GCC,
43.18986 -+#  and useful for --gc-sections, which for a variable "foo" might be
43.18987 -+#  ".data.foo".  Then there are the linkonce sections, for which the linker
43.18988 -+#  eliminates duplicates, which are named like ".gnu.linkonce.d.foo".
43.18989 -+#  The exact correspondences are:
43.18990 -+#
43.18991 -+#  Section	Linkonce section
43.18992 -+#  .text	.gnu.linkonce.t.foo
43.18993 -+#  .rodata	.gnu.linkonce.r.foo
43.18994 -+#  .data	.gnu.linkonce.d.foo
43.18995 -+#  .bss		.gnu.linkonce.b.foo
43.18996 -+#  .sdata	.gnu.linkonce.s.foo
43.18997 -+#  .sbss	.gnu.linkonce.sb.foo
43.18998 -+#  .sdata2	.gnu.linkonce.s2.foo
43.18999 -+#  .sbss2	.gnu.linkonce.sb2.foo
43.19000 -+#  .debug_info	.gnu.linkonce.wi.foo
43.19001 -+#  .tdata	.gnu.linkonce.td.foo
43.19002 -+#  .tbss	.gnu.linkonce.tb.foo
43.19003 -+#
43.19004 -+#  Each of these can also have corresponding .rel.* and .rela.* sections.
43.19005 -+
43.19006 -+test -z "$ENTRY" && ENTRY=_start
43.19007 -+test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
43.19008 -+test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
43.19009 -+if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
43.19010 -+test -z "${ELFSIZE}" && ELFSIZE=32
43.19011 -+test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
43.19012 -+test "$LD_FLAG" = "N" && DATA_ADDR=.
43.19013 -+test -n "$CREATE_SHLIB$CREATE_PIE" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE=""
43.19014 -+test -z "$CREATE_SHLIB$CREATE_PIE" && test -n "$DATA_ADDR" && COMMONPAGESIZE=""
43.19015 -+test -n "$RELRO_NOW" && unset SEPARATE_GOTPLT
43.19016 -+if test -n "$RELOCATING"; then
43.19017 -+  RO_REGION="${RO_VMA_REGION+ >}${RO_VMA_REGION}${RO_LMA_REGION+ AT>}${RO_LMA_REGION}"
43.19018 -+  RW_REGION="${RW_VMA_REGION+ >}${RW_VMA_REGION}${RW_LMA_REGION+ AT>}${RW_LMA_REGION}"
43.19019 -+else
43.19020 -+  RO_REGION=""
43.19021 -+  RW_REGION=""
43.19022 -+fi
43.19023 -+INTERP=".interp       ${RELOCATING-0} : { *(.interp) }${RO_REGION}"
43.19024 -+PLT=".plt          ${RELOCATING-0} : { *(.plt) }"
43.19025 -+if test -z "$GOT"; then
43.19026 -+  if test -z "$SEPARATE_GOTPLT"; then
43.19027 -+    GOT=".got          ${RELOCATING-0} : { *(.got.plt) *(.got) }"
43.19028 -+  else
43.19029 -+    GOT=".got          ${RELOCATING-0} : { *(.got) }"
43.19030 -+    GOTPLT="${RELOCATING+${DATA_SEGMENT_RELRO_GOTPLT_END}}
43.19031 -+  .got.plt      ${RELOCATING-0} : { *(.got.plt) }"
43.19032 -+  fi
43.19033 -+fi
43.19034 -+DALIGN=".dalign	: { . = ALIGN(${DATA_SEGMENT_ALIGN}); PROVIDE(_data_lma = .); }${RO_REGION}"
43.19035 -+BALIGN=".balign	: { . = ALIGN(${BSS_ALIGNMENT}); _edata = .; }${RW_REGION}"
43.19036 -+DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
43.19037 -+RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
43.19038 -+DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) }${RW_REGION}"
43.19039 -+STACKNOTE="/DISCARD/ : { *(.note.GNU-stack) }"
43.19040 -+if test -z "${NO_SMALL_DATA}"; then
43.19041 -+  SBSS=".sbss         ${RELOCATING-0} :
43.19042 -+  {
43.19043 -+    ${RELOCATING+PROVIDE (__sbss_start = .);}
43.19044 -+    ${RELOCATING+PROVIDE (___sbss_start = .);}
43.19045 -+    ${CREATE_SHLIB+*(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)}
43.19046 -+    *(.dynsbss)
43.19047 -+    *(.sbss${RELOCATING+ .sbss.* .gnu.linkonce.sb.*})
43.19048 -+    *(.scommon)
43.19049 -+    ${RELOCATING+PROVIDE (__sbss_end = .);}
43.19050 -+    ${RELOCATING+PROVIDE (___sbss_end = .);}
43.19051 -+  }${RW_REGION}"
43.19052 -+  SBSS2=".sbss2        ${RELOCATING-0} : { *(.sbss2${RELOCATING+ .sbss2.* .gnu.linkonce.sb2.*}) }${RW_REGION}"
43.19053 -+  SDATA="/* We want the small data sections together, so single-instruction offsets
43.19054 -+     can access them all, and initialized data all before uninitialized, so
43.19055 -+     we can shorten the on-disk segment size.  */
43.19056 -+  .sdata        ${RELOCATING-0} :
43.19057 -+  {
43.19058 -+    ${RELOCATING+${SDATA_START_SYMBOLS}}
43.19059 -+    ${CREATE_SHLIB+*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)}
43.19060 -+    *(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
43.19061 -+  }${RW_REGION}"
43.19062 -+  SDATA2=".sdata2       ${RELOCATING-0} : { *(.sdata2${RELOCATING+ .sdata2.* .gnu.linkonce.s2.*}) }${RW_REGION}"
43.19063 -+  REL_SDATA=".rel.sdata    ${RELOCATING-0} : { *(.rel.sdata${RELOCATING+ .rel.sdata.* .rel.gnu.linkonce.s.*}) }${RO_REGION}
43.19064 -+  .rela.sdata   ${RELOCATING-0} : { *(.rela.sdata${RELOCATING+ .rela.sdata.* .rela.gnu.linkonce.s.*}) }"
43.19065 -+  REL_SBSS=".rel.sbss     ${RELOCATING-0} : { *(.rel.sbss${RELOCATING+ .rel.sbss.* .rel.gnu.linkonce.sb.*}) }${RO_REGION}
43.19066 -+  .rela.sbss    ${RELOCATING-0} : { *(.rela.sbss${RELOCATING+ .rela.sbss.* .rela.gnu.linkonce.sb.*}) }${RO_REGION}"
43.19067 -+  REL_SDATA2=".rel.sdata2   ${RELOCATING-0} : { *(.rel.sdata2${RELOCATING+ .rel.sdata2.* .rel.gnu.linkonce.s2.*}) }${RO_REGION}
43.19068 -+  .rela.sdata2  ${RELOCATING-0} : { *(.rela.sdata2${RELOCATING+ .rela.sdata2.* .rela.gnu.linkonce.s2.*}) }${RO_REGION}"
43.19069 -+  REL_SBSS2=".rel.sbss2    ${RELOCATING-0} : { *(.rel.sbss2${RELOCATING+ .rel.sbss2.* .rel.gnu.linkonce.sb2.*}) }${RO_REGION}
43.19070 -+  .rela.sbss2   ${RELOCATING-0} : { *(.rela.sbss2${RELOCATING+ .rela.sbss2.* .rela.gnu.linkonce.sb2.*}) }${RO_REGION}"
43.19071 -+else
43.19072 -+  NO_SMALL_DATA=" "
43.19073 -+fi
43.19074 -+test -n "$SEPARATE_GOTPLT" && SEPARATE_GOTPLT=" "
43.19075 -+CTOR=".ctors        ${CONSTRUCTING-0} :
43.19076 -+  {
43.19077 -+    ${CONSTRUCTING+${CTOR_START}}
43.19078 -+    /* gcc uses crtbegin.o to find the start of
43.19079 -+       the constructors, so we make sure it is
43.19080 -+       first.  Because this is a wildcard, it
43.19081 -+       doesn't matter if the user does not
43.19082 -+       actually link against crtbegin.o; the
43.19083 -+       linker won't look for a file to match a
43.19084 -+       wildcard.  The wildcard also means that it
43.19085 -+       doesn't matter which directory crtbegin.o
43.19086 -+       is in.  */
43.19087 -+
43.19088 -+    KEEP (*crtbegin*.o(.ctors))
43.19089 -+
43.19090 -+    /* We don't want to include the .ctor section from
43.19091 -+       from the crtend.o file until after the sorted ctors.
43.19092 -+       The .ctor section from the crtend file contains the
43.19093 -+       end of ctors marker and it must be last */
43.19094 -+
43.19095 -+    KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors))
43.19096 -+    KEEP (*(SORT(.ctors.*)))
43.19097 -+    KEEP (*(.ctors))
43.19098 -+    ${CONSTRUCTING+${CTOR_END}}
43.19099 -+  }"
43.19100 -+DTOR=".dtors        ${CONSTRUCTING-0} :
43.19101 -+  {
43.19102 -+    ${CONSTRUCTING+${DTOR_START}}
43.19103 -+    KEEP (*crtbegin*.o(.dtors))
43.19104 -+    KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors))
43.19105 -+    KEEP (*(SORT(.dtors.*)))
43.19106 -+    KEEP (*(.dtors))
43.19107 -+    ${CONSTRUCTING+${DTOR_END}}
43.19108 -+  }"
43.19109 -+STACK=".stack        ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
43.19110 -+  {
43.19111 -+    ${RELOCATING+_stack = .;}
43.19112 -+    *(.stack)
43.19113 -+    ${RELOCATING+${STACK_SIZE+. = ${STACK_SIZE};}}
43.19114 -+    ${RELOCATING+_estack = .;}
43.19115 -+  }${RW_REGION}"
43.19116 -+
43.19117 -+# if this is for an embedded system, don't add SIZEOF_HEADERS.
43.19118 -+if [ -z "$EMBEDDED" ]; then
43.19119 -+   test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR} + SIZEOF_HEADERS"
43.19120 -+else
43.19121 -+   test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR}"
43.19122 -+fi
43.19123 -+
43.19124 -+cat <<EOF
43.19125 -+OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
43.19126 -+	      "${LITTLE_OUTPUT_FORMAT}")
43.19127 -+OUTPUT_ARCH(${OUTPUT_ARCH})
43.19128 -+ENTRY(${ENTRY})
43.19129 -+
43.19130 -+${RELOCATING+${LIB_SEARCH_DIRS}}
43.19131 -+${RELOCATING+/* Do we need any of these for elf?
43.19132 -+   __DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}}  */}
43.19133 -+${RELOCATING+${EXECUTABLE_SYMBOLS}}
43.19134 -+${RELOCATING+${INPUT_FILES}}
43.19135 -+${RELOCATING- /* For some reason, the Solaris linker makes bad executables
43.19136 -+  if gld -r is used and the intermediate file has sections starting
43.19137 -+  at non-zero addresses.  Could be a Solaris ld bug, could be a GNU ld
43.19138 -+  bug.  But for now assigning the zero vmas works.  */}
43.19139 -+
43.19140 -+${RELOCATING+${MEMORY}}
43.19141 -+
43.19142 -+SECTIONS
43.19143 -+{
43.19144 -+  /* Read-only sections, merged into text segment: */
43.19145 -+  ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR}); . = ${TEXT_BASE_ADDRESS};}}}
43.19146 -+  ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
43.19147 -+  ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
43.19148 -+  ${CREATE_SHLIB-${INTERP}}
43.19149 -+  ${INITIAL_READONLY_SECTIONS}
43.19150 -+  ${TEXT_DYNAMIC+${DYNAMIC}${RO_REGION}}
43.19151 -+  .hash         ${RELOCATING-0} : { *(.hash) }${RO_REGION}
43.19152 -+  .dynsym       ${RELOCATING-0} : { *(.dynsym) }${RO_REGION}
43.19153 -+  .dynstr       ${RELOCATING-0} : { *(.dynstr) }${RO_REGION}
43.19154 -+  .gnu.version  ${RELOCATING-0} : { *(.gnu.version) }${RO_REGION}
43.19155 -+  .gnu.version_d ${RELOCATING-0}: { *(.gnu.version_d) }${RO_REGION}
43.19156 -+  .gnu.version_r ${RELOCATING-0}: { *(.gnu.version_r) }${RO_REGION}
43.19157 -+
43.19158 -+EOF
43.19159 -+if [ "x$COMBRELOC" = x ]; then
43.19160 -+  COMBRELOCCAT=cat
43.19161 -+else
43.19162 -+  COMBRELOCCAT="cat > $COMBRELOC"
43.19163 -+fi
43.19164 -+eval $COMBRELOCCAT <<EOF
43.19165 -+  .rel.init     ${RELOCATING-0} : { *(.rel.init) }${RO_REGION}
43.19166 -+  .rela.init    ${RELOCATING-0} : { *(.rela.init) }${RO_REGION}
43.19167 -+  .rel.text     ${RELOCATING-0} : { *(.rel.text${RELOCATING+ .rel.text.* .rel.gnu.linkonce.t.*}) }${RO_REGION}
43.19168 -+  .rela.text    ${RELOCATING-0} : { *(.rela.text${RELOCATING+ .rela.text.* .rela.gnu.linkonce.t.*}) }${RO_REGION}
43.19169 -+  .rel.fini     ${RELOCATING-0} : { *(.rel.fini) }${RO_REGION}
43.19170 -+  .rela.fini    ${RELOCATING-0} : { *(.rela.fini) }${RO_REGION}
43.19171 -+  .rel.rodata   ${RELOCATING-0} : { *(.rel.rodata${RELOCATING+ .rel.rodata.* .rel.gnu.linkonce.r.*}) }${RO_REGION}
43.19172 -+  .rela.rodata  ${RELOCATING-0} : { *(.rela.rodata${RELOCATING+ .rela.rodata.* .rela.gnu.linkonce.r.*}) }${RO_REGION}
43.19173 -+  ${OTHER_READONLY_RELOC_SECTIONS}
43.19174 -+  .rel.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
43.19175 -+  .rela.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
43.19176 -+  .rel.data     ${RELOCATING-0} : { *(.rel.data${RELOCATING+ .rel.data.* .rel.gnu.linkonce.d.*}) }${RO_REGION}
43.19177 -+  .rela.data    ${RELOCATING-0} : { *(.rela.data${RELOCATING+ .rela.data.* .rela.gnu.linkonce.d.*}) }${RO_REGION}
43.19178 -+  .rel.tdata	${RELOCATING-0} : { *(.rel.tdata${RELOCATING+ .rel.tdata.* .rel.gnu.linkonce.td.*}) }${RO_REGION}
43.19179 -+  .rela.tdata	${RELOCATING-0} : { *(.rela.tdata${RELOCATING+ .rela.tdata.* .rela.gnu.linkonce.td.*}) }${RO_REGION}
43.19180 -+  .rel.tbss	${RELOCATING-0} : { *(.rel.tbss${RELOCATING+ .rel.tbss.* .rel.gnu.linkonce.tb.*}) }${RO_REGION}
43.19181 -+  .rela.tbss	${RELOCATING-0} : { *(.rela.tbss${RELOCATING+ .rela.tbss.* .rela.gnu.linkonce.tb.*}) }${RO_REGION}
43.19182 -+  .rel.ctors    ${RELOCATING-0} : { *(.rel.ctors) }${RO_REGION}
43.19183 -+  .rela.ctors   ${RELOCATING-0} : { *(.rela.ctors) }${RO_REGION}
43.19184 -+  .rel.dtors    ${RELOCATING-0} : { *(.rel.dtors) }${RO_REGION}
43.19185 -+  .rela.dtors   ${RELOCATING-0} : { *(.rela.dtors) }${RO_REGION}
43.19186 -+  .rel.got      ${RELOCATING-0} : { *(.rel.got) }${RO_REGION}
43.19187 -+  .rela.got     ${RELOCATING-0} : { *(.rela.got) }${RO_REGION}
43.19188 -+  ${OTHER_GOT_RELOC_SECTIONS}
43.19189 -+  ${REL_SDATA}
43.19190 -+  ${REL_SBSS}
43.19191 -+  ${REL_SDATA2}
43.19192 -+  ${REL_SBSS2}
43.19193 -+  .rel.bss      ${RELOCATING-0} : { *(.rel.bss${RELOCATING+ .rel.bss.* .rel.gnu.linkonce.b.*}) }${RO_REGION}
43.19194 -+  .rela.bss     ${RELOCATING-0} : { *(.rela.bss${RELOCATING+ .rela.bss.* .rela.gnu.linkonce.b.*}) }${RO_REGION}
43.19195 -+EOF
43.19196 -+if [ -n "$COMBRELOC" ]; then
43.19197 -+cat <<EOF
43.19198 -+  .rel.dyn      ${RELOCATING-0} :
43.19199 -+    {
43.19200 -+EOF
43.19201 -+sed -e '/^[ 	]*[{}][ 	]*$/d;/:[ 	]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/      \1/' $COMBRELOC
43.19202 -+cat <<EOF
43.19203 -+    }${RO_REGION}
43.19204 -+  .rela.dyn     ${RELOCATING-0} :
43.19205 -+    {
43.19206 -+EOF
43.19207 -+sed -e '/^[ 	]*[{}][ 	]*$/d;/:[ 	]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/      \1/' $COMBRELOC
43.19208 -+cat <<EOF
43.19209 -+    }${RO_REGION}
43.19210 -+EOF
43.19211 -+fi
43.19212 -+cat <<EOF
43.19213 -+  .rel.plt      ${RELOCATING-0} : { *(.rel.plt) }${RO_REGION}
43.19214 -+  .rela.plt     ${RELOCATING-0} : { *(.rela.plt) }${RO_REGION}
43.19215 -+  ${OTHER_PLT_RELOC_SECTIONS}
43.19216 -+
43.19217 -+  .init         ${RELOCATING-0} :
43.19218 -+  {
43.19219 -+    ${RELOCATING+${INIT_START}}
43.19220 -+    KEEP (*(.init))
43.19221 -+    ${RELOCATING+${INIT_END}}
43.19222 -+  }${RO_REGION} =${NOP-0}
43.19223 -+
43.19224 -+  ${DATA_PLT-${BSS_PLT-${PLT}${RO_REGION}}}
43.19225 -+  .text         ${RELOCATING-0} :
43.19226 -+  {
43.19227 -+    ${RELOCATING+${TEXT_START_SYMBOLS}}
43.19228 -+    *(.text .stub${RELOCATING+ .text.* .gnu.linkonce.t.*})
43.19229 -+    KEEP (*(.text.*personality*))
43.19230 -+    /* .gnu.warning sections are handled specially by elf32.em.  */
43.19231 -+    *(.gnu.warning)
43.19232 -+    ${RELOCATING+${OTHER_TEXT_SECTIONS}}
43.19233 -+  }${RO_REGION} =${NOP-0}
43.19234 -+  .fini         ${RELOCATING-0} :
43.19235 -+  {
43.19236 -+    ${RELOCATING+${FINI_START}}
43.19237 -+    KEEP (*(.fini))
43.19238 -+    ${RELOCATING+${FINI_END}}
43.19239 -+  }${RO_REGION} =${NOP-0}
43.19240 -+  ${RELOCATING+PROVIDE (__etext = .);}
43.19241 -+  ${RELOCATING+PROVIDE (_etext = .);}
43.19242 -+  ${RELOCATING+PROVIDE (etext = .);}
43.19243 -+  ${WRITABLE_RODATA-${RODATA}${RO_REGION}}
43.19244 -+  .rodata1      ${RELOCATING-0} : { *(.rodata1) }${RO_REGION}
43.19245 -+  ${CREATE_SHLIB-${SDATA2}}
43.19246 -+  ${CREATE_SHLIB-${SBSS2}}
43.19247 -+  ${OTHER_READONLY_SECTIONS}
43.19248 -+  .eh_frame_hdr : { *(.eh_frame_hdr) }${RO_REGION}
43.19249 -+  .eh_frame     ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) }${RO_REGION}
43.19250 -+  .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RO_REGION}
43.19251 -+
43.19252 -+  ${RELOCATING+${DALIGN}}
43.19253 -+  ${RELOCATING+PROVIDE (_data = ORIGIN(${RW_VMA_REGION}));}
43.19254 -+  . = ORIGIN(${RW_VMA_REGION});
43.19255 -+  /* Exception handling  */
43.19256 -+  .eh_frame     ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.eh_frame)) }${RW_REGION}
43.19257 -+  .gcc_except_table ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RW_REGION}
43.19258 -+
43.19259 -+  /* Thread Local Storage sections  */
43.19260 -+  .tdata	${RELOCATING-0} : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }${RW_REGION}
43.19261 -+  .tbss		${RELOCATING-0} : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }${RW_REGION}
43.19262 -+
43.19263 -+  /* Ensure the __preinit_array_start label is properly aligned.  We
43.19264 -+     could instead move the label definition inside the section, but
43.19265 -+     the linker would then create the section even if it turns out to
43.19266 -+     be empty, which isn't pretty.  */
43.19267 -+  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_start = ALIGN(${ALIGNMENT}));}}
43.19268 -+  .preinit_array   ${RELOCATING-0} : { KEEP (*(.preinit_array)) }${RW_REGION}
43.19269 -+  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_end = .);}}
43.19270 -+
43.19271 -+  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_start = .);}}
43.19272 -+  .init_array   ${RELOCATING-0} : { KEEP (*(.init_array)) }${RW_REGION}
43.19273 -+  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_end = .);}}
43.19274 -+
43.19275 -+  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_start = .);}}
43.19276 -+  .fini_array   ${RELOCATING-0} : { KEEP (*(.fini_array)) }${RW_REGION}
43.19277 -+  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_end = .);}}
43.19278 -+
43.19279 -+  ${SMALL_DATA_CTOR-${RELOCATING+${CTOR}${RW_REGION}}}
43.19280 -+  ${SMALL_DATA_DTOR-${RELOCATING+${DTOR}${RW_REGION}}}
43.19281 -+  .jcr          ${RELOCATING-0} : { KEEP (*(.jcr)) }${RW_REGION}
43.19282 -+
43.19283 -+  ${RELOCATING+${DATARELRO}}
43.19284 -+  ${OTHER_RELRO_SECTIONS}
43.19285 -+  ${TEXT_DYNAMIC-${DYNAMIC}${RW_REGION}}
43.19286 -+  ${NO_SMALL_DATA+${RELRO_NOW+${GOT}${RW_REGION}}}
43.19287 -+  ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOT}${RW_REGION}}}}
43.19288 -+  ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOTPLT}${RW_REGION}}}}
43.19289 -+  ${RELOCATING+${DATA_SEGMENT_RELRO_END}}
43.19290 -+  ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT-${GOT}${RW_REGION}}}}
43.19291 -+
43.19292 -+  ${DATA_PLT+${PLT_BEFORE_GOT-${PLT}${RW_REGION}}}
43.19293 -+
43.19294 -+  .data         ${RELOCATING-0} :
43.19295 -+  {
43.19296 -+    ${RELOCATING+${DATA_START_SYMBOLS}}
43.19297 -+    *(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
43.19298 -+    KEEP (*(.gnu.linkonce.d.*personality*))
43.19299 -+    ${CONSTRUCTING+SORT(CONSTRUCTORS)}
43.19300 -+  }${RW_REGION}
43.19301 -+  .data1        ${RELOCATING-0} : { *(.data1) }${RW_REGION}
43.19302 -+  ${WRITABLE_RODATA+${RODATA}${RW_REGION}}
43.19303 -+  ${OTHER_READWRITE_SECTIONS}
43.19304 -+  ${SMALL_DATA_CTOR+${RELOCATING+${CTOR}${RW_REGION}}}
43.19305 -+  ${SMALL_DATA_DTOR+${RELOCATING+${DTOR}${RW_REGION}}}
43.19306 -+  ${DATA_PLT+${PLT_BEFORE_GOT+${PLT}${RW_REGION}}}
43.19307 -+  ${RELOCATING+${OTHER_GOT_SYMBOLS}}
43.19308 -+  ${NO_SMALL_DATA-${GOT}${RW_REGION}}
43.19309 -+  ${OTHER_GOT_SECTIONS}
43.19310 -+  ${SDATA}
43.19311 -+  ${OTHER_SDATA_SECTIONS}
43.19312 -+  ${RELOCATING+${BALIGN}}
43.19313 -+  ${RELOCATING+_edata = .;}
43.19314 -+  ${RELOCATING+PROVIDE (edata = .);}
43.19315 -+  ${RELOCATING+__bss_start = .;}
43.19316 -+  ${RELOCATING+${OTHER_BSS_SYMBOLS}}
43.19317 -+  ${SBSS}
43.19318 -+  ${BSS_PLT+${PLT}${RW_REGION}}
43.19319 -+  .bss          ${RELOCATING-0} :
43.19320 -+  {
43.19321 -+   *(.dynbss)
43.19322 -+   *(.bss${RELOCATING+ .bss.* .gnu.linkonce.b.*})
43.19323 -+   *(COMMON)
43.19324 -+   /* Align here to ensure that the .bss section occupies space up to
43.19325 -+      _end.  Align after .bss to ensure correct alignment even if the
43.19326 -+      .bss section disappears because there are no input sections.  */
43.19327 -+   ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
43.19328 -+  }${RW_REGION}
43.19329 -+  ${OTHER_BSS_SECTIONS}
43.19330 -+  ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
43.19331 -+  ${RELOCATING+_end = .;}
43.19332 -+  ${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
43.19333 -+  ${RELOCATING+PROVIDE (end = .);}
43.19334 -+  ${RELOCATING+${DATA_SEGMENT_END}}
43.19335 -+
43.19336 -+  /* Stabs debugging sections.  */
43.19337 -+  .stab          0 : { *(.stab) }
43.19338 -+  .stabstr       0 : { *(.stabstr) }
43.19339 -+  .stab.excl     0 : { *(.stab.excl) }
43.19340 -+  .stab.exclstr  0 : { *(.stab.exclstr) }
43.19341 -+  .stab.index    0 : { *(.stab.index) }
43.19342 -+  .stab.indexstr 0 : { *(.stab.indexstr) }
43.19343 -+
43.19344 -+  .comment       0 : { *(.comment) }
43.19345 -+
43.19346 -+  /* DWARF debug sections.
43.19347 -+     Symbols in the DWARF debugging sections are relative to the beginning
43.19348 -+     of the section so we begin them at 0.  */
43.19349 -+
43.19350 -+  /* DWARF 1 */
43.19351 -+  .debug          0 : { *(.debug) }
43.19352 -+  .line           0 : { *(.line) }
43.19353 -+
43.19354 -+  /* GNU DWARF 1 extensions */
43.19355 -+  .debug_srcinfo  0 : { *(.debug_srcinfo) }
43.19356 -+  .debug_sfnames  0 : { *(.debug_sfnames) }
43.19357 -+
43.19358 -+  /* DWARF 1.1 and DWARF 2 */
43.19359 -+  .debug_aranges  0 : { *(.debug_aranges) }
43.19360 -+  .debug_pubnames 0 : { *(.debug_pubnames) }
43.19361 -+
43.19362 -+  /* DWARF 2 */
43.19363 -+  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
43.19364 -+  .debug_abbrev   0 : { *(.debug_abbrev) }
43.19365 -+  .debug_line     0 : { *(.debug_line) }
43.19366 -+  .debug_frame    0 : { *(.debug_frame) }
43.19367 -+  .debug_str      0 : { *(.debug_str) }
43.19368 -+  .debug_loc      0 : { *(.debug_loc) }
43.19369 -+  .debug_macinfo  0 : { *(.debug_macinfo) }
43.19370 -+
43.19371 -+  /* SGI/MIPS DWARF 2 extensions */
43.19372 -+  .debug_weaknames 0 : { *(.debug_weaknames) }
43.19373 -+  .debug_funcnames 0 : { *(.debug_funcnames) }
43.19374 -+  .debug_typenames 0 : { *(.debug_typenames) }
43.19375 -+  .debug_varnames  0 : { *(.debug_varnames) }
43.19376 -+
43.19377 -+  ${STACK_ADDR+${STACK}}
43.19378 -+  ${OTHER_SECTIONS}
43.19379 -+  ${RELOCATING+${OTHER_END_SYMBOLS}}
43.19380 -+  ${RELOCATING+${STACKNOTE}}
43.19381 -+}
43.19382 -+EOF
43.19383 ---- /dev/null
43.19384 -+++ b/ld/testsuite/ld-avr32/avr32.exp
43.19385 -@@ -0,0 +1,25 @@
43.19386 -+# Expect script for AVR32 ELF linker tests.
43.19387 -+#   Copyright 2004-2006 Atmel Corporation.
43.19388 -+#
43.19389 -+# This file is free software; you can redistribute it and/or modify
43.19390 -+# it under the terms of the GNU General Public License as published by
43.19391 -+# the Free Software Foundation; either version 2 of the License, or
43.19392 -+# (at your option) any later version.
43.19393 -+#
43.19394 -+# This program is distributed in the hope that it will be useful,
43.19395 -+# but WITHOUT ANY WARRANTY; without even the implied warranty of
43.19396 -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
43.19397 -+# GNU General Public License for more details.
43.19398 -+#
43.19399 -+# You should have received a copy of the GNU General Public License
43.19400 -+# along with this program; if not, write to the Free Software
43.19401 -+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
43.19402 -+#
43.19403 -+# Written by Haavard Skinnemoen (hskinnemoen@atmel.com)
43.19404 -+#
43.19405 -+
43.19406 -+if ![istarget avr32-*-*] {
43.19407 -+    return
43.19408 -+}
43.19409 -+
43.19410 -+run_dump_test "pcrel"
43.19411 ---- /dev/null
43.19412 -+++ b/ld/testsuite/ld-avr32/pcrel.d
43.19413 -@@ -0,0 +1,74 @@
43.19414 -+#name: AVR32 ELF PC-relative external relocs
43.19415 -+#source: symbols.s
43.19416 -+#source: ../../../gas/testsuite/gas/avr32/pcrel.s
43.19417 -+#ld: -T $srcdir/$subdir/pcrel.ld
43.19418 -+#objdump: -d
43.19419 -+
43.19420 -+.*:     file format elf.*avr32.*
43.19421 -+
43.19422 -+Disassembly of section .text:
43.19423 -+
43.19424 -+a0000000 <_start>:
43.19425 -+a0000000:	d7 03       	nop
43.19426 -+a0000002:	d7 03       	nop
43.19427 -+
43.19428 -+a0000004 <test_rjmp>:
43.19429 -+a0000004:	d7 03       	nop
43.19430 -+a0000006:	c0 28       	rjmp a000000a <test_rjmp\+0x6>
43.19431 -+a0000008:	d7 03       	nop
43.19432 -+a000000a:	e0 8f 01 fb 	bral a0000400 <extsym10>
43.19433 -+
43.19434 -+a000000e <test_rcall>:
43.19435 -+a000000e:	d7 03       	nop
43.19436 -+a0000010 <test_rcall2>:
43.19437 -+a0000010:	c0 2c       	rcall a0000014 <test_rcall2\+0x4>
43.19438 -+a0000012:	d7 03       	nop
43.19439 -+a0000014:	ee b0 ff f6 	rcall a0200000 <extsym21>
43.19440 -+
43.19441 -+a0000018 <test_branch>:
43.19442 -+a0000018:	c0 31       	brne a000001e <test_branch\+0x6>
43.19443 -+a000001a:	fe 9f ff ff 	bral a0000018 <test_branch>
43.19444 -+a000001e:	ee 90 ff f1 	breq a0200000 <extsym21>
43.19445 -+
43.19446 -+a0000022 <test_lddpc>:
43.19447 -+a0000022:	48 30       	lddpc r0,a000002c <sym1>
43.19448 -+a0000024:	48 20       	lddpc r0,a000002c <sym1>
43.19449 -+a0000026:	fe f0 7f da 	ld.w r0,pc\[32730\]
43.19450 -+	...
43.19451 -+
43.19452 -+a000002c <sym1>:
43.19453 -+a000002c:	d7 03       	nop
43.19454 -+a000002e:	d7 03       	nop
43.19455 -+
43.19456 -+a0000030 <test_local>:
43.19457 -+a0000030:	48 20       	lddpc r0,a0000038 <test_local\+0x8>
43.19458 -+a0000032:	48 30       	lddpc r0,a000003c <test_local\+0xc>
43.19459 -+a0000034:	48 20       	lddpc r0,a000003c <test_local\+0xc>
43.19460 -+a0000036:	00 00       	add r0,r0
43.19461 -+a0000038:	d7 03       	nop
43.19462 -+a000003a:	d7 03       	nop
43.19463 -+a000003c:	d7 03       	nop
43.19464 -+a000003e:	d7 03       	nop
43.19465 -+
43.19466 -+Disassembly of section \.text\.init:
43.19467 -+a0000040 <test_inter_section>:
43.19468 -+a0000040:	fe b0 ff e7 	rcall a000000e <test_rcall>
43.19469 -+a0000044:	d7 03       	nop
43.19470 -+a0000046:	fe b0 ff e4 	rcall a000000e <test_rcall>
43.19471 -+a000004a:	fe b0 ff e3 	rcall a0000010 <test_rcall2>
43.19472 -+a000004e:	d7 03       	nop
43.19473 -+a0000050:	fe b0 ff e0 	rcall a0000010 <test_rcall2>
43.19474 -+
43.19475 -+Disassembly of section \.text\.pcrel10:
43.19476 -+
43.19477 -+a0000400 <extsym10>:
43.19478 -+a0000400:	d7 03       	nop
43.19479 -+
43.19480 -+Disassembly of section \.text\.pcrel16:
43.19481 -+
43.19482 -+a0008000 <extsym16>:
43.19483 -+a0008000:	d7 03       	nop
43.19484 -+
43.19485 -+Disassembly of section \.text\.pcrel21:
43.19486 -+a0200000 <extsym21>:
43.19487 -+a0200000:	d7 03       	nop
43.19488 ---- /dev/null
43.19489 -+++ b/ld/testsuite/ld-avr32/pcrel.ld
43.19490 -@@ -0,0 +1,23 @@
43.19491 -+ENTRY(_start)
43.19492 -+SECTIONS
43.19493 -+{
43.19494 -+	.text 0xa0000000:
43.19495 -+	{
43.19496 -+		*(.text)
43.19497 -+	}
43.19498 -+
43.19499 -+	.text.pcrel10 0xa0000400:
43.19500 -+	{
43.19501 -+		*(.text.pcrel10)
43.19502 -+	}
43.19503 -+
43.19504 -+	.text.pcrel16 0xa0008000:
43.19505 -+	{
43.19506 -+		*(.text.pcrel16)
43.19507 -+	}
43.19508 -+
43.19509 -+	.text.pcrel21 0xa0200000:
43.19510 -+	{
43.19511 -+		*(.text.pcrel21)
43.19512 -+	}
43.19513 -+}
43.19514 ---- /dev/null
43.19515 -+++ b/ld/testsuite/ld-avr32/symbols.s
43.19516 -@@ -0,0 +1,20 @@
43.19517 -+	.text
43.19518 -+	.global _start
43.19519 -+_start:
43.19520 -+	nop
43.19521 -+	nop
43.19522 -+
43.19523 -+	.section .text.pcrel10,"ax"
43.19524 -+	.global extsym10
43.19525 -+extsym10:
43.19526 -+	nop
43.19527 -+
43.19528 -+	.section .text.pcrel16,"ax"
43.19529 -+	.global extsym16
43.19530 -+extsym16:
43.19531 -+	nop
43.19532 -+
43.19533 -+	.section .text.pcrel21,"ax"
43.19534 -+	.global extsym21
43.19535 -+extsym21:
43.19536 -+	nop
43.19537 ---- /dev/null
43.19538 -+++ b/opcodes/avr32-asm.c
43.19539 -@@ -0,0 +1,264 @@
43.19540 -+/* Assembler interface for AVR32.
43.19541 -+   Copyright 2005, 2006 Atmel Corporation.
43.19542 -+
43.19543 -+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
43.19544 -+
43.19545 -+   This file is part of libopcodes.
43.19546 -+
43.19547 -+   This program is free software; you can redistribute it and/or
43.19548 -+   modify it under the terms of the GNU General Public License as
43.19549 -+   published by the Free Software Foundation; either version 2 of the
43.19550 -+   License, or (at your option) any later version.
43.19551 -+
43.19552 -+   This program is distributed in the hope that it will be useful, but
43.19553 -+   WITHOUT ANY WARRANTY; without even the implied warranty of
43.19554 -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
43.19555 -+   General Public License for more details.
43.19556 -+
43.19557 -+   You should have received a copy of the GNU General Public License
43.19558 -+   along with this program; if not, write to the Free Software
43.19559 -+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
43.19560 -+   02111-1307, USA.  */
43.19561 -+
43.19562 -+#include <string.h>
43.19563 -+
43.19564 -+#include "avr32-opc.h"
43.19565 -+#include "avr32-asm.h"
43.19566 -+
43.19567 -+/* Structure for a register hash table entry.  */
43.19568 -+struct reg_entry
43.19569 -+{
43.19570 -+  const char	*name;
43.19571 -+  int		number;
43.19572 -+};
43.19573 -+
43.19574 -+/* Integer Registers.  */
43.19575 -+static const struct reg_entry reg_table[] =
43.19576 -+  {
43.19577 -+    /* Primary names (used by the disassembler) */
43.19578 -+    { "r0",   0 }, { "r1",   1 }, { "r2",   2 }, { "r3",   3 },
43.19579 -+    { "r4",   4 }, { "r5",   5 }, { "r6",   6 }, { "r7",   7 },
43.19580 -+    { "r8",   8 }, { "r9",   9 }, { "r10", 10 }, { "r11", 11 },
43.19581 -+    { "r12", 12 }, { "sp",  13 }, { "lr",  14 }, { "pc",  15 },
43.19582 -+    /* Alternatives to sp, lr and pc.  */
43.19583 -+    { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
43.19584 -+  };
43.19585 -+#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
43.19586 -+
43.19587 -+/* Coprocessor Registers.  */
43.19588 -+static const struct reg_entry cr_table[] =
43.19589 -+  {
43.19590 -+    { "cr0",   0 }, { "cr1",   1 }, { "cr2",   2 }, { "cr3",   3 },
43.19591 -+    { "cr4",   4 }, { "cr5",   5 }, { "cr6",   6 }, { "cr7",   7 },
43.19592 -+    { "cr8",   8 }, { "cr9",   9 }, { "cr10", 10 }, { "cr11", 11 },
43.19593 -+    { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
43.19594 -+  };
43.19595 -+#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
43.19596 -+
43.19597 -+/* Floating-point Registers.  */
43.19598 -+static const struct reg_entry fr_table[] =
43.19599 -+  {
43.19600 -+    { "fr0",   0 }, { "fr1",   1 }, { "fr2",   2 }, { "fr3",   3 },
43.19601 -+    { "fr4",   4 }, { "fr5",   5 }, { "fr6",   6 }, { "fr7",   7 },
43.19602 -+    { "fr8",   8 }, { "fr9",   9 }, { "fr10", 10 }, { "fr11", 11 },
43.19603 -+    { "fr12", 12 }, { "fr13", 13 }, { "fr14", 14 }, { "fr15", 15 },
43.19604 -+  };
43.19605 -+#define AVR32_NR_FPREGS (sizeof(fr_table)/sizeof(fr_table[0]))
43.19606 -+
43.19607 -+/* PiCo Registers.  */
43.19608 -+static const struct reg_entry pico_table[] =
43.19609 -+  {
43.19610 -+    { "inpix2",    0 }, { "inpix1",    1 }, { "inpix0",    2 },
43.19611 -+    { "outpix2",   3 }, { "outpix1",   4 }, { "outpix0",   5 },
43.19612 -+    { "coeff0_a",  6 }, { "coeff0_b",  7 }, { "coeff1_a",  8 },
43.19613 -+    { "coeff1_b",  9 }, { "coeff2_a", 10 }, { "coeff2_b", 11 },
43.19614 -+    { "vmu0_out", 12 }, { "vmu1_out", 13 }, { "vmu2_out", 14 },
43.19615 -+    { "config",   15 },
43.19616 -+  };
43.19617 -+#define AVR32_NR_PICOREGS (sizeof(pico_table)/sizeof(pico_table[0]))
43.19618 -+
43.19619 -+int
43.19620 -+avr32_parse_intreg(const char *str)
43.19621 -+{
43.19622 -+  unsigned int i;
43.19623 -+
43.19624 -+  for (i = 0; i < AVR32_NR_INTREGS; i++)
43.19625 -+    {
43.19626 -+      if (strcasecmp(reg_table[i].name, str) == 0)
43.19627 -+	return reg_table[i].number;
43.19628 -+    }
43.19629 -+
43.19630 -+  return -1;
43.19631 -+}
43.19632 -+
43.19633 -+int
43.19634 -+avr32_parse_cpreg(const char *str)
43.19635 -+{
43.19636 -+  unsigned int i;
43.19637 -+
43.19638 -+  for (i = 0; i < AVR32_NR_CPREGS; i++)
43.19639 -+    {
43.19640 -+      if (strcasecmp(cr_table[i].name, str) == 0)
43.19641 -+	return cr_table[i].number;
43.19642 -+    }
43.19643 -+
43.19644 -+  return -1;
43.19645 -+}
43.19646 -+
43.19647 -+int avr32_parse_fpreg(const char *str)
43.19648 -+{
43.19649 -+  unsigned int i;
43.19650 -+
43.19651 -+  for (i = 0; i < AVR32_NR_FPREGS; i++)
43.19652 -+    {
43.19653 -+      if (strcasecmp(fr_table[i].name, str) == 0)
43.19654 -+	return fr_table[i].number;
43.19655 -+    }
43.19656 -+
43.19657 -+  return -1;
43.19658 -+}
43.19659 -+
43.19660 -+int avr32_parse_picoreg(const char *str)
43.19661 -+{
43.19662 -+  unsigned int i;
43.19663 -+
43.19664 -+  for (i = 0; i < AVR32_NR_PICOREGS; i++)
43.19665 -+    {
43.19666 -+      if (strcasecmp(pico_table[i].name, str) == 0)
43.19667 -+	return pico_table[i].number;
43.19668 -+    }
43.19669 -+
43.19670 -+  return -1;
43.19671 -+}
43.19672 -+
43.19673 -+static unsigned long
43.19674 -+parse_reglist(char *str, char **endptr, int (*parse_reg)(const char *))
43.19675 -+{
43.19676 -+  int reg_from, reg_to;
43.19677 -+  unsigned long result = 0;
43.19678 -+  char *p1, *p2, c;
43.19679 -+
43.19680 -+  while (*str)
43.19681 -+    {
43.19682 -+      for (p1 = str; *p1; p1++)
43.19683 -+	if (*p1 == ',' || *p1 == '-')
43.19684 -+	  break;
43.19685 -+
43.19686 -+      c = *p1, *p1 = 0;
43.19687 -+      reg_from = parse_reg(str);
43.19688 -+      *p1 = c;
43.19689 -+
43.19690 -+      if (reg_from < 0)
43.19691 -+	break;
43.19692 -+
43.19693 -+      if (*p1 == '-')
43.19694 -+	{
43.19695 -+	  for (p2 = ++p1; *p2; p2++)
43.19696 -+	    if (*p2 == ',')
43.19697 -+	      break;
43.19698 -+
43.19699 -+	  c = *p2, *p2 = 0;
43.19700 -+	  /* printf("going to parse reg_to from `%s'\n", p1); */
43.19701 -+	  reg_to = parse_reg(p1);
43.19702 -+	  *p2 = c;
43.19703 -+
43.19704 -+	  if (reg_to < 0)
43.19705 -+	    break;
43.19706 -+
43.19707 -+	  while (reg_from <= reg_to)
43.19708 -+	    result |= (1 << reg_from++);
43.19709 -+	  p1 = p2;
43.19710 -+	}
43.19711 -+      else
43.19712 -+	result |= (1 << reg_from);
43.19713 -+
43.19714 -+      str = p1;
43.19715 -+      if (*str) ++str;
43.19716 -+    }
43.19717 -+
43.19718 -+  if (endptr)
43.19719 -+    *endptr = str;
43.19720 -+
43.19721 -+  return result;
43.19722 -+}
43.19723 -+
43.19724 -+unsigned long
43.19725 -+avr32_parse_reglist(char *str, char **endptr)
43.19726 -+{
43.19727 -+  return parse_reglist(str, endptr, avr32_parse_intreg);
43.19728 -+}
43.19729 -+
43.19730 -+unsigned long
43.19731 -+avr32_parse_cpreglist(char *str, char **endptr)
43.19732 -+{
43.19733 -+  return parse_reglist(str, endptr, avr32_parse_cpreg);
43.19734 -+}
43.19735 -+
43.19736 -+unsigned long
43.19737 -+avr32_parse_pico_reglist(char *str, char **endptr)
43.19738 -+{
43.19739 -+  return parse_reglist(str, endptr, avr32_parse_picoreg);
43.19740 -+}
43.19741 -+
43.19742 -+int
43.19743 -+avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8)
43.19744 -+{
43.19745 -+  unsigned long result = 0;
43.19746 -+
43.19747 -+  /* printf("convert regmask16 0x%04lx\n", regmask16); */
43.19748 -+
43.19749 -+  if (regmask16 & 0xf)
43.19750 -+    {
43.19751 -+      if ((regmask16 & 0xf) == 0xf)
43.19752 -+	result |= 1 << 0;
43.19753 -+      else
43.19754 -+	return -1;
43.19755 -+    }
43.19756 -+  if (regmask16 & 0xf0)
43.19757 -+    {
43.19758 -+      if ((regmask16 & 0xf0) == 0xf0)
43.19759 -+	result |= 1 << 1;
43.19760 -+      else
43.19761 -+	return -1;
43.19762 -+    }
43.19763 -+  if (regmask16 & 0x300)
43.19764 -+    {
43.19765 -+      if ((regmask16 & 0x300) == 0x300)
43.19766 -+	result |= 1 << 2;
43.19767 -+      else
43.19768 -+	return -1;
43.19769 -+    }
43.19770 -+  if (regmask16 & (1 << 13))
43.19771 -+    return -1;
43.19772 -+
43.19773 -+  if (regmask16 & (1 << 10))
43.19774 -+    result |= 1 << 3;
43.19775 -+  if (regmask16 & (1 << 11))
43.19776 -+    result |= 1 << 4;
43.19777 -+  if (regmask16 & (1 << 12))
43.19778 -+    result |= 1 << 5;
43.19779 -+  if (regmask16 & (1 << 14))
43.19780 -+    result |= 1 << 6;
43.19781 -+  if (regmask16 & (1 << 15))
43.19782 -+    result |= 1 << 7;
43.19783 -+
43.19784 -+  *regmask8 = result;
43.19785 -+
43.19786 -+  return 0;
43.19787 -+}
43.19788 -+
43.19789 -+#if 0
43.19790 -+struct reg_map
43.19791 -+{
43.19792 -+  const struct reg_entry	*names;
43.19793 -+  int				nr_regs;
43.19794 -+  struct hash_control		*htab;
43.19795 -+  const char			*errmsg;
43.19796 -+};
43.19797 -+
43.19798 -+struct reg_map all_reg_maps[] =
43.19799 -+  {
43.19800 -+    { reg_table, AVR32_NR_INTREGS, NULL, N_("integral register expected") },
43.19801 -+    { cr_table,  AVR32_NR_CPREGS,  NULL, N_("coprocessor register expected") },
43.19802 -+  };
43.19803 -+#endif
43.19804 ---- /dev/null
43.19805 -+++ b/opcodes/avr32-asm.h
43.19806 -@@ -0,0 +1,42 @@
43.19807 -+/* Assembler interface for AVR32.
43.19808 -+   Copyright 2005, 2006 Atmel Corporation.
43.19809 -+
43.19810 -+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
43.19811 -+
43.19812 -+   This file is part of libopcodes.
43.19813 -+
43.19814 -+   This program is free software; you can redistribute it and/or
43.19815 -+   modify it under the terms of the GNU General Public License as
43.19816 -+   published by the Free Software Foundation; either version 2 of the
43.19817 -+   License, or (at your option) any later version.
43.19818 -+
43.19819 -+   This program is distributed in the hope that it will be useful, but
43.19820 -+   WITHOUT ANY WARRANTY; without even the implied warranty of
43.19821 -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
43.19822 -+   General Public License for more details.
43.19823 -+
43.19824 -+   You should have received a copy of the GNU General Public License
43.19825 -+   along with this program; if not, write to the Free Software
43.19826 -+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
43.19827 -+   02111-1307, USA.  */
43.19828 -+#ifndef __OPCODES_AVR32_ASM_H
43.19829 -+#define __OPCODES_AVR32_ASM_H
43.19830 -+
43.19831 -+extern int
43.19832 -+avr32_parse_intreg(const char *str);
43.19833 -+extern int
43.19834 -+avr32_parse_cpreg(const char *str);
43.19835 -+extern int
43.19836 -+avr32_parse_fpreg(const char *str);
43.19837 -+extern int
43.19838 -+avr32_parse_picoreg(const char *str);
43.19839 -+extern unsigned long
43.19840 -+avr32_parse_reglist(char *str, char **endptr);
43.19841 -+extern unsigned long
43.19842 -+avr32_parse_cpreglist(char *str, char **endptr);
43.19843 -+extern unsigned long
43.19844 -+avr32_parse_pico_reglist(char *str, char **endptr);
43.19845 -+extern int
43.19846 -+avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8);
43.19847 -+
43.19848 -+#endif /* __OPCODES_AVR32_ASM_H */
43.19849 ---- /dev/null
43.19850 -+++ b/opcodes/avr32-dis.c
43.19851 -@@ -0,0 +1,891 @@
43.19852 -+/* Print AVR32 instructions for GDB and objdump.
43.19853 -+   Copyright 2005, 2006 Atmel Corporation.
43.19854 -+
43.19855 -+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
43.19856 -+
43.19857 -+   This file is part of libopcodes.
43.19858 -+
43.19859 -+   This program is free software; you can redistribute it and/or
43.19860 -+   modify it under the terms of the GNU General Public License as
43.19861 -+   published by the Free Software Foundation; either version 2 of the
43.19862 -+   License, or (at your option) any later version.
43.19863 -+
43.19864 -+   This program is distributed in the hope that it will be useful, but
43.19865 -+   WITHOUT ANY WARRANTY; without even the implied warranty of
43.19866 -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
43.19867 -+   General Public License for more details.
43.19868 -+
43.19869 -+   You should have received a copy of the GNU General Public License
43.19870 -+   along with this program; if not, write to the Free Software
43.19871 -+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
43.19872 -+   02111-1307, USA.  */
43.19873 -+
43.19874 -+#include "sysdep.h"
43.19875 -+#include "dis-asm.h"
43.19876 -+#include "avr32-opc.h"
43.19877 -+#include "opintl.h"
43.19878 -+#include "safe-ctype.h"
43.19879 -+
43.19880 -+/* TODO: Share this with -asm */
43.19881 -+
43.19882 -+/* Structure for a register hash table entry.  */
43.19883 -+struct reg_entry
43.19884 -+{
43.19885 -+  const char	*name;
43.19886 -+  int		number;
43.19887 -+};
43.19888 -+
43.19889 -+#ifndef strneq
43.19890 -+#define strneq(a,b,n)	(strncmp ((a), (b), (n)) == 0)
43.19891 -+#endif
43.19892 -+
43.19893 -+
43.19894 -+static const struct reg_entry reg_table[] =
43.19895 -+  {
43.19896 -+    /* Primary names (used by the disassembler) */
43.19897 -+    { "r0",   0 }, { "r1",   1 }, { "r2",   2 }, { "r3",   3 },
43.19898 -+    { "r4",   4 }, { "r5",   5 }, { "r6",   6 }, { "r7",   7 },
43.19899 -+    { "r8",   8 }, { "r9",   9 }, { "r10", 10 }, { "r11", 11 },
43.19900 -+    { "r12", 12 }, { "sp",  13 }, { "lr",  14 }, { "pc",  15 },
43.19901 -+    /* Alternatives to sp, lr and pc.  */
43.19902 -+    { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
43.19903 -+  };
43.19904 -+#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
43.19905 -+
43.19906 -+/* Coprocessor Registers.  */
43.19907 -+static const struct reg_entry cr_table[] =
43.19908 -+  {
43.19909 -+    { "cr0",   0 }, { "cr1",   1 }, { "cr2",   2 }, { "cr3",   3 },
43.19910 -+    { "cr4",   4 }, { "cr5",   5 }, { "cr6",   6 }, { "cr7",   7 },
43.19911 -+    { "cr8",   8 }, { "cr9",   9 }, { "cr10", 10 }, { "cr11", 11 },
43.19912 -+    { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
43.19913 -+  };
43.19914 -+#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
43.19915 -+
43.19916 -+static const char bparts[4] = { 'b', 'l', 'u', 't' };
43.19917 -+static bfd_vma current_pc;
43.19918 -+
43.19919 -+struct avr32_field_value
43.19920 -+{
43.19921 -+  const struct avr32_ifield *ifield;
43.19922 -+  unsigned long value;
43.19923 -+};
43.19924 -+
43.19925 -+struct avr32_operand
43.19926 -+{
43.19927 -+  int id;
43.19928 -+  int is_pcrel;
43.19929 -+  int align_order;
43.19930 -+  int (*print)(struct avr32_operand *op, struct disassemble_info *info,
43.19931 -+	       struct avr32_field_value *ifields);
43.19932 -+};
43.19933 -+
43.19934 -+static signed long
43.19935 -+get_signed_value(const struct avr32_field_value *fv)
43.19936 -+{
43.19937 -+  signed long value = fv->value;
43.19938 -+
43.19939 -+  if (fv->value & (1 << (fv->ifield->bitsize - 1)))
43.19940 -+    value |= (~0UL << fv->ifield->bitsize);
43.19941 -+
43.19942 -+  return value;
43.19943 -+}
43.19944 -+
43.19945 -+static void
43.19946 -+print_reglist_range(unsigned int first, unsigned int last,
43.19947 -+		    const struct reg_entry *reg_names,
43.19948 -+		    int need_comma,
43.19949 -+		    struct disassemble_info *info)
43.19950 -+{
43.19951 -+  if (need_comma)
43.19952 -+    info->fprintf_func(info->stream, ",");
43.19953 -+
43.19954 -+  if (first == last)
43.19955 -+    info->fprintf_func(info->stream, "%s",
43.19956 -+		       reg_names[first].name);
43.19957 -+  else
43.19958 -+    info->fprintf_func(info->stream, "%s-%s",
43.19959 -+		       reg_names[first].name, reg_names[last].name);
43.19960 -+}
43.19961 -+
43.19962 -+static int
43.19963 -+print_intreg(struct avr32_operand *op,
43.19964 -+	     struct disassemble_info *info,
43.19965 -+	     struct avr32_field_value *ifields)
43.19966 -+{
43.19967 -+  unsigned long regid = ifields[0].value << op->align_order;
43.19968 -+
43.19969 -+  info->fprintf_func(info->stream, "%s",
43.19970 -+		     reg_table[regid].name);
43.19971 -+  return 1;
43.19972 -+}
43.19973 -+
43.19974 -+static int
43.19975 -+print_intreg_predec(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.19976 -+		    struct disassemble_info *info,
43.19977 -+		    struct avr32_field_value *ifields)
43.19978 -+{
43.19979 -+  info->fprintf_func(info->stream, "--%s",
43.19980 -+		     reg_table[ifields[0].value].name);
43.19981 -+  return 1;
43.19982 -+}
43.19983 -+
43.19984 -+static int
43.19985 -+print_intreg_postinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.19986 -+		     struct disassemble_info *info,
43.19987 -+		     struct avr32_field_value *ifields)
43.19988 -+{
43.19989 -+  info->fprintf_func(info->stream, "%s++",
43.19990 -+		     reg_table[ifields[0].value].name);
43.19991 -+  return 1;
43.19992 -+}
43.19993 -+
43.19994 -+static int
43.19995 -+print_intreg_lsl(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.19996 -+		 struct disassemble_info *info,
43.19997 -+		 struct avr32_field_value *ifields)
43.19998 -+{
43.19999 -+  const char *rp = reg_table[ifields[0].value].name;
43.20000 -+  unsigned long sa = ifields[1].value;
43.20001 -+
43.20002 -+  if (sa)
43.20003 -+    info->fprintf_func(info->stream, "%s<<0x%lx", rp, sa);
43.20004 -+  else
43.20005 -+    info->fprintf_func(info->stream, "%s", rp);
43.20006 -+
43.20007 -+  return 2;
43.20008 -+}
43.20009 -+
43.20010 -+static int
43.20011 -+print_intreg_lsr(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.20012 -+		 struct disassemble_info *info,
43.20013 -+		 struct avr32_field_value *ifields)
43.20014 -+{
43.20015 -+  const char *rp = reg_table[ifields[0].value].name;
43.20016 -+  unsigned long sa = ifields[1].value;
43.20017 -+
43.20018 -+  if (sa)
43.20019 -+    info->fprintf_func(info->stream, "%s>>0x%lx", rp, sa);
43.20020 -+  else
43.20021 -+    info->fprintf_func(info->stream, "%s", rp);
43.20022 -+
43.20023 -+  return 2;
43.20024 -+}
43.20025 -+
43.20026 -+static int
43.20027 -+print_intreg_bpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.20028 -+		   struct disassemble_info *info,
43.20029 -+		   struct avr32_field_value *ifields)
43.20030 -+{
43.20031 -+  info->fprintf_func(info->stream, "%s:%c",
43.20032 -+		     reg_table[ifields[0].value].name,
43.20033 -+		     bparts[ifields[1].value]);
43.20034 -+  return 2;
43.20035 -+}
43.20036 -+
43.20037 -+static int
43.20038 -+print_intreg_hpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.20039 -+		   struct disassemble_info *info,
43.20040 -+		   struct avr32_field_value *ifields)
43.20041 -+{
43.20042 -+  info->fprintf_func(info->stream, "%s:%c",
43.20043 -+		     reg_table[ifields[0].value].name,
43.20044 -+		     ifields[1].value ? 't' : 'b');
43.20045 -+  return 2;
43.20046 -+}
43.20047 -+
43.20048 -+static int
43.20049 -+print_intreg_sdisp(struct avr32_operand *op,
43.20050 -+		  struct disassemble_info *info,
43.20051 -+		  struct avr32_field_value *ifields)
43.20052 -+{
43.20053 -+  signed long disp;
43.20054 -+
43.20055 -+  disp = get_signed_value(&ifields[1]) << op->align_order;
43.20056 -+
43.20057 -+  info->fprintf_func(info->stream, "%s[%ld]",
43.20058 -+		     reg_table[ifields[0].value].name, disp);
43.20059 -+  return 2;
43.20060 -+}
43.20061 -+
43.20062 -+static int
43.20063 -+print_intreg_udisp(struct avr32_operand *op,
43.20064 -+		   struct disassemble_info *info,
43.20065 -+		   struct avr32_field_value *ifields)
43.20066 -+{
43.20067 -+  info->fprintf_func(info->stream, "%s[0x%lx]",
43.20068 -+		     reg_table[ifields[0].value].name,
43.20069 -+		     ifields[1].value << op->align_order);
43.20070 -+  return 2;
43.20071 -+}
43.20072 -+
43.20073 -+static int
43.20074 -+print_intreg_index(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.20075 -+		   struct disassemble_info *info,
43.20076 -+		   struct avr32_field_value *ifields)
43.20077 -+{
43.20078 -+  const char *rb, *ri;
43.20079 -+  unsigned long sa = ifields[2].value;
43.20080 -+
43.20081 -+  rb = reg_table[ifields[0].value].name;
43.20082 -+  ri = reg_table[ifields[1].value].name;
43.20083 -+
43.20084 -+  if (sa)
43.20085 -+    info->fprintf_func(info->stream, "%s[%s<<0x%lx]", rb, ri, sa);
43.20086 -+  else
43.20087 -+    info->fprintf_func(info->stream, "%s[%s]", rb, ri);
43.20088 -+
43.20089 -+  return 3;
43.20090 -+}
43.20091 -+
43.20092 -+static int
43.20093 -+print_intreg_xindex(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.20094 -+		    struct disassemble_info *info,
43.20095 -+		    struct avr32_field_value *ifields)
43.20096 -+{
43.20097 -+  info->fprintf_func(info->stream, "%s[%s:%c<<2]",
43.20098 -+		     reg_table[ifields[0].value].name,
43.20099 -+		     reg_table[ifields[1].value].name,
43.20100 -+		     bparts[ifields[2].value]);
43.20101 -+  return 3;
43.20102 -+}
43.20103 -+
43.20104 -+static int
43.20105 -+print_jmplabel(struct avr32_operand *op,
43.20106 -+	       struct disassemble_info *info,
43.20107 -+	       struct avr32_field_value *ifields)
43.20108 -+{
43.20109 -+  bfd_vma address, offset;
43.20110 -+
43.20111 -+  offset = get_signed_value(ifields) << op->align_order;
43.20112 -+  address = (current_pc & (~0UL << op->align_order)) + offset;
43.20113 -+
43.20114 -+  info->print_address_func(address, info);
43.20115 -+
43.20116 -+  return 1;
43.20117 -+}
43.20118 -+
43.20119 -+static int
43.20120 -+print_pc_disp(struct avr32_operand *op,
43.20121 -+	      struct disassemble_info *info,
43.20122 -+	      struct avr32_field_value *ifields)
43.20123 -+{
43.20124 -+  bfd_vma address, offset;
43.20125 -+
43.20126 -+  offset = ifields[0].value << op->align_order;
43.20127 -+  address = (current_pc & (~0UL << op->align_order)) + offset;
43.20128 -+
43.20129 -+  info->print_address_func(address, info);
43.20130 -+
43.20131 -+  return 1;
43.20132 -+}
43.20133 -+
43.20134 -+static int
43.20135 -+print_sp(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.20136 -+	 struct disassemble_info *info,
43.20137 -+	 struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
43.20138 -+{
43.20139 -+  info->fprintf_func(info->stream, "sp");
43.20140 -+  return 1;
43.20141 -+}
43.20142 -+
43.20143 -+static int
43.20144 -+print_sp_disp(struct avr32_operand *op,
43.20145 -+	      struct disassemble_info *info,
43.20146 -+	      struct avr32_field_value *ifields)
43.20147 -+{
43.20148 -+  info->fprintf_func(info->stream, "sp[0x%lx]",
43.20149 -+		     ifields[0].value << op->align_order);
43.20150 -+  return 1;
43.20151 -+}
43.20152 -+
43.20153 -+static int
43.20154 -+print_cpno(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.20155 -+	   struct disassemble_info *info,
43.20156 -+	   struct avr32_field_value *ifields)
43.20157 -+{
43.20158 -+  info->fprintf_func(info->stream, "cp%lu", ifields[0].value);
43.20159 -+  return 1;
43.20160 -+}
43.20161 -+
43.20162 -+static int
43.20163 -+print_cpreg(struct avr32_operand *op,
43.20164 -+	    struct disassemble_info *info,
43.20165 -+	    struct avr32_field_value *ifields)
43.20166 -+{
43.20167 -+  info->fprintf_func(info->stream, "cr%lu",
43.20168 -+		     ifields[0].value << op->align_order);
43.20169 -+  return 1;
43.20170 -+}
43.20171 -+
43.20172 -+static int
43.20173 -+print_uconst(struct avr32_operand *op,
43.20174 -+	     struct disassemble_info *info,
43.20175 -+	     struct avr32_field_value *ifields)
43.20176 -+{
43.20177 -+  info->fprintf_func(info->stream, "0x%lx",
43.20178 -+		     ifields[0].value << op->align_order);
43.20179 -+  return 1;
43.20180 -+}
43.20181 -+
43.20182 -+static int
43.20183 -+print_sconst(struct avr32_operand *op,
43.20184 -+	     struct disassemble_info *info,
43.20185 -+	     struct avr32_field_value *ifields)
43.20186 -+{
43.20187 -+  info->fprintf_func(info->stream, "%ld",
43.20188 -+		     get_signed_value(ifields) << op->align_order);
43.20189 -+  return 1;
43.20190 -+}
43.20191 -+
43.20192 -+static int
43.20193 -+print_reglist8_head(unsigned long regmask, int *commap,
43.20194 -+		    struct disassemble_info *info)
43.20195 -+{
43.20196 -+  int first = -1, last, i = 0;
43.20197 -+  int need_comma = 0;
43.20198 -+
43.20199 -+  while (i < 12)
43.20200 -+    {
43.20201 -+      if (first == -1 && (regmask & 1))
43.20202 -+	{
43.20203 -+	  first = i;
43.20204 -+	}
43.20205 -+      else if (first != -1 && !(regmask & 1))
43.20206 -+	{
43.20207 -+	  last = i - 1;
43.20208 -+
43.20209 -+	  print_reglist_range(first, last, reg_table, need_comma, info);
43.20210 -+	  need_comma = 1;
43.20211 -+	  first = -1;
43.20212 -+	}
43.20213 -+
43.20214 -+      if (i < 8)
43.20215 -+	i += 4;
43.20216 -+      else if (i < 10)
43.20217 -+	i += 2;
43.20218 -+      else
43.20219 -+	i++;
43.20220 -+      regmask >>= 1;
43.20221 -+    }
43.20222 -+
43.20223 -+  *commap = need_comma;
43.20224 -+  return first;
43.20225 -+}
43.20226 -+
43.20227 -+static void
43.20228 -+print_reglist8_tail(unsigned long regmask, int first, int need_comma,
43.20229 -+		    struct disassemble_info *info)
43.20230 -+{
43.20231 -+  int last = 11;
43.20232 -+
43.20233 -+  if (regmask & 0x20)
43.20234 -+    {
43.20235 -+      if (first == -1)
43.20236 -+	first = 12;
43.20237 -+      last = 12;
43.20238 -+    }
43.20239 -+
43.20240 -+  if (first != -1)
43.20241 -+    {
43.20242 -+      print_reglist_range(first, last, reg_table, need_comma, info);
43.20243 -+      need_comma = 1;
43.20244 -+      first = -1;
43.20245 -+    }
43.20246 -+
43.20247 -+  if (regmask & 0x40)
43.20248 -+    {
43.20249 -+      if (first == -1)
43.20250 -+	first = 14;
43.20251 -+      last = 14;
43.20252 -+    }
43.20253 -+
43.20254 -+  if (regmask & 0x80)
43.20255 -+    {
43.20256 -+      if (first == -1)
43.20257 -+	first = 15;
43.20258 -+      last = 15;
43.20259 -+    }
43.20260 -+
43.20261 -+  if (first != -1)
43.20262 -+    print_reglist_range(first, last, reg_table, need_comma, info);
43.20263 -+}
43.20264 -+
43.20265 -+static int
43.20266 -+print_reglist8(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.20267 -+	       struct disassemble_info *info,
43.20268 -+	       struct avr32_field_value *ifields)
43.20269 -+{
43.20270 -+  unsigned long regmask = ifields[0].value;
43.20271 -+  int first, need_comma;
43.20272 -+
43.20273 -+  first = print_reglist8_head(regmask, &need_comma, info);
43.20274 -+  print_reglist8_tail(regmask, first, need_comma, info);
43.20275 -+
43.20276 -+  return 1;
43.20277 -+}
43.20278 -+
43.20279 -+static int
43.20280 -+print_reglist9(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.20281 -+	       struct disassemble_info *info,
43.20282 -+	       struct avr32_field_value *ifields)
43.20283 -+{
43.20284 -+  unsigned long regmask = ifields[0].value >> 1;
43.20285 -+  int first, last, need_comma;
43.20286 -+
43.20287 -+  first = print_reglist8_head(regmask, &need_comma, info);
43.20288 -+
43.20289 -+  if ((ifields[0].value & 0x101) == 0x101)
43.20290 -+    {
43.20291 -+      if (first != -1)
43.20292 -+	{
43.20293 -+	  last = 11;
43.20294 -+
43.20295 -+	  print_reglist_range(first, last, reg_table, need_comma, info);
43.20296 -+	  need_comma = 1;
43.20297 -+	  first = -1;
43.20298 -+	}
43.20299 -+
43.20300 -+      print_reglist_range(15, 15, reg_table, need_comma, info);
43.20301 -+
43.20302 -+      regmask >>= 5;
43.20303 -+
43.20304 -+      if ((regmask & 3) == 0)
43.20305 -+	info->fprintf_func(info->stream, ",r12=0");
43.20306 -+      else if ((regmask & 3) == 1)
43.20307 -+	info->fprintf_func(info->stream, ",r12=1");
43.20308 -+      else
43.20309 -+	info->fprintf_func(info->stream, ",r12=-1");
43.20310 -+    }
43.20311 -+  else
43.20312 -+      print_reglist8_tail(regmask, first, need_comma, info);
43.20313 -+
43.20314 -+  return 1;
43.20315 -+}
43.20316 -+
43.20317 -+static int
43.20318 -+print_reglist16(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.20319 -+		struct disassemble_info *info,
43.20320 -+		struct avr32_field_value *ifields)
43.20321 -+{
43.20322 -+  unsigned long regmask = ifields[0].value;
43.20323 -+  unsigned int i = 0, first, last;
43.20324 -+  int need_comma = 0;
43.20325 -+
43.20326 -+  while (i < 16)
43.20327 -+    {
43.20328 -+      if (regmask & 1)
43.20329 -+	{
43.20330 -+	  first = i;
43.20331 -+	  while (i < 16)
43.20332 -+	    {
43.20333 -+	      i++;
43.20334 -+	      regmask >>= 1;
43.20335 -+	      if (!(regmask & 1))
43.20336 -+		break;
43.20337 -+	    }
43.20338 -+	  last = i - 1;
43.20339 -+	  print_reglist_range(first, last, reg_table, need_comma, info);
43.20340 -+	  need_comma = 1;
43.20341 -+	}
43.20342 -+      else
43.20343 -+	{
43.20344 -+	  i++;
43.20345 -+	  regmask >>= 1;
43.20346 -+	}
43.20347 -+    }
43.20348 -+
43.20349 -+  return 1;
43.20350 -+}
43.20351 -+
43.20352 -+static int
43.20353 -+print_reglist_ldm(struct avr32_operand *op,
43.20354 -+		  struct disassemble_info *info,
43.20355 -+		  struct avr32_field_value *ifields)
43.20356 -+{
43.20357 -+  int rp, w_bit;
43.20358 -+  int i, first, last;
43.20359 -+  unsigned long regmask;
43.20360 -+
43.20361 -+  rp = ifields[0].value;
43.20362 -+  w_bit = ifields[1].value;
43.20363 -+  regmask = ifields[2].value;
43.20364 -+
43.20365 -+  if (regmask & (1 << AVR32_REG_PC) && rp == AVR32_REG_PC)
43.20366 -+    {
43.20367 -+      if (w_bit)
43.20368 -+	info->fprintf_func(info->stream, "sp++");
43.20369 -+      else
43.20370 -+	info->fprintf_func(info->stream, "sp");
43.20371 -+
43.20372 -+      for (i = 0; i < 12; )
43.20373 -+	{
43.20374 -+	  if (regmask & (1 << i))
43.20375 -+	    {
43.20376 -+	      first = i;
43.20377 -+	      while (i < 12)
43.20378 -+		{
43.20379 -+		  i++;
43.20380 -+		  if (!(regmask & (1 << i)))
43.20381 -+		    break;
43.20382 -+		}
43.20383 -+	      last = i - 1;
43.20384 -+	      print_reglist_range(first, last, reg_table, 1, info);
43.20385 -+	    }
43.20386 -+	  else
43.20387 -+	    i++;
43.20388 -+	}
43.20389 -+
43.20390 -+      info->fprintf_func(info->stream, ",pc");
43.20391 -+      if (regmask & (1 << AVR32_REG_LR))
43.20392 -+	info->fprintf_func(info->stream, ",r12=-1");
43.20393 -+      else if (regmask & (1 << AVR32_REG_R12))
43.20394 -+	info->fprintf_func(info->stream, ",r12=1");
43.20395 -+      else
43.20396 -+	info->fprintf_func(info->stream, ",r12=0");
43.20397 -+    }
43.20398 -+  else
43.20399 -+    {
43.20400 -+      if (w_bit)
43.20401 -+	info->fprintf_func(info->stream, "%s++,", reg_table[rp].name);
43.20402 -+      else
43.20403 -+	info->fprintf_func(info->stream, "%s,", reg_table[rp].name);
43.20404 -+
43.20405 -+      print_reglist16(op, info, ifields + 2);
43.20406 -+    }
43.20407 -+
43.20408 -+  return 3;
43.20409 -+}
43.20410 -+
43.20411 -+static int
43.20412 -+print_reglist_cp8(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.20413 -+		  struct disassemble_info *info,
43.20414 -+		  struct avr32_field_value *ifields)
43.20415 -+{
43.20416 -+  unsigned long regmask = ifields[0].value;
43.20417 -+  unsigned int i = 0, first, last, offset = 0;
43.20418 -+  int need_comma = 0;
43.20419 -+
43.20420 -+  if (ifields[1].value)
43.20421 -+    offset = 8;
43.20422 -+
43.20423 -+  while (i < 8)
43.20424 -+    {
43.20425 -+      if (regmask & 1)
43.20426 -+	{
43.20427 -+	  first = i;
43.20428 -+	  while (i < 8)
43.20429 -+	    {
43.20430 -+	      i++;
43.20431 -+	      regmask >>= 1;
43.20432 -+	      if (!(regmask & 1))
43.20433 -+		break;
43.20434 -+	    }
43.20435 -+	  last = i - 1;
43.20436 -+	  print_reglist_range(offset + first, offset + last,
43.20437 -+			      cr_table, need_comma, info);
43.20438 -+	  need_comma = 1;
43.20439 -+	}
43.20440 -+      else
43.20441 -+	{
43.20442 -+	  i++;
43.20443 -+	  regmask >>= 1;
43.20444 -+	}
43.20445 -+    }
43.20446 -+
43.20447 -+  return 2;
43.20448 -+}
43.20449 -+
43.20450 -+static int
43.20451 -+print_reglist_cpd8(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.20452 -+		   struct disassemble_info *info,
43.20453 -+		   struct avr32_field_value *ifields)
43.20454 -+{
43.20455 -+  unsigned long regmask = ifields[0].value;
43.20456 -+  unsigned int i = 0, first, last;
43.20457 -+  int need_comma = 0;
43.20458 -+
43.20459 -+  while (i < 8)
43.20460 -+    {
43.20461 -+      if (regmask & 1)
43.20462 -+	{
43.20463 -+	  first = 2 * i;
43.20464 -+	  while (i < 8)
43.20465 -+	    {
43.20466 -+	      i++;
43.20467 -+	      regmask >>= 1;
43.20468 -+	      if (!(regmask & 1))
43.20469 -+		break;
43.20470 -+	    }
43.20471 -+	  last = 2 * (i - 1) + 1;
43.20472 -+	  print_reglist_range(first, last, cr_table, need_comma, info);
43.20473 -+	  need_comma = 1;
43.20474 -+	}
43.20475 -+      else
43.20476 -+	{
43.20477 -+	  i++;
43.20478 -+	  regmask >>= 1;
43.20479 -+	}
43.20480 -+    }
43.20481 -+
43.20482 -+  return 1;
43.20483 -+}
43.20484 -+
43.20485 -+static int
43.20486 -+print_retval(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.20487 -+	     struct disassemble_info *info,
43.20488 -+	     struct avr32_field_value *ifields)
43.20489 -+{
43.20490 -+  unsigned long regid = ifields[0].value;
43.20491 -+  const char *retval;
43.20492 -+
43.20493 -+  if (regid < AVR32_REG_SP)
43.20494 -+    retval = reg_table[regid].name;
43.20495 -+  else if (regid == AVR32_REG_SP)
43.20496 -+    retval = "0";
43.20497 -+  else if (regid == AVR32_REG_LR)
43.20498 -+    retval = "-1";
43.20499 -+  else
43.20500 -+    retval = "1";
43.20501 -+
43.20502 -+  info->fprintf_func(info->stream, "%s", retval);
43.20503 -+
43.20504 -+  return 1;
43.20505 -+}
43.20506 -+
43.20507 -+static int
43.20508 -+print_mcall(struct avr32_operand *op,
43.20509 -+	    struct disassemble_info *info,
43.20510 -+	    struct avr32_field_value *ifields)
43.20511 -+{
43.20512 -+  unsigned long regid = ifields[0].value;
43.20513 -+
43.20514 -+  if (regid == AVR32_REG_PC)
43.20515 -+    print_jmplabel(op, info, ifields + 1);
43.20516 -+  else
43.20517 -+    print_intreg_sdisp(op, info, ifields);
43.20518 -+
43.20519 -+  return 2;
43.20520 -+}
43.20521 -+
43.20522 -+static int
43.20523 -+print_jospinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.20524 -+	      struct disassemble_info *info,
43.20525 -+	      struct avr32_field_value *ifields)
43.20526 -+{
43.20527 -+  signed long value = ifields[0].value;
43.20528 -+
43.20529 -+  if (value >= 4)
43.20530 -+    value -= 8;
43.20531 -+  else
43.20532 -+    value += 1;
43.20533 -+
43.20534 -+  info->fprintf_func(info->stream, "%ld", value);
43.20535 -+
43.20536 -+  return 1;
43.20537 -+}
43.20538 -+
43.20539 -+static int
43.20540 -+print_coh(struct avr32_operand *op ATTRIBUTE_UNUSED,
43.20541 -+	  struct disassemble_info *info,
43.20542 -+	  struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
43.20543 -+{
43.20544 -+  info->fprintf_func(info->stream, "COH");
43.20545 -+  return 0;
43.20546 -+}
43.20547 -+
43.20548 -+#define OP(name, sgn, pcrel, align, func) \
43.20549 -+  { AVR32_OPERAND_##name, pcrel, align, print_##func }
43.20550 -+
43.20551 -+struct avr32_operand operand[AVR32_NR_OPERANDS] =
43.20552 -+  {
43.20553 -+    OP(INTREG, 0, 0, 0, intreg),
43.20554 -+    OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
43.20555 -+    OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
43.20556 -+    OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
43.20557 -+    OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
43.20558 -+    OP(INTREG_BSEL, 0, 0, 0, intreg_bpart),
43.20559 -+    OP(INTREG_HSEL, 0, 0, 1, intreg_hpart),
43.20560 -+    OP(INTREG_SDISP, 1, 0, 0, intreg_sdisp),
43.20561 -+    OP(INTREG_SDISP_H, 1, 0, 1, intreg_sdisp),
43.20562 -+    OP(INTREG_SDISP_W, 1, 0, 2, intreg_sdisp),
43.20563 -+    OP(INTREG_UDISP, 0, 0, 0, intreg_udisp),
43.20564 -+    OP(INTREG_UDISP_H, 0, 0, 1, intreg_udisp),
43.20565 -+    OP(INTREG_UDISP_W, 0, 0, 2, intreg_udisp),
43.20566 -+    OP(INTREG_INDEX, 0, 0, 0, intreg_index),
43.20567 -+    OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
43.20568 -+    OP(DWREG, 0, 0, 1, intreg),
43.20569 -+    OP(PC_UDISP_W, 0, 1, 2, pc_disp),
43.20570 -+    OP(SP, 0, 0, 0, sp),
43.20571 -+    OP(SP_UDISP_W, 0, 0, 2, sp_disp),
43.20572 -+    OP(CPNO, 0, 0, 0, cpno),
43.20573 -+    OP(CPREG, 0, 0, 0, cpreg),
43.20574 -+    OP(CPREG_D, 0, 0, 1, cpreg),
43.20575 -+    OP(UNSIGNED_CONST, 0, 0, 0, uconst),
43.20576 -+    OP(UNSIGNED_CONST_W, 0, 0, 2, uconst),
43.20577 -+    OP(SIGNED_CONST, 1, 0, 0, sconst),
43.20578 -+    OP(SIGNED_CONST_W, 1, 0, 2, sconst),
43.20579 -+    OP(JMPLABEL, 1, 1, 1, jmplabel),
43.20580 -+    OP(UNSIGNED_NUMBER, 0, 0, 0, uconst),
43.20581 -+    OP(UNSIGNED_NUMBER_W, 0, 0, 2, uconst),
43.20582 -+    OP(REGLIST8, 0, 0, 0, reglist8),
43.20583 -+    OP(REGLIST9, 0, 0, 0, reglist9),
43.20584 -+    OP(REGLIST16, 0, 0, 0, reglist16),
43.20585 -+    OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
43.20586 -+    OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
43.20587 -+    OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
43.20588 -+    OP(RETVAL, 0, 0, 0, retval),
43.20589 -+    OP(MCALL, 1, 0, 2, mcall),
43.20590 -+    OP(JOSPINC, 0, 0, 0, jospinc),
43.20591 -+    OP(COH, 0, 0, 0, coh),
43.20592 -+  };
43.20593 -+
43.20594 -+static void
43.20595 -+print_opcode(bfd_vma insn_word, const struct avr32_opcode *opc,
43.20596 -+	     bfd_vma pc, struct disassemble_info *info)
43.20597 -+{
43.20598 -+  const struct avr32_syntax *syntax = opc->syntax;
43.20599 -+  struct avr32_field_value fields[AVR32_MAX_FIELDS];
43.20600 -+  unsigned int i, next_field = 0, nr_operands;
43.20601 -+
43.20602 -+  for (i = 0; i < opc->nr_fields; i++)
43.20603 -+    {
43.20604 -+      opc->fields[i]->extract(opc->fields[i], &insn_word, &fields[i].value);
43.20605 -+      fields[i].ifield = opc->fields[i];
43.20606 -+    }
43.20607 -+
43.20608 -+  current_pc = pc;
43.20609 -+  info->fprintf_func(info->stream, "%s", syntax->mnemonic->name);
43.20610 -+
43.20611 -+  if (syntax->nr_operands < 0)
43.20612 -+    nr_operands = (unsigned int) -syntax->nr_operands;
43.20613 -+  else
43.20614 -+    nr_operands = (unsigned int) syntax->nr_operands;
43.20615 -+
43.20616 -+  for (i = 0; i < nr_operands; i++)
43.20617 -+    {
43.20618 -+      struct avr32_operand *op = &operand[syntax->operand[i]];
43.20619 -+
43.20620 -+      if (i)
43.20621 -+	info->fprintf_func(info->stream, ",");
43.20622 -+      else
43.20623 -+	info->fprintf_func(info->stream, "\t");
43.20624 -+      next_field += op->print(op, info, &fields[next_field]);
43.20625 -+    }
43.20626 -+}
43.20627 -+
43.20628 -+static const struct avr32_opcode *
43.20629 -+find_opcode(bfd_vma insn_word)
43.20630 -+{
43.20631 -+  int i;
43.20632 -+
43.20633 -+  for (i = 0; i < AVR32_NR_OPCODES; i++)
43.20634 -+    {
43.20635 -+      const struct avr32_opcode *opc = &avr32_opc_table[i];
43.20636 -+
43.20637 -+      if ((insn_word & opc->mask) == opc->value)
43.20638 -+	return opc;
43.20639 -+    }
43.20640 -+
43.20641 -+  return NULL;
43.20642 -+}
43.20643 -+
43.20644 -+static int
43.20645 -+read_insn_word(bfd_vma pc, bfd_vma *valuep,
43.20646 -+	       struct disassemble_info *info)
43.20647 -+{
43.20648 -+  bfd_byte b[4];
43.20649 -+  int status;
43.20650 -+
43.20651 -+  status = info->read_memory_func(pc, b, 4, info);
43.20652 -+  if (status)
43.20653 -+    {
43.20654 -+      status = info->read_memory_func(pc, b, 2, info);
43.20655 -+      if (status)
43.20656 -+	{
43.20657 -+	  info->memory_error_func(status, pc, info);
43.20658 -+	  return -1;
43.20659 -+	}
43.20660 -+      b[3] = b[2] = 0;
43.20661 -+    }
43.20662 -+
43.20663 -+  *valuep =  (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];
43.20664 -+  return 0;
43.20665 -+}
43.20666 -+
43.20667 -+/* Parse an individual disassembler option.  */
43.20668 -+
43.20669 -+void
43.20670 -+parse_avr32_disassembler_option (option)
43.20671 -+     char * option;
43.20672 -+{
43.20673 -+  if (option == NULL)
43.20674 -+    return;
43.20675 -+
43.20676 -+  /* XXX - should break 'option' at following delimiter.  */
43.20677 -+  fprintf (stderr, _("Unrecognised disassembler option: %s\n"), option);
43.20678 -+
43.20679 -+  return;
43.20680 -+}
43.20681 -+
43.20682 -+/* Parse the string of disassembler options, spliting it at whitespaces
43.20683 -+   or commas.  (Whitespace separators supported for backwards compatibility).  */
43.20684 -+
43.20685 -+static void
43.20686 -+parse_disassembler_options (char *options)
43.20687 -+{
43.20688 -+  if (options == NULL)
43.20689 -+    return;
43.20690 -+
43.20691 -+  while (*options)
43.20692 -+    {
43.20693 -+      parse_avr32_disassembler_option (options);
43.20694 -+
43.20695 -+      /* Skip forward to next seperator.  */
43.20696 -+      while ((*options) && (! ISSPACE (*options)) && (*options != ','))
43.20697 -+	++ options;
43.20698 -+      /* Skip forward past seperators.  */
43.20699 -+      while (ISSPACE (*options) || (*options == ','))
43.20700 -+	++ options;
43.20701 -+    }
43.20702 -+}
43.20703 -+
43.20704 -+int
43.20705 -+print_insn_avr32(bfd_vma pc, struct disassemble_info *info)
43.20706 -+{
43.20707 -+  bfd_vma insn_word;
43.20708 -+  const struct avr32_opcode *opc;
43.20709 -+
43.20710 -+  if (info->disassembler_options)
43.20711 -+    {
43.20712 -+      parse_disassembler_options (info->disassembler_options);
43.20713 -+
43.20714 -+      /* To avoid repeated parsing of these options, we remove them here.  */
43.20715 -+      info->disassembler_options = NULL;
43.20716 -+    }
43.20717 -+
43.20718 -+  info->bytes_per_chunk = 1;
43.20719 -+  info->display_endian = BFD_ENDIAN_BIG;
43.20720 -+
43.20721 -+  if (read_insn_word(pc, &insn_word, info))
43.20722 -+    return -1;
43.20723 -+
43.20724 -+  opc = find_opcode(insn_word);
43.20725 -+  if (opc)
43.20726 -+    {
43.20727 -+      print_opcode(insn_word, opc, pc, info);
43.20728 -+      return opc->size;
43.20729 -+    }
43.20730 -+  else
43.20731 -+    {
43.20732 -+      info->fprintf_func(info->stream, _("*unknown*"));
43.20733 -+      return 2;
43.20734 -+    }
43.20735 -+
43.20736 -+}
43.20737 -+
43.20738 -+void
43.20739 -+print_avr32_disassembler_options (FILE *stream ATTRIBUTE_UNUSED)
43.20740 -+{
43.20741 -+
43.20742 -+}
43.20743 ---- /dev/null
43.20744 -+++ b/opcodes/avr32-opc.c
43.20745 -@@ -0,0 +1,6932 @@
43.20746 -+/* Opcode tables for AVR32.
43.20747 -+   Copyright 2005, 2006 Atmel Corporation.
43.20748 -+
43.20749 -+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
43.20750 -+
43.20751 -+   This file is part of libopcodes.
43.20752 -+
43.20753 -+   This program is free software; you can redistribute it and/or
43.20754 -+   modify it under the terms of the GNU General Public License as
43.20755 -+   published by the Free Software Foundation; either version 2 of the
43.20756 -+   License, or (at your option) any later version.
43.20757 -+
43.20758 -+   This program is distributed in the hope that it will be useful, but
43.20759 -+   WITHOUT ANY WARRANTY; without even the implied warranty of
43.20760 -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
43.20761 -+   General Public License for more details.
43.20762 -+
43.20763 -+   You should have received a copy of the GNU General Public License
43.20764 -+   along with this program; if not, write to the Free Software
43.20765 -+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
43.20766 -+   02111-1307, USA.  */
43.20767 -+
43.20768 -+#include <stdlib.h>
43.20769 -+#include <assert.h>
43.20770 -+
43.20771 -+#include "avr32-opc.h"
43.20772 -+
43.20773 -+#define PICO_CPNO	1
43.20774 -+
43.20775 -+void
43.20776 -+avr32_insert_simple(const struct avr32_ifield *field,
43.20777 -+		    void *buf, unsigned long value)
43.20778 -+{
43.20779 -+  bfd_vma word;
43.20780 -+
43.20781 -+  word = bfd_getb32(buf);
43.20782 -+  word &= ~field->mask;
43.20783 -+  word |= (value << field->shift) & field->mask;
43.20784 -+  bfd_putb32(word, buf);
43.20785 -+}
43.20786 -+
43.20787 -+void
43.20788 -+avr32_insert_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
43.20789 -+		   void *buf, unsigned long value)
43.20790 -+{
43.20791 -+  char *opcode = buf;
43.20792 -+
43.20793 -+  opcode[0] = (opcode[0] & 0xe1) | (value & 0x1e);
43.20794 -+  opcode[1] = (opcode[1] & 0xef) | ((value & 1) << 4);
43.20795 -+}
43.20796 -+
43.20797 -+void
43.20798 -+avr32_insert_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
43.20799 -+		 void *buf, unsigned long value)
43.20800 -+{
43.20801 -+  char *opcode = buf;
43.20802 -+
43.20803 -+  opcode[0] = (opcode[0] & 0xf0) | ((value & 0xf0) >> 4);
43.20804 -+  opcode[1] = ((opcode[1] & 0x0c) | ((value & 0x0f) << 4)
43.20805 -+	       | ((value & 0x300) >> 8));
43.20806 -+}
43.20807 -+
43.20808 -+
43.20809 -+void
43.20810 -+avr32_insert_k21(const struct avr32_ifield *field,
43.20811 -+		 void *buf, unsigned long value)
43.20812 -+{
43.20813 -+  bfd_vma word;
43.20814 -+  bfd_vma k21;
43.20815 -+
43.20816 -+  word = bfd_getb32(buf);
43.20817 -+  word &= ~field->mask;
43.20818 -+  k21 = ((value & 0xffff) | ((value & 0x10000) << 4)
43.20819 -+	 | ((value & 0x1e0000) << 8));
43.20820 -+  assert(!(k21 & ~field->mask));
43.20821 -+  word |= k21;
43.20822 -+  bfd_putb32(word, buf);
43.20823 -+}
43.20824 -+
43.20825 -+void
43.20826 -+avr32_insert_cpop(const struct avr32_ifield *field,
43.20827 -+		  void *buf, unsigned long value)
43.20828 -+{
43.20829 -+  bfd_vma word;
43.20830 -+
43.20831 -+  word = bfd_getb32(buf);
43.20832 -+  word &= ~field->mask;
43.20833 -+  word |= (((value & 0x1e) << 15) | ((value & 0x60) << 20)
43.20834 -+	   | ((value & 0x01) << 12));
43.20835 -+  bfd_putb32(word, buf);
43.20836 -+}
43.20837 -+
43.20838 -+void
43.20839 -+avr32_insert_k12cp(const struct avr32_ifield *field,
43.20840 -+		   void *buf, unsigned long value)
43.20841 -+{
43.20842 -+  bfd_vma word;
43.20843 -+
43.20844 -+  word = bfd_getb32(buf);
43.20845 -+  word &= ~field->mask;
43.20846 -+  word |= ((value & 0xf00) << 4) | (value & 0xff);
43.20847 -+  bfd_putb32(word, buf);
43.20848 -+}
43.20849 -+
43.20850 -+void avr32_extract_simple(const struct avr32_ifield *field,
43.20851 -+			  void *buf, unsigned long *value)
43.20852 -+{
43.20853 -+  /* XXX: The disassembler has done any necessary byteswapping already */
43.20854 -+  bfd_vma word = *(bfd_vma *)buf;
43.20855 -+
43.20856 -+  *value = (word & field->mask) >> field->shift;
43.20857 -+}
43.20858 -+
43.20859 -+void avr32_extract_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
43.20860 -+			 void *buf, unsigned long *value)
43.20861 -+{
43.20862 -+  bfd_vma word = *(bfd_vma *)buf;
43.20863 -+
43.20864 -+  *value = ((word >> 20) & 1) | ((word >> 24) & 0x1e);
43.20865 -+}
43.20866 -+
43.20867 -+void avr32_extract_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
43.20868 -+		       void *buf, unsigned long *value)
43.20869 -+{
43.20870 -+  bfd_vma word = *(bfd_vma *)buf;
43.20871 -+
43.20872 -+  *value = ((word >> 8) & 0x300) | ((word >> 20) & 0xff);
43.20873 -+}
43.20874 -+
43.20875 -+void avr32_extract_k21(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
43.20876 -+		       void *buf, unsigned long *value)
43.20877 -+{
43.20878 -+  bfd_vma word = *(bfd_vma *)buf;
43.20879 -+
43.20880 -+  *value = ((word & 0xffff) | ((word >> 4) & 0x10000)
43.20881 -+	    | ((word >> 8) & 0x1e0000));
43.20882 -+}
43.20883 -+
43.20884 -+void avr32_extract_cpop(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
43.20885 -+			void *buf, unsigned long *value)
43.20886 -+{
43.20887 -+  bfd_vma word = *(bfd_vma *)buf;
43.20888 -+
43.20889 -+  *value = (((word >> 12) & 1) | ((word >> 15) & 0x1e)
43.20890 -+	    | ((word >> 20) & 0x60));
43.20891 -+}
43.20892 -+
43.20893 -+void avr32_extract_k12cp(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
43.20894 -+			 void *buf, unsigned long *value)
43.20895 -+{
43.20896 -+  bfd_vma word = *(bfd_vma *)buf;
43.20897 -+
43.20898 -+  *value = ((word >> 4) & 0xf00) | (word & 0xff);
43.20899 -+}
43.20900 -+
43.20901 -+
43.20902 -+#define IFLD(id, bitsz, shift, mask, func) \
43.20903 -+  { AVR32_IFIELD_##id, bitsz, shift, mask, \
43.20904 -+    avr32_insert_##func, avr32_extract_##func }
43.20905 -+
43.20906 -+const struct avr32_ifield avr32_ifield_table[] =
43.20907 -+  {
43.20908 -+    IFLD(RX, 4, 25, 0x1e000000, simple),
43.20909 -+    IFLD(RY, 4, 16, 0x000f0000, simple),
43.20910 -+    IFLD(COND4C, 4, 20, 0x00f00000, simple),
43.20911 -+    IFLD(K8C, 8, 20, 0x0ff00000, simple),
43.20912 -+    IFLD(K7C, 7, 20, 0x07f00000, simple),
43.20913 -+    IFLD(K5C, 5, 20, 0x01f00000, simple),
43.20914 -+    IFLD(K3, 3, 20, 0x00700000, simple),
43.20915 -+    IFLD(RY_DW, 3, 17, 0x000e0000, simple),
43.20916 -+    IFLD(COND4E, 4, 8, 0x00000f00, simple),
43.20917 -+    IFLD(K8E, 8, 0, 0x000000ff, simple),
43.20918 -+    IFLD(BIT5C, 5, 20, 0x1e100000, bit5c),
43.20919 -+    IFLD(COND3, 3, 16, 0x00070000, simple),
43.20920 -+    IFLD(K10, 10, 16, 0x0ff30000, k10),
43.20921 -+    IFLD(POPM, 9, 19, 0x0ff80000, simple),
43.20922 -+    IFLD(K2, 2, 4, 0x00000030, simple),
43.20923 -+    IFLD(RD_E, 4, 0, 0x0000000f, simple),
43.20924 -+    IFLD(RD_DW, 3, 1, 0x0000000e, simple),
43.20925 -+    IFLD(X, 1, 5, 0x00000020, simple),
43.20926 -+    IFLD(Y, 1, 4, 0x00000010, simple),
43.20927 -+    IFLD(X2, 1, 13, 0x00002000, simple),
43.20928 -+    IFLD(Y2, 1, 12, 0x00001000, simple),
43.20929 -+    IFLD(K5E, 5, 0, 0x0000001f, simple),
43.20930 -+    IFLD(PART2, 2, 0, 0x00000003, simple),
43.20931 -+    IFLD(PART1, 1, 0, 0x00000001, simple),
43.20932 -+    IFLD(K16, 16, 0, 0x0000ffff, simple),
43.20933 -+    IFLD(CACHEOP, 5, 11, 0x0000f800, simple),
43.20934 -+    IFLD(K11, 11, 0, 0x000007ff, simple),
43.20935 -+    IFLD(K21, 21, 0, 0x1e10ffff, k21),
43.20936 -+    IFLD(CPOP, 7, 12, 0x060f1000, cpop),
43.20937 -+    IFLD(CPNO, 3, 13, 0x0000e000, simple),
43.20938 -+    IFLD(CRD_RI, 4, 8, 0x00000f00, simple),
43.20939 -+    IFLD(CRX, 4, 4, 0x000000f0, simple),
43.20940 -+    IFLD(CRY, 4, 0, 0x0000000f, simple),
43.20941 -+    IFLD(K7E, 7, 0, 0x0000007f, simple),
43.20942 -+    IFLD(CRD_DW, 3, 9, 0x00000e00, simple),
43.20943 -+    IFLD(PART1_K12, 1, 12, 0x00001000, simple),
43.20944 -+    IFLD(PART2_K12, 2, 12, 0x00003000, simple),
43.20945 -+    IFLD(K12, 12, 0, 0x00000fff, simple),
43.20946 -+    IFLD(S5, 5, 5, 0x000003e0, simple),
43.20947 -+    IFLD(K5E2, 5, 4, 0x000001f0, simple),
43.20948 -+    IFLD(K4, 4, 20, 0x00f00000, simple),
43.20949 -+    IFLD(COND4E2, 4, 4, 0x000000f0, simple),
43.20950 -+    IFLD(K8E2, 8, 4, 0x00000ff0, simple),
43.20951 -+    IFLD(K6, 6, 20, 0x03f00000, simple),
43.20952 -+    IFLD(MEM15, 15, 0, 0x00007fff, simple),
43.20953 -+    IFLD(MEMB5, 5, 15, 0x000f8000, simple),
43.20954 -+    IFLD(W, 1, 25, 0x02000000, simple),
43.20955 -+    /* Coprocessor Multiple High/Low */
43.20956 -+    IFLD(CM_HL, 1, 8, 0x00000100, simple),
43.20957 -+    IFLD(K12CP, 12 ,0, 0x0000f0ff, k12cp),
43.20958 -+    IFLD(K9E, 9 ,0, 0x000001ff, simple),
43.20959 -+  };
43.20960 -+#undef IFLD
43.20961 -+
43.20962 -+
43.20963 -+struct avr32_opcode avr32_opc_table[] =
43.20964 -+  {
43.20965 -+    {
43.20966 -+      AVR32_OPC_ABS, 2, 0x5c400000, 0xfff00000,
43.20967 -+      &avr32_syntax_table[AVR32_SYNTAX_ABS],
43.20968 -+      BFD_RELOC_UNUSED, 1, -1,
43.20969 -+      {
43.20970 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.20971 -+      }
43.20972 -+    },
43.20973 -+    {
43.20974 -+      AVR32_OPC_ACALL, 2, 0xd0000000, 0xf00f0000,
43.20975 -+      &avr32_syntax_table[AVR32_SYNTAX_ACALL],
43.20976 -+      BFD_RELOC_UNUSED, 1, -1,
43.20977 -+      {
43.20978 -+	&avr32_ifield_table[AVR32_IFIELD_K8C],
43.20979 -+      },
43.20980 -+    },
43.20981 -+    {
43.20982 -+      AVR32_OPC_ACR, 2, 0x5c000000, 0xfff00000,
43.20983 -+      &avr32_syntax_table[AVR32_SYNTAX_ACR],
43.20984 -+      BFD_RELOC_UNUSED, 1, -1,
43.20985 -+      {
43.20986 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.20987 -+      },
43.20988 -+    },
43.20989 -+    {
43.20990 -+      AVR32_OPC_ADC, 4, 0xe0000040, 0xe1f0fff0,
43.20991 -+      &avr32_syntax_table[AVR32_SYNTAX_ADC],
43.20992 -+      BFD_RELOC_UNUSED, 3, -1,
43.20993 -+      {
43.20994 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.20995 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.20996 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.20997 -+      },
43.20998 -+    },
43.20999 -+    {
43.21000 -+      AVR32_OPC_ADD1, 2, 0x00000000, 0xe1f00000,
43.21001 -+      &avr32_syntax_table[AVR32_SYNTAX_ADD1],
43.21002 -+      BFD_RELOC_UNUSED, 2, -1,
43.21003 -+      {
43.21004 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21005 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21006 -+      },
43.21007 -+    },
43.21008 -+    {
43.21009 -+      AVR32_OPC_ADD2, 4, 0xe0000000, 0xe1f0ffc0,
43.21010 -+      &avr32_syntax_table[AVR32_SYNTAX_ADD2],
43.21011 -+      BFD_RELOC_UNUSED, 4, -1,
43.21012 -+      {
43.21013 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21014 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21015 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21016 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.21017 -+      },
43.21018 -+    },
43.21019 -+    {
43.21020 -+      AVR32_OPC_ADDABS, 4, 0xe0000e40, 0xe1f0fff0,
43.21021 -+      &avr32_syntax_table[AVR32_SYNTAX_ADDABS],
43.21022 -+      BFD_RELOC_UNUSED, 3, -1,
43.21023 -+      {
43.21024 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21025 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21026 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21027 -+      },
43.21028 -+    },
43.21029 -+    {
43.21030 -+      AVR32_OPC_ADDHH_W, 4, 0xe0000e00, 0xe1f0ffc0,
43.21031 -+      &avr32_syntax_table[AVR32_SYNTAX_ADDHH_W],
43.21032 -+      BFD_RELOC_UNUSED, 5, -1,
43.21033 -+      {
43.21034 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21035 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21036 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.21037 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21038 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.21039 -+      },
43.21040 -+    },
43.21041 -+    {
43.21042 -+      AVR32_OPC_AND1, 2, 0x00600000, 0xe1f00000,
43.21043 -+      &avr32_syntax_table[AVR32_SYNTAX_AND1],
43.21044 -+      BFD_RELOC_UNUSED, 2, -1,
43.21045 -+      {
43.21046 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21047 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21048 -+      },
43.21049 -+    },
43.21050 -+    {
43.21051 -+      AVR32_OPC_AND2, 4, 0xe1e00000, 0xe1f0fe00,
43.21052 -+      &avr32_syntax_table[AVR32_SYNTAX_AND2],
43.21053 -+      BFD_RELOC_UNUSED, 4, -1,
43.21054 -+      {
43.21055 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21056 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21057 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21058 -+	&avr32_ifield_table[AVR32_IFIELD_K5E2],
43.21059 -+      },
43.21060 -+    },
43.21061 -+    {
43.21062 -+      AVR32_OPC_AND3, 4, 0xe1e00200, 0xe1f0fe00,
43.21063 -+      &avr32_syntax_table[AVR32_SYNTAX_AND3],
43.21064 -+      BFD_RELOC_UNUSED, 4, -1,
43.21065 -+      {
43.21066 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21067 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21068 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21069 -+	&avr32_ifield_table[AVR32_IFIELD_K5E2],
43.21070 -+      },
43.21071 -+    },
43.21072 -+    {
43.21073 -+      AVR32_OPC_ANDH, 4, 0xe4100000, 0xfff00000,
43.21074 -+      &avr32_syntax_table[AVR32_SYNTAX_ANDH],
43.21075 -+      BFD_RELOC_AVR32_16U, 2, 1,
43.21076 -+      {
43.21077 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21078 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.21079 -+      },
43.21080 -+    },
43.21081 -+    {
43.21082 -+      AVR32_OPC_ANDH_COH, 4, 0xe6100000, 0xfff00000,
43.21083 -+      &avr32_syntax_table[AVR32_SYNTAX_ANDH_COH],
43.21084 -+      BFD_RELOC_AVR32_16U, 2, 1,
43.21085 -+      {
43.21086 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21087 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.21088 -+      },
43.21089 -+    },
43.21090 -+    {
43.21091 -+      AVR32_OPC_ANDL, 4, 0xe0100000, 0xfff00000,
43.21092 -+      &avr32_syntax_table[AVR32_SYNTAX_ANDL],
43.21093 -+      BFD_RELOC_AVR32_16U, 2, 1,
43.21094 -+      {
43.21095 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21096 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.21097 -+      },
43.21098 -+    },
43.21099 -+    {
43.21100 -+      AVR32_OPC_ANDL_COH, 4, 0xe2100000, 0xfff00000,
43.21101 -+      &avr32_syntax_table[AVR32_SYNTAX_ANDL_COH],
43.21102 -+      BFD_RELOC_AVR32_16U, 2, 1,
43.21103 -+      {
43.21104 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21105 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.21106 -+      },
43.21107 -+    },
43.21108 -+    {
43.21109 -+      AVR32_OPC_ANDN, 2, 0x00800000, 0xe1f00000,
43.21110 -+      &avr32_syntax_table[AVR32_SYNTAX_ANDN],
43.21111 -+      BFD_RELOC_UNUSED, 2, -1,
43.21112 -+      {
43.21113 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21114 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21115 -+      },
43.21116 -+    },
43.21117 -+    {
43.21118 -+      AVR32_OPC_ASR1, 4, 0xe0000840, 0xe1f0fff0,
43.21119 -+      &avr32_syntax_table[AVR32_SYNTAX_ASR1],
43.21120 -+      BFD_RELOC_UNUSED, 3, -1,
43.21121 -+      {
43.21122 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21123 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21124 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21125 -+      },
43.21126 -+    },
43.21127 -+    {
43.21128 -+      AVR32_OPC_ASR3, 4, 0xe0001400, 0xe1f0ffe0,
43.21129 -+      &avr32_syntax_table[AVR32_SYNTAX_ASR3],
43.21130 -+      BFD_RELOC_UNUSED, 3, -1,
43.21131 -+      {
43.21132 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21133 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21134 -+	&avr32_ifield_table[AVR32_IFIELD_K5E],
43.21135 -+      },
43.21136 -+    },
43.21137 -+    {
43.21138 -+      AVR32_OPC_ASR2, 2, 0xa1400000, 0xe1e00000,
43.21139 -+      &avr32_syntax_table[AVR32_SYNTAX_ASR2],
43.21140 -+      BFD_RELOC_UNUSED, 2, -1,
43.21141 -+      {
43.21142 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21143 -+	&avr32_ifield_table[AVR32_IFIELD_BIT5C],
43.21144 -+      },
43.21145 -+    },
43.21146 -+    {
43.21147 -+      AVR32_OPC_BLD, 4, 0xedb00000, 0xfff0ffe0,
43.21148 -+      &avr32_syntax_table[AVR32_SYNTAX_BLD],
43.21149 -+      BFD_RELOC_UNUSED, 2, -1,
43.21150 -+      {
43.21151 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21152 -+	&avr32_ifield_table[AVR32_IFIELD_K5E],
43.21153 -+      },
43.21154 -+    },
43.21155 -+    {
43.21156 -+      AVR32_OPC_BREQ1, 2, 0xc0000000, 0xf00f0000,
43.21157 -+      &avr32_syntax_table[AVR32_SYNTAX_BREQ1],
43.21158 -+      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
43.21159 -+      {
43.21160 -+	&avr32_ifield_table[AVR32_IFIELD_K8C],
43.21161 -+      },
43.21162 -+    },
43.21163 -+    {
43.21164 -+      AVR32_OPC_BRNE1, 2, 0xc0010000, 0xf00f0000,
43.21165 -+      &avr32_syntax_table[AVR32_SYNTAX_BRNE1],
43.21166 -+      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
43.21167 -+      {
43.21168 -+	&avr32_ifield_table[AVR32_IFIELD_K8C],
43.21169 -+      },
43.21170 -+    },
43.21171 -+    {
43.21172 -+      AVR32_OPC_BRCC1, 2, 0xc0020000, 0xf00f0000,
43.21173 -+      &avr32_syntax_table[AVR32_SYNTAX_BRCC1],
43.21174 -+      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
43.21175 -+      {
43.21176 -+	&avr32_ifield_table[AVR32_IFIELD_K8C],
43.21177 -+      },
43.21178 -+    },
43.21179 -+    {
43.21180 -+      AVR32_OPC_BRCS1, 2, 0xc0030000, 0xf00f0000,
43.21181 -+      &avr32_syntax_table[AVR32_SYNTAX_BRCS1],
43.21182 -+      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
43.21183 -+      {
43.21184 -+	&avr32_ifield_table[AVR32_IFIELD_K8C],
43.21185 -+      },
43.21186 -+    },
43.21187 -+    {
43.21188 -+      AVR32_OPC_BRGE1, 2, 0xc0040000, 0xf00f0000,
43.21189 -+      &avr32_syntax_table[AVR32_SYNTAX_BRGE1],
43.21190 -+      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
43.21191 -+      {
43.21192 -+	&avr32_ifield_table[AVR32_IFIELD_K8C],
43.21193 -+      },
43.21194 -+    },
43.21195 -+    {
43.21196 -+      AVR32_OPC_BRLT1, 2, 0xc0050000, 0xf00f0000,
43.21197 -+      &avr32_syntax_table[AVR32_SYNTAX_BRLT1],
43.21198 -+      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
43.21199 -+      {
43.21200 -+	&avr32_ifield_table[AVR32_IFIELD_K8C],
43.21201 -+      },
43.21202 -+    },
43.21203 -+    {
43.21204 -+      AVR32_OPC_BRMI1, 2, 0xc0060000, 0xf00f0000,
43.21205 -+      &avr32_syntax_table[AVR32_SYNTAX_BRMI1],
43.21206 -+      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
43.21207 -+      {
43.21208 -+	&avr32_ifield_table[AVR32_IFIELD_K8C],
43.21209 -+      },
43.21210 -+    },
43.21211 -+    {
43.21212 -+      AVR32_OPC_BRPL1, 2, 0xc0070000, 0xf00f0000,
43.21213 -+      &avr32_syntax_table[AVR32_SYNTAX_BRPL1],
43.21214 -+      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
43.21215 -+      {
43.21216 -+	&avr32_ifield_table[AVR32_IFIELD_K8C],
43.21217 -+      },
43.21218 -+    },
43.21219 -+    {
43.21220 -+      AVR32_OPC_BREQ2, 4, 0xe0800000, 0xe1ef0000,
43.21221 -+      &avr32_syntax_table[AVR32_SYNTAX_BREQ2],
43.21222 -+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
43.21223 -+      {
43.21224 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.21225 -+      },
43.21226 -+    },
43.21227 -+    {
43.21228 -+      AVR32_OPC_BRNE2, 4, 0xe0810000, 0xe1ef0000,
43.21229 -+      &avr32_syntax_table[AVR32_SYNTAX_BRNE2],
43.21230 -+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
43.21231 -+      {
43.21232 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.21233 -+      },
43.21234 -+    },
43.21235 -+    {
43.21236 -+      AVR32_OPC_BRCC2, 4, 0xe0820000, 0xe1ef0000,
43.21237 -+      &avr32_syntax_table[AVR32_SYNTAX_BRHS2],
43.21238 -+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
43.21239 -+      {
43.21240 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.21241 -+      },
43.21242 -+    },
43.21243 -+    {
43.21244 -+      AVR32_OPC_BRCS2, 4, 0xe0830000, 0xe1ef0000,
43.21245 -+      &avr32_syntax_table[AVR32_SYNTAX_BRLO2],
43.21246 -+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
43.21247 -+      {
43.21248 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.21249 -+      },
43.21250 -+    },
43.21251 -+    {
43.21252 -+      AVR32_OPC_BRGE2, 4, 0xe0840000, 0xe1ef0000,
43.21253 -+      &avr32_syntax_table[AVR32_SYNTAX_BRGE2],
43.21254 -+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
43.21255 -+      {
43.21256 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.21257 -+      },
43.21258 -+    },
43.21259 -+    {
43.21260 -+      AVR32_OPC_BRLT2, 4, 0xe0850000, 0xe1ef0000,
43.21261 -+      &avr32_syntax_table[AVR32_SYNTAX_BRLT2],
43.21262 -+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
43.21263 -+      {
43.21264 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.21265 -+      },
43.21266 -+    },
43.21267 -+    {
43.21268 -+      AVR32_OPC_BRMI2, 4, 0xe0860000, 0xe1ef0000,
43.21269 -+      &avr32_syntax_table[AVR32_SYNTAX_BRMI2],
43.21270 -+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
43.21271 -+      {
43.21272 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.21273 -+      },
43.21274 -+    },
43.21275 -+    {
43.21276 -+      AVR32_OPC_BRPL2, 4, 0xe0870000, 0xe1ef0000,
43.21277 -+      &avr32_syntax_table[AVR32_SYNTAX_BRPL2],
43.21278 -+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
43.21279 -+      {
43.21280 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.21281 -+      },
43.21282 -+    },
43.21283 -+    {
43.21284 -+      AVR32_OPC_BRLS, 4, 0xe0880000, 0xe1ef0000,
43.21285 -+      &avr32_syntax_table[AVR32_SYNTAX_BRLS],
43.21286 -+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
43.21287 -+      {
43.21288 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.21289 -+      },
43.21290 -+    },
43.21291 -+    {
43.21292 -+      AVR32_OPC_BRGT, 4, 0xe0890000, 0xe1ef0000,
43.21293 -+      &avr32_syntax_table[AVR32_SYNTAX_BRGT],
43.21294 -+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
43.21295 -+      {
43.21296 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.21297 -+      },
43.21298 -+    },
43.21299 -+    {
43.21300 -+      AVR32_OPC_BRLE, 4, 0xe08a0000, 0xe1ef0000,
43.21301 -+      &avr32_syntax_table[AVR32_SYNTAX_BRLE],
43.21302 -+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
43.21303 -+      {
43.21304 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.21305 -+      },
43.21306 -+    },
43.21307 -+    {
43.21308 -+      AVR32_OPC_BRHI, 4, 0xe08b0000, 0xe1ef0000,
43.21309 -+      &avr32_syntax_table[AVR32_SYNTAX_BRHI],
43.21310 -+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
43.21311 -+      {
43.21312 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.21313 -+      },
43.21314 -+    },
43.21315 -+    {
43.21316 -+      AVR32_OPC_BRVS, 4, 0xe08c0000, 0xe1ef0000,
43.21317 -+      &avr32_syntax_table[AVR32_SYNTAX_BRVS],
43.21318 -+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
43.21319 -+      {
43.21320 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.21321 -+      },
43.21322 -+    },
43.21323 -+    {
43.21324 -+      AVR32_OPC_BRVC, 4, 0xe08d0000, 0xe1ef0000,
43.21325 -+      &avr32_syntax_table[AVR32_SYNTAX_BRVC],
43.21326 -+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
43.21327 -+      {
43.21328 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.21329 -+      },
43.21330 -+    },
43.21331 -+    {
43.21332 -+      AVR32_OPC_BRQS, 4, 0xe08e0000, 0xe1ef0000,
43.21333 -+      &avr32_syntax_table[AVR32_SYNTAX_BRQS],
43.21334 -+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
43.21335 -+      {
43.21336 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.21337 -+      },
43.21338 -+    },
43.21339 -+    {
43.21340 -+      AVR32_OPC_BRAL, 4, 0xe08f0000, 0xe1ef0000,
43.21341 -+      &avr32_syntax_table[AVR32_SYNTAX_BRAL],
43.21342 -+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
43.21343 -+      {
43.21344 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.21345 -+      },
43.21346 -+    },
43.21347 -+    {
43.21348 -+      AVR32_OPC_BREAKPOINT, 2, 0xd6730000, 0xffff0000,
43.21349 -+      &avr32_syntax_table[AVR32_SYNTAX_BREAKPOINT],
43.21350 -+      BFD_RELOC_UNUSED, 0, -1, { NULL },
43.21351 -+    },
43.21352 -+    {
43.21353 -+      AVR32_OPC_BREV, 2, 0x5c900000, 0xfff00000,
43.21354 -+      &avr32_syntax_table[AVR32_SYNTAX_BREV],
43.21355 -+      BFD_RELOC_UNUSED, 1, -1,
43.21356 -+      {
43.21357 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21358 -+      },
43.21359 -+    },
43.21360 -+    {
43.21361 -+      AVR32_OPC_BST, 4, 0xefb00000, 0xfff0ffe0,
43.21362 -+      &avr32_syntax_table[AVR32_SYNTAX_BST],
43.21363 -+      BFD_RELOC_UNUSED, 2, -1,
43.21364 -+      {
43.21365 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21366 -+	&avr32_ifield_table[AVR32_IFIELD_K5E],
43.21367 -+      },
43.21368 -+    },
43.21369 -+    {
43.21370 -+      AVR32_OPC_CACHE, 4, 0xf4100000, 0xfff00000,
43.21371 -+      &avr32_syntax_table[AVR32_SYNTAX_CACHE],
43.21372 -+      BFD_RELOC_UNUSED, 3, -1,
43.21373 -+      {
43.21374 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21375 -+	&avr32_ifield_table[AVR32_IFIELD_K11],
43.21376 -+	&avr32_ifield_table[AVR32_IFIELD_CACHEOP],
43.21377 -+      },
43.21378 -+    },
43.21379 -+    {
43.21380 -+      AVR32_OPC_CASTS_B, 2, 0x5c600000, 0xfff00000,
43.21381 -+      &avr32_syntax_table[AVR32_SYNTAX_CASTS_B],
43.21382 -+      BFD_RELOC_UNUSED, 1, -1,
43.21383 -+      {
43.21384 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21385 -+      },
43.21386 -+    },
43.21387 -+    {
43.21388 -+      AVR32_OPC_CASTS_H, 2, 0x5c800000, 0xfff00000,
43.21389 -+      &avr32_syntax_table[AVR32_SYNTAX_CASTS_H],
43.21390 -+      BFD_RELOC_UNUSED, 1, -1,
43.21391 -+      {
43.21392 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21393 -+      },
43.21394 -+    },
43.21395 -+    {
43.21396 -+      AVR32_OPC_CASTU_B, 2, 0x5c500000, 0xfff00000,
43.21397 -+      &avr32_syntax_table[AVR32_SYNTAX_CASTU_B],
43.21398 -+      BFD_RELOC_UNUSED, 1, -1,
43.21399 -+      {
43.21400 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21401 -+      },
43.21402 -+    },
43.21403 -+    {
43.21404 -+      AVR32_OPC_CASTU_H, 2, 0x5c700000, 0xfff00000,
43.21405 -+      &avr32_syntax_table[AVR32_SYNTAX_CASTU_H],
43.21406 -+      BFD_RELOC_UNUSED, 1, -1,
43.21407 -+      {
43.21408 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21409 -+      },
43.21410 -+    },
43.21411 -+    {
43.21412 -+      AVR32_OPC_CBR, 2, 0xa1c00000, 0xe1e00000,
43.21413 -+      &avr32_syntax_table[AVR32_SYNTAX_CBR],
43.21414 -+      BFD_RELOC_UNUSED, 2, -1,
43.21415 -+      {
43.21416 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21417 -+	&avr32_ifield_table[AVR32_IFIELD_BIT5C],
43.21418 -+      },
43.21419 -+    },
43.21420 -+    {
43.21421 -+      AVR32_OPC_CLZ, 4, 0xe0001200, 0xe1f0ffff,
43.21422 -+      &avr32_syntax_table[AVR32_SYNTAX_CLZ],
43.21423 -+      BFD_RELOC_UNUSED, 2, -1,
43.21424 -+      {
43.21425 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21426 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21427 -+      },
43.21428 -+    },
43.21429 -+    {
43.21430 -+      AVR32_OPC_COM, 2, 0x5cd00000, 0xfff00000,
43.21431 -+      &avr32_syntax_table[AVR32_SYNTAX_COM],
43.21432 -+      BFD_RELOC_UNUSED, 1, -1,
43.21433 -+      {
43.21434 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21435 -+      },
43.21436 -+    },
43.21437 -+    {
43.21438 -+      AVR32_OPC_COP, 4, 0xe1a00000, 0xf9f00000,
43.21439 -+      &avr32_syntax_table[AVR32_SYNTAX_COP],
43.21440 -+      BFD_RELOC_UNUSED, 5, -1,
43.21441 -+      {
43.21442 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.21443 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
43.21444 -+	&avr32_ifield_table[AVR32_IFIELD_CRX],
43.21445 -+	&avr32_ifield_table[AVR32_IFIELD_CRY],
43.21446 -+	&avr32_ifield_table[AVR32_IFIELD_CPOP],
43.21447 -+      },
43.21448 -+    },
43.21449 -+    {
43.21450 -+      AVR32_OPC_CP_B, 4, 0xe0001800, 0xe1f0ffff,
43.21451 -+      &avr32_syntax_table[AVR32_SYNTAX_CP_B],
43.21452 -+      BFD_RELOC_UNUSED, 2, -1,
43.21453 -+      {
43.21454 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21455 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21456 -+      },
43.21457 -+    },
43.21458 -+    {
43.21459 -+      AVR32_OPC_CP_H, 4, 0xe0001900, 0xe1f0ffff,
43.21460 -+      &avr32_syntax_table[AVR32_SYNTAX_CP_H],
43.21461 -+      BFD_RELOC_UNUSED, 2, -1,
43.21462 -+      {
43.21463 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21464 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21465 -+      },
43.21466 -+    },
43.21467 -+    {
43.21468 -+      AVR32_OPC_CP_W1, 2, 0x00300000, 0xe1f00000,
43.21469 -+      &avr32_syntax_table[AVR32_SYNTAX_CP_W1],
43.21470 -+      BFD_RELOC_UNUSED, 2, -1,
43.21471 -+      {
43.21472 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21473 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21474 -+      },
43.21475 -+    },
43.21476 -+    {
43.21477 -+      AVR32_OPC_CP_W2, 2, 0x58000000, 0xfc000000,
43.21478 -+      &avr32_syntax_table[AVR32_SYNTAX_CP_W2],
43.21479 -+      BFD_RELOC_AVR32_6S, 2, 1,
43.21480 -+      {
43.21481 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21482 -+	&avr32_ifield_table[AVR32_IFIELD_K6],
43.21483 -+      },
43.21484 -+    },
43.21485 -+    {
43.21486 -+      AVR32_OPC_CP_W3, 4, 0xe0400000, 0xe1e00000,
43.21487 -+      &avr32_syntax_table[AVR32_SYNTAX_CP_W3],
43.21488 -+      BFD_RELOC_AVR32_21S, 2, 1,
43.21489 -+      {
43.21490 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21491 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.21492 -+      },
43.21493 -+    },
43.21494 -+    {
43.21495 -+      AVR32_OPC_CPC1, 4, 0xe0001300, 0xe1f0ffff,
43.21496 -+      &avr32_syntax_table[AVR32_SYNTAX_CPC1],
43.21497 -+      BFD_RELOC_UNUSED, 2, -1,
43.21498 -+      {
43.21499 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21500 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21501 -+      },
43.21502 -+    },
43.21503 -+    {
43.21504 -+      AVR32_OPC_CPC2, 2, 0x5c200000, 0xfff00000,
43.21505 -+      &avr32_syntax_table[AVR32_SYNTAX_CPC2],
43.21506 -+      BFD_RELOC_UNUSED, 1, -1,
43.21507 -+      {
43.21508 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21509 -+      },
43.21510 -+    },
43.21511 -+    {
43.21512 -+      AVR32_OPC_CSRF, 2, 0xd4030000, 0xfe0f0000,
43.21513 -+      &avr32_syntax_table[AVR32_SYNTAX_CSRF],
43.21514 -+      BFD_RELOC_UNUSED, 1, -1,
43.21515 -+      {
43.21516 -+	&avr32_ifield_table[AVR32_IFIELD_K5C],
43.21517 -+      },
43.21518 -+    },
43.21519 -+    {
43.21520 -+      AVR32_OPC_CSRFCZ, 2, 0xd0030000, 0xfe0f0000,
43.21521 -+      &avr32_syntax_table[AVR32_SYNTAX_CSRFCZ],
43.21522 -+      BFD_RELOC_UNUSED, 1, -1,
43.21523 -+      {
43.21524 -+	&avr32_ifield_table[AVR32_IFIELD_K5C],
43.21525 -+      },
43.21526 -+    },
43.21527 -+    {
43.21528 -+      AVR32_OPC_DIVS, 4, 0xe0000c00, 0xe1f0ffc0,
43.21529 -+      &avr32_syntax_table[AVR32_SYNTAX_DIVS],
43.21530 -+      BFD_RELOC_UNUSED, 3, -1,
43.21531 -+      {
43.21532 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21533 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21534 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21535 -+      },
43.21536 -+    },
43.21537 -+    {
43.21538 -+      AVR32_OPC_DIVU, 4, 0xe0000d00, 0xe1f0ffc0,
43.21539 -+      &avr32_syntax_table[AVR32_SYNTAX_DIVU],
43.21540 -+      BFD_RELOC_UNUSED, 3, -1,
43.21541 -+      {
43.21542 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21543 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21544 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21545 -+      },
43.21546 -+    },
43.21547 -+    {
43.21548 -+      AVR32_OPC_EOR1, 2, 0x00500000, 0xe1f00000,
43.21549 -+      &avr32_syntax_table[AVR32_SYNTAX_EOR1],
43.21550 -+      BFD_RELOC_UNUSED, 2, -1,
43.21551 -+      {
43.21552 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21553 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21554 -+      },
43.21555 -+    },
43.21556 -+    {
43.21557 -+      AVR32_OPC_EOR2, 4, 0xe1e02000, 0xe1f0fe00,
43.21558 -+      &avr32_syntax_table[AVR32_SYNTAX_EOR2],
43.21559 -+      BFD_RELOC_UNUSED, 4, -1,
43.21560 -+      {
43.21561 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21562 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21563 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21564 -+	&avr32_ifield_table[AVR32_IFIELD_K5E2],
43.21565 -+      }
43.21566 -+    },
43.21567 -+    {
43.21568 -+      AVR32_OPC_EOR3, 4, 0xe1e02200, 0xe1f0fe00,
43.21569 -+      &avr32_syntax_table[AVR32_SYNTAX_EOR3],
43.21570 -+      BFD_RELOC_UNUSED, 4, -1,
43.21571 -+      {
43.21572 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21573 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21574 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21575 -+	&avr32_ifield_table[AVR32_IFIELD_K5E2],
43.21576 -+      }
43.21577 -+    },
43.21578 -+    {
43.21579 -+      AVR32_OPC_EORL, 4, 0xec100000, 0xfff00000,
43.21580 -+      &avr32_syntax_table[AVR32_SYNTAX_EORL],
43.21581 -+      BFD_RELOC_AVR32_16U, 2, 1,
43.21582 -+      {
43.21583 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21584 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.21585 -+      },
43.21586 -+    },
43.21587 -+    {
43.21588 -+      AVR32_OPC_EORH, 4, 0xee100000, 0xfff00000,
43.21589 -+      &avr32_syntax_table[AVR32_SYNTAX_EORH],
43.21590 -+      BFD_RELOC_AVR32_16U, 2, 1,
43.21591 -+      {
43.21592 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21593 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.21594 -+      },
43.21595 -+    },
43.21596 -+    {
43.21597 -+      AVR32_OPC_FRS, 2, 0xd7430000, 0xffff0000,
43.21598 -+      &avr32_syntax_table[AVR32_SYNTAX_FRS],
43.21599 -+      BFD_RELOC_UNUSED, 0, -1, { NULL },
43.21600 -+    },
43.21601 -+    {
43.21602 -+      AVR32_OPC_ICALL, 2, 0x5d100000, 0xfff00000,
43.21603 -+      &avr32_syntax_table[AVR32_SYNTAX_ICALL],
43.21604 -+      BFD_RELOC_UNUSED, 1, -1,
43.21605 -+      {
43.21606 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21607 -+      },
43.21608 -+    },
43.21609 -+    {
43.21610 -+      AVR32_OPC_INCJOSP, 2, 0xd6830000, 0xff8f0000,
43.21611 -+      &avr32_syntax_table[AVR32_SYNTAX_INCJOSP],
43.21612 -+      BFD_RELOC_UNUSED, 1, -1,
43.21613 -+      {
43.21614 -+	&avr32_ifield_table[AVR32_IFIELD_K3],
43.21615 -+      },
43.21616 -+    },
43.21617 -+    {
43.21618 -+      AVR32_OPC_LD_D1, 2, 0xa1010000, 0xe1f10000,
43.21619 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_D1],
43.21620 -+      BFD_RELOC_UNUSED, 2, -1,
43.21621 -+      {
43.21622 -+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
43.21623 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21624 -+      },
43.21625 -+    },
43.21626 -+    {
43.21627 -+      AVR32_OPC_LD_D2, 2, 0xa1100000, 0xe1f10000,
43.21628 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_D2],
43.21629 -+      BFD_RELOC_UNUSED, 2, -1,
43.21630 -+      {
43.21631 -+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
43.21632 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21633 -+      },
43.21634 -+    },
43.21635 -+    {
43.21636 -+      AVR32_OPC_LD_D3, 2, 0xa1000000, 0xe1f10000,
43.21637 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_D3],
43.21638 -+      BFD_RELOC_UNUSED, 2, -1,
43.21639 -+      {
43.21640 -+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
43.21641 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21642 -+      },
43.21643 -+    },
43.21644 -+    {
43.21645 -+      AVR32_OPC_LD_D5, 4, 0xe0000200, 0xe1f0ffc1,
43.21646 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_D5],
43.21647 -+      BFD_RELOC_UNUSED, 4, -1,
43.21648 -+      {
43.21649 -+	&avr32_ifield_table[AVR32_IFIELD_RD_DW],
43.21650 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21651 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21652 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.21653 -+      },
43.21654 -+    },
43.21655 -+    {
43.21656 -+      AVR32_OPC_LD_D4, 4, 0xe0e00000, 0xe1f10000,
43.21657 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_D4],
43.21658 -+      BFD_RELOC_AVR32_16S, 3, 2,
43.21659 -+      {
43.21660 -+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
43.21661 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21662 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.21663 -+      },
43.21664 -+    },
43.21665 -+    {
43.21666 -+      AVR32_OPC_LD_SB2, 4, 0xe0000600, 0xe1f0ffc0,
43.21667 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_SB2],
43.21668 -+      BFD_RELOC_UNUSED, 4, -1,
43.21669 -+      {
43.21670 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21671 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21672 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21673 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.21674 -+      },
43.21675 -+    },
43.21676 -+    {
43.21677 -+      AVR32_OPC_LD_SB1, 4, 0xe1200000, 0xe1f00000,
43.21678 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_SB1],
43.21679 -+      BFD_RELOC_AVR32_16S, 3, -1,
43.21680 -+      {
43.21681 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21682 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21683 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.21684 -+      },
43.21685 -+    },
43.21686 -+    {
43.21687 -+      AVR32_OPC_LD_UB1, 2, 0x01300000, 0xe1f00000,
43.21688 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_UB1],
43.21689 -+      BFD_RELOC_UNUSED, 2, -1,
43.21690 -+      {
43.21691 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21692 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21693 -+      },
43.21694 -+    },
43.21695 -+    {
43.21696 -+      AVR32_OPC_LD_UB2, 2, 0x01700000, 0xe1f00000,
43.21697 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_UB2],
43.21698 -+      BFD_RELOC_UNUSED, 2, -1,
43.21699 -+      {
43.21700 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21701 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21702 -+      },
43.21703 -+    },
43.21704 -+    {
43.21705 -+      AVR32_OPC_LD_UB5, 4, 0xe0000700, 0xe1f0ffc0,
43.21706 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_UB5],
43.21707 -+      BFD_RELOC_UNUSED, 4, -1,
43.21708 -+      {
43.21709 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21710 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21711 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21712 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.21713 -+      },
43.21714 -+    },
43.21715 -+    {
43.21716 -+      AVR32_OPC_LD_UB3, 2, 0x01800000, 0xe1800000,
43.21717 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_UB3],
43.21718 -+      BFD_RELOC_AVR32_3U, 3, 2,
43.21719 -+      {
43.21720 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21721 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21722 -+	&avr32_ifield_table[AVR32_IFIELD_K3],
43.21723 -+      },
43.21724 -+    },
43.21725 -+    {
43.21726 -+      AVR32_OPC_LD_UB4, 4, 0xe1300000, 0xe1f00000,
43.21727 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_UB4],
43.21728 -+      BFD_RELOC_AVR32_16S, 3, 2,
43.21729 -+      {
43.21730 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21731 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21732 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.21733 -+      },
43.21734 -+    },
43.21735 -+    {
43.21736 -+      AVR32_OPC_LD_SH1, 2, 0x01100000, 0xe1f00000,
43.21737 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_SH1],
43.21738 -+      BFD_RELOC_UNUSED, 2, -1,
43.21739 -+      {
43.21740 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21741 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21742 -+      },
43.21743 -+    },
43.21744 -+    {
43.21745 -+      AVR32_OPC_LD_SH2, 2, 0x01500000, 0xe1f00000,
43.21746 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_SH2],
43.21747 -+      BFD_RELOC_UNUSED, 2, -1,
43.21748 -+      {
43.21749 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21750 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21751 -+      },
43.21752 -+    },
43.21753 -+    {
43.21754 -+      AVR32_OPC_LD_SH5, 4, 0xe0000400, 0xe1f0ffc0,
43.21755 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_SH5],
43.21756 -+      BFD_RELOC_UNUSED, 4, -1,
43.21757 -+      {
43.21758 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21759 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21760 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21761 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.21762 -+      },
43.21763 -+    },
43.21764 -+    {
43.21765 -+      AVR32_OPC_LD_SH3, 2, 0x80000000, 0xe1800000,
43.21766 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_SH3],
43.21767 -+      BFD_RELOC_AVR32_4UH, 3, 2,
43.21768 -+      {
43.21769 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21770 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21771 -+	&avr32_ifield_table[AVR32_IFIELD_K3],
43.21772 -+      },
43.21773 -+    },
43.21774 -+    {
43.21775 -+      AVR32_OPC_LD_SH4, 4, 0xe1000000, 0xe1f00000,
43.21776 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_SH4],
43.21777 -+      BFD_RELOC_AVR32_16S, 3, 2,
43.21778 -+      {
43.21779 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21780 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21781 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.21782 -+      },
43.21783 -+    },
43.21784 -+    {
43.21785 -+      AVR32_OPC_LD_UH1, 2, 0x01200000, 0xe1f00000,
43.21786 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_UH1],
43.21787 -+      BFD_RELOC_UNUSED, 2, -1,
43.21788 -+      {
43.21789 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21790 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21791 -+      },
43.21792 -+    },
43.21793 -+    {
43.21794 -+      AVR32_OPC_LD_UH2, 2, 0x01600000, 0xe1f00000,
43.21795 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_UH2],
43.21796 -+      BFD_RELOC_UNUSED, 2, -1,
43.21797 -+      {
43.21798 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21799 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21800 -+      },
43.21801 -+    },
43.21802 -+    {
43.21803 -+      AVR32_OPC_LD_UH5, 4, 0xe0000500, 0xe1f0ffc0,
43.21804 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_UH5],
43.21805 -+      BFD_RELOC_UNUSED, 4, -1,
43.21806 -+      {
43.21807 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21808 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21809 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21810 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.21811 -+      },
43.21812 -+    },
43.21813 -+    {
43.21814 -+      AVR32_OPC_LD_UH3, 2, 0x80800000, 0xe1800000,
43.21815 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_UH3],
43.21816 -+      BFD_RELOC_AVR32_4UH, 3, 2,
43.21817 -+      {
43.21818 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21819 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21820 -+	&avr32_ifield_table[AVR32_IFIELD_K3],
43.21821 -+      },
43.21822 -+    },
43.21823 -+    {
43.21824 -+      AVR32_OPC_LD_UH4, 4, 0xe1100000, 0xe1f00000,
43.21825 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_UH4],
43.21826 -+      BFD_RELOC_AVR32_16S, 3, 2,
43.21827 -+      {
43.21828 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21829 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21830 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.21831 -+      },
43.21832 -+    },
43.21833 -+    {
43.21834 -+      AVR32_OPC_LD_W1, 2, 0x01000000, 0xe1f00000,
43.21835 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_W1],
43.21836 -+      BFD_RELOC_UNUSED, 2, -1,
43.21837 -+      {
43.21838 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21839 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21840 -+      },
43.21841 -+    },
43.21842 -+    {
43.21843 -+      AVR32_OPC_LD_W2, 2, 0x01400000, 0xe1f00000,
43.21844 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_W2],
43.21845 -+      BFD_RELOC_UNUSED, 2, -1,
43.21846 -+      {
43.21847 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21848 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21849 -+      },
43.21850 -+    },
43.21851 -+    {
43.21852 -+      AVR32_OPC_LD_W5, 4, 0xe0000300, 0xe1f0ffc0,
43.21853 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_W5],
43.21854 -+      BFD_RELOC_UNUSED, 4, -1,
43.21855 -+      {
43.21856 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21857 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21858 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21859 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.21860 -+      },
43.21861 -+    },
43.21862 -+    {
43.21863 -+      AVR32_OPC_LD_W6, 4, 0xe0000f80, 0xe1f0ffc0,
43.21864 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_W6],
43.21865 -+      BFD_RELOC_UNUSED, 4, -1,
43.21866 -+      {
43.21867 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21868 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21869 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21870 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.21871 -+      },
43.21872 -+    },
43.21873 -+    {
43.21874 -+      AVR32_OPC_LD_W3, 2, 0x60000000, 0xe0000000,
43.21875 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_W3],
43.21876 -+      BFD_RELOC_AVR32_7UW, 3, 2,
43.21877 -+      {
43.21878 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21879 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21880 -+	&avr32_ifield_table[AVR32_IFIELD_K5C],
43.21881 -+      },
43.21882 -+    },
43.21883 -+    {
43.21884 -+      AVR32_OPC_LD_W4, 4, 0xe0f00000, 0xe1f00000,
43.21885 -+      &avr32_syntax_table[AVR32_SYNTAX_LD_W4],
43.21886 -+      BFD_RELOC_AVR32_16S, 3, 2,
43.21887 -+      {
43.21888 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21889 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.21890 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.21891 -+      },
43.21892 -+    },
43.21893 -+    {
43.21894 -+      AVR32_OPC_LDC_D1, 4, 0xe9a01000, 0xfff01100,
43.21895 -+      &avr32_syntax_table[AVR32_SYNTAX_LDC_D1],
43.21896 -+      BFD_RELOC_AVR32_10UW, 4, 3,
43.21897 -+      {
43.21898 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.21899 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
43.21900 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21901 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.21902 -+      },
43.21903 -+    },
43.21904 -+    {
43.21905 -+      AVR32_OPC_LDC_D2, 4, 0xefa00050, 0xfff011ff,
43.21906 -+      &avr32_syntax_table[AVR32_SYNTAX_LDC_D2],
43.21907 -+      BFD_RELOC_UNUSED, 3, -1,
43.21908 -+      {
43.21909 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.21910 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
43.21911 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21912 -+      },
43.21913 -+    },
43.21914 -+    {
43.21915 -+      AVR32_OPC_LDC_D3, 4, 0xefa01040, 0xfff011c0,
43.21916 -+      &avr32_syntax_table[AVR32_SYNTAX_LDC_D3],
43.21917 -+      BFD_RELOC_UNUSED, 5, -1,
43.21918 -+      {
43.21919 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.21920 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
43.21921 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21922 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21923 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.21924 -+      },
43.21925 -+    },
43.21926 -+    {
43.21927 -+      AVR32_OPC_LDC_W1, 4, 0xe9a00000, 0xfff01000,
43.21928 -+      &avr32_syntax_table[AVR32_SYNTAX_LDC_W1],
43.21929 -+      BFD_RELOC_AVR32_10UW, 4, 3,
43.21930 -+      {
43.21931 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.21932 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
43.21933 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21934 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.21935 -+      },
43.21936 -+    },
43.21937 -+    {
43.21938 -+      AVR32_OPC_LDC_W2, 4, 0xefa00040, 0xfff010ff,
43.21939 -+      &avr32_syntax_table[AVR32_SYNTAX_LDC_W2],
43.21940 -+      BFD_RELOC_UNUSED, 3, -1,
43.21941 -+      {
43.21942 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.21943 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
43.21944 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21945 -+      },
43.21946 -+    },
43.21947 -+    {
43.21948 -+      AVR32_OPC_LDC_W3, 4, 0xefa01000, 0xfff010c0,
43.21949 -+      &avr32_syntax_table[AVR32_SYNTAX_LDC_W3],
43.21950 -+      BFD_RELOC_UNUSED, 5, -1,
43.21951 -+      {
43.21952 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.21953 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
43.21954 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21955 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.21956 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.21957 -+      },
43.21958 -+    },
43.21959 -+    {
43.21960 -+      AVR32_OPC_LDC0_D, 4, 0xf3a00000, 0xfff00100,
43.21961 -+      &avr32_syntax_table[AVR32_SYNTAX_LDC0_D],
43.21962 -+      BFD_RELOC_AVR32_14UW, 3, 2,
43.21963 -+      {
43.21964 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
43.21965 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21966 -+	&avr32_ifield_table[AVR32_IFIELD_K12CP],
43.21967 -+      },
43.21968 -+    },
43.21969 -+    {
43.21970 -+      AVR32_OPC_LDC0_W, 4, 0xf1a00000, 0xfff00000,
43.21971 -+      &avr32_syntax_table[AVR32_SYNTAX_LDC0_W],
43.21972 -+      BFD_RELOC_AVR32_14UW, 3, 2,
43.21973 -+      {
43.21974 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
43.21975 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21976 -+	&avr32_ifield_table[AVR32_IFIELD_K12CP],
43.21977 -+      },
43.21978 -+    },
43.21979 -+    {
43.21980 -+      AVR32_OPC_LDCM_D, 4, 0xeda00400, 0xfff01f00,
43.21981 -+      &avr32_syntax_table[AVR32_SYNTAX_LDCM_D],
43.21982 -+      BFD_RELOC_UNUSED, 3, -1,
43.21983 -+      {
43.21984 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.21985 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21986 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.21987 -+      },
43.21988 -+    },
43.21989 -+    {
43.21990 -+      AVR32_OPC_LDCM_D_PU, 4, 0xeda01400, 0xfff01f00,
43.21991 -+      &avr32_syntax_table[AVR32_SYNTAX_LDCM_D_PU],
43.21992 -+      BFD_RELOC_UNUSED, 3, -1,
43.21993 -+      {
43.21994 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.21995 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.21996 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.21997 -+      },
43.21998 -+    },
43.21999 -+    {
43.22000 -+      AVR32_OPC_LDCM_W, 4, 0xeda00000, 0xfff01e00,
43.22001 -+      &avr32_syntax_table[AVR32_SYNTAX_LDCM_W],
43.22002 -+      BFD_RELOC_UNUSED, 4, -1,
43.22003 -+      {
43.22004 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.22005 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22006 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22007 -+	&avr32_ifield_table[AVR32_IFIELD_CM_HL],
43.22008 -+      },
43.22009 -+    },
43.22010 -+    {
43.22011 -+      AVR32_OPC_LDCM_W_PU, 4, 0xeda01000, 0xfff01e00,
43.22012 -+      &avr32_syntax_table[AVR32_SYNTAX_LDCM_W_PU],
43.22013 -+      BFD_RELOC_UNUSED, 4, -1,
43.22014 -+      {
43.22015 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.22016 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22017 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22018 -+	&avr32_ifield_table[AVR32_IFIELD_CM_HL],
43.22019 -+      },
43.22020 -+    },
43.22021 -+    {
43.22022 -+      AVR32_OPC_LDDPC, 2, 0x48000000, 0xf8000000,
43.22023 -+      &avr32_syntax_table[AVR32_SYNTAX_LDDPC],
43.22024 -+      BFD_RELOC_AVR32_9UW_PCREL, 2, 1,
43.22025 -+      {
43.22026 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22027 -+	&avr32_ifield_table[AVR32_IFIELD_K7C],
43.22028 -+      },
43.22029 -+    },
43.22030 -+    {
43.22031 -+      AVR32_OPC_LDDPC_EXT, 4, 0xfef00000, 0xfff00000,
43.22032 -+      &avr32_syntax_table[AVR32_SYNTAX_LDDPC_EXT],
43.22033 -+      BFD_RELOC_AVR32_16B_PCREL, 2, 1,
43.22034 -+      {
43.22035 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22036 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.22037 -+      },
43.22038 -+    },
43.22039 -+    {
43.22040 -+      AVR32_OPC_LDDSP, 2, 0x40000000, 0xf8000000,
43.22041 -+      &avr32_syntax_table[AVR32_SYNTAX_LDDSP],
43.22042 -+      BFD_RELOC_UNUSED, 2, -1,
43.22043 -+      {
43.22044 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22045 -+	&avr32_ifield_table[AVR32_IFIELD_K7C],
43.22046 -+      },
43.22047 -+    },
43.22048 -+    {
43.22049 -+      AVR32_OPC_LDINS_B, 4, 0xe1d04000, 0xe1f0c000,
43.22050 -+      &avr32_syntax_table[AVR32_SYNTAX_LDINS_B],
43.22051 -+      BFD_RELOC_UNUSED, 4, -1,
43.22052 -+      {
43.22053 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22054 -+	&avr32_ifield_table[AVR32_IFIELD_PART2_K12],
43.22055 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22056 -+	&avr32_ifield_table[AVR32_IFIELD_K12],
43.22057 -+      },
43.22058 -+    },
43.22059 -+    {
43.22060 -+      AVR32_OPC_LDINS_H, 4, 0xe1d00000, 0xe1f0e000,
43.22061 -+      &avr32_syntax_table[AVR32_SYNTAX_LDINS_H],
43.22062 -+      BFD_RELOC_UNUSED, 4, -1,
43.22063 -+      {
43.22064 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22065 -+	&avr32_ifield_table[AVR32_IFIELD_PART1_K12],
43.22066 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22067 -+	&avr32_ifield_table[AVR32_IFIELD_K12],
43.22068 -+      },
43.22069 -+    },
43.22070 -+    {
43.22071 -+      AVR32_OPC_LDM, 4, 0xe1c00000, 0xfdf00000,
43.22072 -+      &avr32_syntax_table[AVR32_SYNTAX_LDM],
43.22073 -+      BFD_RELOC_UNUSED, 3, -1,
43.22074 -+      {
43.22075 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22076 -+	&avr32_ifield_table[AVR32_IFIELD_W],
43.22077 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.22078 -+      },
43.22079 -+    },
43.22080 -+    {
43.22081 -+      AVR32_OPC_LDMTS, 4, 0xe5c00000, 0xfff00000,
43.22082 -+      &avr32_syntax_table[AVR32_SYNTAX_LDMTS],
43.22083 -+      BFD_RELOC_UNUSED, 2, -1,
43.22084 -+      {
43.22085 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22086 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.22087 -+      },
43.22088 -+    },
43.22089 -+    {
43.22090 -+      AVR32_OPC_LDMTS_PU, 4, 0xe7c00000, 0xfff00000,
43.22091 -+      &avr32_syntax_table[AVR32_SYNTAX_LDMTS_PU],
43.22092 -+      BFD_RELOC_UNUSED, 2, -1,
43.22093 -+      {
43.22094 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22095 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.22096 -+      },
43.22097 -+    },
43.22098 -+    {
43.22099 -+      AVR32_OPC_LDSWP_SH, 4, 0xe1d02000, 0xe1f0f000,
43.22100 -+      &avr32_syntax_table[AVR32_SYNTAX_LDSWP_SH],
43.22101 -+      BFD_RELOC_UNUSED, 3, -1,
43.22102 -+      {
43.22103 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22104 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22105 -+	&avr32_ifield_table[AVR32_IFIELD_K12],
43.22106 -+      },
43.22107 -+    },
43.22108 -+    {
43.22109 -+      AVR32_OPC_LDSWP_UH, 4, 0xe1d03000, 0xe1f0f000,
43.22110 -+      &avr32_syntax_table[AVR32_SYNTAX_LDSWP_UH],
43.22111 -+      BFD_RELOC_UNUSED, 3, -1,
43.22112 -+      {
43.22113 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22114 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22115 -+	&avr32_ifield_table[AVR32_IFIELD_K12],
43.22116 -+      },
43.22117 -+    },
43.22118 -+    {
43.22119 -+      AVR32_OPC_LDSWP_W, 4, 0xe1d08000, 0xe1f0f000,
43.22120 -+      &avr32_syntax_table[AVR32_SYNTAX_LDSWP_W],
43.22121 -+      BFD_RELOC_UNUSED, 3, -1,
43.22122 -+      {
43.22123 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22124 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22125 -+	&avr32_ifield_table[AVR32_IFIELD_K12],
43.22126 -+      },
43.22127 -+    },
43.22128 -+    {
43.22129 -+      AVR32_OPC_LSL1, 4, 0xe0000940, 0xe1f0fff0,
43.22130 -+      &avr32_syntax_table[AVR32_SYNTAX_LSL1],
43.22131 -+      BFD_RELOC_UNUSED, 3, -1,
43.22132 -+      {
43.22133 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22134 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22135 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22136 -+      },
43.22137 -+    },
43.22138 -+    {
43.22139 -+      AVR32_OPC_LSL3, 4, 0xe0001500, 0xe1f0ffe0,
43.22140 -+      &avr32_syntax_table[AVR32_SYNTAX_LSL3],
43.22141 -+      BFD_RELOC_UNUSED, 3, -1,
43.22142 -+      {
43.22143 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22144 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22145 -+	&avr32_ifield_table[AVR32_IFIELD_K5E],
43.22146 -+      },
43.22147 -+    },
43.22148 -+    {
43.22149 -+      AVR32_OPC_LSL2, 2, 0xa1600000, 0xe1e00000,
43.22150 -+      &avr32_syntax_table[AVR32_SYNTAX_LSL2],
43.22151 -+      BFD_RELOC_UNUSED, 2, -1,
43.22152 -+      {
43.22153 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22154 -+	&avr32_ifield_table[AVR32_IFIELD_BIT5C],
43.22155 -+      },
43.22156 -+    },
43.22157 -+    {
43.22158 -+      AVR32_OPC_LSR1, 4, 0xe0000a40, 0xe1f0fff0,
43.22159 -+      &avr32_syntax_table[AVR32_SYNTAX_LSR1],
43.22160 -+      BFD_RELOC_UNUSED, 3, -1,
43.22161 -+      {
43.22162 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22163 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22164 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22165 -+      },
43.22166 -+    },
43.22167 -+    {
43.22168 -+      AVR32_OPC_LSR3, 4, 0xe0001600, 0xe1f0ffe0,
43.22169 -+      &avr32_syntax_table[AVR32_SYNTAX_LSR3],
43.22170 -+      BFD_RELOC_UNUSED, 3, -1,
43.22171 -+      {
43.22172 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22173 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22174 -+	&avr32_ifield_table[AVR32_IFIELD_K5E],
43.22175 -+      },
43.22176 -+    },
43.22177 -+    {
43.22178 -+      AVR32_OPC_LSR2, 2, 0xa1800000, 0xe1e00000,
43.22179 -+      &avr32_syntax_table[AVR32_SYNTAX_LSR2],
43.22180 -+      BFD_RELOC_UNUSED, 2, -1,
43.22181 -+      {
43.22182 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22183 -+	&avr32_ifield_table[AVR32_IFIELD_BIT5C],
43.22184 -+      },
43.22185 -+    },
43.22186 -+    {
43.22187 -+      AVR32_OPC_MAC, 4, 0xe0000340, 0xe1f0fff0,
43.22188 -+      &avr32_syntax_table[AVR32_SYNTAX_MAC],
43.22189 -+      BFD_RELOC_UNUSED, 3, -1,
43.22190 -+      {
43.22191 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22192 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22193 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22194 -+      },
43.22195 -+    },
43.22196 -+    {
43.22197 -+      AVR32_OPC_MACHH_D, 4, 0xe0000580, 0xe1f0ffc1,
43.22198 -+      &avr32_syntax_table[AVR32_SYNTAX_MACHH_D],
43.22199 -+      BFD_RELOC_UNUSED, 5, -1,
43.22200 -+      {
43.22201 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22202 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22203 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.22204 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22205 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.22206 -+      },
43.22207 -+    },
43.22208 -+    {
43.22209 -+      AVR32_OPC_MACHH_W, 4, 0xe0000480, 0xe1f0ffc0,
43.22210 -+      &avr32_syntax_table[AVR32_SYNTAX_MACHH_W],
43.22211 -+      BFD_RELOC_UNUSED, 5, -1,
43.22212 -+      {
43.22213 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22214 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22215 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.22216 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22217 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.22218 -+      },
43.22219 -+    },
43.22220 -+    {
43.22221 -+      AVR32_OPC_MACS_D, 4, 0xe0000540, 0xe1f0fff1,
43.22222 -+      &avr32_syntax_table[AVR32_SYNTAX_MACS_D],
43.22223 -+      BFD_RELOC_UNUSED, 3, -1,
43.22224 -+      {
43.22225 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22226 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22227 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22228 -+      },
43.22229 -+    },
43.22230 -+    {
43.22231 -+      AVR32_OPC_MACSATHH_W, 4, 0xe0000680, 0xe1f0ffc0,
43.22232 -+      &avr32_syntax_table[AVR32_SYNTAX_MACSATHH_W],
43.22233 -+      BFD_RELOC_UNUSED, 5, -1,
43.22234 -+      {
43.22235 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22236 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22237 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.22238 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22239 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.22240 -+      },
43.22241 -+    },
43.22242 -+    {
43.22243 -+      AVR32_OPC_MACUD, 4, 0xe0000740, 0xe1f0fff1,
43.22244 -+      &avr32_syntax_table[AVR32_SYNTAX_MACUD],
43.22245 -+      BFD_RELOC_UNUSED, 3, -1,
43.22246 -+      {
43.22247 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22248 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22249 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22250 -+      },
43.22251 -+    },
43.22252 -+    {
43.22253 -+      AVR32_OPC_MACWH_D, 4, 0xe0000c80, 0xe1f0ffe1,
43.22254 -+      &avr32_syntax_table[AVR32_SYNTAX_MACWH_D],
43.22255 -+      BFD_RELOC_UNUSED, 4, -1,
43.22256 -+      {
43.22257 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22258 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22259 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22260 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.22261 -+      },
43.22262 -+    },
43.22263 -+    {
43.22264 -+      AVR32_OPC_MAX, 4, 0xe0000c40, 0xe1f0fff0,
43.22265 -+      &avr32_syntax_table[AVR32_SYNTAX_MAX],
43.22266 -+      BFD_RELOC_UNUSED, 3, -1,
43.22267 -+      {
43.22268 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22269 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22270 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22271 -+      },
43.22272 -+    },
43.22273 -+    {
43.22274 -+      AVR32_OPC_MCALL, 4, 0xf0100000, 0xfff00000,
43.22275 -+      &avr32_syntax_table[AVR32_SYNTAX_MCALL],
43.22276 -+      BFD_RELOC_AVR32_18W_PCREL, 2, 1,
43.22277 -+      {
43.22278 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22279 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.22280 -+      },
43.22281 -+    },
43.22282 -+    {
43.22283 -+      AVR32_OPC_MFDR, 4, 0xe5b00000, 0xfff0ff00,
43.22284 -+      &avr32_syntax_table[AVR32_SYNTAX_MFDR],
43.22285 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22286 -+      {
43.22287 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22288 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22289 -+      },
43.22290 -+    },
43.22291 -+    {
43.22292 -+      AVR32_OPC_MFSR, 4, 0xe1b00000, 0xfff0ff00,
43.22293 -+      &avr32_syntax_table[AVR32_SYNTAX_MFSR],
43.22294 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22295 -+      {
43.22296 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22297 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22298 -+      },
43.22299 -+    },
43.22300 -+    {
43.22301 -+      AVR32_OPC_MIN, 4, 0xe0000d40, 0xe1f0fff0,
43.22302 -+      &avr32_syntax_table[AVR32_SYNTAX_MIN],
43.22303 -+      BFD_RELOC_UNUSED, 3, -1,
43.22304 -+      {
43.22305 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22306 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22307 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22308 -+      },
43.22309 -+    },
43.22310 -+    {
43.22311 -+      AVR32_OPC_MOV3, 2, 0x00900000, 0xe1f00000,
43.22312 -+      &avr32_syntax_table[AVR32_SYNTAX_MOV3],
43.22313 -+      BFD_RELOC_NONE, 2, -1,
43.22314 -+      {
43.22315 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22316 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22317 -+      },
43.22318 -+    },
43.22319 -+    {
43.22320 -+      AVR32_OPC_MOV1, 2, 0x30000000, 0xf0000000,
43.22321 -+      &avr32_syntax_table[AVR32_SYNTAX_MOV1],
43.22322 -+      BFD_RELOC_AVR32_8S, 2, 1,
43.22323 -+      {
43.22324 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22325 -+	&avr32_ifield_table[AVR32_IFIELD_K8C],
43.22326 -+      },
43.22327 -+    },
43.22328 -+    {
43.22329 -+      AVR32_OPC_MOV2, 4, 0xe0600000, 0xe1e00000,
43.22330 -+      &avr32_syntax_table[AVR32_SYNTAX_MOV2],
43.22331 -+      BFD_RELOC_AVR32_21S, 2, 1,
43.22332 -+      {
43.22333 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22334 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.22335 -+      },
43.22336 -+    },
43.22337 -+    {
43.22338 -+      AVR32_OPC_MOVEQ1, 4, 0xe0001700, 0xe1f0ffff,
43.22339 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVEQ1],
43.22340 -+      BFD_RELOC_UNUSED, 2, -1,
43.22341 -+      {
43.22342 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22343 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22344 -+      },
43.22345 -+    },
43.22346 -+    {
43.22347 -+      AVR32_OPC_MOVNE1, 4, 0xe0001710, 0xe1f0ffff,
43.22348 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVNE1],
43.22349 -+      BFD_RELOC_UNUSED, 2, -1,
43.22350 -+      {
43.22351 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22352 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22353 -+      },
43.22354 -+    },
43.22355 -+    {
43.22356 -+      AVR32_OPC_MOVCC1, 4, 0xe0001720, 0xe1f0ffff,
43.22357 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVHS1],
43.22358 -+      BFD_RELOC_UNUSED, 2, -1,
43.22359 -+      {
43.22360 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22361 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22362 -+      },
43.22363 -+    },
43.22364 -+    {
43.22365 -+      AVR32_OPC_MOVCS1, 4, 0xe0001730, 0xe1f0ffff,
43.22366 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVLO1],
43.22367 -+      BFD_RELOC_UNUSED, 2, -1,
43.22368 -+      {
43.22369 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22370 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22371 -+      },
43.22372 -+    },
43.22373 -+    {
43.22374 -+      AVR32_OPC_MOVGE1, 4, 0xe0001740, 0xe1f0ffff,
43.22375 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVGE1],
43.22376 -+      BFD_RELOC_UNUSED, 2, -1,
43.22377 -+      {
43.22378 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22379 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22380 -+      },
43.22381 -+    },
43.22382 -+    {
43.22383 -+      AVR32_OPC_MOVLT1, 4, 0xe0001750, 0xe1f0ffff,
43.22384 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVLT1],
43.22385 -+      BFD_RELOC_UNUSED, 2, -1,
43.22386 -+      {
43.22387 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22388 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22389 -+      },
43.22390 -+    },
43.22391 -+    {
43.22392 -+      AVR32_OPC_MOVMI1, 4, 0xe0001760, 0xe1f0ffff,
43.22393 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVMI1],
43.22394 -+      BFD_RELOC_UNUSED, 2, -1,
43.22395 -+      {
43.22396 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22397 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22398 -+      },
43.22399 -+    },
43.22400 -+    {
43.22401 -+      AVR32_OPC_MOVPL1, 4, 0xe0001770, 0xe1f0ffff,
43.22402 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVPL1],
43.22403 -+      BFD_RELOC_UNUSED, 2, -1,
43.22404 -+      {
43.22405 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22406 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22407 -+      },
43.22408 -+    },
43.22409 -+    {
43.22410 -+      AVR32_OPC_MOVLS1, 4, 0xe0001780, 0xe1f0ffff,
43.22411 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVLS1],
43.22412 -+      BFD_RELOC_UNUSED, 2, -1,
43.22413 -+      {
43.22414 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22415 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22416 -+      },
43.22417 -+    },
43.22418 -+    {
43.22419 -+      AVR32_OPC_MOVGT1, 4, 0xe0001790, 0xe1f0ffff,
43.22420 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVGT1],
43.22421 -+      BFD_RELOC_UNUSED, 2, -1,
43.22422 -+      {
43.22423 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22424 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22425 -+      },
43.22426 -+    },
43.22427 -+    {
43.22428 -+      AVR32_OPC_MOVLE1, 4, 0xe00017a0, 0xe1f0ffff,
43.22429 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVLE1],
43.22430 -+      BFD_RELOC_UNUSED, 2, -1,
43.22431 -+      {
43.22432 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22433 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22434 -+      },
43.22435 -+    },
43.22436 -+    {
43.22437 -+      AVR32_OPC_MOVHI1, 4, 0xe00017b0, 0xe1f0ffff,
43.22438 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVHI1],
43.22439 -+      BFD_RELOC_UNUSED, 2, -1,
43.22440 -+      {
43.22441 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22442 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22443 -+      },
43.22444 -+    },
43.22445 -+    {
43.22446 -+      AVR32_OPC_MOVVS1, 4, 0xe00017c0, 0xe1f0ffff,
43.22447 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVVS1],
43.22448 -+      BFD_RELOC_UNUSED, 2, -1,
43.22449 -+      {
43.22450 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22451 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22452 -+      },
43.22453 -+    },
43.22454 -+    {
43.22455 -+      AVR32_OPC_MOVVC1, 4, 0xe00017d0, 0xe1f0ffff,
43.22456 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVVC1],
43.22457 -+      BFD_RELOC_UNUSED, 2, -1,
43.22458 -+      {
43.22459 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22460 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22461 -+      },
43.22462 -+    },
43.22463 -+    {
43.22464 -+      AVR32_OPC_MOVQS1, 4, 0xe00017e0, 0xe1f0ffff,
43.22465 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVQS1],
43.22466 -+      BFD_RELOC_UNUSED, 2, -1,
43.22467 -+      {
43.22468 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22469 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22470 -+      },
43.22471 -+    },
43.22472 -+    {
43.22473 -+      AVR32_OPC_MOVAL1, 4, 0xe00017f0, 0xe1f0ffff,
43.22474 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVAL1],
43.22475 -+      BFD_RELOC_UNUSED, 2, -1,
43.22476 -+      {
43.22477 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22478 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22479 -+      },
43.22480 -+    },
43.22481 -+    {
43.22482 -+      AVR32_OPC_MOVEQ2, 4, 0xf9b00000, 0xfff0ff00,
43.22483 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVEQ2],
43.22484 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22485 -+      {
43.22486 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22487 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22488 -+      },
43.22489 -+    },
43.22490 -+    {
43.22491 -+      AVR32_OPC_MOVNE2, 4, 0xf9b00100, 0xfff0ff00,
43.22492 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVNE2],
43.22493 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22494 -+      {
43.22495 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22496 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22497 -+      },
43.22498 -+    },
43.22499 -+    {
43.22500 -+      AVR32_OPC_MOVCC2, 4, 0xf9b00200, 0xfff0ff00,
43.22501 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVHS2],
43.22502 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22503 -+      {
43.22504 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22505 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22506 -+      },
43.22507 -+    },
43.22508 -+    {
43.22509 -+      AVR32_OPC_MOVCS2, 4, 0xf9b00300, 0xfff0ff00,
43.22510 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVLO2],
43.22511 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22512 -+      {
43.22513 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22514 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22515 -+      },
43.22516 -+    },
43.22517 -+    {
43.22518 -+      AVR32_OPC_MOVGE2, 4, 0xf9b00400, 0xfff0ff00,
43.22519 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVGE2],
43.22520 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22521 -+      {
43.22522 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22523 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22524 -+      },
43.22525 -+    },
43.22526 -+    {
43.22527 -+      AVR32_OPC_MOVLT2, 4, 0xf9b00500, 0xfff0ff00,
43.22528 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVLT2],
43.22529 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22530 -+      {
43.22531 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22532 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22533 -+      },
43.22534 -+    },
43.22535 -+    {
43.22536 -+      AVR32_OPC_MOVMI2, 4, 0xf9b00600, 0xfff0ff00,
43.22537 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVMI2],
43.22538 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22539 -+      {
43.22540 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22541 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22542 -+      },
43.22543 -+    },
43.22544 -+    {
43.22545 -+      AVR32_OPC_MOVPL2, 4, 0xf9b00700, 0xfff0ff00,
43.22546 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVPL2],
43.22547 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22548 -+      {
43.22549 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22550 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22551 -+      },
43.22552 -+    },
43.22553 -+    {
43.22554 -+      AVR32_OPC_MOVLS2, 4, 0xf9b00800, 0xfff0ff00,
43.22555 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVLS2],
43.22556 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22557 -+      {
43.22558 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22559 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22560 -+      },
43.22561 -+    },
43.22562 -+    {
43.22563 -+      AVR32_OPC_MOVGT2, 4, 0xf9b00900, 0xfff0ff00,
43.22564 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVGT2],
43.22565 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22566 -+      {
43.22567 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22568 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22569 -+      },
43.22570 -+    },
43.22571 -+    {
43.22572 -+      AVR32_OPC_MOVLE2, 4, 0xf9b00a00, 0xfff0ff00,
43.22573 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVLE2],
43.22574 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22575 -+      {
43.22576 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22577 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22578 -+      },
43.22579 -+    },
43.22580 -+    {
43.22581 -+      AVR32_OPC_MOVHI2, 4, 0xf9b00b00, 0xfff0ff00,
43.22582 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVHI2],
43.22583 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22584 -+      {
43.22585 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22586 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22587 -+      },
43.22588 -+    },
43.22589 -+    {
43.22590 -+      AVR32_OPC_MOVVS2, 4, 0xf9b00c00, 0xfff0ff00,
43.22591 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVVS2],
43.22592 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22593 -+      {
43.22594 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22595 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22596 -+      },
43.22597 -+    },
43.22598 -+    {
43.22599 -+      AVR32_OPC_MOVVC2, 4, 0xf9b00d00, 0xfff0ff00,
43.22600 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVVC2],
43.22601 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22602 -+      {
43.22603 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22604 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22605 -+      },
43.22606 -+    },
43.22607 -+    {
43.22608 -+      AVR32_OPC_MOVQS2, 4, 0xf9b00e00, 0xfff0ff00,
43.22609 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVQS2],
43.22610 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22611 -+      {
43.22612 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22613 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22614 -+      },
43.22615 -+    },
43.22616 -+    {
43.22617 -+      AVR32_OPC_MOVAL2, 4, 0xf9b00f00, 0xfff0ff00,
43.22618 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVAL2],
43.22619 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.22620 -+      {
43.22621 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22622 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22623 -+      },
43.22624 -+    },
43.22625 -+    {
43.22626 -+      AVR32_OPC_MTDR, 4, 0xe7b00000, 0xfff0ff00,
43.22627 -+      &avr32_syntax_table[AVR32_SYNTAX_MTDR],
43.22628 -+      BFD_RELOC_AVR32_8S_EXT, 2, 0,
43.22629 -+      {
43.22630 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22631 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22632 -+      },
43.22633 -+    },
43.22634 -+    {
43.22635 -+      AVR32_OPC_MTSR, 4, 0xe3b00000, 0xfff0ff00,
43.22636 -+      &avr32_syntax_table[AVR32_SYNTAX_MTSR],
43.22637 -+      BFD_RELOC_AVR32_8S_EXT, 2, 0,
43.22638 -+      {
43.22639 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22640 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22641 -+      },
43.22642 -+    },
43.22643 -+    {
43.22644 -+      AVR32_OPC_MUL1, 2, 0xa1300000, 0xe1f00000,
43.22645 -+      &avr32_syntax_table[AVR32_SYNTAX_MUL1],
43.22646 -+      BFD_RELOC_UNUSED, 2, -1,
43.22647 -+      {
43.22648 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22649 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22650 -+      },
43.22651 -+    },
43.22652 -+    {
43.22653 -+      AVR32_OPC_MUL2, 4, 0xe0000240, 0xe1f0fff0,
43.22654 -+      &avr32_syntax_table[AVR32_SYNTAX_MUL2],
43.22655 -+      BFD_RELOC_UNUSED, 3, -1,
43.22656 -+      {
43.22657 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22658 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22659 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22660 -+      },
43.22661 -+    },
43.22662 -+    {
43.22663 -+      AVR32_OPC_MUL3, 4, 0xe0001000, 0xe1f0ff00,
43.22664 -+      &avr32_syntax_table[AVR32_SYNTAX_MUL3],
43.22665 -+      BFD_RELOC_AVR32_8S_EXT, 3, 2,
43.22666 -+      {
43.22667 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22668 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22669 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.22670 -+      },
43.22671 -+    },
43.22672 -+    {
43.22673 -+      AVR32_OPC_MULHH_W, 4, 0xe0000780, 0xe1f0ffc0,
43.22674 -+      &avr32_syntax_table[AVR32_SYNTAX_MULHH_W],
43.22675 -+      BFD_RELOC_UNUSED, 5, -1,
43.22676 -+      {
43.22677 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22678 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22679 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.22680 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22681 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.22682 -+      },
43.22683 -+    },
43.22684 -+    {
43.22685 -+      AVR32_OPC_MULNHH_W, 4, 0xe0000180, 0xe1f0ffc0,
43.22686 -+      &avr32_syntax_table[AVR32_SYNTAX_MULNHH_W],
43.22687 -+      BFD_RELOC_UNUSED, 5, -1,
43.22688 -+      {
43.22689 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22690 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22691 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.22692 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22693 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.22694 -+      },
43.22695 -+    },
43.22696 -+    {
43.22697 -+      AVR32_OPC_MULNWH_D, 4, 0xe0000280, 0xe1f0ffe1,
43.22698 -+      &avr32_syntax_table[AVR32_SYNTAX_MULNWH_D],
43.22699 -+      BFD_RELOC_UNUSED, 4, -1,
43.22700 -+      {
43.22701 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22702 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22703 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22704 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.22705 -+      },
43.22706 -+    },
43.22707 -+    {
43.22708 -+      AVR32_OPC_MULSD, 4, 0xe0000440, 0xe1f0fff0,
43.22709 -+      &avr32_syntax_table[AVR32_SYNTAX_MULSD],
43.22710 -+      BFD_RELOC_UNUSED, 3, -1,
43.22711 -+      {
43.22712 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22713 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22714 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22715 -+      },
43.22716 -+    },
43.22717 -+    {
43.22718 -+      AVR32_OPC_MULSATHH_H, 4, 0xe0000880, 0xe1f0ffc0,
43.22719 -+      &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_H],
43.22720 -+      BFD_RELOC_UNUSED, 5, -1,
43.22721 -+      {
43.22722 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22723 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22724 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.22725 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22726 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.22727 -+      },
43.22728 -+    },
43.22729 -+    {
43.22730 -+      AVR32_OPC_MULSATHH_W, 4, 0xe0000980, 0xe1f0ffc0,
43.22731 -+      &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_W],
43.22732 -+      BFD_RELOC_UNUSED, 5, -1,
43.22733 -+      {
43.22734 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22735 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22736 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.22737 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22738 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.22739 -+      },
43.22740 -+    },
43.22741 -+    {
43.22742 -+      AVR32_OPC_MULSATRNDHH_H, 4, 0xe0000a80, 0xe1f0ffc0,
43.22743 -+      &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDHH_H],
43.22744 -+      BFD_RELOC_UNUSED, 5, -1,
43.22745 -+      {
43.22746 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22747 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22748 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.22749 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22750 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.22751 -+      },
43.22752 -+    },
43.22753 -+    {
43.22754 -+      AVR32_OPC_MULSATRNDWH_W, 4, 0xe0000b80, 0xe1f0ffe0,
43.22755 -+      &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDWH_W],
43.22756 -+      BFD_RELOC_UNUSED, 4, -1,
43.22757 -+      {
43.22758 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22759 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22760 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22761 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.22762 -+      },
43.22763 -+    },
43.22764 -+    {
43.22765 -+      AVR32_OPC_MULSATWH_W, 4, 0xe0000e80, 0xe1f0ffe0,
43.22766 -+      &avr32_syntax_table[AVR32_SYNTAX_MULSATWH_W],
43.22767 -+      BFD_RELOC_UNUSED, 4, -1,
43.22768 -+      {
43.22769 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22770 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22771 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22772 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.22773 -+      },
43.22774 -+    },
43.22775 -+    {
43.22776 -+      AVR32_OPC_MULU_D, 4, 0xe0000640, 0xe1f0fff1,
43.22777 -+      &avr32_syntax_table[AVR32_SYNTAX_MULU_D],
43.22778 -+      BFD_RELOC_UNUSED, 3, -1,
43.22779 -+      {
43.22780 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22781 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22782 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22783 -+      },
43.22784 -+    },
43.22785 -+    {
43.22786 -+      AVR32_OPC_MULWH_D, 4, 0xe0000d80, 0xe1f0ffe1,
43.22787 -+      &avr32_syntax_table[AVR32_SYNTAX_MULWH_D],
43.22788 -+      BFD_RELOC_UNUSED, 4, -1,
43.22789 -+      {
43.22790 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22791 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22792 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22793 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.22794 -+      },
43.22795 -+    },
43.22796 -+    {
43.22797 -+      AVR32_OPC_MUSFR, 2, 0x5d300000, 0xfff00000,
43.22798 -+      &avr32_syntax_table[AVR32_SYNTAX_MUSFR],
43.22799 -+      BFD_RELOC_UNUSED, 1, -1,
43.22800 -+      {
43.22801 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22802 -+      }
43.22803 -+    },
43.22804 -+    {
43.22805 -+      AVR32_OPC_MUSTR, 2, 0x5d200000, 0xfff00000,
43.22806 -+      &avr32_syntax_table[AVR32_SYNTAX_MUSTR],
43.22807 -+      BFD_RELOC_UNUSED, 1, -1,
43.22808 -+      {
43.22809 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22810 -+      }
43.22811 -+    },
43.22812 -+    {
43.22813 -+      AVR32_OPC_MVCR_D, 4, 0xefa00010, 0xfff111ff,
43.22814 -+      &avr32_syntax_table[AVR32_SYNTAX_MVCR_D],
43.22815 -+      BFD_RELOC_UNUSED, 3, -1,
43.22816 -+      {
43.22817 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.22818 -+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
43.22819 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
43.22820 -+      },
43.22821 -+    },
43.22822 -+    {
43.22823 -+      AVR32_OPC_MVCR_W, 4, 0xefa00000, 0xfff010ff,
43.22824 -+      &avr32_syntax_table[AVR32_SYNTAX_MVCR_W],
43.22825 -+      BFD_RELOC_UNUSED, 3, -1,
43.22826 -+      {
43.22827 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.22828 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22829 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
43.22830 -+      },
43.22831 -+    },
43.22832 -+    {
43.22833 -+      AVR32_OPC_MVRC_D, 4, 0xefa00030, 0xfff111ff,
43.22834 -+      &avr32_syntax_table[AVR32_SYNTAX_MVRC_D],
43.22835 -+      BFD_RELOC_UNUSED, 3, -1,
43.22836 -+      {
43.22837 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.22838 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
43.22839 -+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
43.22840 -+      },
43.22841 -+    },
43.22842 -+    {
43.22843 -+      AVR32_OPC_MVRC_W, 4, 0xefa00020, 0xfff010ff,
43.22844 -+      &avr32_syntax_table[AVR32_SYNTAX_MVRC_W],
43.22845 -+      BFD_RELOC_UNUSED, 3, -1,
43.22846 -+      {
43.22847 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.22848 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
43.22849 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22850 -+      },
43.22851 -+    },
43.22852 -+    {
43.22853 -+      AVR32_OPC_NEG, 2, 0x5c300000, 0xfff00000,
43.22854 -+      &avr32_syntax_table[AVR32_SYNTAX_NEG],
43.22855 -+      BFD_RELOC_UNUSED, 1, -1,
43.22856 -+      {
43.22857 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22858 -+      }
43.22859 -+    },
43.22860 -+    {
43.22861 -+      AVR32_OPC_NOP, 2, 0xd7030000, 0xffff0000,
43.22862 -+      &avr32_syntax_table[AVR32_SYNTAX_NOP],
43.22863 -+      BFD_RELOC_UNUSED, 0, -1, { NULL },
43.22864 -+    },
43.22865 -+    {
43.22866 -+      AVR32_OPC_OR1, 2, 0x00400000, 0xe1f00000,
43.22867 -+      &avr32_syntax_table[AVR32_SYNTAX_OR1],
43.22868 -+      BFD_RELOC_UNUSED, 2, -1,
43.22869 -+      {
43.22870 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22871 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22872 -+      },
43.22873 -+    },
43.22874 -+    {
43.22875 -+      AVR32_OPC_OR2, 4, 0xe1e01000, 0xe1f0fe00,
43.22876 -+      &avr32_syntax_table[AVR32_SYNTAX_OR2],
43.22877 -+      BFD_RELOC_UNUSED, 4, -1,
43.22878 -+      {
43.22879 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22880 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22881 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22882 -+	&avr32_ifield_table[AVR32_IFIELD_K5E2],
43.22883 -+      },
43.22884 -+    },
43.22885 -+    {
43.22886 -+      AVR32_OPC_OR3, 4, 0xe1e01200, 0xe1f0fe00,
43.22887 -+      &avr32_syntax_table[AVR32_SYNTAX_OR3],
43.22888 -+      BFD_RELOC_UNUSED, 4, -1,
43.22889 -+      {
43.22890 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22891 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22892 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22893 -+	&avr32_ifield_table[AVR32_IFIELD_K5E2],
43.22894 -+      },
43.22895 -+    },
43.22896 -+    {
43.22897 -+      AVR32_OPC_ORH, 4, 0xea100000, 0xfff00000,
43.22898 -+      &avr32_syntax_table[AVR32_SYNTAX_ORH],
43.22899 -+      BFD_RELOC_AVR32_16U, 2, 1,
43.22900 -+      {
43.22901 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22902 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.22903 -+      },
43.22904 -+    },
43.22905 -+    {
43.22906 -+      AVR32_OPC_ORL, 4, 0xe8100000, 0xfff00000,
43.22907 -+      &avr32_syntax_table[AVR32_SYNTAX_ORL],
43.22908 -+      BFD_RELOC_AVR32_16U, 2, 1,
43.22909 -+      {
43.22910 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22911 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.22912 -+      },
43.22913 -+    },
43.22914 -+    {
43.22915 -+      AVR32_OPC_PABS_SB, 4, 0xe00023e0, 0xfff0fff0,
43.22916 -+      &avr32_syntax_table[AVR32_SYNTAX_PABS_SB],
43.22917 -+      BFD_RELOC_UNUSED, 2, -1,
43.22918 -+      {
43.22919 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22920 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22921 -+      },
43.22922 -+    },
43.22923 -+    {
43.22924 -+      AVR32_OPC_PABS_SH, 4, 0xe00023f0, 0xfff0fff0,
43.22925 -+      &avr32_syntax_table[AVR32_SYNTAX_PABS_SH],
43.22926 -+      BFD_RELOC_UNUSED, 2, -1,
43.22927 -+      {
43.22928 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22929 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22930 -+      },
43.22931 -+    },
43.22932 -+    {
43.22933 -+      AVR32_OPC_PACKSH_SB, 4, 0xe00024d0, 0xe1f0fff0,
43.22934 -+      &avr32_syntax_table[AVR32_SYNTAX_PACKSH_SB],
43.22935 -+      BFD_RELOC_UNUSED, 3, -1,
43.22936 -+      {
43.22937 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22938 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22939 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22940 -+      },
43.22941 -+    },
43.22942 -+    {
43.22943 -+      AVR32_OPC_PACKSH_UB, 4, 0xe00024c0, 0xe1f0fff0,
43.22944 -+      &avr32_syntax_table[AVR32_SYNTAX_PACKSH_UB],
43.22945 -+      BFD_RELOC_UNUSED, 3, -1,
43.22946 -+      {
43.22947 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22948 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22949 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22950 -+      },
43.22951 -+    },
43.22952 -+    {
43.22953 -+      AVR32_OPC_PACKW_SH, 4, 0xe0002470, 0xe1f0fff0,
43.22954 -+      &avr32_syntax_table[AVR32_SYNTAX_PACKW_SH],
43.22955 -+      BFD_RELOC_UNUSED, 3, -1,
43.22956 -+      {
43.22957 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22958 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22959 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22960 -+      },
43.22961 -+    },
43.22962 -+    {
43.22963 -+      AVR32_OPC_PADD_B, 4, 0xe0002300, 0xe1f0fff0,
43.22964 -+      &avr32_syntax_table[AVR32_SYNTAX_PADD_B],
43.22965 -+      BFD_RELOC_UNUSED, 3, -1,
43.22966 -+      {
43.22967 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22968 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22969 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22970 -+      },
43.22971 -+    },
43.22972 -+    {
43.22973 -+      AVR32_OPC_PADD_H, 4, 0xe0002000, 0xe1f0fff0,
43.22974 -+      &avr32_syntax_table[AVR32_SYNTAX_PADD_H],
43.22975 -+      BFD_RELOC_UNUSED, 3, -1,
43.22976 -+      {
43.22977 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22978 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22979 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22980 -+      },
43.22981 -+    },
43.22982 -+    {
43.22983 -+      AVR32_OPC_PADDH_SH, 4, 0xe00020c0, 0xe1f0fff0,
43.22984 -+      &avr32_syntax_table[AVR32_SYNTAX_PADDH_SH],
43.22985 -+      BFD_RELOC_UNUSED, 3, -1,
43.22986 -+      {
43.22987 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22988 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22989 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.22990 -+      },
43.22991 -+    },
43.22992 -+    {
43.22993 -+      AVR32_OPC_PADDH_UB, 4, 0xe0002360, 0xe1f0fff0,
43.22994 -+      &avr32_syntax_table[AVR32_SYNTAX_PADDH_UB],
43.22995 -+      BFD_RELOC_UNUSED, 3, -1,
43.22996 -+      {
43.22997 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.22998 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.22999 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23000 -+      },
43.23001 -+    },
43.23002 -+    {
43.23003 -+      AVR32_OPC_PADDS_SB, 4, 0xe0002320, 0xe1f0fff0,
43.23004 -+      &avr32_syntax_table[AVR32_SYNTAX_PADDS_SB],
43.23005 -+      BFD_RELOC_UNUSED, 3, -1,
43.23006 -+      {
43.23007 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23008 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23009 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23010 -+      },
43.23011 -+    },
43.23012 -+    {
43.23013 -+      AVR32_OPC_PADDS_SH, 4, 0xe0002040, 0xe1f0fff0,
43.23014 -+      &avr32_syntax_table[AVR32_SYNTAX_PADDS_SH],
43.23015 -+      BFD_RELOC_UNUSED, 3, -1,
43.23016 -+      {
43.23017 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23018 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23019 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23020 -+      },
43.23021 -+    },
43.23022 -+    {
43.23023 -+      AVR32_OPC_PADDS_UB, 4, 0xe0002340, 0xe1f0fff0,
43.23024 -+      &avr32_syntax_table[AVR32_SYNTAX_PADDS_UB],
43.23025 -+      BFD_RELOC_UNUSED, 3, -1,
43.23026 -+      {
43.23027 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23028 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23029 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23030 -+      },
43.23031 -+    },
43.23032 -+    {
43.23033 -+      AVR32_OPC_PADDS_UH, 4, 0xe0002080, 0xe1f0fff0,
43.23034 -+      &avr32_syntax_table[AVR32_SYNTAX_PADDS_UH],
43.23035 -+      BFD_RELOC_UNUSED, 3, -1,
43.23036 -+      {
43.23037 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23038 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23039 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23040 -+      },
43.23041 -+    },
43.23042 -+    {
43.23043 -+      AVR32_OPC_PADDSUB_H, 4, 0xe0002100, 0xe1f0ffc0,
43.23044 -+      &avr32_syntax_table[AVR32_SYNTAX_PADDSUB_H],
43.23045 -+      BFD_RELOC_UNUSED, 5, -1,
43.23046 -+      {
43.23047 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23048 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23049 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.23050 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23051 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.23052 -+      },
43.23053 -+    },
43.23054 -+    {
43.23055 -+      AVR32_OPC_PADDSUBH_SH, 4, 0xe0002280, 0xe1f0ffc0,
43.23056 -+      &avr32_syntax_table[AVR32_SYNTAX_PADDSUBH_SH],
43.23057 -+      BFD_RELOC_UNUSED, 5, -1,
43.23058 -+      {
43.23059 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23060 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23061 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.23062 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23063 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.23064 -+      },
43.23065 -+    },
43.23066 -+    {
43.23067 -+      AVR32_OPC_PADDSUBS_SH, 4, 0xe0002180, 0xe1f0ffc0,
43.23068 -+      &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_SH],
43.23069 -+      BFD_RELOC_UNUSED, 5, -1,
43.23070 -+      {
43.23071 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23072 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23073 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.23074 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23075 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.23076 -+      },
43.23077 -+    },
43.23078 -+    {
43.23079 -+      AVR32_OPC_PADDSUBS_UH, 4, 0xe0002200, 0xe1f0ffc0,
43.23080 -+      &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_UH],
43.23081 -+      BFD_RELOC_UNUSED, 5, -1,
43.23082 -+      {
43.23083 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23084 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23085 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.23086 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23087 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.23088 -+      },
43.23089 -+    },
43.23090 -+    {
43.23091 -+      AVR32_OPC_PADDX_H, 4, 0xe0002020, 0xe1f0fff0,
43.23092 -+      &avr32_syntax_table[AVR32_SYNTAX_PADDX_H],
43.23093 -+      BFD_RELOC_UNUSED, 3, -1,
43.23094 -+      {
43.23095 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23096 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23097 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23098 -+      },
43.23099 -+    },
43.23100 -+    {
43.23101 -+      AVR32_OPC_PADDXH_SH, 4, 0xe00020e0, 0xe1f0fff0,
43.23102 -+      &avr32_syntax_table[AVR32_SYNTAX_PADDXH_SH],
43.23103 -+      BFD_RELOC_UNUSED, 3, -1,
43.23104 -+      {
43.23105 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23106 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23107 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23108 -+      },
43.23109 -+    },
43.23110 -+    {
43.23111 -+      AVR32_OPC_PADDXS_SH, 4, 0xe0002060, 0xe1f0fff0,
43.23112 -+      &avr32_syntax_table[AVR32_SYNTAX_PADDXS_SH],
43.23113 -+      BFD_RELOC_UNUSED, 3, -1,
43.23114 -+      {
43.23115 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23116 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23117 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23118 -+      },
43.23119 -+    },
43.23120 -+    {
43.23121 -+      AVR32_OPC_PADDXS_UH, 4, 0xe00020a0, 0xe1f0fff0,
43.23122 -+      &avr32_syntax_table[AVR32_SYNTAX_PADDXS_UH],
43.23123 -+      BFD_RELOC_UNUSED, 3, -1,
43.23124 -+      {
43.23125 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23126 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23127 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23128 -+      },
43.23129 -+    },
43.23130 -+    {
43.23131 -+      AVR32_OPC_PASR_B, 4, 0xe0002410, 0xe1f8fff0,
43.23132 -+      &avr32_syntax_table[AVR32_SYNTAX_PASR_B],
43.23133 -+      BFD_RELOC_UNUSED, 3, -1,
43.23134 -+      {
43.23135 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23136 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23137 -+	&avr32_ifield_table[AVR32_IFIELD_COND3],
43.23138 -+      },
43.23139 -+    },
43.23140 -+    {
43.23141 -+      AVR32_OPC_PASR_H, 4, 0xe0002440, 0xe1f0fff0,
43.23142 -+      &avr32_syntax_table[AVR32_SYNTAX_PASR_H],
43.23143 -+      BFD_RELOC_UNUSED, 3, -1,
43.23144 -+      {
43.23145 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23146 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23147 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23148 -+      },
43.23149 -+    },
43.23150 -+    {
43.23151 -+      AVR32_OPC_PAVG_SH, 4, 0xe00023d0, 0xe1f0fff0,
43.23152 -+      &avr32_syntax_table[AVR32_SYNTAX_PAVG_SH],
43.23153 -+      BFD_RELOC_UNUSED, 3, -1,
43.23154 -+      {
43.23155 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23156 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23157 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23158 -+      },
43.23159 -+    },
43.23160 -+    {
43.23161 -+      AVR32_OPC_PAVG_UB, 4, 0xe00023c0, 0xe1f0fff0,
43.23162 -+      &avr32_syntax_table[AVR32_SYNTAX_PAVG_UB],
43.23163 -+      BFD_RELOC_UNUSED, 3, -1,
43.23164 -+      {
43.23165 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23166 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23167 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23168 -+      },
43.23169 -+    },
43.23170 -+    {
43.23171 -+      AVR32_OPC_PLSL_B, 4, 0xe0002420, 0xe1f8fff0,
43.23172 -+      &avr32_syntax_table[AVR32_SYNTAX_PLSL_B],
43.23173 -+      BFD_RELOC_UNUSED, 3, -1,
43.23174 -+      {
43.23175 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23176 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23177 -+	&avr32_ifield_table[AVR32_IFIELD_COND3],
43.23178 -+      },
43.23179 -+    },
43.23180 -+    {
43.23181 -+      AVR32_OPC_PLSL_H, 4, 0xe0002450, 0xe1f0fff0,
43.23182 -+      &avr32_syntax_table[AVR32_SYNTAX_PLSL_H],
43.23183 -+      BFD_RELOC_UNUSED, 3, -1,
43.23184 -+      {
43.23185 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23186 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23187 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23188 -+      },
43.23189 -+    },
43.23190 -+    {
43.23191 -+      AVR32_OPC_PLSR_B, 4, 0xe0002430, 0xe1f8fff0,
43.23192 -+      &avr32_syntax_table[AVR32_SYNTAX_PLSR_B],
43.23193 -+      BFD_RELOC_UNUSED, 3, -1,
43.23194 -+      {
43.23195 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23196 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23197 -+	&avr32_ifield_table[AVR32_IFIELD_COND3],
43.23198 -+      },
43.23199 -+    },
43.23200 -+    {
43.23201 -+      AVR32_OPC_PLSR_H, 4, 0xe0002460, 0xe1f0fff0,
43.23202 -+      &avr32_syntax_table[AVR32_SYNTAX_PLSR_H],
43.23203 -+      BFD_RELOC_UNUSED, 3, -1,
43.23204 -+      {
43.23205 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23206 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23207 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23208 -+      },
43.23209 -+    },
43.23210 -+    {
43.23211 -+      AVR32_OPC_PMAX_SH, 4, 0xe0002390, 0xe1f0fff0,
43.23212 -+      &avr32_syntax_table[AVR32_SYNTAX_PMAX_SH],
43.23213 -+      BFD_RELOC_UNUSED, 3, -1,
43.23214 -+      {
43.23215 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23216 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23217 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23218 -+      },
43.23219 -+    },
43.23220 -+    {
43.23221 -+      AVR32_OPC_PMAX_UB, 4, 0xe0002380, 0xe1f0fff0,
43.23222 -+      &avr32_syntax_table[AVR32_SYNTAX_PMAX_UB],
43.23223 -+      BFD_RELOC_UNUSED, 3, -1,
43.23224 -+      {
43.23225 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23226 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23227 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23228 -+      },
43.23229 -+    },
43.23230 -+    {
43.23231 -+      AVR32_OPC_PMIN_SH, 4, 0xe00023b0, 0xe1f0fff0,
43.23232 -+      &avr32_syntax_table[AVR32_SYNTAX_PMIN_SH],
43.23233 -+      BFD_RELOC_UNUSED, 3, -1,
43.23234 -+      {
43.23235 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23236 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23237 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23238 -+      },
43.23239 -+    },
43.23240 -+    {
43.23241 -+      AVR32_OPC_PMIN_UB, 4, 0xe00023a0, 0xe1f0fff0,
43.23242 -+      &avr32_syntax_table[AVR32_SYNTAX_PMIN_UB],
43.23243 -+      BFD_RELOC_UNUSED, 3, -1,
43.23244 -+      {
43.23245 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23246 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23247 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23248 -+      },
43.23249 -+    },
43.23250 -+    {
43.23251 -+      AVR32_OPC_POPJC, 2, 0xd7130000, 0xffff0000,
43.23252 -+      &avr32_syntax_table[AVR32_SYNTAX_POPJC],
43.23253 -+      BFD_RELOC_UNUSED, 0, -1, { NULL },
43.23254 -+    },
43.23255 -+    {
43.23256 -+      AVR32_OPC_POPM, 2, 0xd0020000, 0xf0070000,
43.23257 -+      &avr32_syntax_table[AVR32_SYNTAX_POPM],
43.23258 -+      BFD_RELOC_UNUSED, 1, -1,
43.23259 -+      {
43.23260 -+	&avr32_ifield_table[AVR32_IFIELD_POPM],
43.23261 -+      },
43.23262 -+    },
43.23263 -+    {
43.23264 -+      AVR32_OPC_POPM_E, 4, 0xe3cd0000, 0xffff0000,
43.23265 -+      &avr32_syntax_table[AVR32_SYNTAX_POPM_E],
43.23266 -+      BFD_RELOC_UNUSED, 1, -1,
43.23267 -+      {
43.23268 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.23269 -+      },
43.23270 -+    },
43.23271 -+    {
43.23272 -+      AVR32_OPC_PREF, 4, 0xf2100000, 0xfff00000,
43.23273 -+      &avr32_syntax_table[AVR32_SYNTAX_PREF],
43.23274 -+      BFD_RELOC_AVR32_16S, 2, -1,
43.23275 -+      {
43.23276 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23277 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.23278 -+      },
43.23279 -+    },
43.23280 -+    {
43.23281 -+      AVR32_OPC_PSAD, 4, 0xe0002400, 0xe1f0fff0,
43.23282 -+      &avr32_syntax_table[AVR32_SYNTAX_PSAD],
43.23283 -+      BFD_RELOC_UNUSED, 3, -1,
43.23284 -+      {
43.23285 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23286 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23287 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23288 -+      },
43.23289 -+    },
43.23290 -+    {
43.23291 -+      AVR32_OPC_PSUB_B, 4, 0xe0002310, 0xe1f0fff0,
43.23292 -+      &avr32_syntax_table[AVR32_SYNTAX_PSUB_B],
43.23293 -+      BFD_RELOC_UNUSED, 3, -1,
43.23294 -+      {
43.23295 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23296 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23297 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23298 -+      },
43.23299 -+    },
43.23300 -+    {
43.23301 -+      AVR32_OPC_PSUB_H, 4, 0xe0002010, 0xe1f0fff0,
43.23302 -+      &avr32_syntax_table[AVR32_SYNTAX_PSUB_H],
43.23303 -+      BFD_RELOC_UNUSED, 3, -1,
43.23304 -+      {
43.23305 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23306 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23307 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23308 -+      },
43.23309 -+    },
43.23310 -+    {
43.23311 -+      AVR32_OPC_PSUBADD_H, 4, 0xe0002140, 0xe1f0ffc0,
43.23312 -+      &avr32_syntax_table[AVR32_SYNTAX_PSUBADD_H],
43.23313 -+      BFD_RELOC_UNUSED, 5, -1,
43.23314 -+      {
43.23315 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23316 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23317 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.23318 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23319 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.23320 -+      },
43.23321 -+    },
43.23322 -+    {
43.23323 -+      AVR32_OPC_PSUBADDH_SH, 4, 0xe00022c0, 0xe1f0ffc0,
43.23324 -+      &avr32_syntax_table[AVR32_SYNTAX_PSUBADDH_SH],
43.23325 -+      BFD_RELOC_UNUSED, 5, -1,
43.23326 -+      {
43.23327 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23328 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23329 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.23330 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23331 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.23332 -+      },
43.23333 -+    },
43.23334 -+    {
43.23335 -+      AVR32_OPC_PSUBADDS_SH, 4, 0xe00021c0, 0xe1f0ffc0,
43.23336 -+      &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_SH],
43.23337 -+      BFD_RELOC_UNUSED, 5, -1,
43.23338 -+      {
43.23339 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23340 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23341 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.23342 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23343 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.23344 -+      },
43.23345 -+    },
43.23346 -+    {
43.23347 -+      AVR32_OPC_PSUBADDS_UH, 4, 0xe0002240, 0xe1f0ffc0,
43.23348 -+      &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_UH],
43.23349 -+      BFD_RELOC_UNUSED, 5, -1,
43.23350 -+      {
43.23351 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23352 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23353 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.23354 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23355 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.23356 -+      },
43.23357 -+    },
43.23358 -+    {
43.23359 -+      AVR32_OPC_PSUBH_SH, 4, 0xe00020d0, 0xe1f0fff0,
43.23360 -+      &avr32_syntax_table[AVR32_SYNTAX_PSUBH_SH],
43.23361 -+      BFD_RELOC_UNUSED, 3, -1,
43.23362 -+      {
43.23363 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23364 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23365 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23366 -+      },
43.23367 -+    },
43.23368 -+    {
43.23369 -+      AVR32_OPC_PSUBH_UB, 4, 0xe0002370, 0xe1f0fff0,
43.23370 -+      &avr32_syntax_table[AVR32_SYNTAX_PSUBH_UB],
43.23371 -+      BFD_RELOC_UNUSED, 3, -1,
43.23372 -+      {
43.23373 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23374 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23375 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23376 -+      },
43.23377 -+    },
43.23378 -+    {
43.23379 -+      AVR32_OPC_PSUBS_SB, 4, 0xe0002330, 0xe1f0fff0,
43.23380 -+      &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SB],
43.23381 -+      BFD_RELOC_UNUSED, 3, -1,
43.23382 -+      {
43.23383 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23384 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23385 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23386 -+      },
43.23387 -+    },
43.23388 -+    {
43.23389 -+      AVR32_OPC_PSUBS_SH, 4, 0xe0002050, 0xe1f0fff0,
43.23390 -+      &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SH],
43.23391 -+      BFD_RELOC_UNUSED, 3, -1,
43.23392 -+      {
43.23393 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23394 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23395 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23396 -+      },
43.23397 -+    },
43.23398 -+    {
43.23399 -+      AVR32_OPC_PSUBS_UB, 4, 0xe0002350, 0xe1f0fff0,
43.23400 -+      &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UB],
43.23401 -+      BFD_RELOC_UNUSED, 3, -1,
43.23402 -+      {
43.23403 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23404 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23405 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23406 -+      },
43.23407 -+    },
43.23408 -+    {
43.23409 -+      AVR32_OPC_PSUBS_UH, 4, 0xe0002090, 0xe1f0fff0,
43.23410 -+      &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UH],
43.23411 -+      BFD_RELOC_UNUSED, 3, -1,
43.23412 -+      {
43.23413 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23414 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23415 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23416 -+      },
43.23417 -+    },
43.23418 -+    {
43.23419 -+      AVR32_OPC_PSUBX_H, 4, 0xe0002030, 0xe1f0fff0,
43.23420 -+      &avr32_syntax_table[AVR32_SYNTAX_PSUBX_H],
43.23421 -+      BFD_RELOC_UNUSED, 3, -1,
43.23422 -+      {
43.23423 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23424 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23425 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23426 -+      },
43.23427 -+    },
43.23428 -+    {
43.23429 -+      AVR32_OPC_PSUBXH_SH, 4, 0xe00020f0, 0xe1f0fff0,
43.23430 -+      &avr32_syntax_table[AVR32_SYNTAX_PSUBXH_SH],
43.23431 -+      BFD_RELOC_UNUSED, 3, -1,
43.23432 -+      {
43.23433 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23434 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23435 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23436 -+      },
43.23437 -+    },
43.23438 -+    {
43.23439 -+      AVR32_OPC_PSUBXS_SH, 4, 0xe0002070, 0xe1f0fff0,
43.23440 -+      &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_SH],
43.23441 -+      BFD_RELOC_UNUSED, 3, -1,
43.23442 -+      {
43.23443 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23444 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23445 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23446 -+      },
43.23447 -+    },
43.23448 -+    {
43.23449 -+      AVR32_OPC_PSUBXS_UH, 4, 0xe00020b0, 0xe1f0fff0,
43.23450 -+      &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_UH],
43.23451 -+      BFD_RELOC_UNUSED, 3, -1,
43.23452 -+      {
43.23453 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23454 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23455 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23456 -+      },
43.23457 -+    },
43.23458 -+    {
43.23459 -+      AVR32_OPC_PUNPCKSB_H, 4, 0xe00024a0, 0xe1ffffe0,
43.23460 -+      &avr32_syntax_table[AVR32_SYNTAX_PUNPCKSB_H],
43.23461 -+      BFD_RELOC_UNUSED, 3, -1,
43.23462 -+      {
43.23463 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23464 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23465 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.23466 -+      },
43.23467 -+    },
43.23468 -+    {
43.23469 -+      AVR32_OPC_PUNPCKUB_H, 4, 0xe0002480, 0xe1ffffe0,
43.23470 -+      &avr32_syntax_table[AVR32_SYNTAX_PUNPCKUB_H],
43.23471 -+      BFD_RELOC_UNUSED, 3, -1,
43.23472 -+      {
43.23473 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23474 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23475 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.23476 -+      },
43.23477 -+    },
43.23478 -+    {
43.23479 -+      AVR32_OPC_PUSHJC, 2, 0xd7230000, 0xffff0000,
43.23480 -+      &avr32_syntax_table[AVR32_SYNTAX_PUSHJC],
43.23481 -+      BFD_RELOC_UNUSED, 0, -1, { NULL },
43.23482 -+    },
43.23483 -+    {
43.23484 -+      AVR32_OPC_PUSHM, 2, 0xd0010000, 0xf00f0000,
43.23485 -+      &avr32_syntax_table[AVR32_SYNTAX_PUSHM],
43.23486 -+      BFD_RELOC_UNUSED, 1, -1,
43.23487 -+      {
43.23488 -+	&avr32_ifield_table[AVR32_IFIELD_K8C],
43.23489 -+      },
43.23490 -+    },
43.23491 -+    {
43.23492 -+      AVR32_OPC_PUSHM_E, 4, 0xebcd0000, 0xffff0000,
43.23493 -+      &avr32_syntax_table[AVR32_SYNTAX_PUSHM_E],
43.23494 -+      BFD_RELOC_UNUSED, 1, -1,
43.23495 -+      {
43.23496 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.23497 -+      },
43.23498 -+    },
43.23499 -+    {
43.23500 -+      AVR32_OPC_RCALL1, 2, 0xc00c0000, 0xf00c0000,
43.23501 -+      &avr32_syntax_table[AVR32_SYNTAX_RCALL1],
43.23502 -+      BFD_RELOC_AVR32_11H_PCREL, 1, 0,
43.23503 -+      {
43.23504 -+	&avr32_ifield_table[AVR32_IFIELD_K10],
43.23505 -+      },
43.23506 -+    },
43.23507 -+    {
43.23508 -+      AVR32_OPC_RCALL2, 4, 0xe0a00000, 0xe1ef0000,
43.23509 -+      &avr32_syntax_table[AVR32_SYNTAX_RCALL2],
43.23510 -+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
43.23511 -+      {
43.23512 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.23513 -+      },
43.23514 -+    },
43.23515 -+    {
43.23516 -+      AVR32_OPC_RETEQ, 2, 0x5e000000, 0xfff00000,
43.23517 -+      &avr32_syntax_table[AVR32_SYNTAX_RETEQ],
43.23518 -+      BFD_RELOC_NONE, 1, -1,
43.23519 -+      {
43.23520 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23521 -+      },
43.23522 -+    },
43.23523 -+    {
43.23524 -+      AVR32_OPC_RETNE, 2, 0x5e100000, 0xfff00000,
43.23525 -+      &avr32_syntax_table[AVR32_SYNTAX_RETNE],
43.23526 -+      BFD_RELOC_NONE, 1, -1,
43.23527 -+      {
43.23528 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23529 -+      },
43.23530 -+    },
43.23531 -+    {
43.23532 -+      AVR32_OPC_RETCC, 2, 0x5e200000, 0xfff00000,
43.23533 -+      &avr32_syntax_table[AVR32_SYNTAX_RETHS],
43.23534 -+      BFD_RELOC_NONE, 1, -1,
43.23535 -+      {
43.23536 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23537 -+      },
43.23538 -+    },
43.23539 -+    {
43.23540 -+      AVR32_OPC_RETCS, 2, 0x5e300000, 0xfff00000,
43.23541 -+      &avr32_syntax_table[AVR32_SYNTAX_RETLO],
43.23542 -+      BFD_RELOC_NONE, 1, -1,
43.23543 -+      {
43.23544 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23545 -+      },
43.23546 -+    },
43.23547 -+    {
43.23548 -+      AVR32_OPC_RETGE, 2, 0x5e400000, 0xfff00000,
43.23549 -+      &avr32_syntax_table[AVR32_SYNTAX_RETGE],
43.23550 -+      BFD_RELOC_NONE, 1, -1,
43.23551 -+      {
43.23552 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23553 -+      },
43.23554 -+    },
43.23555 -+    {
43.23556 -+      AVR32_OPC_RETLT, 2, 0x5e500000, 0xfff00000,
43.23557 -+      &avr32_syntax_table[AVR32_SYNTAX_RETLT],
43.23558 -+      BFD_RELOC_NONE, 1, -1,
43.23559 -+      {
43.23560 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23561 -+      },
43.23562 -+    },
43.23563 -+    {
43.23564 -+      AVR32_OPC_RETMI, 2, 0x5e600000, 0xfff00000,
43.23565 -+      &avr32_syntax_table[AVR32_SYNTAX_RETMI],
43.23566 -+      BFD_RELOC_NONE, 1, -1,
43.23567 -+      {
43.23568 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23569 -+      },
43.23570 -+    },
43.23571 -+    {
43.23572 -+      AVR32_OPC_RETPL, 2, 0x5e700000, 0xfff00000,
43.23573 -+      &avr32_syntax_table[AVR32_SYNTAX_RETPL],
43.23574 -+      BFD_RELOC_NONE, 1, -1,
43.23575 -+      {
43.23576 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23577 -+      },
43.23578 -+    },
43.23579 -+    {
43.23580 -+      AVR32_OPC_RETLS, 2, 0x5e800000, 0xfff00000,
43.23581 -+      &avr32_syntax_table[AVR32_SYNTAX_RETLS],
43.23582 -+      BFD_RELOC_NONE, 1, -1,
43.23583 -+      {
43.23584 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23585 -+      },
43.23586 -+    },
43.23587 -+    {
43.23588 -+      AVR32_OPC_RETGT, 2, 0x5e900000, 0xfff00000,
43.23589 -+      &avr32_syntax_table[AVR32_SYNTAX_RETGT],
43.23590 -+      BFD_RELOC_NONE, 1, -1,
43.23591 -+      {
43.23592 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23593 -+      },
43.23594 -+    },
43.23595 -+    {
43.23596 -+      AVR32_OPC_RETLE, 2, 0x5ea00000, 0xfff00000,
43.23597 -+      &avr32_syntax_table[AVR32_SYNTAX_RETLE],
43.23598 -+      BFD_RELOC_NONE, 1, -1,
43.23599 -+      {
43.23600 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23601 -+      },
43.23602 -+    },
43.23603 -+    {
43.23604 -+      AVR32_OPC_RETHI, 2, 0x5eb00000, 0xfff00000,
43.23605 -+      &avr32_syntax_table[AVR32_SYNTAX_RETHI],
43.23606 -+      BFD_RELOC_NONE, 1, -1,
43.23607 -+      {
43.23608 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23609 -+      },
43.23610 -+    },
43.23611 -+    {
43.23612 -+      AVR32_OPC_RETVS, 2, 0x5ec00000, 0xfff00000,
43.23613 -+      &avr32_syntax_table[AVR32_SYNTAX_RETVS],
43.23614 -+      BFD_RELOC_NONE, 1, -1,
43.23615 -+      {
43.23616 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23617 -+      },
43.23618 -+    },
43.23619 -+    {
43.23620 -+      AVR32_OPC_RETVC, 2, 0x5ed00000, 0xfff00000,
43.23621 -+      &avr32_syntax_table[AVR32_SYNTAX_RETVC],
43.23622 -+      BFD_RELOC_NONE, 1, -1,
43.23623 -+      {
43.23624 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23625 -+      },
43.23626 -+    },
43.23627 -+    {
43.23628 -+      AVR32_OPC_RETQS, 2, 0x5ee00000, 0xfff00000,
43.23629 -+      &avr32_syntax_table[AVR32_SYNTAX_RETQS],
43.23630 -+      BFD_RELOC_NONE, 1, -1,
43.23631 -+      {
43.23632 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23633 -+      },
43.23634 -+    },
43.23635 -+    {
43.23636 -+      AVR32_OPC_RETAL, 2, 0x5ef00000, 0xfff00000,
43.23637 -+      &avr32_syntax_table[AVR32_SYNTAX_RETAL],
43.23638 -+      BFD_RELOC_NONE, 1, -1,
43.23639 -+      {
43.23640 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23641 -+      },
43.23642 -+    },
43.23643 -+    {
43.23644 -+      AVR32_OPC_RETD, 2, 0xd6230000, 0xffff0000,
43.23645 -+      &avr32_syntax_table[AVR32_SYNTAX_RETD],
43.23646 -+      BFD_RELOC_NONE, 0, -1, { NULL },
43.23647 -+    },
43.23648 -+    {
43.23649 -+      AVR32_OPC_RETE, 2, 0xd6030000, 0xffff0000,
43.23650 -+      &avr32_syntax_table[AVR32_SYNTAX_RETE],
43.23651 -+      BFD_RELOC_NONE, 0, -1, { NULL },
43.23652 -+    },
43.23653 -+    {
43.23654 -+      AVR32_OPC_RETJ, 2, 0xd6330000, 0xffff0000,
43.23655 -+      &avr32_syntax_table[AVR32_SYNTAX_RETJ],
43.23656 -+      BFD_RELOC_NONE, 0, -1, { NULL },
43.23657 -+    },
43.23658 -+    {
43.23659 -+      AVR32_OPC_RETS, 2, 0xd6130000, 0xffff0000,
43.23660 -+      &avr32_syntax_table[AVR32_SYNTAX_RETS],
43.23661 -+      BFD_RELOC_NONE, 0, -1, { NULL },
43.23662 -+    },
43.23663 -+    {
43.23664 -+      AVR32_OPC_RJMP, 2, 0xc0080000, 0xf00c0000,
43.23665 -+      &avr32_syntax_table[AVR32_SYNTAX_RJMP],
43.23666 -+      BFD_RELOC_AVR32_11H_PCREL, 1, 0,
43.23667 -+      {
43.23668 -+	&avr32_ifield_table[AVR32_IFIELD_K10],
43.23669 -+      },
43.23670 -+    },
43.23671 -+    {
43.23672 -+      AVR32_OPC_ROL, 2, 0x5cf00000, 0xfff00000,
43.23673 -+      &avr32_syntax_table[AVR32_SYNTAX_ROL],
43.23674 -+      BFD_RELOC_UNUSED, 1, -1,
43.23675 -+      {
43.23676 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23677 -+      }
43.23678 -+    },
43.23679 -+    {
43.23680 -+      AVR32_OPC_ROR, 2, 0x5d000000, 0xfff00000,
43.23681 -+      &avr32_syntax_table[AVR32_SYNTAX_ROR],
43.23682 -+      BFD_RELOC_UNUSED, 1, -1,
43.23683 -+      {
43.23684 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23685 -+      }
43.23686 -+    },
43.23687 -+    {
43.23688 -+      AVR32_OPC_RSUB1, 2, 0x00200000, 0xe1f00000,
43.23689 -+      &avr32_syntax_table[AVR32_SYNTAX_RSUB1],
43.23690 -+      BFD_RELOC_UNUSED, 2, -1,
43.23691 -+      {
43.23692 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23693 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23694 -+      },
43.23695 -+    },
43.23696 -+    {
43.23697 -+      AVR32_OPC_RSUB2, 4, 0xe0001100, 0xe1f0ff00,
43.23698 -+      &avr32_syntax_table[AVR32_SYNTAX_RSUB2],
43.23699 -+      BFD_RELOC_AVR32_8S_EXT, 3, 2,
43.23700 -+      {
43.23701 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23702 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23703 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.23704 -+      },
43.23705 -+    },
43.23706 -+    {
43.23707 -+      AVR32_OPC_SATADD_H, 4, 0xe00002c0, 0xe1f0fff0,
43.23708 -+      &avr32_syntax_table[AVR32_SYNTAX_SATADD_H],
43.23709 -+      BFD_RELOC_UNUSED, 3, -1,
43.23710 -+      {
43.23711 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23712 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23713 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23714 -+      },
43.23715 -+    },
43.23716 -+    {
43.23717 -+      AVR32_OPC_SATADD_W, 4, 0xe00000c0, 0xe1f0fff0,
43.23718 -+      &avr32_syntax_table[AVR32_SYNTAX_SATADD_W],
43.23719 -+      BFD_RELOC_UNUSED, 3, -1,
43.23720 -+      {
43.23721 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23722 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23723 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23724 -+      },
43.23725 -+    },
43.23726 -+    {
43.23727 -+      AVR32_OPC_SATRNDS, 4, 0xf3b00000, 0xfff0fc00,
43.23728 -+      &avr32_syntax_table[AVR32_SYNTAX_SATRNDS],
43.23729 -+      BFD_RELOC_UNUSED, 3, -1,
43.23730 -+      {
43.23731 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23732 -+	&avr32_ifield_table[AVR32_IFIELD_K5E],
43.23733 -+	&avr32_ifield_table[AVR32_IFIELD_S5],
43.23734 -+      },
43.23735 -+    },
43.23736 -+    {
43.23737 -+      AVR32_OPC_SATRNDU, 4, 0xf3b00400, 0xfff0fc00,
43.23738 -+      &avr32_syntax_table[AVR32_SYNTAX_SATRNDU],
43.23739 -+      BFD_RELOC_UNUSED, 3, -1,
43.23740 -+      {
43.23741 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23742 -+	&avr32_ifield_table[AVR32_IFIELD_K5E],
43.23743 -+	&avr32_ifield_table[AVR32_IFIELD_S5],
43.23744 -+      },
43.23745 -+    },
43.23746 -+    {
43.23747 -+      AVR32_OPC_SATS, 4, 0xf1b00000, 0xfff0fc00,
43.23748 -+      &avr32_syntax_table[AVR32_SYNTAX_SATS],
43.23749 -+      BFD_RELOC_UNUSED, 3, -1,
43.23750 -+      {
43.23751 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23752 -+	&avr32_ifield_table[AVR32_IFIELD_K5E],
43.23753 -+	&avr32_ifield_table[AVR32_IFIELD_S5],
43.23754 -+      },
43.23755 -+    },
43.23756 -+    {
43.23757 -+      AVR32_OPC_SATSUB_H, 4, 0xe00003c0, 0xe1f0fff0,
43.23758 -+      &avr32_syntax_table[AVR32_SYNTAX_SATSUB_H],
43.23759 -+      BFD_RELOC_UNUSED, 3, -1,
43.23760 -+      {
43.23761 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23762 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23763 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23764 -+      },
43.23765 -+    },
43.23766 -+    {
43.23767 -+      AVR32_OPC_SATSUB_W1, 4, 0xe00001c0, 0xe1f0fff0,
43.23768 -+      &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W1],
43.23769 -+      BFD_RELOC_UNUSED, 3, -1,
43.23770 -+      {
43.23771 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23772 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23773 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23774 -+      },
43.23775 -+    },
43.23776 -+    {
43.23777 -+      AVR32_OPC_SATSUB_W2, 4, 0xe0d00000, 0xe1f00000,
43.23778 -+      &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W2],
43.23779 -+      BFD_RELOC_UNUSED, 3, -1,
43.23780 -+      {
43.23781 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23782 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23783 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.23784 -+      },
43.23785 -+    },
43.23786 -+    {
43.23787 -+      AVR32_OPC_SATU, 4, 0xf1b00400, 0xfff0fc00,
43.23788 -+      &avr32_syntax_table[AVR32_SYNTAX_SATU],
43.23789 -+      BFD_RELOC_UNUSED, 3, -1,
43.23790 -+      {
43.23791 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23792 -+	&avr32_ifield_table[AVR32_IFIELD_K5E],
43.23793 -+	&avr32_ifield_table[AVR32_IFIELD_S5],
43.23794 -+      },
43.23795 -+    },
43.23796 -+    {
43.23797 -+      AVR32_OPC_SBC, 4, 0xe0000140, 0xe1f0fff0,
43.23798 -+      &avr32_syntax_table[AVR32_SYNTAX_SBC],
43.23799 -+      BFD_RELOC_UNUSED, 3, -1,
43.23800 -+      {
43.23801 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23802 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23803 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23804 -+      },
43.23805 -+    },
43.23806 -+    {
43.23807 -+      AVR32_OPC_SBR, 2, 0xa1a00000, 0xe1e00000,
43.23808 -+      &avr32_syntax_table[AVR32_SYNTAX_SBR],
43.23809 -+      BFD_RELOC_UNUSED, 2, -1,
43.23810 -+      {
43.23811 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23812 -+	&avr32_ifield_table[AVR32_IFIELD_BIT5C],
43.23813 -+      },
43.23814 -+    },
43.23815 -+    {
43.23816 -+      AVR32_OPC_SCALL, 2, 0xd7330000, 0xffff0000,
43.23817 -+      &avr32_syntax_table[AVR32_SYNTAX_SCALL],
43.23818 -+      BFD_RELOC_UNUSED, 0, -1, { NULL },
43.23819 -+    },
43.23820 -+    {
43.23821 -+      AVR32_OPC_SCR, 2, 0x5c100000, 0xfff00000,
43.23822 -+      &avr32_syntax_table[AVR32_SYNTAX_SCR],
43.23823 -+      BFD_RELOC_UNUSED, 1, -1,
43.23824 -+      {
43.23825 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23826 -+      },
43.23827 -+    },
43.23828 -+    {
43.23829 -+      AVR32_OPC_SLEEP, 4, 0xe9b00000, 0xffffff00,
43.23830 -+      &avr32_syntax_table[AVR32_SYNTAX_SLEEP],
43.23831 -+      BFD_RELOC_AVR32_8S_EXT, 1, 0,
43.23832 -+      {
43.23833 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.23834 -+      },
43.23835 -+    },
43.23836 -+    {
43.23837 -+      AVR32_OPC_SREQ, 2, 0x5f000000, 0xfff00000,
43.23838 -+      &avr32_syntax_table[AVR32_SYNTAX_SREQ],
43.23839 -+      BFD_RELOC_UNUSED, 1, -1,
43.23840 -+      {
43.23841 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23842 -+      },
43.23843 -+    },
43.23844 -+    {
43.23845 -+      AVR32_OPC_SRNE, 2, 0x5f100000, 0xfff00000,
43.23846 -+      &avr32_syntax_table[AVR32_SYNTAX_SRNE],
43.23847 -+      BFD_RELOC_UNUSED, 1, -1,
43.23848 -+      {
43.23849 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23850 -+      },
43.23851 -+    },
43.23852 -+    {
43.23853 -+      AVR32_OPC_SRCC, 2, 0x5f200000, 0xfff00000,
43.23854 -+      &avr32_syntax_table[AVR32_SYNTAX_SRHS],
43.23855 -+      BFD_RELOC_UNUSED, 1, -1,
43.23856 -+      {
43.23857 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23858 -+      },
43.23859 -+    },
43.23860 -+    {
43.23861 -+      AVR32_OPC_SRCS, 2, 0x5f300000, 0xfff00000,
43.23862 -+      &avr32_syntax_table[AVR32_SYNTAX_SRLO],
43.23863 -+      BFD_RELOC_UNUSED, 1, -1,
43.23864 -+      {
43.23865 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23866 -+      },
43.23867 -+    },
43.23868 -+    {
43.23869 -+      AVR32_OPC_SRGE, 2, 0x5f400000, 0xfff00000,
43.23870 -+      &avr32_syntax_table[AVR32_SYNTAX_SRGE],
43.23871 -+      BFD_RELOC_UNUSED, 1, -1,
43.23872 -+      {
43.23873 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23874 -+      },
43.23875 -+    },
43.23876 -+    {
43.23877 -+      AVR32_OPC_SRLT, 2, 0x5f500000, 0xfff00000,
43.23878 -+      &avr32_syntax_table[AVR32_SYNTAX_SRLT],
43.23879 -+      BFD_RELOC_UNUSED, 1, -1,
43.23880 -+      {
43.23881 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23882 -+      },
43.23883 -+    },
43.23884 -+    {
43.23885 -+      AVR32_OPC_SRMI, 2, 0x5f600000, 0xfff00000,
43.23886 -+      &avr32_syntax_table[AVR32_SYNTAX_SRMI],
43.23887 -+      BFD_RELOC_UNUSED, 1, -1,
43.23888 -+      {
43.23889 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23890 -+      },
43.23891 -+    },
43.23892 -+    {
43.23893 -+      AVR32_OPC_SRPL, 2, 0x5f700000, 0xfff00000,
43.23894 -+      &avr32_syntax_table[AVR32_SYNTAX_SRPL],
43.23895 -+      BFD_RELOC_UNUSED, 1, -1,
43.23896 -+      {
43.23897 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23898 -+      },
43.23899 -+    },
43.23900 -+    {
43.23901 -+      AVR32_OPC_SRLS, 2, 0x5f800000, 0xfff00000,
43.23902 -+      &avr32_syntax_table[AVR32_SYNTAX_SRLS],
43.23903 -+      BFD_RELOC_UNUSED, 1, -1,
43.23904 -+      {
43.23905 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23906 -+      },
43.23907 -+    },
43.23908 -+    {
43.23909 -+      AVR32_OPC_SRGT, 2, 0x5f900000, 0xfff00000,
43.23910 -+      &avr32_syntax_table[AVR32_SYNTAX_SRGT],
43.23911 -+      BFD_RELOC_UNUSED, 1, -1,
43.23912 -+      {
43.23913 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23914 -+      },
43.23915 -+    },
43.23916 -+    {
43.23917 -+      AVR32_OPC_SRLE, 2, 0x5fa00000, 0xfff00000,
43.23918 -+      &avr32_syntax_table[AVR32_SYNTAX_SRLE],
43.23919 -+      BFD_RELOC_UNUSED, 1, -1,
43.23920 -+      {
43.23921 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23922 -+      },
43.23923 -+    },
43.23924 -+    {
43.23925 -+      AVR32_OPC_SRHI, 2, 0x5fb00000, 0xfff00000,
43.23926 -+      &avr32_syntax_table[AVR32_SYNTAX_SRHI],
43.23927 -+      BFD_RELOC_UNUSED, 1, -1,
43.23928 -+      {
43.23929 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23930 -+      },
43.23931 -+    },
43.23932 -+    {
43.23933 -+      AVR32_OPC_SRVS, 2, 0x5fc00000, 0xfff00000,
43.23934 -+      &avr32_syntax_table[AVR32_SYNTAX_SRVS],
43.23935 -+      BFD_RELOC_UNUSED, 1, -1,
43.23936 -+      {
43.23937 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23938 -+      },
43.23939 -+    },
43.23940 -+    {
43.23941 -+      AVR32_OPC_SRVC, 2, 0x5fd00000, 0xfff00000,
43.23942 -+      &avr32_syntax_table[AVR32_SYNTAX_SRVC],
43.23943 -+      BFD_RELOC_UNUSED, 1, -1,
43.23944 -+      {
43.23945 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23946 -+      },
43.23947 -+    },
43.23948 -+    {
43.23949 -+      AVR32_OPC_SRQS, 2, 0x5fe00000, 0xfff00000,
43.23950 -+      &avr32_syntax_table[AVR32_SYNTAX_SRQS],
43.23951 -+      BFD_RELOC_UNUSED, 1, -1,
43.23952 -+      {
43.23953 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23954 -+      },
43.23955 -+    },
43.23956 -+    {
43.23957 -+      AVR32_OPC_SRAL, 2, 0x5ff00000, 0xfff00000,
43.23958 -+      &avr32_syntax_table[AVR32_SYNTAX_SRAL],
43.23959 -+      BFD_RELOC_UNUSED, 1, -1,
43.23960 -+      {
43.23961 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23962 -+      },
43.23963 -+    },
43.23964 -+    {
43.23965 -+      AVR32_OPC_SSRF, 2, 0xd2030000, 0xfe0f0000,
43.23966 -+      &avr32_syntax_table[AVR32_SYNTAX_SSRF],
43.23967 -+      BFD_RELOC_UNUSED, 1, -1,
43.23968 -+      {
43.23969 -+	&avr32_ifield_table[AVR32_IFIELD_K5C],
43.23970 -+      },
43.23971 -+    },
43.23972 -+    {
43.23973 -+      AVR32_OPC_ST_B1, 2, 0x00c00000, 0xe1f00000,
43.23974 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_B1],
43.23975 -+      BFD_RELOC_UNUSED, 2, -1,
43.23976 -+      {
43.23977 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23978 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23979 -+      },
43.23980 -+    },
43.23981 -+    {
43.23982 -+      AVR32_OPC_ST_B2, 2, 0x00f00000, 0xe1f00000,
43.23983 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_B2],
43.23984 -+      BFD_RELOC_UNUSED, 2, -1,
43.23985 -+      {
43.23986 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23987 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23988 -+      },
43.23989 -+    },
43.23990 -+    {
43.23991 -+      AVR32_OPC_ST_B5, 4, 0xe0000b00, 0xe1f0ffc0,
43.23992 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_B5],
43.23993 -+      BFD_RELOC_UNUSED, 4, -1,
43.23994 -+      {
43.23995 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.23996 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.23997 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.23998 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.23999 -+      },
43.24000 -+    },
43.24001 -+    {
43.24002 -+      AVR32_OPC_ST_B3, 2, 0xa0800000, 0xe1800000,
43.24003 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_B3],
43.24004 -+      BFD_RELOC_AVR32_3U, 3, 1,
43.24005 -+      {
43.24006 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24007 -+	&avr32_ifield_table[AVR32_IFIELD_K3],
43.24008 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24009 -+      },
43.24010 -+    },
43.24011 -+    {
43.24012 -+      AVR32_OPC_ST_B4, 4, 0xe1600000, 0xe1f00000,
43.24013 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_B4],
43.24014 -+      BFD_RELOC_AVR32_16S, 3, 1,
43.24015 -+      {
43.24016 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24017 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.24018 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24019 -+      },
43.24020 -+    },
43.24021 -+    {
43.24022 -+      AVR32_OPC_ST_D1, 2, 0xa1200000, 0xe1f10000,
43.24023 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_D1],
43.24024 -+      BFD_RELOC_UNUSED, 2, -1,
43.24025 -+      {
43.24026 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24027 -+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
43.24028 -+      },
43.24029 -+    },
43.24030 -+    {
43.24031 -+      AVR32_OPC_ST_D2, 2, 0xa1210000, 0xe1f10000,
43.24032 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_D2],
43.24033 -+      BFD_RELOC_UNUSED, 2, -1,
43.24034 -+      {
43.24035 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24036 -+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
43.24037 -+      },
43.24038 -+    },
43.24039 -+    {
43.24040 -+      AVR32_OPC_ST_D3, 2, 0xa1110000, 0xe1f10000,
43.24041 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_D3],
43.24042 -+      BFD_RELOC_UNUSED, 2, -1,
43.24043 -+      {
43.24044 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24045 -+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
43.24046 -+      },
43.24047 -+    },
43.24048 -+    {
43.24049 -+      AVR32_OPC_ST_D5, 4, 0xe0000800, 0xe1f0ffc1,
43.24050 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_D5],
43.24051 -+      BFD_RELOC_UNUSED, 4, -1,
43.24052 -+      {
43.24053 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24054 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24055 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.24056 -+	&avr32_ifield_table[AVR32_IFIELD_RD_DW],
43.24057 -+      },
43.24058 -+    },
43.24059 -+    {
43.24060 -+      AVR32_OPC_ST_D4, 4, 0xe0e10000, 0xe1f10000,
43.24061 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_D4],
43.24062 -+      BFD_RELOC_AVR32_16S, 3, 1,
43.24063 -+      {
43.24064 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24065 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.24066 -+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
43.24067 -+      },
43.24068 -+    },
43.24069 -+    {
43.24070 -+      AVR32_OPC_ST_H1, 2, 0x00b00000, 0xe1f00000,
43.24071 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_H1],
43.24072 -+      BFD_RELOC_UNUSED, 2, -1,
43.24073 -+      {
43.24074 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24075 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24076 -+      },
43.24077 -+    },
43.24078 -+    {
43.24079 -+      AVR32_OPC_ST_H2, 2, 0x00e00000, 0xe1f00000,
43.24080 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_H2],
43.24081 -+      BFD_RELOC_UNUSED, 2, -1,
43.24082 -+      {
43.24083 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24084 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24085 -+      },
43.24086 -+    },
43.24087 -+    {
43.24088 -+      AVR32_OPC_ST_H5, 4, 0xe0000a00, 0xe1f0ffc0,
43.24089 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_H5],
43.24090 -+      BFD_RELOC_UNUSED, 4, -1,
43.24091 -+      {
43.24092 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24093 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24094 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.24095 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.24096 -+      },
43.24097 -+    },
43.24098 -+    {
43.24099 -+      AVR32_OPC_ST_H3, 2, 0xa0000000, 0xe1800000,
43.24100 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_H3],
43.24101 -+      BFD_RELOC_AVR32_4UH, 3, 1,
43.24102 -+      {
43.24103 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24104 -+	&avr32_ifield_table[AVR32_IFIELD_K3],
43.24105 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24106 -+      },
43.24107 -+    },
43.24108 -+    {
43.24109 -+      AVR32_OPC_ST_H4, 4, 0xe1500000, 0xe1f00000,
43.24110 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_H4],
43.24111 -+      BFD_RELOC_AVR32_16S, 3, 1,
43.24112 -+      {
43.24113 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24114 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.24115 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24116 -+      },
43.24117 -+    },
43.24118 -+    {
43.24119 -+      AVR32_OPC_ST_W1, 2, 0x00a00000, 0xe1f00000,
43.24120 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_W1],
43.24121 -+      BFD_RELOC_UNUSED, 2, -1,
43.24122 -+      {
43.24123 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24124 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24125 -+      },
43.24126 -+    },
43.24127 -+    {
43.24128 -+      AVR32_OPC_ST_W2, 2, 0x00d00000, 0xe1f00000,
43.24129 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_W2],
43.24130 -+      BFD_RELOC_UNUSED, 2, -1,
43.24131 -+      {
43.24132 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24133 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24134 -+      },
43.24135 -+    },
43.24136 -+    {
43.24137 -+      AVR32_OPC_ST_W5, 4, 0xe0000900, 0xe1f0ffc0,
43.24138 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_W5],
43.24139 -+      BFD_RELOC_UNUSED, 4, -1,
43.24140 -+      {
43.24141 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24142 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24143 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.24144 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.24145 -+      },
43.24146 -+    },
43.24147 -+    {
43.24148 -+      AVR32_OPC_ST_W3, 2, 0x81000000, 0xe1000000,
43.24149 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_W3],
43.24150 -+      BFD_RELOC_AVR32_6UW, 3, 1,
43.24151 -+      {
43.24152 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24153 -+	&avr32_ifield_table[AVR32_IFIELD_K4],
43.24154 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24155 -+      },
43.24156 -+    },
43.24157 -+    {
43.24158 -+      AVR32_OPC_ST_W4, 4, 0xe1400000, 0xe1f00000,
43.24159 -+      &avr32_syntax_table[AVR32_SYNTAX_ST_W4],
43.24160 -+      BFD_RELOC_AVR32_16S, 3, 1,
43.24161 -+      {
43.24162 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24163 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.24164 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24165 -+      },
43.24166 -+    },
43.24167 -+    {
43.24168 -+      AVR32_OPC_STC_D1, 4, 0xeba01000, 0xfff01100,
43.24169 -+      &avr32_syntax_table[AVR32_SYNTAX_STC_D1],
43.24170 -+      BFD_RELOC_AVR32_10UW, 4, 2,
43.24171 -+      {
43.24172 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.24173 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24174 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24175 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
43.24176 -+      },
43.24177 -+    },
43.24178 -+    {
43.24179 -+      AVR32_OPC_STC_D2, 4, 0xefa00070, 0xfff011f0,
43.24180 -+      &avr32_syntax_table[AVR32_SYNTAX_STC_D2],
43.24181 -+      BFD_RELOC_UNUSED, 3, -1,
43.24182 -+      {
43.24183 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.24184 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24185 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
43.24186 -+      },
43.24187 -+    },
43.24188 -+    {
43.24189 -+      AVR32_OPC_STC_D3, 4, 0xefa010c0, 0xfff011c0,
43.24190 -+      &avr32_syntax_table[AVR32_SYNTAX_STC_D3],
43.24191 -+      BFD_RELOC_UNUSED, 5, -1,
43.24192 -+      {
43.24193 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.24194 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24195 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.24196 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.24197 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
43.24198 -+      },
43.24199 -+    },
43.24200 -+    {
43.24201 -+      AVR32_OPC_STC_W1, 4, 0xeba00000, 0xfff01000,
43.24202 -+      &avr32_syntax_table[AVR32_SYNTAX_STC_W1],
43.24203 -+      BFD_RELOC_AVR32_10UW, 4, 2,
43.24204 -+      {
43.24205 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.24206 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24207 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24208 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
43.24209 -+      },
43.24210 -+    },
43.24211 -+    {
43.24212 -+      AVR32_OPC_STC_W2, 4, 0xefa00060, 0xfff010ff,
43.24213 -+      &avr32_syntax_table[AVR32_SYNTAX_STC_W2],
43.24214 -+      BFD_RELOC_UNUSED, 3, -1,
43.24215 -+      {
43.24216 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.24217 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24218 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
43.24219 -+      },
43.24220 -+    },
43.24221 -+    {
43.24222 -+      AVR32_OPC_STC_W3, 4, 0xefa01080, 0xfff010c0,
43.24223 -+      &avr32_syntax_table[AVR32_SYNTAX_STC_W3],
43.24224 -+      BFD_RELOC_UNUSED, 5, -1,
43.24225 -+      {
43.24226 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.24227 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24228 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.24229 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.24230 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
43.24231 -+      },
43.24232 -+    },
43.24233 -+    {
43.24234 -+      AVR32_OPC_STC0_D, 4, 0xf7a00000, 0xfff00100,
43.24235 -+      &avr32_syntax_table[AVR32_SYNTAX_STC0_D],
43.24236 -+      BFD_RELOC_AVR32_14UW, 3, 1,
43.24237 -+      {
43.24238 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24239 -+	&avr32_ifield_table[AVR32_IFIELD_K12CP],
43.24240 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
43.24241 -+      },
43.24242 -+    },
43.24243 -+    {
43.24244 -+      AVR32_OPC_STC0_W, 4, 0xf5a00000, 0xfff00000,
43.24245 -+      &avr32_syntax_table[AVR32_SYNTAX_STC0_W],
43.24246 -+      BFD_RELOC_AVR32_14UW, 3, 1,
43.24247 -+      {
43.24248 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24249 -+	&avr32_ifield_table[AVR32_IFIELD_K12CP],
43.24250 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
43.24251 -+      },
43.24252 -+    },
43.24253 -+    {
43.24254 -+      AVR32_OPC_STCM_D, 4, 0xeda00500, 0xfff01f00,
43.24255 -+      &avr32_syntax_table[AVR32_SYNTAX_STCM_D],
43.24256 -+      BFD_RELOC_UNUSED, 3, -1,
43.24257 -+      {
43.24258 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.24259 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24260 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24261 -+      },
43.24262 -+    },
43.24263 -+    {
43.24264 -+      AVR32_OPC_STCM_D_PU, 4, 0xeda01500, 0xfff01f00,
43.24265 -+      &avr32_syntax_table[AVR32_SYNTAX_STCM_D_PU],
43.24266 -+      BFD_RELOC_UNUSED, 3, -1,
43.24267 -+      {
43.24268 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.24269 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24270 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24271 -+      },
43.24272 -+    },
43.24273 -+    {
43.24274 -+      AVR32_OPC_STCM_W, 4, 0xeda00200, 0xfff01e00,
43.24275 -+      &avr32_syntax_table[AVR32_SYNTAX_STCM_W],
43.24276 -+      BFD_RELOC_UNUSED, 4, -1,
43.24277 -+      {
43.24278 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.24279 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24280 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24281 -+	&avr32_ifield_table[AVR32_IFIELD_CM_HL],
43.24282 -+      },
43.24283 -+    },
43.24284 -+    {
43.24285 -+      AVR32_OPC_STCM_W_PU, 4, 0xeda01200, 0xfff01e00,
43.24286 -+      &avr32_syntax_table[AVR32_SYNTAX_STCM_W_PU],
43.24287 -+      BFD_RELOC_UNUSED, 4, -1,
43.24288 -+      {
43.24289 -+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
43.24290 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24291 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24292 -+	&avr32_ifield_table[AVR32_IFIELD_CM_HL],
43.24293 -+      },
43.24294 -+    },
43.24295 -+    {
43.24296 -+      AVR32_OPC_STCOND, 4, 0xe1700000, 0xe1f00000,
43.24297 -+      &avr32_syntax_table[AVR32_SYNTAX_STCOND],
43.24298 -+      BFD_RELOC_UNUSED, 3, -1,
43.24299 -+      {
43.24300 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24301 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.24302 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24303 -+      },
43.24304 -+    },
43.24305 -+    {
43.24306 -+      AVR32_OPC_STDSP, 2, 0x50000000, 0xf8000000,
43.24307 -+      &avr32_syntax_table[AVR32_SYNTAX_STDSP],
43.24308 -+      BFD_RELOC_UNUSED, 2, -1,
43.24309 -+      {
43.24310 -+	&avr32_ifield_table[AVR32_IFIELD_K7C],
43.24311 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24312 -+      },
43.24313 -+    },
43.24314 -+    {
43.24315 -+      AVR32_OPC_STHH_W2, 4, 0xe1e08000, 0xe1f0c0c0,
43.24316 -+      &avr32_syntax_table[AVR32_SYNTAX_STHH_W2],
43.24317 -+      BFD_RELOC_UNUSED, 7, -1,
43.24318 -+      {
43.24319 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.24320 -+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
43.24321 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.24322 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24323 -+	&avr32_ifield_table[AVR32_IFIELD_X2],
43.24324 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24325 -+	&avr32_ifield_table[AVR32_IFIELD_Y2],
43.24326 -+      },
43.24327 -+    },
43.24328 -+    {
43.24329 -+      AVR32_OPC_STHH_W1, 4, 0xe1e0c000, 0xe1f0c000,
43.24330 -+      &avr32_syntax_table[AVR32_SYNTAX_STHH_W1],
43.24331 -+      BFD_RELOC_AVR32_STHH_W, 6, 1,
43.24332 -+      {
43.24333 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.24334 -+	&avr32_ifield_table[AVR32_IFIELD_K8E2],
43.24335 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24336 -+	&avr32_ifield_table[AVR32_IFIELD_X2],
43.24337 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24338 -+	&avr32_ifield_table[AVR32_IFIELD_Y2],
43.24339 -+      },
43.24340 -+    },
43.24341 -+    {
43.24342 -+      AVR32_OPC_STM, 4, 0xe9c00000, 0xfff00000,
43.24343 -+      &avr32_syntax_table[AVR32_SYNTAX_STM],
43.24344 -+      BFD_RELOC_UNUSED, 2, -1,
43.24345 -+      {
43.24346 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24347 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.24348 -+      },
43.24349 -+    },
43.24350 -+    {
43.24351 -+      AVR32_OPC_STM_PU, 4, 0xebc00000, 0xfff00000,
43.24352 -+      &avr32_syntax_table[AVR32_SYNTAX_STM_PU],
43.24353 -+      BFD_RELOC_UNUSED, 2, -1,
43.24354 -+      {
43.24355 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24356 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.24357 -+      },
43.24358 -+    },
43.24359 -+    {
43.24360 -+      AVR32_OPC_STMTS, 4, 0xedc00000, 0xfff00000,
43.24361 -+      &avr32_syntax_table[AVR32_SYNTAX_STMTS],
43.24362 -+      BFD_RELOC_UNUSED, 2, -1,
43.24363 -+      {
43.24364 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24365 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.24366 -+      },
43.24367 -+    },
43.24368 -+    {
43.24369 -+      AVR32_OPC_STMTS_PU, 4, 0xefc00000, 0xfff00000,
43.24370 -+      &avr32_syntax_table[AVR32_SYNTAX_STMTS_PU],
43.24371 -+      BFD_RELOC_UNUSED, 2, -1,
43.24372 -+      {
43.24373 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24374 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.24375 -+      },
43.24376 -+    },
43.24377 -+    {
43.24378 -+      AVR32_OPC_STSWP_H, 4, 0xe1d09000, 0xe1f0f000,
43.24379 -+      &avr32_syntax_table[AVR32_SYNTAX_STSWP_H],
43.24380 -+      BFD_RELOC_UNUSED, 3, -1,
43.24381 -+      {
43.24382 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24383 -+	&avr32_ifield_table[AVR32_IFIELD_K12],
43.24384 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24385 -+      },
43.24386 -+    },
43.24387 -+    {
43.24388 -+      AVR32_OPC_STSWP_W, 4, 0xe1d0a000, 0xe1f0f000,
43.24389 -+      &avr32_syntax_table[AVR32_SYNTAX_STSWP_W],
43.24390 -+      BFD_RELOC_UNUSED, 3, -1,
43.24391 -+      {
43.24392 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24393 -+	&avr32_ifield_table[AVR32_IFIELD_K12],
43.24394 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24395 -+      },
43.24396 -+    },
43.24397 -+    {
43.24398 -+      AVR32_OPC_SUB1, 2, 0x00100000, 0xe1f00000,
43.24399 -+      &avr32_syntax_table[AVR32_SYNTAX_SUB1],
43.24400 -+      BFD_RELOC_UNUSED, 2, -1,
43.24401 -+      {
43.24402 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24403 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24404 -+      },
43.24405 -+    },
43.24406 -+    {
43.24407 -+      AVR32_OPC_SUB2, 4, 0xe0000100, 0xe1f0ffc0,
43.24408 -+      &avr32_syntax_table[AVR32_SYNTAX_SUB2],
43.24409 -+      BFD_RELOC_UNUSED, 4, -1,
43.24410 -+      {
43.24411 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.24412 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24413 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24414 -+	&avr32_ifield_table[AVR32_IFIELD_K2],
43.24415 -+      },
43.24416 -+    },
43.24417 -+    {
43.24418 -+      AVR32_OPC_SUB5, 4, 0xe0c00000, 0xe1f00000,
43.24419 -+      &avr32_syntax_table[AVR32_SYNTAX_SUB5],
43.24420 -+      BFD_RELOC_AVR32_SUB5, 3, 2,
43.24421 -+      {
43.24422 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24423 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24424 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.24425 -+      },
43.24426 -+    },
43.24427 -+    {
43.24428 -+      AVR32_OPC_SUB3_SP, 2, 0x200d0000, 0xf00f0000,
43.24429 -+      &avr32_syntax_table[AVR32_SYNTAX_SUB3_SP],
43.24430 -+      BFD_RELOC_AVR32_10SW, 2, 1,
43.24431 -+      {
43.24432 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24433 -+	&avr32_ifield_table[AVR32_IFIELD_K8C],
43.24434 -+      },
43.24435 -+    },
43.24436 -+    {
43.24437 -+      AVR32_OPC_SUB3, 2, 0x20000000, 0xf0000000,
43.24438 -+      &avr32_syntax_table[AVR32_SYNTAX_SUB3],
43.24439 -+      BFD_RELOC_AVR32_8S, 2, 1,
43.24440 -+      {
43.24441 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24442 -+	&avr32_ifield_table[AVR32_IFIELD_K8C],
43.24443 -+      },
43.24444 -+    },
43.24445 -+    {
43.24446 -+      AVR32_OPC_SUB4, 4, 0xe0200000, 0xe1e00000,
43.24447 -+      &avr32_syntax_table[AVR32_SYNTAX_SUB4],
43.24448 -+      BFD_RELOC_AVR32_21S, 2, 1,
43.24449 -+      {
43.24450 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24451 -+	&avr32_ifield_table[AVR32_IFIELD_K21],
43.24452 -+      },
43.24453 -+    },
43.24454 -+    {
43.24455 -+      AVR32_OPC_SUBEQ, 4, 0xf7b00000, 0xfff0ff00,
43.24456 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBEQ],
43.24457 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24458 -+      {
43.24459 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24460 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24461 -+      },
43.24462 -+    },
43.24463 -+    {
43.24464 -+      AVR32_OPC_SUBNE, 4, 0xf7b00100, 0xfff0ff00,
43.24465 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBNE],
43.24466 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24467 -+      {
43.24468 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24469 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24470 -+      },
43.24471 -+    },
43.24472 -+    {
43.24473 -+      AVR32_OPC_SUBCC, 4, 0xf7b00200, 0xfff0ff00,
43.24474 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBHS],
43.24475 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24476 -+      {
43.24477 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24478 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24479 -+      },
43.24480 -+    },
43.24481 -+    {
43.24482 -+      AVR32_OPC_SUBCS, 4, 0xf7b00300, 0xfff0ff00,
43.24483 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBLO],
43.24484 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24485 -+      {
43.24486 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24487 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24488 -+      },
43.24489 -+    },
43.24490 -+    {
43.24491 -+      AVR32_OPC_SUBGE, 4, 0xf7b00400, 0xfff0ff00,
43.24492 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBGE],
43.24493 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24494 -+      {
43.24495 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24496 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24497 -+      },
43.24498 -+    },
43.24499 -+    {
43.24500 -+      AVR32_OPC_SUBLT, 4, 0xf7b00500, 0xfff0ff00,
43.24501 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBLT],
43.24502 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24503 -+      {
43.24504 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24505 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24506 -+      },
43.24507 -+    },
43.24508 -+    {
43.24509 -+      AVR32_OPC_SUBMI, 4, 0xf7b00600, 0xfff0ff00,
43.24510 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBMI],
43.24511 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24512 -+      {
43.24513 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24514 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24515 -+      },
43.24516 -+    },
43.24517 -+    {
43.24518 -+      AVR32_OPC_SUBPL, 4, 0xf7b00700, 0xfff0ff00,
43.24519 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBPL],
43.24520 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24521 -+      {
43.24522 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24523 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24524 -+      },
43.24525 -+    },
43.24526 -+    {
43.24527 -+      AVR32_OPC_SUBLS, 4, 0xf7b00800, 0xfff0ff00,
43.24528 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBLS],
43.24529 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24530 -+      {
43.24531 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24532 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24533 -+      },
43.24534 -+    },
43.24535 -+    {
43.24536 -+      AVR32_OPC_SUBGT, 4, 0xf7b00900, 0xfff0ff00,
43.24537 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBGT],
43.24538 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24539 -+      {
43.24540 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24541 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24542 -+      },
43.24543 -+    },
43.24544 -+    {
43.24545 -+      AVR32_OPC_SUBLE, 4, 0xf7b00a00, 0xfff0ff00,
43.24546 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBLE],
43.24547 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24548 -+      {
43.24549 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24550 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24551 -+      },
43.24552 -+    },
43.24553 -+    {
43.24554 -+      AVR32_OPC_SUBHI, 4, 0xf7b00b00, 0xfff0ff00,
43.24555 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBHI],
43.24556 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24557 -+      {
43.24558 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24559 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24560 -+      },
43.24561 -+    },
43.24562 -+    {
43.24563 -+      AVR32_OPC_SUBVS, 4, 0xf7b00c00, 0xfff0ff00,
43.24564 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBVS],
43.24565 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24566 -+      {
43.24567 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24568 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24569 -+      },
43.24570 -+    },
43.24571 -+    {
43.24572 -+      AVR32_OPC_SUBVC, 4, 0xf7b00d00, 0xfff0ff00,
43.24573 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBVC],
43.24574 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24575 -+      {
43.24576 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24577 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24578 -+      },
43.24579 -+    },
43.24580 -+    {
43.24581 -+      AVR32_OPC_SUBQS, 4, 0xf7b00e00, 0xfff0ff00,
43.24582 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBQS],
43.24583 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24584 -+      {
43.24585 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24586 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24587 -+      },
43.24588 -+    },
43.24589 -+    {
43.24590 -+      AVR32_OPC_SUBAL, 4, 0xf7b00f00, 0xfff0ff00,
43.24591 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBAL],
43.24592 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24593 -+      {
43.24594 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24595 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24596 -+      },
43.24597 -+    },
43.24598 -+    {
43.24599 -+      AVR32_OPC_SUBFEQ, 4, 0xf5b00000, 0xfff0ff00,
43.24600 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBFEQ],
43.24601 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24602 -+      {
43.24603 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24604 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24605 -+      },
43.24606 -+    },
43.24607 -+    {
43.24608 -+      AVR32_OPC_SUBFNE, 4, 0xf5b00100, 0xfff0ff00,
43.24609 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBFNE],
43.24610 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24611 -+      {
43.24612 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24613 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24614 -+      },
43.24615 -+    },
43.24616 -+    {
43.24617 -+      AVR32_OPC_SUBFCC, 4, 0xf5b00200, 0xfff0ff00,
43.24618 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBFHS],
43.24619 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24620 -+      {
43.24621 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24622 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24623 -+      },
43.24624 -+    },
43.24625 -+    {
43.24626 -+      AVR32_OPC_SUBFCS, 4, 0xf5b00300, 0xfff0ff00,
43.24627 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBFLO],
43.24628 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24629 -+      {
43.24630 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24631 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24632 -+      },
43.24633 -+    },
43.24634 -+    {
43.24635 -+      AVR32_OPC_SUBFGE, 4, 0xf5b00400, 0xfff0ff00,
43.24636 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBFGE],
43.24637 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24638 -+      {
43.24639 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24640 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24641 -+      },
43.24642 -+    },
43.24643 -+    {
43.24644 -+      AVR32_OPC_SUBFLT, 4, 0xf5b00500, 0xfff0ff00,
43.24645 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBFLT],
43.24646 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24647 -+      {
43.24648 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24649 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24650 -+      },
43.24651 -+    },
43.24652 -+    {
43.24653 -+      AVR32_OPC_SUBFMI, 4, 0xf5b00600, 0xfff0ff00,
43.24654 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBFMI],
43.24655 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24656 -+      {
43.24657 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24658 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24659 -+      },
43.24660 -+    },
43.24661 -+    {
43.24662 -+      AVR32_OPC_SUBFPL, 4, 0xf5b00700, 0xfff0ff00,
43.24663 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBFPL],
43.24664 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24665 -+      {
43.24666 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24667 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24668 -+      },
43.24669 -+    },
43.24670 -+    {
43.24671 -+      AVR32_OPC_SUBFLS, 4, 0xf5b00800, 0xfff0ff00,
43.24672 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBFLS],
43.24673 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24674 -+      {
43.24675 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24676 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24677 -+      },
43.24678 -+    },
43.24679 -+    {
43.24680 -+      AVR32_OPC_SUBFGT, 4, 0xf5b00900, 0xfff0ff00,
43.24681 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBFGT],
43.24682 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24683 -+      {
43.24684 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24685 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24686 -+      },
43.24687 -+    },
43.24688 -+    {
43.24689 -+      AVR32_OPC_SUBFLE, 4, 0xf5b00a00, 0xfff0ff00,
43.24690 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBFLE],
43.24691 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24692 -+      {
43.24693 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24694 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24695 -+      },
43.24696 -+    },
43.24697 -+    {
43.24698 -+      AVR32_OPC_SUBFHI, 4, 0xf5b00b00, 0xfff0ff00,
43.24699 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBFHI],
43.24700 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24701 -+      {
43.24702 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24703 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24704 -+      },
43.24705 -+    },
43.24706 -+    {
43.24707 -+      AVR32_OPC_SUBFVS, 4, 0xf5b00c00, 0xfff0ff00,
43.24708 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBFVS],
43.24709 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24710 -+      {
43.24711 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24712 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24713 -+      },
43.24714 -+    },
43.24715 -+    {
43.24716 -+      AVR32_OPC_SUBFVC, 4, 0xf5b00d00, 0xfff0ff00,
43.24717 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBFVC],
43.24718 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24719 -+      {
43.24720 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24721 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24722 -+      },
43.24723 -+    },
43.24724 -+    {
43.24725 -+      AVR32_OPC_SUBFQS, 4, 0xf5b00e00, 0xfff0ff00,
43.24726 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBFQS],
43.24727 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24728 -+      {
43.24729 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24730 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24731 -+      },
43.24732 -+    },
43.24733 -+    {
43.24734 -+      AVR32_OPC_SUBFAL, 4, 0xf5b00f00, 0xfff0ff00,
43.24735 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBFAL],
43.24736 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
43.24737 -+      {
43.24738 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24739 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24740 -+      },
43.24741 -+    },
43.24742 -+    {
43.24743 -+      AVR32_OPC_SUBHH_W, 4, 0xe0000f00, 0xe1f0ffc0,
43.24744 -+      &avr32_syntax_table[AVR32_SYNTAX_SUBHH_W],
43.24745 -+      BFD_RELOC_UNUSED, 5, -1,
43.24746 -+      {
43.24747 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.24748 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24749 -+	&avr32_ifield_table[AVR32_IFIELD_X],
43.24750 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24751 -+	&avr32_ifield_table[AVR32_IFIELD_Y],
43.24752 -+      },
43.24753 -+    },
43.24754 -+    {
43.24755 -+      AVR32_OPC_SWAP_B, 2, 0x5cb00000, 0xfff00000,
43.24756 -+      &avr32_syntax_table[AVR32_SYNTAX_SWAP_B],
43.24757 -+      BFD_RELOC_UNUSED, 1, -1,
43.24758 -+      {
43.24759 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24760 -+      }
43.24761 -+    },
43.24762 -+    {
43.24763 -+      AVR32_OPC_SWAP_BH, 2, 0x5cc00000, 0xfff00000,
43.24764 -+      &avr32_syntax_table[AVR32_SYNTAX_SWAP_BH],
43.24765 -+      BFD_RELOC_UNUSED, 1, -1,
43.24766 -+      {
43.24767 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24768 -+      }
43.24769 -+    },
43.24770 -+    {
43.24771 -+      AVR32_OPC_SWAP_H, 2, 0x5ca00000, 0xfff00000,
43.24772 -+      &avr32_syntax_table[AVR32_SYNTAX_SWAP_H],
43.24773 -+      BFD_RELOC_UNUSED, 1, -1,
43.24774 -+      {
43.24775 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24776 -+      }
43.24777 -+    },
43.24778 -+    {
43.24779 -+      AVR32_OPC_SYNC, 4, 0xebb00000, 0xffffff00,
43.24780 -+      &avr32_syntax_table[AVR32_SYNTAX_SYNC],
43.24781 -+      BFD_RELOC_AVR32_8S_EXT, 1, 0,
43.24782 -+      {
43.24783 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],
43.24784 -+      }
43.24785 -+    },
43.24786 -+    {
43.24787 -+      AVR32_OPC_TLBR, 2, 0xd6430000, 0xffff0000,
43.24788 -+      &avr32_syntax_table[AVR32_SYNTAX_TLBR],
43.24789 -+      BFD_RELOC_UNUSED, 0, -1, { NULL },
43.24790 -+    },
43.24791 -+    {
43.24792 -+      AVR32_OPC_TLBS, 2, 0xd6530000, 0xffff0000,
43.24793 -+      &avr32_syntax_table[AVR32_SYNTAX_TLBS],
43.24794 -+      BFD_RELOC_UNUSED, 0, -1, { NULL },
43.24795 -+    },
43.24796 -+    {
43.24797 -+      AVR32_OPC_TLBW, 2, 0xd6630000, 0xffff0000,
43.24798 -+      &avr32_syntax_table[AVR32_SYNTAX_TLBW],
43.24799 -+      BFD_RELOC_UNUSED, 0, -1, { NULL },
43.24800 -+    },
43.24801 -+    {
43.24802 -+      AVR32_OPC_TNBZ, 2, 0x5ce00000, 0xfff00000,
43.24803 -+      &avr32_syntax_table[AVR32_SYNTAX_TNBZ],
43.24804 -+      BFD_RELOC_UNUSED, 1, -1,
43.24805 -+      {
43.24806 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24807 -+      }
43.24808 -+    },
43.24809 -+    {
43.24810 -+      AVR32_OPC_TST, 2, 0x00700000, 0xe1f00000,
43.24811 -+      &avr32_syntax_table[AVR32_SYNTAX_TST],
43.24812 -+      BFD_RELOC_UNUSED, 2, -1,
43.24813 -+      {
43.24814 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24815 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24816 -+      },
43.24817 -+    },
43.24818 -+    {
43.24819 -+      AVR32_OPC_XCHG, 4, 0xe0000b40, 0xe1f0fff0,
43.24820 -+      &avr32_syntax_table[AVR32_SYNTAX_XCHG],
43.24821 -+      BFD_RELOC_UNUSED, 3, -1,
43.24822 -+      {
43.24823 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
43.24824 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24825 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24826 -+      },
43.24827 -+    },
43.24828 -+    {
43.24829 -+      AVR32_OPC_MEMC, 4, 0xf6100000, 0xfff00000,
43.24830 -+      &avr32_syntax_table[AVR32_SYNTAX_MEMC],
43.24831 -+      BFD_RELOC_AVR32_15S, 2, 0,
43.24832 -+      {
43.24833 -+	&avr32_ifield_table[AVR32_IFIELD_MEM15],
43.24834 -+	&avr32_ifield_table[AVR32_IFIELD_MEMB5],
43.24835 -+      },
43.24836 -+    },
43.24837 -+    {
43.24838 -+      AVR32_OPC_MEMS, 4, 0xf8100000, 0xfff00000,
43.24839 -+      &avr32_syntax_table[AVR32_SYNTAX_MEMS],
43.24840 -+      BFD_RELOC_AVR32_15S, 2, 0,
43.24841 -+      {
43.24842 -+	&avr32_ifield_table[AVR32_IFIELD_MEM15],
43.24843 -+	&avr32_ifield_table[AVR32_IFIELD_MEMB5],
43.24844 -+      },
43.24845 -+    },
43.24846 -+    {
43.24847 -+      AVR32_OPC_MEMT, 4, 0xfa100000, 0xfff00000,
43.24848 -+      &avr32_syntax_table[AVR32_SYNTAX_MEMT],
43.24849 -+      BFD_RELOC_AVR32_15S, 2, 0,
43.24850 -+      {
43.24851 -+	&avr32_ifield_table[AVR32_IFIELD_MEM15],
43.24852 -+	&avr32_ifield_table[AVR32_IFIELD_MEMB5],
43.24853 -+      },
43.24854 -+    },
43.24855 -+    {
43.24856 -+      AVR32_OPC_BFEXTS, 4, 0xe1d0b000, 0xe1f0fc00,
43.24857 -+      &avr32_syntax_table[AVR32_SYNTAX_BFEXTS],
43.24858 -+      BFD_RELOC_UNUSED, 4, -1,
43.24859 -+      {
43.24860 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24861 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24862 -+	&avr32_ifield_table[AVR32_IFIELD_S5],
43.24863 -+	&avr32_ifield_table[AVR32_IFIELD_K5E],
43.24864 -+      },
43.24865 -+    },
43.24866 -+    {
43.24867 -+      AVR32_OPC_BFEXTU, 4, 0xe1d0c000, 0xe1f0fc00,
43.24868 -+      &avr32_syntax_table[AVR32_SYNTAX_BFEXTU],
43.24869 -+      BFD_RELOC_UNUSED, 4, -1,
43.24870 -+      {
43.24871 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24872 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24873 -+	&avr32_ifield_table[AVR32_IFIELD_S5],
43.24874 -+	&avr32_ifield_table[AVR32_IFIELD_K5E],
43.24875 -+      },
43.24876 -+    },
43.24877 -+    {
43.24878 -+      AVR32_OPC_BFINS, 4, 0xe1d0d000, 0xe1f0fc00,
43.24879 -+      &avr32_syntax_table[AVR32_SYNTAX_BFINS],
43.24880 -+      BFD_RELOC_UNUSED, 4, -1,
43.24881 -+      {
43.24882 -+	&avr32_ifield_table[AVR32_IFIELD_RX],
43.24883 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.24884 -+	&avr32_ifield_table[AVR32_IFIELD_S5],
43.24885 -+	&avr32_ifield_table[AVR32_IFIELD_K5E],
43.24886 -+      },
43.24887 -+    },
43.24888 -+#define AVR32_OPCODE_RSUBCOND(cond_name, cond_field)                    \
43.24889 -+    {                                                                   \
43.24890 -+      AVR32_OPC_RSUB ## cond_name , 4,                                  \
43.24891 -+      0xfbb00000 | (cond_field << 8), 0xfff0ff00,                       \
43.24892 -+      &avr32_syntax_table[AVR32_SYNTAX_RSUB ## cond_name ],             \
43.24893 -+      BFD_RELOC_AVR32_8S_EXT, 2, 1,                                     \
43.24894 -+      {                                                                 \
43.24895 -+	&avr32_ifield_table[AVR32_IFIELD_RY],                           \
43.24896 -+	&avr32_ifield_table[AVR32_IFIELD_K8E],                          \
43.24897 -+      },                                                                \
43.24898 -+    },
43.24899 -+
43.24900 -+    AVR32_OPCODE_RSUBCOND (EQ, 0) 
43.24901 -+    AVR32_OPCODE_RSUBCOND (NE, 1) 
43.24902 -+    AVR32_OPCODE_RSUBCOND (CC, 2) 
43.24903 -+    AVR32_OPCODE_RSUBCOND (CS, 3) 
43.24904 -+    AVR32_OPCODE_RSUBCOND (GE, 4) 
43.24905 -+    AVR32_OPCODE_RSUBCOND (LT, 5) 
43.24906 -+    AVR32_OPCODE_RSUBCOND (MI, 6) 
43.24907 -+    AVR32_OPCODE_RSUBCOND (PL, 7) 
43.24908 -+    AVR32_OPCODE_RSUBCOND (LS, 8) 
43.24909 -+    AVR32_OPCODE_RSUBCOND (GT, 9) 
43.24910 -+    AVR32_OPCODE_RSUBCOND (LE, 10) 
43.24911 -+    AVR32_OPCODE_RSUBCOND (HI, 11) 
43.24912 -+    AVR32_OPCODE_RSUBCOND (VS, 12) 
43.24913 -+    AVR32_OPCODE_RSUBCOND (VC, 13) 
43.24914 -+    AVR32_OPCODE_RSUBCOND (QS, 14) 
43.24915 -+    AVR32_OPCODE_RSUBCOND (AL, 15) 
43.24916 -+
43.24917 -+#define AVR32_OPCODE_OP3_COND(op_name, op_field, cond_name, cond_field) \
43.24918 -+    {                                                                   \
43.24919 -+      AVR32_OPC_ ## op_name ## cond_name , 4,                           \
43.24920 -+      0xe1d0e000 | (cond_field << 8) | (op_field << 4), 0xe1f0fff0,     \
43.24921 -+      &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ],      \
43.24922 -+      BFD_RELOC_UNUSED, 3, -1,                                          \
43.24923 -+      {                                                                 \
43.24924 -+	&avr32_ifield_table[AVR32_IFIELD_RD_E],                         \
43.24925 -+	&avr32_ifield_table[AVR32_IFIELD_RX],                           \
43.24926 -+	&avr32_ifield_table[AVR32_IFIELD_RY],                           \
43.24927 -+      },                                                                \
43.24928 -+    },
43.24929 -+
43.24930 -+    AVR32_OPCODE_OP3_COND (ADD, 0, EQ, 0)
43.24931 -+    AVR32_OPCODE_OP3_COND (ADD, 0, NE, 1)
43.24932 -+    AVR32_OPCODE_OP3_COND (ADD, 0, CC, 2)
43.24933 -+    AVR32_OPCODE_OP3_COND (ADD, 0, CS, 3)
43.24934 -+    AVR32_OPCODE_OP3_COND (ADD, 0, GE, 4)
43.24935 -+    AVR32_OPCODE_OP3_COND (ADD, 0, LT, 5)
43.24936 -+    AVR32_OPCODE_OP3_COND (ADD, 0, MI, 6)
43.24937 -+    AVR32_OPCODE_OP3_COND (ADD, 0, PL, 7)
43.24938 -+    AVR32_OPCODE_OP3_COND (ADD, 0, LS, 8)
43.24939 -+    AVR32_OPCODE_OP3_COND (ADD, 0, GT, 9)
43.24940 -+    AVR32_OPCODE_OP3_COND (ADD, 0, LE, 10)
43.24941 -+    AVR32_OPCODE_OP3_COND (ADD, 0, HI, 11)
43.24942 -+    AVR32_OPCODE_OP3_COND (ADD, 0, VS, 12)
43.24943 -+    AVR32_OPCODE_OP3_COND (ADD, 0, VC, 13)
43.24944 -+    AVR32_OPCODE_OP3_COND (ADD, 0, QS, 14)
43.24945 -+    AVR32_OPCODE_OP3_COND (ADD, 0, AL, 15)
43.24946 -+
43.24947 -+    AVR32_OPCODE_OP3_COND (SUB2, 1, EQ, 0)
43.24948 -+    AVR32_OPCODE_OP3_COND (SUB2, 1, NE, 1)
43.24949 -+    AVR32_OPCODE_OP3_COND (SUB2, 1, CC, 2)
43.24950 -+    AVR32_OPCODE_OP3_COND (SUB2, 1, CS, 3)
43.24951 -+    AVR32_OPCODE_OP3_COND (SUB2, 1, GE, 4)
43.24952 -+    AVR32_OPCODE_OP3_COND (SUB2, 1, LT, 5)
43.24953 -+    AVR32_OPCODE_OP3_COND (SUB2, 1, MI, 6)
43.24954 -+    AVR32_OPCODE_OP3_COND (SUB2, 1, PL, 7)
43.24955 -+    AVR32_OPCODE_OP3_COND (SUB2, 1, LS, 8)
43.24956 -+    AVR32_OPCODE_OP3_COND (SUB2, 1, GT, 9)
43.24957 -+    AVR32_OPCODE_OP3_COND (SUB2, 1, LE, 10)
43.24958 -+    AVR32_OPCODE_OP3_COND (SUB2, 1, HI, 11)
43.24959 -+    AVR32_OPCODE_OP3_COND (SUB2, 1, VS, 12)
43.24960 -+    AVR32_OPCODE_OP3_COND (SUB2, 1, VC, 13)
43.24961 -+    AVR32_OPCODE_OP3_COND (SUB2, 1, QS, 14)
43.24962 -+    AVR32_OPCODE_OP3_COND (SUB2, 1, AL, 15)
43.24963 -+
43.24964 -+    AVR32_OPCODE_OP3_COND (AND, 2, EQ, 0)
43.24965 -+    AVR32_OPCODE_OP3_COND (AND, 2, NE, 1)
43.24966 -+    AVR32_OPCODE_OP3_COND (AND, 2, CC, 2)
43.24967 -+    AVR32_OPCODE_OP3_COND (AND, 2, CS, 3)
43.24968 -+    AVR32_OPCODE_OP3_COND (AND, 2, GE, 4)
43.24969 -+    AVR32_OPCODE_OP3_COND (AND, 2, LT, 5)
43.24970 -+    AVR32_OPCODE_OP3_COND (AND, 2, MI, 6)
43.24971 -+    AVR32_OPCODE_OP3_COND (AND, 2, PL, 7)
43.24972 -+    AVR32_OPCODE_OP3_COND (AND, 2, LS, 8)
43.24973 -+    AVR32_OPCODE_OP3_COND (AND, 2, GT, 9)
43.24974 -+    AVR32_OPCODE_OP3_COND (AND, 2, LE, 10)
43.24975 -+    AVR32_OPCODE_OP3_COND (AND, 2, HI, 11)
43.24976 -+    AVR32_OPCODE_OP3_COND (AND, 2, VS, 12)
43.24977 -+    AVR32_OPCODE_OP3_COND (AND, 2, VC, 13)
43.24978 -+    AVR32_OPCODE_OP3_COND (AND, 2, QS, 14)
43.24979 -+    AVR32_OPCODE_OP3_COND (AND, 2, AL, 15)
43.24980 -+
43.24981 -+    AVR32_OPCODE_OP3_COND (OR, 3, EQ, 0)
43.24982 -+    AVR32_OPCODE_OP3_COND (OR, 3, NE, 1)
43.24983 -+    AVR32_OPCODE_OP3_COND (OR, 3, CC, 2)
43.24984 -+    AVR32_OPCODE_OP3_COND (OR, 3, CS, 3)
43.24985 -+    AVR32_OPCODE_OP3_COND (OR, 3, GE, 4)
43.24986 -+    AVR32_OPCODE_OP3_COND (OR, 3, LT, 5)
43.24987 -+    AVR32_OPCODE_OP3_COND (OR, 3, MI, 6)
43.24988 -+    AVR32_OPCODE_OP3_COND (OR, 3, PL, 7)
43.24989 -+    AVR32_OPCODE_OP3_COND (OR, 3, LS, 8)
43.24990 -+    AVR32_OPCODE_OP3_COND (OR, 3, GT, 9)
43.24991 -+    AVR32_OPCODE_OP3_COND (OR, 3, LE, 10)
43.24992 -+    AVR32_OPCODE_OP3_COND (OR, 3, HI, 11)
43.24993 -+    AVR32_OPCODE_OP3_COND (OR, 3, VS, 12)
43.24994 -+    AVR32_OPCODE_OP3_COND (OR, 3, VC, 13)
43.24995 -+    AVR32_OPCODE_OP3_COND (OR, 3, QS, 14)
43.24996 -+    AVR32_OPCODE_OP3_COND (OR, 3, AL, 15)
43.24997 -+
43.24998 -+    AVR32_OPCODE_OP3_COND (EOR, 4, EQ, 0)
43.24999 -+    AVR32_OPCODE_OP3_COND (EOR, 4, NE, 1)
43.25000 -+    AVR32_OPCODE_OP3_COND (EOR, 4, CC, 2)
43.25001 -+    AVR32_OPCODE_OP3_COND (EOR, 4, CS, 3)
43.25002 -+    AVR32_OPCODE_OP3_COND (EOR, 4, GE, 4)
43.25003 -+    AVR32_OPCODE_OP3_COND (EOR, 4, LT, 5)
43.25004 -+    AVR32_OPCODE_OP3_COND (EOR, 4, MI, 6)
43.25005 -+    AVR32_OPCODE_OP3_COND (EOR, 4, PL, 7)
43.25006 -+    AVR32_OPCODE_OP3_COND (EOR, 4, LS, 8)
43.25007 -+    AVR32_OPCODE_OP3_COND (EOR, 4, GT, 9)
43.25008 -+    AVR32_OPCODE_OP3_COND (EOR, 4, LE, 10)
43.25009 -+    AVR32_OPCODE_OP3_COND (EOR, 4, HI, 11)
43.25010 -+    AVR32_OPCODE_OP3_COND (EOR, 4, VS, 12)
43.25011 -+    AVR32_OPCODE_OP3_COND (EOR, 4, VC, 13)
43.25012 -+    AVR32_OPCODE_OP3_COND (EOR, 4, QS, 14)
43.25013 -+    AVR32_OPCODE_OP3_COND (EOR, 4, AL, 15) 
43.25014 -+
43.25015 -+#define AVR32_OPCODE_LD_COND(op_name, op_field, cond_name, cond_field)  \
43.25016 -+    {                                                                   \
43.25017 -+      AVR32_OPC_ ## op_name ## cond_name , 4,                           \
43.25018 -+      0xe1f00000 | (cond_field << 12) | (op_field  << 9), 0xe1f0fe00,   \
43.25019 -+      &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ],      \
43.25020 -+      BFD_RELOC_UNUSED, 3, -1,                                          \
43.25021 -+      {                                                                 \
43.25022 -+	&avr32_ifield_table[AVR32_IFIELD_RY],                           \
43.25023 -+	&avr32_ifield_table[AVR32_IFIELD_RX],                           \
43.25024 -+	&avr32_ifield_table[AVR32_IFIELD_K9E],                          \
43.25025 -+      },                                                                \
43.25026 -+    },
43.25027 -+    
43.25028 -+#define AVR32_OPCODE_ST_COND(op_name, op_field, cond_name, cond_field)  \
43.25029 -+    {                                                                   \
43.25030 -+      AVR32_OPC_ ## op_name ## cond_name , 4,                           \
43.25031 -+      0xe1f00000 | (cond_field << 12) | (op_field  << 9), 0xe1f0fe00,   \
43.25032 -+      &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ],      \
43.25033 -+      BFD_RELOC_UNUSED, 3, -1,                                          \
43.25034 -+      {                                                                 \
43.25035 -+	&avr32_ifield_table[AVR32_IFIELD_RX],                           \
43.25036 -+	&avr32_ifield_table[AVR32_IFIELD_K9E],                          \
43.25037 -+	&avr32_ifield_table[AVR32_IFIELD_RY],                           \
43.25038 -+      },                                                                \
43.25039 -+    },
43.25040 -+
43.25041 -+    AVR32_OPCODE_LD_COND (LD_W, 0, EQ, 0) 
43.25042 -+    AVR32_OPCODE_LD_COND (LD_W, 0, NE, 1) 
43.25043 -+    AVR32_OPCODE_LD_COND (LD_W, 0, CC, 2) 
43.25044 -+    AVR32_OPCODE_LD_COND (LD_W, 0, CS, 3) 
43.25045 -+    AVR32_OPCODE_LD_COND (LD_W, 0, GE, 4) 
43.25046 -+    AVR32_OPCODE_LD_COND (LD_W, 0, LT, 5) 
43.25047 -+    AVR32_OPCODE_LD_COND (LD_W, 0, MI, 6) 
43.25048 -+    AVR32_OPCODE_LD_COND (LD_W, 0, PL, 7) 
43.25049 -+    AVR32_OPCODE_LD_COND (LD_W, 0, LS, 8) 
43.25050 -+    AVR32_OPCODE_LD_COND (LD_W, 0, GT, 9) 
43.25051 -+    AVR32_OPCODE_LD_COND (LD_W, 0, LE, 10) 
43.25052 -+    AVR32_OPCODE_LD_COND (LD_W, 0, HI, 11) 
43.25053 -+    AVR32_OPCODE_LD_COND (LD_W, 0, VS, 12) 
43.25054 -+    AVR32_OPCODE_LD_COND (LD_W, 0, VC, 13) 
43.25055 -+    AVR32_OPCODE_LD_COND (LD_W, 0, QS, 14) 
43.25056 -+    AVR32_OPCODE_LD_COND (LD_W, 0, AL, 15) 
43.25057 -+
43.25058 -+    AVR32_OPCODE_LD_COND (LD_SH, 1, EQ, 0) 
43.25059 -+    AVR32_OPCODE_LD_COND (LD_SH, 1, NE, 1) 
43.25060 -+    AVR32_OPCODE_LD_COND (LD_SH, 1, CC, 2) 
43.25061 -+    AVR32_OPCODE_LD_COND (LD_SH, 1, CS, 3) 
43.25062 -+    AVR32_OPCODE_LD_COND (LD_SH, 1, GE, 4) 
43.25063 -+    AVR32_OPCODE_LD_COND (LD_SH, 1, LT, 5) 
43.25064 -+    AVR32_OPCODE_LD_COND (LD_SH, 1, MI, 6) 
43.25065 -+    AVR32_OPCODE_LD_COND (LD_SH, 1, PL, 7) 
43.25066 -+    AVR32_OPCODE_LD_COND (LD_SH, 1, LS, 8) 
43.25067 -+    AVR32_OPCODE_LD_COND (LD_SH, 1, GT, 9) 
43.25068 -+    AVR32_OPCODE_LD_COND (LD_SH, 1, LE, 10) 
43.25069 -+    AVR32_OPCODE_LD_COND (LD_SH, 1, HI, 11) 
43.25070 -+    AVR32_OPCODE_LD_COND (LD_SH, 1, VS, 12) 
43.25071 -+    AVR32_OPCODE_LD_COND (LD_SH, 1, VC, 13) 
43.25072 -+    AVR32_OPCODE_LD_COND (LD_SH, 1, QS, 14) 
43.25073 -+    AVR32_OPCODE_LD_COND (LD_SH, 1, AL, 15) 
43.25074 -+
43.25075 -+    AVR32_OPCODE_LD_COND (LD_UH, 2, EQ, 0) 
43.25076 -+    AVR32_OPCODE_LD_COND (LD_UH, 2, NE, 1) 
43.25077 -+    AVR32_OPCODE_LD_COND (LD_UH, 2, CC, 2) 
43.25078 -+    AVR32_OPCODE_LD_COND (LD_UH, 2, CS, 3) 
43.25079 -+    AVR32_OPCODE_LD_COND (LD_UH, 2, GE, 4) 
43.25080 -+    AVR32_OPCODE_LD_COND (LD_UH, 2, LT, 5) 
43.25081 -+    AVR32_OPCODE_LD_COND (LD_UH, 2, MI, 6) 
43.25082 -+    AVR32_OPCODE_LD_COND (LD_UH, 2, PL, 7) 
43.25083 -+    AVR32_OPCODE_LD_COND (LD_SH, 2, LS, 8) 
43.25084 -+    AVR32_OPCODE_LD_COND (LD_SH, 2, GT, 9) 
43.25085 -+    AVR32_OPCODE_LD_COND (LD_SH, 2, LE, 10) 
43.25086 -+    AVR32_OPCODE_LD_COND (LD_SH, 2, HI, 11) 
43.25087 -+    AVR32_OPCODE_LD_COND (LD_SH, 2, VS, 12) 
43.25088 -+    AVR32_OPCODE_LD_COND (LD_SH, 2, VC, 13) 
43.25089 -+    AVR32_OPCODE_LD_COND (LD_SH, 2, QS, 14) 
43.25090 -+    AVR32_OPCODE_LD_COND (LD_SH, 2, AL, 15) 
43.25091 -+
43.25092 -+    AVR32_OPCODE_LD_COND (LD_SB, 3, EQ, 0) 
43.25093 -+    AVR32_OPCODE_LD_COND (LD_SB, 3, NE, 1) 
43.25094 -+    AVR32_OPCODE_LD_COND (LD_SB, 3, CC, 2) 
43.25095 -+    AVR32_OPCODE_LD_COND (LD_SB, 3, CS, 3) 
43.25096 -+    AVR32_OPCODE_LD_COND (LD_SB, 3, GE, 4) 
43.25097 -+    AVR32_OPCODE_LD_COND (LD_SB, 3, LT, 5) 
43.25098 -+    AVR32_OPCODE_LD_COND (LD_SB, 3, MI, 6) 
43.25099 -+    AVR32_OPCODE_LD_COND (LD_SB, 3, PL, 7) 
43.25100 -+    AVR32_OPCODE_LD_COND (LD_SB, 3, LS, 8) 
43.25101 -+    AVR32_OPCODE_LD_COND (LD_SB, 3, GT, 9) 
43.25102 -+    AVR32_OPCODE_LD_COND (LD_SB, 3, LE, 10) 
43.25103 -+    AVR32_OPCODE_LD_COND (LD_SB, 3, HI, 11) 
43.25104 -+    AVR32_OPCODE_LD_COND (LD_SB, 3, VS, 12) 
43.25105 -+    AVR32_OPCODE_LD_COND (LD_SB, 3, VC, 13) 
43.25106 -+    AVR32_OPCODE_LD_COND (LD_SB, 3, QS, 14) 
43.25107 -+    AVR32_OPCODE_LD_COND (LD_SB, 3, AL, 15) 
43.25108 -+
43.25109 -+    AVR32_OPCODE_LD_COND (LD_UB, 4, EQ, 0) 
43.25110 -+    AVR32_OPCODE_LD_COND (LD_UB, 4, NE, 1) 
43.25111 -+    AVR32_OPCODE_LD_COND (LD_UB, 4, CC, 2) 
43.25112 -+    AVR32_OPCODE_LD_COND (LD_UB, 4, CS, 3) 
43.25113 -+    AVR32_OPCODE_LD_COND (LD_UB, 4, GE, 4) 
43.25114 -+    AVR32_OPCODE_LD_COND (LD_UB, 4, LT, 5) 
43.25115 -+    AVR32_OPCODE_LD_COND (LD_UB, 4, MI, 6) 
43.25116 -+    AVR32_OPCODE_LD_COND (LD_UB, 4, PL, 7) 
43.25117 -+    AVR32_OPCODE_LD_COND (LD_UB, 4, LS, 8) 
43.25118 -+    AVR32_OPCODE_LD_COND (LD_UB, 4, GT, 9) 
43.25119 -+    AVR32_OPCODE_LD_COND (LD_UB, 4, LE, 10) 
43.25120 -+    AVR32_OPCODE_LD_COND (LD_UB, 4, HI, 11) 
43.25121 -+    AVR32_OPCODE_LD_COND (LD_UB, 4, VS, 12) 
43.25122 -+    AVR32_OPCODE_LD_COND (LD_UB, 4, VC, 13) 
43.25123 -+    AVR32_OPCODE_LD_COND (LD_UB, 4, QS, 14) 
43.25124 -+    AVR32_OPCODE_LD_COND (LD_UB, 4, AL, 15) 
43.25125 -+
43.25126 -+    AVR32_OPCODE_ST_COND (ST_W, 5, EQ, 0) 
43.25127 -+    AVR32_OPCODE_ST_COND (ST_W, 5, NE, 1) 
43.25128 -+    AVR32_OPCODE_ST_COND (ST_W, 5, CC, 2) 
43.25129 -+    AVR32_OPCODE_ST_COND (ST_W, 5, CS, 3) 
43.25130 -+    AVR32_OPCODE_ST_COND (ST_W, 5, GE, 4) 
43.25131 -+    AVR32_OPCODE_ST_COND (ST_W, 5, LT, 5) 
43.25132 -+    AVR32_OPCODE_ST_COND (ST_W, 5, MI, 6) 
43.25133 -+    AVR32_OPCODE_ST_COND (ST_W, 5, PL, 7) 
43.25134 -+    AVR32_OPCODE_ST_COND (ST_W, 5, LS, 8) 
43.25135 -+    AVR32_OPCODE_ST_COND (ST_W, 5, GT, 9) 
43.25136 -+    AVR32_OPCODE_ST_COND (ST_W, 5, LE, 10) 
43.25137 -+    AVR32_OPCODE_ST_COND (ST_W, 5, HI, 11) 
43.25138 -+    AVR32_OPCODE_ST_COND (ST_W, 5, VS, 12) 
43.25139 -+    AVR32_OPCODE_ST_COND (ST_W, 5, VC, 13) 
43.25140 -+    AVR32_OPCODE_ST_COND (ST_W, 5, QS, 14) 
43.25141 -+    AVR32_OPCODE_ST_COND (ST_W, 5, AL, 15) 
43.25142 -+
43.25143 -+    AVR32_OPCODE_ST_COND (ST_H, 6, EQ, 0) 
43.25144 -+    AVR32_OPCODE_ST_COND (ST_H, 6, NE, 1) 
43.25145 -+    AVR32_OPCODE_ST_COND (ST_H, 6, CC, 2) 
43.25146 -+    AVR32_OPCODE_ST_COND (ST_H, 6, CS, 3) 
43.25147 -+    AVR32_OPCODE_ST_COND (ST_H, 6, GE, 4) 
43.25148 -+    AVR32_OPCODE_ST_COND (ST_H, 6, LT, 5) 
43.25149 -+    AVR32_OPCODE_ST_COND (ST_H, 6, MI, 6) 
43.25150 -+    AVR32_OPCODE_ST_COND (ST_H, 6, PL, 7) 
43.25151 -+    AVR32_OPCODE_ST_COND (ST_H, 6, LS, 8) 
43.25152 -+    AVR32_OPCODE_ST_COND (ST_H, 6, GT, 9) 
43.25153 -+    AVR32_OPCODE_ST_COND (ST_H, 6, LE, 10) 
43.25154 -+    AVR32_OPCODE_ST_COND (ST_H, 6, HI, 11) 
43.25155 -+    AVR32_OPCODE_ST_COND (ST_H, 6, VS, 12) 
43.25156 -+    AVR32_OPCODE_ST_COND (ST_H, 6, VC, 13) 
43.25157 -+    AVR32_OPCODE_ST_COND (ST_H, 6, QS, 14) 
43.25158 -+    AVR32_OPCODE_ST_COND (ST_H, 6, AL, 15) 
43.25159 -+
43.25160 -+    AVR32_OPCODE_ST_COND (ST_B, 7, EQ, 0) 
43.25161 -+    AVR32_OPCODE_ST_COND (ST_B, 7, NE, 1) 
43.25162 -+    AVR32_OPCODE_ST_COND (ST_B, 7, CC, 2) 
43.25163 -+    AVR32_OPCODE_ST_COND (ST_B, 7, CS, 3) 
43.25164 -+    AVR32_OPCODE_ST_COND (ST_B, 7, GE, 4) 
43.25165 -+    AVR32_OPCODE_ST_COND (ST_B, 7, LT, 5) 
43.25166 -+    AVR32_OPCODE_ST_COND (ST_B, 7, MI, 6) 
43.25167 -+    AVR32_OPCODE_ST_COND (ST_B, 7, PL, 7) 
43.25168 -+    AVR32_OPCODE_ST_COND (ST_B, 7, LS, 8) 
43.25169 -+    AVR32_OPCODE_ST_COND (ST_B, 7, GT, 9) 
43.25170 -+    AVR32_OPCODE_ST_COND (ST_B, 7, LE, 10) 
43.25171 -+    AVR32_OPCODE_ST_COND (ST_B, 7, HI, 11) 
43.25172 -+    AVR32_OPCODE_ST_COND (ST_B, 7, VS, 12) 
43.25173 -+    AVR32_OPCODE_ST_COND (ST_B, 7, VC, 13) 
43.25174 -+    AVR32_OPCODE_ST_COND (ST_B, 7, QS, 14) 
43.25175 -+    AVR32_OPCODE_ST_COND (ST_B, 7, AL, 15) 
43.25176 -+
43.25177 -+    {
43.25178 -+      AVR32_OPC_MOVH, 4, 0xfc100000, 0xfff00000,
43.25179 -+      &avr32_syntax_table[AVR32_SYNTAX_MOVH],
43.25180 -+      BFD_RELOC_AVR32_16U,  2, 1,
43.25181 -+      {
43.25182 -+	&avr32_ifield_table[AVR32_IFIELD_RY],
43.25183 -+	&avr32_ifield_table[AVR32_IFIELD_K16],
43.25184 -+      },
43.25185 -+    },
43.25186 -+
43.25187 -+ };
43.25188 -+
43.25189 -+#define FPALIAS_DXY(name, opcode)			\
43.25190 -+  {							\
43.25191 -+    AVR32_ALIAS_##name##_S,				\
43.25192 -+    &avr32_opc_table[AVR32_OPC_COP],			\
43.25193 -+    {							\
43.25194 -+      { 0, 0 },						\
43.25195 -+      { 1, 0 }, { 1, 1 }, { 1, 2 },			\
43.25196 -+      { 0, opcode },					\
43.25197 -+    },							\
43.25198 -+  }, {							\
43.25199 -+    AVR32_ALIAS_##name##_D,				\
43.25200 -+    &avr32_opc_table[AVR32_OPC_COP],			\
43.25201 -+    {							\
43.25202 -+      { 0, 0 },						\
43.25203 -+      { 1, 0 }, { 1, 1 }, { 1, 2 },			\
43.25204 -+      { 0, (opcode) | 0x40 },				\
43.25205 -+    },							\
43.25206 -+  }
43.25207 -+#define FPALIAS_DX(name, opcode)			\
43.25208 -+  {							\
43.25209 -+    AVR32_ALIAS_##name##_S,				\
43.25210 -+    &avr32_opc_table[AVR32_OPC_COP],			\
43.25211 -+    {							\
43.25212 -+      { 0, 0 },						\
43.25213 -+      { 1, 0 }, { 1, 1 }, { 0, 0 },			\
43.25214 -+      { 0, opcode },					\
43.25215 -+    },							\
43.25216 -+  }, {							\
43.25217 -+    AVR32_ALIAS_##name##_D,				\
43.25218 -+    &avr32_opc_table[AVR32_OPC_COP],			\
43.25219 -+    {							\
43.25220 -+      { 0, 0 },						\
43.25221 -+      { 1, 0 }, { 1, 1 }, { 0, 0 },			\
43.25222 -+      { 0, (opcode) | 0x40 },				\
43.25223 -+    },							\
43.25224 -+  }
43.25225 -+#define FPALIAS_XY(name, opcode)			\
43.25226 -+  {							\
43.25227 -+    AVR32_ALIAS_##name##_S,				\
43.25228 -+    &avr32_opc_table[AVR32_OPC_COP],			\
43.25229 -+    {							\
43.25230 -+      { 0, 0 },						\
43.25231 -+      { 0, 0 }, { 1, 0 }, { 1, 1 },			\
43.25232 -+      { 0, opcode },					\
43.25233 -+    },							\
43.25234 -+  }, {							\
43.25235 -+    AVR32_ALIAS_##name##_D,				\
43.25236 -+    &avr32_opc_table[AVR32_OPC_COP],			\
43.25237 -+    {							\
43.25238 -+      { 0, 0 },						\
43.25239 -+      { 0, 0 }, { 1, 0 }, { 1, 1 },			\
43.25240 -+      { 0, (opcode) | 0x40 },				\
43.25241 -+    },							\
43.25242 -+  }
43.25243 -+
43.25244 -+const struct avr32_alias avr32_alias_table[] =
43.25245 -+  {
43.25246 -+    FPALIAS_DXY(FMAC, 0x00),
43.25247 -+    FPALIAS_DXY(FNMAC, 0x01),
43.25248 -+    FPALIAS_DXY(FMSC, 0x02),
43.25249 -+    FPALIAS_DXY(FNMSC, 0x03),
43.25250 -+    FPALIAS_DXY(FADD, 0x04),
43.25251 -+    FPALIAS_DXY(FSUB, 0x05),
43.25252 -+    FPALIAS_DXY(FMUL, 0x06),
43.25253 -+    FPALIAS_DXY(FNMUL, 0x07),
43.25254 -+    FPALIAS_DX(FNEG, 0x08),
43.25255 -+    FPALIAS_DX(FABS, 0x09),
43.25256 -+    FPALIAS_XY(FCMP, 0x0d),
43.25257 -+    FPALIAS_DX(FMOV1, 0x0a),
43.25258 -+    {
43.25259 -+      AVR32_ALIAS_FMOV2_S,
43.25260 -+      &avr32_opc_table[AVR32_OPC_MVCR_W],
43.25261 -+      { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
43.25262 -+    },
43.25263 -+    {
43.25264 -+      AVR32_ALIAS_FMOV2_D,
43.25265 -+      &avr32_opc_table[AVR32_OPC_MVCR_D],
43.25266 -+      { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
43.25267 -+    },
43.25268 -+    {
43.25269 -+      AVR32_ALIAS_FMOV3_S,
43.25270 -+      &avr32_opc_table[AVR32_OPC_MVRC_W],
43.25271 -+      { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
43.25272 -+    },
43.25273 -+    {
43.25274 -+      AVR32_ALIAS_FMOV3_D,
43.25275 -+      &avr32_opc_table[AVR32_OPC_MVRC_D],
43.25276 -+      { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
43.25277 -+    },
43.25278 -+    {
43.25279 -+      AVR32_ALIAS_FCASTS_D,
43.25280 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25281 -+      {
43.25282 -+	{ 0, 0 },
43.25283 -+	{ 1, 0 }, { 1, 1 }, { 0, 0 },
43.25284 -+	{ 0, 0x0f },
43.25285 -+      },
43.25286 -+    },
43.25287 -+    {
43.25288 -+      AVR32_ALIAS_FCASTD_S,
43.25289 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25290 -+      {
43.25291 -+	{ 0, 0 },
43.25292 -+	{ 1, 0 }, { 1, 1 }, { 0, 0 },
43.25293 -+	{ 0, 0x10 },
43.25294 -+      },
43.25295 -+    },
43.25296 -+    {
43.25297 -+      AVR32_ALIAS_PICOSVMAC0,
43.25298 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25299 -+      {
43.25300 -+	{ 0, PICO_CPNO },
43.25301 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25302 -+	{ 0, 0x0c },
43.25303 -+      },
43.25304 -+    },
43.25305 -+    {
43.25306 -+      AVR32_ALIAS_PICOSVMAC1,
43.25307 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25308 -+      {
43.25309 -+	{ 0, PICO_CPNO },
43.25310 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25311 -+	{ 0, 0x0d },
43.25312 -+      },
43.25313 -+    },
43.25314 -+    {
43.25315 -+      AVR32_ALIAS_PICOSVMAC2,
43.25316 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25317 -+      {
43.25318 -+	{ 0, PICO_CPNO },
43.25319 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25320 -+	{ 0, 0x0e },
43.25321 -+      },
43.25322 -+    },
43.25323 -+    {
43.25324 -+      AVR32_ALIAS_PICOSVMAC3,
43.25325 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25326 -+      {
43.25327 -+	{ 0, PICO_CPNO },
43.25328 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25329 -+	{ 0, 0x0f },
43.25330 -+      },
43.25331 -+    },
43.25332 -+    {
43.25333 -+      AVR32_ALIAS_PICOSVMUL0,
43.25334 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25335 -+      {
43.25336 -+	{ 0, PICO_CPNO },
43.25337 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25338 -+	{ 0, 0x08 },
43.25339 -+      },
43.25340 -+    },
43.25341 -+    {
43.25342 -+      AVR32_ALIAS_PICOSVMUL1,
43.25343 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25344 -+      {
43.25345 -+	{ 0, PICO_CPNO },
43.25346 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25347 -+	{ 0, 0x09 },
43.25348 -+      },
43.25349 -+    },
43.25350 -+    {
43.25351 -+      AVR32_ALIAS_PICOSVMUL2,
43.25352 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25353 -+      {
43.25354 -+	{ 0, PICO_CPNO },
43.25355 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25356 -+	{ 0, 0x0a },
43.25357 -+      },
43.25358 -+    },
43.25359 -+    {
43.25360 -+      AVR32_ALIAS_PICOSVMUL3,
43.25361 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25362 -+      {
43.25363 -+	{ 0, PICO_CPNO },
43.25364 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25365 -+	{ 0, 0x0b },
43.25366 -+      },
43.25367 -+    },
43.25368 -+    {
43.25369 -+      AVR32_ALIAS_PICOVMAC0,
43.25370 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25371 -+      {
43.25372 -+	{ 0, PICO_CPNO },
43.25373 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25374 -+	{ 0, 0x04 },
43.25375 -+      },
43.25376 -+    },
43.25377 -+    {
43.25378 -+      AVR32_ALIAS_PICOVMAC1,
43.25379 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25380 -+      {
43.25381 -+	{ 0, PICO_CPNO },
43.25382 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25383 -+	{ 0, 0x05 },
43.25384 -+      },
43.25385 -+    },
43.25386 -+    {
43.25387 -+      AVR32_ALIAS_PICOVMAC2,
43.25388 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25389 -+      {
43.25390 -+	{ 0, PICO_CPNO },
43.25391 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25392 -+	{ 0, 0x06 },
43.25393 -+      },
43.25394 -+    },
43.25395 -+    {
43.25396 -+      AVR32_ALIAS_PICOVMAC3,
43.25397 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25398 -+      {
43.25399 -+	{ 0, PICO_CPNO },
43.25400 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25401 -+	{ 0, 0x07 },
43.25402 -+      },
43.25403 -+    },
43.25404 -+    {
43.25405 -+      AVR32_ALIAS_PICOVMUL0,
43.25406 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25407 -+      {
43.25408 -+	{ 0, PICO_CPNO },
43.25409 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25410 -+	{ 0, 0x00 },
43.25411 -+      },
43.25412 -+    },
43.25413 -+    {
43.25414 -+      AVR32_ALIAS_PICOVMUL1,
43.25415 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25416 -+      {
43.25417 -+	{ 0, PICO_CPNO },
43.25418 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25419 -+	{ 0, 0x01 },
43.25420 -+      },
43.25421 -+    },
43.25422 -+    {
43.25423 -+      AVR32_ALIAS_PICOVMUL2,
43.25424 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25425 -+      {
43.25426 -+	{ 0, PICO_CPNO },
43.25427 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25428 -+	{ 0, 0x02 },
43.25429 -+      },
43.25430 -+    },
43.25431 -+    {
43.25432 -+      AVR32_ALIAS_PICOVMUL3,
43.25433 -+      &avr32_opc_table[AVR32_OPC_COP],
43.25434 -+      {
43.25435 -+	{ 0, PICO_CPNO },
43.25436 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25437 -+	{ 0, 0x03 },
43.25438 -+      },
43.25439 -+    },
43.25440 -+    {
43.25441 -+      AVR32_ALIAS_PICOLD_D1,
43.25442 -+      &avr32_opc_table[AVR32_OPC_LDC_D1],
43.25443 -+      {
43.25444 -+	{ 0, PICO_CPNO },
43.25445 -+	{ 1, 0 }, { 1, 1 },
43.25446 -+      },
43.25447 -+    },
43.25448 -+    {
43.25449 -+      AVR32_ALIAS_PICOLD_D2,
43.25450 -+      &avr32_opc_table[AVR32_OPC_LDC_D2],
43.25451 -+      {
43.25452 -+	{ 0, PICO_CPNO },
43.25453 -+	{ 1, 0 }, { 1, 1 },
43.25454 -+      },
43.25455 -+    },
43.25456 -+    {
43.25457 -+      AVR32_ALIAS_PICOLD_D3,
43.25458 -+      &avr32_opc_table[AVR32_OPC_LDC_D3],
43.25459 -+      {
43.25460 -+	{ 0, PICO_CPNO },
43.25461 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
43.25462 -+      },
43.25463 -+    },
43.25464 -+    {
43.25465 -+      AVR32_ALIAS_PICOLD_W1,
43.25466 -+      &avr32_opc_table[AVR32_OPC_LDC_W1],
43.25467 -+      {
43.25468 -+	{ 0, PICO_CPNO },
43.25469 -+	{ 1, 0 }, { 1, 1 },
43.25470 -+      },
43.25471 -+    },
43.25472 -+    {
43.25473 -+      AVR32_ALIAS_PICOLD_W2,
43.25474 -+      &avr32_opc_table[AVR32_OPC_LDC_W2],
43.25475 -+      {
43.25476 -+	{ 0, PICO_CPNO },
43.25477 -+	{ 1, 0 }, { 1, 1 },
43.25478 -+      },
43.25479 -+    },
43.25480 -+    {
43.25481 -+      AVR32_ALIAS_PICOLD_W3,
43.25482 -+      &avr32_opc_table[AVR32_OPC_LDC_W3],
43.25483 -+      {
43.25484 -+	{ 0, PICO_CPNO },
43.25485 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
43.25486 -+      },
43.25487 -+    },
43.25488 -+    {
43.25489 -+      AVR32_ALIAS_PICOLDM_D,
43.25490 -+      &avr32_opc_table[AVR32_OPC_LDCM_D],
43.25491 -+      {
43.25492 -+	{ 0, PICO_CPNO },
43.25493 -+	{ 1, 0 }, { 1, 1 },
43.25494 -+      },
43.25495 -+    },
43.25496 -+    {
43.25497 -+      AVR32_ALIAS_PICOLDM_D_PU,
43.25498 -+      &avr32_opc_table[AVR32_OPC_LDCM_D_PU],
43.25499 -+      {
43.25500 -+	{ 0, PICO_CPNO },
43.25501 -+	{ 1, 0 }, { 1, 1 },
43.25502 -+      },
43.25503 -+    },
43.25504 -+    {
43.25505 -+      AVR32_ALIAS_PICOLDM_W,
43.25506 -+      &avr32_opc_table[AVR32_OPC_LDCM_W],
43.25507 -+      {
43.25508 -+	{ 0, PICO_CPNO },
43.25509 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25510 -+      },
43.25511 -+    },
43.25512 -+    {
43.25513 -+      AVR32_ALIAS_PICOLDM_W_PU,
43.25514 -+      &avr32_opc_table[AVR32_OPC_LDCM_W_PU],
43.25515 -+      {
43.25516 -+	{ 0, PICO_CPNO },
43.25517 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25518 -+      },
43.25519 -+    },
43.25520 -+    {
43.25521 -+      AVR32_ALIAS_PICOMV_D1,
43.25522 -+      &avr32_opc_table[AVR32_OPC_MVCR_D],
43.25523 -+      {
43.25524 -+	{ 0, PICO_CPNO },
43.25525 -+	{ 1, 0 }, { 1, 1 },
43.25526 -+      },
43.25527 -+    },
43.25528 -+    {
43.25529 -+      AVR32_ALIAS_PICOMV_D2,
43.25530 -+      &avr32_opc_table[AVR32_OPC_MVRC_D],
43.25531 -+      {
43.25532 -+	{ 0, PICO_CPNO },
43.25533 -+	{ 1, 0 }, { 1, 1 },
43.25534 -+      },
43.25535 -+    },
43.25536 -+    {
43.25537 -+      AVR32_ALIAS_PICOMV_W1,
43.25538 -+      &avr32_opc_table[AVR32_OPC_MVCR_W],
43.25539 -+      {
43.25540 -+	{ 0, PICO_CPNO },
43.25541 -+	{ 1, 0 }, { 1, 1 },
43.25542 -+      },
43.25543 -+    },
43.25544 -+    {
43.25545 -+      AVR32_ALIAS_PICOMV_W2,
43.25546 -+      &avr32_opc_table[AVR32_OPC_MVRC_W],
43.25547 -+      {
43.25548 -+	{ 0, PICO_CPNO },
43.25549 -+	{ 1, 0 }, { 1, 1 },
43.25550 -+      },
43.25551 -+    },
43.25552 -+    {
43.25553 -+      AVR32_ALIAS_PICOST_D1,
43.25554 -+      &avr32_opc_table[AVR32_OPC_STC_D1],
43.25555 -+      {
43.25556 -+	{ 0, PICO_CPNO },
43.25557 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25558 -+      },
43.25559 -+    },
43.25560 -+    {
43.25561 -+      AVR32_ALIAS_PICOST_D2,
43.25562 -+      &avr32_opc_table[AVR32_OPC_STC_D2],
43.25563 -+      {
43.25564 -+	{ 0, PICO_CPNO },
43.25565 -+	{ 1, 0 }, { 1, 1 },
43.25566 -+      },
43.25567 -+    },
43.25568 -+    {
43.25569 -+      AVR32_ALIAS_PICOST_D3,
43.25570 -+      &avr32_opc_table[AVR32_OPC_STC_D3],
43.25571 -+      {
43.25572 -+	{ 0, PICO_CPNO },
43.25573 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
43.25574 -+      },
43.25575 -+    },
43.25576 -+    {
43.25577 -+      AVR32_ALIAS_PICOST_W1,
43.25578 -+      &avr32_opc_table[AVR32_OPC_STC_W1],
43.25579 -+      {
43.25580 -+	{ 0, PICO_CPNO },
43.25581 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25582 -+      },
43.25583 -+    },
43.25584 -+    {
43.25585 -+      AVR32_ALIAS_PICOST_W2,
43.25586 -+      &avr32_opc_table[AVR32_OPC_STC_W2],
43.25587 -+      {
43.25588 -+	{ 0, PICO_CPNO },
43.25589 -+	{ 1, 0 }, { 1, 1 },
43.25590 -+      },
43.25591 -+    },
43.25592 -+    {
43.25593 -+      AVR32_ALIAS_PICOST_W3,
43.25594 -+      &avr32_opc_table[AVR32_OPC_STC_W3],
43.25595 -+      {
43.25596 -+	{ 0, PICO_CPNO },
43.25597 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
43.25598 -+      },
43.25599 -+    },
43.25600 -+    {
43.25601 -+      AVR32_ALIAS_PICOSTM_D,
43.25602 -+      &avr32_opc_table[AVR32_OPC_STCM_D],
43.25603 -+      {
43.25604 -+	{ 0, PICO_CPNO },
43.25605 -+	{ 1, 0 }, { 1, 1 },
43.25606 -+      },
43.25607 -+    },
43.25608 -+    {
43.25609 -+      AVR32_ALIAS_PICOSTM_D_PU,
43.25610 -+      &avr32_opc_table[AVR32_OPC_STCM_D_PU],
43.25611 -+      {
43.25612 -+	{ 0, PICO_CPNO },
43.25613 -+	{ 1, 0 }, { 1, 1 },
43.25614 -+      },
43.25615 -+    },
43.25616 -+    {
43.25617 -+      AVR32_ALIAS_PICOSTM_W,
43.25618 -+      &avr32_opc_table[AVR32_OPC_STCM_W],
43.25619 -+      {
43.25620 -+	{ 0, PICO_CPNO },
43.25621 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25622 -+      },
43.25623 -+    },
43.25624 -+    {
43.25625 -+      AVR32_ALIAS_PICOSTM_W_PU,
43.25626 -+      &avr32_opc_table[AVR32_OPC_STCM_W_PU],
43.25627 -+      {
43.25628 -+	{ 0, PICO_CPNO },
43.25629 -+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
43.25630 -+      },
43.25631 -+    },
43.25632 -+  };
43.25633 -+
43.25634 -+
43.25635 -+#define SYNTAX_NORMAL0(id, mne, opc, arch)			\
43.25636 -+  {							\
43.25637 -+    AVR32_SYNTAX_##id, arch,			\
43.25638 -+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
43.25639 -+    AVR32_PARSER_NORMAL,					\
43.25640 -+    { &avr32_opc_table[AVR32_OPC_##opc], },		\
43.25641 -+    NULL, 0, { }					\
43.25642 -+  }
43.25643 -+#define SYNTAX_NORMAL1(id, mne, opc, op0, arch)		\
43.25644 -+  {							\
43.25645 -+    AVR32_SYNTAX_##id, arch,			\
43.25646 -+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
43.25647 -+    AVR32_PARSER_NORMAL,					\
43.25648 -+    { &avr32_opc_table[AVR32_OPC_##opc], },		\
43.25649 -+    NULL, 1,						\
43.25650 -+    {							\
43.25651 -+      AVR32_OPERAND_##op0,				\
43.25652 -+    }							\
43.25653 -+  }
43.25654 -+#define SYNTAX_NORMALM1(id, mne, opc, op0, arch)		\
43.25655 -+  {							\
43.25656 -+    AVR32_SYNTAX_##id, arch,			\
43.25657 -+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
43.25658 -+    AVR32_PARSER_NORMAL,					\
43.25659 -+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
43.25660 -+    NULL, -1,						\
43.25661 -+    {							\
43.25662 -+      AVR32_OPERAND_##op0,				\
43.25663 -+    }							\
43.25664 -+  }
43.25665 -+#define SYNTAX_NORMAL2(id, mne, opc, op0, op1, arch)		\
43.25666 -+  {							\
43.25667 -+    AVR32_SYNTAX_##id, arch,			\
43.25668 -+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
43.25669 -+    AVR32_PARSER_NORMAL,					\
43.25670 -+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
43.25671 -+    NULL, 2,						\
43.25672 -+    {							\
43.25673 -+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
43.25674 -+    }							\
43.25675 -+  }
43.25676 -+#define SYNTAX_NORMALM2(id, mne, opc, op0, op1, arch)		\
43.25677 -+  {							\
43.25678 -+    AVR32_SYNTAX_##id, arch,			\
43.25679 -+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
43.25680 -+    AVR32_PARSER_NORMAL,					\
43.25681 -+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
43.25682 -+    NULL, -2,						\
43.25683 -+    {							\
43.25684 -+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
43.25685 -+    }							\
43.25686 -+  }
43.25687 -+#define SYNTAX_NORMAL3(id, mne, opc, op0, op1, op2, arch)	\
43.25688 -+  {							\
43.25689 -+    AVR32_SYNTAX_##id, arch,			\
43.25690 -+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
43.25691 -+    AVR32_PARSER_NORMAL,					\
43.25692 -+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
43.25693 -+    NULL, 3,						\
43.25694 -+    {							\
43.25695 -+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
43.25696 -+      AVR32_OPERAND_##op2,				\
43.25697 -+    }							\
43.25698 -+  }
43.25699 -+#define SYNTAX_NORMALM3(id, mne, opc, op0, op1, op2, arch)	\
43.25700 -+  {							\
43.25701 -+    AVR32_SYNTAX_##id, arch,			\
43.25702 -+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
43.25703 -+    AVR32_PARSER_NORMAL,					\
43.25704 -+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
43.25705 -+    NULL, -3,						\
43.25706 -+    {							\
43.25707 -+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
43.25708 -+      AVR32_OPERAND_##op2,				\
43.25709 -+    }							\
43.25710 -+  }
43.25711 -+#define SYNTAX_NORMAL4(id, mne, opc, op0, op1, op2, op3, arch)\
43.25712 -+  {							\
43.25713 -+    AVR32_SYNTAX_##id, arch,			\
43.25714 -+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
43.25715 -+    AVR32_PARSER_NORMAL,					\
43.25716 -+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
43.25717 -+    NULL, 4,						\
43.25718 -+    {							\
43.25719 -+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
43.25720 -+      AVR32_OPERAND_##op2, AVR32_OPERAND_##op3,		\
43.25721 -+    }							\
43.25722 -+  }
43.25723 -+#define SYNTAX_NORMAL5(id, mne, opc, op0, op1, op2, op3, op4, arch)	\
43.25724 -+  {								\
43.25725 -+    AVR32_SYNTAX_##id, arch,				\
43.25726 -+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],		\
43.25727 -+    AVR32_PARSER_NORMAL,						\
43.25728 -+    { &avr32_opc_table[AVR32_OPC_##opc], },				\
43.25729 -+    NULL, 5,							\
43.25730 -+    {								\
43.25731 -+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,			\
43.25732 -+      AVR32_OPERAND_##op2, AVR32_OPERAND_##op3,			\
43.25733 -+      AVR32_OPERAND_##op4,					\
43.25734 -+    }								\
43.25735 -+  }
43.25736 -+
43.25737 -+#define SYNTAX_NORMAL_C1(id, mne, opc, nxt, op0, arch)	\
43.25738 -+  {							\
43.25739 -+    AVR32_SYNTAX_##id, arch,			\
43.25740 -+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
43.25741 -+    AVR32_PARSER_NORMAL,					\
43.25742 -+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
43.25743 -+    &avr32_syntax_table[AVR32_SYNTAX_##nxt], 1,		\
43.25744 -+    {							\
43.25745 -+      AVR32_OPERAND_##op0,				\
43.25746 -+    }							\
43.25747 -+  }
43.25748 -+#define SYNTAX_NORMAL_CM1(id, mne, opc, nxt, op0, arch)	\
43.25749 -+  {							\
43.25750 -+    AVR32_SYNTAX_##id, arch,			\
43.25751 -+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
43.25752 -+    AVR32_PARSER_NORMAL,					\
43.25753 -+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
43.25754 -+    &avr32_syntax_table[AVR32_SYNTAX_##nxt], -1,	\
43.25755 -+    {							\
43.25756 -+      AVR32_OPERAND_##op0,				\
43.25757 -+    }							\
43.25758 -+  }
43.25759 -+#define SYNTAX_NORMAL_C2(id, mne, opc, nxt, op0, op1, arch)	\
43.25760 -+  {							\
43.25761 -+    AVR32_SYNTAX_##id, arch,			\
43.25762 -+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
43.25763 -+    AVR32_PARSER_NORMAL,					\
43.25764 -+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
43.25765 -+    &avr32_syntax_table[AVR32_SYNTAX_##nxt], 2,		\
43.25766 -+    {							\
43.25767 -+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
43.25768 -+    }							\
43.25769 -+  }
43.25770 -+#define SYNTAX_NORMAL_CM2(id, mne, opc, nxt, op0, op1, arch)	\
43.25771 -+  {							\
43.25772 -+    AVR32_SYNTAX_##id, arch,			\
43.25773 -+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
43.25774 -+    AVR32_PARSER_NORMAL,					\
43.25775 -+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
43.25776 -+    &avr32_syntax_table[AVR32_SYNTAX_##nxt], -2,	\
43.25777 -+    {							\
43.25778 -+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
43.25779 -+    }							\
43.25780 -+  }
43.25781 -+#define SYNTAX_NORMAL_C3(id, mne, opc, nxt, op0, op1, op2, arch)	\
43.25782 -+  {								\
43.25783 -+    AVR32_SYNTAX_##id, arch,				\
43.25784 -+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],		\
43.25785 -+    AVR32_PARSER_NORMAL,						\
43.25786 -+    { &avr32_opc_table[AVR32_OPC_##opc], },				\
43.25787 -+    &avr32_syntax_table[AVR32_SYNTAX_##nxt], 3,			\
43.25788 -+    {								\
43.25789 -+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,			\
43.25790 -+      AVR32_OPERAND_##op2,					\
43.25791 -+    }								\
43.25792 -+  }
43.25793 -+#define SYNTAX_NORMAL_CM3(id, mne, opc, nxt, op0, op1, op2, arch)	\
43.25794 -+  {								\
43.25795 -+    AVR32_SYNTAX_##id, arch,				\
43.25796 -+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],		\
43.25797 -+    AVR32_PARSER_NORMAL,						\
43.25798 -+    { &avr32_opc_table[AVR32_OPC_##opc], },				\
43.25799 -+    &avr32_syntax_table[AVR32_SYNTAX_##nxt], -3,		\
43.25800 -+    {								\
43.25801 -+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,			\
43.25802 -+      AVR32_OPERAND_##op2,					\
43.25803 -+    }								\
43.25804 -+  }
43.25805 -+
43.25806 -+#define SYNTAX_FP(name, nr_ops)					\
43.25807 -+    {								\
43.25808 -+      AVR32_SYNTAX_##name##_S,					\
43.25809 -+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,			\
43.25810 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_S] },	\
43.25811 -+      NULL, nr_ops,						\
43.25812 -+      {								\
43.25813 -+	AVR32_OPERAND_FPREG_S,					\
43.25814 -+	AVR32_OPERAND_FPREG_S,					\
43.25815 -+	AVR32_OPERAND_FPREG_S,					\
43.25816 -+      },							\
43.25817 -+    },								\
43.25818 -+    {								\
43.25819 -+      AVR32_SYNTAX_##name##_D,					\
43.25820 -+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,			\
43.25821 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_D] },	\
43.25822 -+      NULL, nr_ops,						\
43.25823 -+      {								\
43.25824 -+	AVR32_OPERAND_FPREG_D,					\
43.25825 -+	AVR32_OPERAND_FPREG_D,					\
43.25826 -+	AVR32_OPERAND_FPREG_D,					\
43.25827 -+      },							\
43.25828 -+    }
43.25829 -+
43.25830 -+const struct avr32_syntax avr32_syntax_table[] =
43.25831 -+  {
43.25832 -+    SYNTAX_NORMAL1(ABS, ABS, ABS, INTREG, AVR32_V1),
43.25833 -+    SYNTAX_NORMAL1(ACALL, ACALL, ACALL, UNSIGNED_CONST_W, AVR32_V1),
43.25834 -+    SYNTAX_NORMAL1(ACR, ACR, ACR, INTREG,AVR32_V1),
43.25835 -+    SYNTAX_NORMAL3(ADC, ADC, ADC, INTREG, INTREG, INTREG, AVR32_V1),
43.25836 -+    SYNTAX_NORMAL_C2(ADD1, ADD, ADD1, ADD2, INTREG, INTREG, AVR32_V1),
43.25837 -+    SYNTAX_NORMAL3(ADD2, ADD, ADD2, INTREG, INTREG, INTREG_LSL, AVR32_V1),
43.25838 -+    SYNTAX_NORMAL3(ADDABS, ADDABS, ADDABS, INTREG, INTREG, INTREG, AVR32_V1),
43.25839 -+    SYNTAX_NORMAL3(ADDHH_W, ADDHH_W, ADDHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
43.25840 -+    SYNTAX_NORMAL_C2(AND1, AND, AND1, AND2, INTREG, INTREG, AVR32_V1),
43.25841 -+    SYNTAX_NORMAL_C3(AND2, AND, AND2, AND3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
43.25842 -+    SYNTAX_NORMAL3(AND3, AND, AND3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
43.25843 -+    SYNTAX_NORMAL_C2(ANDH, ANDH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
43.25844 -+    SYNTAX_NORMAL3(ANDH_COH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
43.25845 -+    SYNTAX_NORMAL_C2(ANDL, ANDL, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
43.25846 -+    SYNTAX_NORMAL3(ANDL_COH, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
43.25847 -+    SYNTAX_NORMAL2(ANDN, ANDN, ANDN, INTREG, INTREG, AVR32_V1),
43.25848 -+    SYNTAX_NORMAL_C3(ASR1, ASR, ASR1, ASR3, INTREG, INTREG, INTREG, AVR32_V1),
43.25849 -+    SYNTAX_NORMAL_C3(ASR3, ASR, ASR3, ASR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
43.25850 -+    SYNTAX_NORMAL2(ASR2, ASR, ASR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
43.25851 -+    SYNTAX_NORMAL4(BFEXTS, BFEXTS, BFEXTS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
43.25852 -+    SYNTAX_NORMAL4(BFEXTU, BFEXTU, BFEXTU, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
43.25853 -+    SYNTAX_NORMAL4(BFINS, BFINS, BFINS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
43.25854 -+    SYNTAX_NORMAL2(BLD, BLD, BLD, INTREG, UNSIGNED_NUMBER, AVR32_V1),
43.25855 -+    SYNTAX_NORMAL_C1(BREQ1, BREQ, BREQ1, BREQ2, JMPLABEL, AVR32_V1),
43.25856 -+    SYNTAX_NORMAL_C1(BRNE1, BRNE, BRNE1, BRNE2, JMPLABEL, AVR32_V1),
43.25857 -+    SYNTAX_NORMAL_C1(BRCC1, BRCC, BRCC1, BRCC2, JMPLABEL, AVR32_V1),
43.25858 -+    SYNTAX_NORMAL_C1(BRCS1, BRCS, BRCS1, BRCS2, JMPLABEL, AVR32_V1),
43.25859 -+    SYNTAX_NORMAL_C1(BRGE1, BRGE, BRGE1, BRGE2, JMPLABEL, AVR32_V1),
43.25860 -+    SYNTAX_NORMAL_C1(BRLT1, BRLT, BRLT1, BRLT2, JMPLABEL, AVR32_V1),
43.25861 -+    SYNTAX_NORMAL_C1(BRMI1, BRMI, BRMI1, BRMI2, JMPLABEL, AVR32_V1),
43.25862 -+    SYNTAX_NORMAL_C1(BRPL1, BRPL, BRPL1, BRPL2, JMPLABEL, AVR32_V1),
43.25863 -+    SYNTAX_NORMAL_C1(BRHS1, BRHS, BRCC1, BRHS2, JMPLABEL, AVR32_V1),
43.25864 -+    SYNTAX_NORMAL_C1(BRLO1, BRLO, BRCS1, BRLO2, JMPLABEL, AVR32_V1),
43.25865 -+    SYNTAX_NORMAL1(BREQ2, BREQ, BREQ2, JMPLABEL, AVR32_V1),
43.25866 -+    SYNTAX_NORMAL1(BRNE2, BRNE, BRNE2, JMPLABEL, AVR32_V1),
43.25867 -+    SYNTAX_NORMAL1(BRCC2, BRCC, BRCC2, JMPLABEL, AVR32_V1),
43.25868 -+    SYNTAX_NORMAL1(BRCS2, BRCS, BRCS2, JMPLABEL, AVR32_V1),
43.25869 -+    SYNTAX_NORMAL1(BRGE2, BRGE, BRGE2, JMPLABEL, AVR32_V1),
43.25870 -+    SYNTAX_NORMAL1(BRLT2, BRLT, BRLT2, JMPLABEL, AVR32_V1),
43.25871 -+    SYNTAX_NORMAL1(BRMI2, BRMI, BRMI2, JMPLABEL, AVR32_V1),
43.25872 -+    SYNTAX_NORMAL1(BRPL2, BRPL, BRPL2, JMPLABEL, AVR32_V1),
43.25873 -+    SYNTAX_NORMAL1(BRLS, BRLS, BRLS, JMPLABEL, AVR32_V1),
43.25874 -+    SYNTAX_NORMAL1(BRGT, BRGT, BRGT, JMPLABEL, AVR32_V1),
43.25875 -+    SYNTAX_NORMAL1(BRLE, BRLE, BRLE, JMPLABEL, AVR32_V1),
43.25876 -+    SYNTAX_NORMAL1(BRHI, BRHI, BRHI, JMPLABEL, AVR32_V1),
43.25877 -+    SYNTAX_NORMAL1(BRVS, BRVS, BRVS, JMPLABEL, AVR32_V1),
43.25878 -+    SYNTAX_NORMAL1(BRVC, BRVC, BRVC, JMPLABEL, AVR32_V1),
43.25879 -+    SYNTAX_NORMAL1(BRQS, BRQS, BRQS, JMPLABEL, AVR32_V1),
43.25880 -+    SYNTAX_NORMAL1(BRAL, BRAL, BRAL, JMPLABEL, AVR32_V1),
43.25881 -+    SYNTAX_NORMAL1(BRHS2, BRHS, BRCC2, JMPLABEL, AVR32_V1),
43.25882 -+    SYNTAX_NORMAL1(BRLO2, BRLO, BRCS2, JMPLABEL, AVR32_V1),
43.25883 -+    SYNTAX_NORMAL0(BREAKPOINT, BREAKPOINT, BREAKPOINT, AVR32_V1),
43.25884 -+    SYNTAX_NORMAL1(BREV, BREV, BREV, INTREG, AVR32_V1),
43.25885 -+    SYNTAX_NORMAL2(BST, BST, BST, INTREG, UNSIGNED_NUMBER, AVR32_V1),
43.25886 -+    SYNTAX_NORMAL2(CACHE, CACHE, CACHE, INTREG_SDISP, UNSIGNED_NUMBER, AVR32_V1),
43.25887 -+    SYNTAX_NORMAL1(CASTS_B, CASTS_B, CASTS_B, INTREG, AVR32_V1),
43.25888 -+    SYNTAX_NORMAL1(CASTS_H, CASTS_H, CASTS_H, INTREG, AVR32_V1),
43.25889 -+    SYNTAX_NORMAL1(CASTU_B, CASTU_B, CASTU_B, INTREG, AVR32_V1),
43.25890 -+    SYNTAX_NORMAL1(CASTU_H, CASTU_H, CASTU_H, INTREG, AVR32_V1),
43.25891 -+    SYNTAX_NORMAL2(CBR, CBR, CBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
43.25892 -+    SYNTAX_NORMAL2(CLZ, CLZ, CLZ, INTREG, INTREG, AVR32_V1),
43.25893 -+    SYNTAX_NORMAL1(COM, COM, COM, INTREG, AVR32_V1),
43.25894 -+    SYNTAX_NORMAL5(COP, COP, COP, CPNO, CPREG, CPREG, CPREG, UNSIGNED_NUMBER, AVR32_V1),
43.25895 -+    SYNTAX_NORMAL2(CP_B, CP_B, CP_B, INTREG, INTREG, AVR32_V1),
43.25896 -+    SYNTAX_NORMAL2(CP_H, CP_H, CP_H, INTREG, INTREG, AVR32_V1),
43.25897 -+    SYNTAX_NORMAL_C2(CP_W1, CP_W, CP_W1, CP_W2, INTREG, INTREG, AVR32_V1),
43.25898 -+    SYNTAX_NORMAL_C2(CP_W2, CP_W, CP_W2, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
43.25899 -+    SYNTAX_NORMAL2(CP_W3, CP_W, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
43.25900 -+    SYNTAX_NORMAL_C2(CPC1, CPC, CPC1, CPC2, INTREG, INTREG, AVR32_V1),
43.25901 -+    SYNTAX_NORMAL1(CPC2, CPC, CPC2, INTREG, AVR32_V1),
43.25902 -+    SYNTAX_NORMAL1(CSRF, CSRF, CSRF, UNSIGNED_NUMBER, AVR32_V1),
43.25903 -+    SYNTAX_NORMAL1(CSRFCZ, CSRFCZ, CSRFCZ, UNSIGNED_NUMBER, AVR32_V1),
43.25904 -+    SYNTAX_NORMAL3(DIVS, DIVS, DIVS, INTREG, INTREG, INTREG, AVR32_V1),
43.25905 -+    SYNTAX_NORMAL3(DIVU, DIVU, DIVU, INTREG, INTREG, INTREG, AVR32_V1),
43.25906 -+    SYNTAX_NORMAL_C2(EOR1, EOR, EOR1, EOR2, INTREG, INTREG, AVR32_V1),
43.25907 -+    SYNTAX_NORMAL_C3(EOR2, EOR, EOR2, EOR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
43.25908 -+    SYNTAX_NORMAL3(EOR3, EOR, EOR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
43.25909 -+    SYNTAX_NORMAL2(EORL, EORL, EORL, INTREG, UNSIGNED_CONST, AVR32_V1),
43.25910 -+    SYNTAX_NORMAL2(EORH, EORH, EORH, INTREG, UNSIGNED_CONST, AVR32_V1),
43.25911 -+    SYNTAX_NORMAL0(FRS, FRS, FRS, AVR32_V1),
43.25912 -+    SYNTAX_NORMAL1(ICALL, ICALL, ICALL, INTREG, AVR32_V1),
43.25913 -+    SYNTAX_NORMAL1(INCJOSP, INCJOSP, INCJOSP, JOSPINC, AVR32_V1),
43.25914 -+    SYNTAX_NORMAL_C2(LD_D1, LD_D, LD_D1, LD_D2, DWREG, INTREG_POSTINC, AVR32_V1),
43.25915 -+    SYNTAX_NORMAL_C2(LD_D2, LD_D, LD_D2, LD_D3, DWREG, INTREG_PREDEC, AVR32_V1),
43.25916 -+    SYNTAX_NORMAL_C2(LD_D3, LD_D, LD_D3, LD_D5, DWREG, INTREG, AVR32_V1),
43.25917 -+    SYNTAX_NORMAL_C2(LD_D5, LD_D, LD_D5, LD_D4, DWREG, INTREG_INDEX, AVR32_V1),
43.25918 -+    SYNTAX_NORMAL2(LD_D4, LD_D, LD_D4, DWREG, INTREG_SDISP, AVR32_V1),
43.25919 -+    SYNTAX_NORMAL_C2(LD_SB2, LD_SB, LD_SB2, LD_SB1, INTREG, INTREG_INDEX, AVR32_V1),
43.25920 -+    SYNTAX_NORMAL2(LD_SB1, LD_SB, LD_SB1, INTREG, INTREG_SDISP, AVR32_V1),
43.25921 -+    SYNTAX_NORMAL_C2(LD_UB1, LD_UB, LD_UB1, LD_UB2, INTREG, INTREG_POSTINC, AVR32_V1),
43.25922 -+    SYNTAX_NORMAL_C2(LD_UB2, LD_UB, LD_UB2, LD_UB5, INTREG, INTREG_PREDEC, AVR32_V1),
43.25923 -+    SYNTAX_NORMAL_C2(LD_UB5, LD_UB, LD_UB5, LD_UB3, INTREG, INTREG_INDEX, AVR32_V1),
43.25924 -+    SYNTAX_NORMAL_C2(LD_UB3, LD_UB, LD_UB3, LD_UB4, INTREG, INTREG_UDISP, AVR32_V1),
43.25925 -+    SYNTAX_NORMAL2(LD_UB4, LD_UB, LD_UB4, INTREG, INTREG_SDISP, AVR32_V1),
43.25926 -+    SYNTAX_NORMAL_C2(LD_SH1, LD_SH, LD_SH1, LD_SH2, INTREG, INTREG_POSTINC, AVR32_V1),
43.25927 -+    SYNTAX_NORMAL_C2(LD_SH2, LD_SH, LD_SH2, LD_SH5, INTREG, INTREG_PREDEC, AVR32_V1),
43.25928 -+    SYNTAX_NORMAL_C2(LD_SH5, LD_SH, LD_SH5, LD_SH3, INTREG, INTREG_INDEX, AVR32_V1),
43.25929 -+    SYNTAX_NORMAL_C2(LD_SH3, LD_SH, LD_SH3, LD_SH4, INTREG, INTREG_UDISP_H, AVR32_V1),
43.25930 -+    SYNTAX_NORMAL2(LD_SH4, LD_SH, LD_SH4, INTREG, INTREG_SDISP, AVR32_V1),
43.25931 -+    SYNTAX_NORMAL_C2(LD_UH1, LD_UH, LD_UH1, LD_UH2, INTREG, INTREG_POSTINC, AVR32_V1),
43.25932 -+    SYNTAX_NORMAL_C2(LD_UH2, LD_UH, LD_UH2, LD_UH5, INTREG, INTREG_PREDEC, AVR32_V1),
43.25933 -+    SYNTAX_NORMAL_C2(LD_UH5, LD_UH, LD_UH5, LD_UH3, INTREG, INTREG_INDEX, AVR32_V1),
43.25934 -+    SYNTAX_NORMAL_C2(LD_UH3, LD_UH, LD_UH3, LD_UH4, INTREG, INTREG_UDISP_H, AVR32_V1),
43.25935 -+    SYNTAX_NORMAL2(LD_UH4, LD_UH, LD_UH4, INTREG, INTREG_SDISP, AVR32_V1),
43.25936 -+    SYNTAX_NORMAL_C2(LD_W1, LD_W, LD_W1, LD_W2, INTREG, INTREG_POSTINC, AVR32_V1),
43.25937 -+    SYNTAX_NORMAL_C2(LD_W2, LD_W, LD_W2, LD_W5, INTREG, INTREG_PREDEC, AVR32_V1),
43.25938 -+    SYNTAX_NORMAL_C2(LD_W5, LD_W, LD_W5, LD_W6, INTREG, INTREG_INDEX, AVR32_V1),
43.25939 -+    SYNTAX_NORMAL_C2(LD_W6, LD_W, LD_W6, LD_W3, INTREG, INTREG_XINDEX, AVR32_V1),
43.25940 -+    SYNTAX_NORMAL_C2(LD_W3, LD_W, LD_W3, LD_W4, INTREG, INTREG_UDISP_W, AVR32_V1),
43.25941 -+    SYNTAX_NORMAL2(LD_W4, LD_W, LD_W4, INTREG, INTREG_SDISP, AVR32_V1),
43.25942 -+    SYNTAX_NORMAL3(LDC_D1, LDC_D, LDC_D1, CPNO, CPREG_D, INTREG_UDISP_W, AVR32_V1),
43.25943 -+    SYNTAX_NORMAL_C3(LDC_D2, LDC_D, LDC_D2, LDC_D1, CPNO, CPREG_D, INTREG_PREDEC, AVR32_V1),
43.25944 -+    SYNTAX_NORMAL_C3(LDC_D3, LDC_D, LDC_D3, LDC_D2, CPNO, CPREG_D, INTREG_INDEX, AVR32_V1),
43.25945 -+    SYNTAX_NORMAL3(LDC_W1, LDC_W, LDC_W1, CPNO, CPREG, INTREG_UDISP_W, AVR32_V1),
43.25946 -+    SYNTAX_NORMAL_C3(LDC_W2, LDC_W, LDC_W2, LDC_W1, CPNO, CPREG, INTREG_PREDEC, AVR32_V1),
43.25947 -+    SYNTAX_NORMAL_C3(LDC_W3, LDC_W, LDC_W3, LDC_W2, CPNO, CPREG, INTREG_INDEX, AVR32_V1),
43.25948 -+    SYNTAX_NORMAL2(LDC0_D, LDC0_D, LDC0_D, CPREG_D, INTREG_UDISP_W, AVR32_V1),
43.25949 -+    SYNTAX_NORMAL2(LDC0_W, LDC0_W, LDC0_W, CPREG, INTREG_UDISP_W, AVR32_V1),
43.25950 -+    SYNTAX_NORMAL_CM3(LDCM_D, LDCM_D, LDCM_D, LDCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
43.25951 -+    SYNTAX_NORMALM3(LDCM_D_PU, LDCM_D, LDCM_D_PU, CPNO, INTREG_POSTINC, REGLIST_CPD8, AVR32_V1),
43.25952 -+    SYNTAX_NORMAL_CM3(LDCM_W, LDCM_W, LDCM_W, LDCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
43.25953 -+    SYNTAX_NORMALM3(LDCM_W_PU, LDCM_W, LDCM_W_PU, CPNO, INTREG_POSTINC, REGLIST_CP8, AVR32_V1),
43.25954 -+    SYNTAX_NORMAL2(LDDPC, LDDPC, LDDPC, INTREG, PC_UDISP_W, AVR32_V1),
43.25955 -+    SYNTAX_NORMAL2(LDDPC_EXT, LDDPC, LDDPC_EXT, INTREG, SIGNED_CONST, AVR32_V1),
43.25956 -+    SYNTAX_NORMAL2(LDDSP, LDDSP, LDDSP, INTREG, SP_UDISP_W, AVR32_V1),
43.25957 -+    SYNTAX_NORMAL2(LDINS_B, LDINS_B, LDINS_B, INTREG_BSEL, INTREG_SDISP, AVR32_V1),
43.25958 -+    SYNTAX_NORMAL2(LDINS_H, LDINS_H, LDINS_H, INTREG_HSEL, INTREG_SDISP_H, AVR32_V1),
43.25959 -+    SYNTAX_NORMALM1(LDM, LDM, LDM, REGLIST_LDM, AVR32_V1),
43.25960 -+    SYNTAX_NORMAL_CM2(LDMTS, LDMTS, LDMTS, LDMTS_PU, INTREG, REGLIST16, AVR32_V1),
43.25961 -+    SYNTAX_NORMALM2(LDMTS_PU, LDMTS, LDMTS_PU, INTREG_POSTINC, REGLIST16, AVR32_V1),
43.25962 -+    SYNTAX_NORMAL2(LDSWP_SH, LDSWP_SH, LDSWP_SH, INTREG, INTREG_SDISP_H, AVR32_V1),
43.25963 -+    SYNTAX_NORMAL2(LDSWP_UH, LDSWP_UH, LDSWP_UH, INTREG, INTREG_SDISP_H, AVR32_V1),
43.25964 -+    SYNTAX_NORMAL2(LDSWP_W, LDSWP_W, LDSWP_W, INTREG, INTREG_SDISP_W, AVR32_V1),
43.25965 -+    SYNTAX_NORMAL_C3(LSL1, LSL, LSL1, LSL3, INTREG, INTREG, INTREG, AVR32_V1),
43.25966 -+    SYNTAX_NORMAL_C3(LSL3, LSL, LSL3, LSL2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
43.25967 -+    SYNTAX_NORMAL2(LSL2, LSL, LSL2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
43.25968 -+    SYNTAX_NORMAL_C3(LSR1, LSR, LSR1, LSR3, INTREG, INTREG, INTREG, AVR32_V1),
43.25969 -+    SYNTAX_NORMAL_C3(LSR3, LSR, LSR3, LSR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
43.25970 -+    SYNTAX_NORMAL2(LSR2, LSR, LSR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
43.25971 -+    SYNTAX_NORMAL3(MAC, MAC, MAC, INTREG, INTREG, INTREG, AVR32_V1),
43.25972 -+    SYNTAX_NORMAL3(MACHH_D, MACHH_D, MACHH_D, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
43.25973 -+    SYNTAX_NORMAL3(MACHH_W, MACHH_W, MACHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
43.25974 -+    SYNTAX_NORMAL3(MACS_D, MACS_D, MACS_D, INTREG, INTREG, INTREG, AVR32_V1),
43.25975 -+    SYNTAX_NORMAL3(MACSATHH_W, MACSATHH_W, MACSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
43.25976 -+    SYNTAX_NORMAL3(MACUD, MACU_D, MACUD, INTREG, INTREG, INTREG, AVR32_V1),
43.25977 -+    SYNTAX_NORMAL3(MACWH_D, MACWH_D, MACWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
43.25978 -+    SYNTAX_NORMAL3(MAX, MAX, MAX, INTREG, INTREG, INTREG, AVR32_V1),
43.25979 -+    SYNTAX_NORMAL1(MCALL, MCALL, MCALL, MCALL, AVR32_V1),
43.25980 -+    SYNTAX_NORMAL2(MFDR, MFDR, MFDR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
43.25981 -+    SYNTAX_NORMAL2(MFSR, MFSR, MFSR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
43.25982 -+    SYNTAX_NORMAL3(MIN, MIN, MIN, INTREG, INTREG, INTREG, AVR32_V1),
43.25983 -+    SYNTAX_NORMAL_C2(MOV3, MOV, MOV3, MOV1, INTREG, INTREG, AVR32_V1),
43.25984 -+    SYNTAX_NORMAL_C2(MOV1, MOV, MOV1, MOV2, INTREG, SIGNED_CONST, AVR32_V1),
43.25985 -+    SYNTAX_NORMAL2(MOV2, MOV, MOV2,INTREG, SIGNED_CONST, AVR32_V1),
43.25986 -+    SYNTAX_NORMAL_C2(MOVEQ1, MOVEQ, MOVEQ1, MOVEQ2, INTREG, INTREG, AVR32_V1),
43.25987 -+    SYNTAX_NORMAL_C2(MOVNE1, MOVNE, MOVNE1, MOVNE2, INTREG, INTREG, AVR32_V1),
43.25988 -+    SYNTAX_NORMAL_C2(MOVCC1, MOVCC, MOVCC1, MOVCC2, INTREG, INTREG, AVR32_V1),
43.25989 -+    SYNTAX_NORMAL_C2(MOVCS1, MOVCS, MOVCS1, MOVCS2, INTREG, INTREG, AVR32_V1),
43.25990 -+    SYNTAX_NORMAL_C2(MOVGE1, MOVGE, MOVGE1, MOVGE2, INTREG, INTREG, AVR32_V1),
43.25991 -+    SYNTAX_NORMAL_C2(MOVLT1, MOVLT, MOVLT1, MOVLT2, INTREG, INTREG, AVR32_V1),
43.25992 -+    SYNTAX_NORMAL_C2(MOVMI1, MOVMI, MOVMI1, MOVMI2, INTREG, INTREG, AVR32_V1),
43.25993 -+    SYNTAX_NORMAL_C2(MOVPL1, MOVPL, MOVPL1, MOVPL2, INTREG, INTREG, AVR32_V1),
43.25994 -+    SYNTAX_NORMAL_C2(MOVLS1, MOVLS, MOVLS1, MOVLS2, INTREG, INTREG, AVR32_V1),
43.25995 -+    SYNTAX_NORMAL_C2(MOVGT1, MOVGT, MOVGT1, MOVGT2, INTREG, INTREG, AVR32_V1),
43.25996 -+    SYNTAX_NORMAL_C2(MOVLE1, MOVLE, MOVLE1, MOVLE2, INTREG, INTREG, AVR32_V1),
43.25997 -+    SYNTAX_NORMAL_C2(MOVHI1, MOVHI, MOVHI1, MOVHI2, INTREG, INTREG, AVR32_V1),
43.25998 -+    SYNTAX_NORMAL_C2(MOVVS1, MOVVS, MOVVS1, MOVVS2, INTREG, INTREG, AVR32_V1),
43.25999 -+    SYNTAX_NORMAL_C2(MOVVC1, MOVVC, MOVVC1, MOVVC2, INTREG, INTREG, AVR32_V1),
43.26000 -+    SYNTAX_NORMAL_C2(MOVQS1, MOVQS, MOVQS1, MOVQS2, INTREG, INTREG, AVR32_V1),
43.26001 -+    SYNTAX_NORMAL_C2(MOVAL1, MOVAL, MOVAL1, MOVAL2, INTREG, INTREG, AVR32_V1),
43.26002 -+    SYNTAX_NORMAL_C2(MOVHS1, MOVHS, MOVCC1, MOVHS2, INTREG, INTREG, AVR32_V1),
43.26003 -+    SYNTAX_NORMAL_C2(MOVLO1, MOVLO, MOVCS1, MOVLO2, INTREG, INTREG, AVR32_V1),
43.26004 -+    SYNTAX_NORMAL2(MOVEQ2, MOVEQ, MOVEQ2, INTREG, SIGNED_CONST, AVR32_V1),
43.26005 -+    SYNTAX_NORMAL2(MOVNE2, MOVNE, MOVNE2, INTREG, SIGNED_CONST, AVR32_V1),
43.26006 -+    SYNTAX_NORMAL2(MOVCC2, MOVCC, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
43.26007 -+    SYNTAX_NORMAL2(MOVCS2, MOVCS, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
43.26008 -+    SYNTAX_NORMAL2(MOVGE2, MOVGE, MOVGE2, INTREG, SIGNED_CONST, AVR32_V1),
43.26009 -+    SYNTAX_NORMAL2(MOVLT2, MOVLT, MOVLT2, INTREG, SIGNED_CONST, AVR32_V1),
43.26010 -+    SYNTAX_NORMAL2(MOVMI2, MOVMI, MOVMI2, INTREG, SIGNED_CONST, AVR32_V1),
43.26011 -+    SYNTAX_NORMAL2(MOVPL2, MOVPL, MOVPL2, INTREG, SIGNED_CONST, AVR32_V1),
43.26012 -+    SYNTAX_NORMAL2(MOVLS2, MOVLS, MOVLS2, INTREG, SIGNED_CONST, AVR32_V1),
43.26013 -+    SYNTAX_NORMAL2(MOVGT2, MOVGT, MOVGT2, INTREG, SIGNED_CONST, AVR32_V1),
43.26014 -+    SYNTAX_NORMAL2(MOVLE2, MOVLE, MOVLE2, INTREG, SIGNED_CONST, AVR32_V1),
43.26015 -+    SYNTAX_NORMAL2(MOVHI2, MOVHI, MOVHI2, INTREG, SIGNED_CONST, AVR32_V1),
43.26016 -+    SYNTAX_NORMAL2(MOVVS2, MOVVS, MOVVS2, INTREG, SIGNED_CONST, AVR32_V1),
43.26017 -+    SYNTAX_NORMAL2(MOVVC2, MOVVC, MOVVC2, INTREG, SIGNED_CONST, AVR32_V1),
43.26018 -+    SYNTAX_NORMAL2(MOVQS2, MOVQS, MOVQS2, INTREG, SIGNED_CONST, AVR32_V1),
43.26019 -+    SYNTAX_NORMAL2(MOVAL2, MOVAL, MOVAL2, INTREG, SIGNED_CONST, AVR32_V1),
43.26020 -+    SYNTAX_NORMAL2(MOVHS2, MOVHS, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
43.26021 -+    SYNTAX_NORMAL2(MOVLO2, MOVLO, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
43.26022 -+    SYNTAX_NORMAL2(MTDR, MTDR, MTDR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
43.26023 -+    SYNTAX_NORMAL2(MTSR, MTSR, MTSR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
43.26024 -+    SYNTAX_NORMAL_C2(MUL1, MUL, MUL1, MUL2, INTREG, INTREG, AVR32_V1),
43.26025 -+    SYNTAX_NORMAL_C3(MUL2, MUL, MUL2, MUL3, INTREG, INTREG, INTREG, AVR32_V1),
43.26026 -+    SYNTAX_NORMAL3(MUL3, MUL, MUL3, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
43.26027 -+    SYNTAX_NORMAL3(MULHH_W, MULHH_W, MULHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
43.26028 -+    SYNTAX_NORMAL3(MULNHH_W, MULNHH_W, MULNHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
43.26029 -+    SYNTAX_NORMAL3(MULNWH_D, MULNWH_D, MULNWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
43.26030 -+    SYNTAX_NORMAL3(MULSD, MULS_D, MULSD, INTREG, INTREG, INTREG, AVR32_V1),
43.26031 -+    SYNTAX_NORMAL3(MULSATHH_H, MULSATHH_H, MULSATHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
43.26032 -+    SYNTAX_NORMAL3(MULSATHH_W, MULSATHH_W, MULSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
43.26033 -+    SYNTAX_NORMAL3(MULSATRNDHH_H, MULSATRNDHH_H, MULSATRNDHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
43.26034 -+    SYNTAX_NORMAL3(MULSATRNDWH_W, MULSATRNDWH_W, MULSATRNDWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
43.26035 -+    SYNTAX_NORMAL3(MULSATWH_W, MULSATWH_W, MULSATWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
43.26036 -+    SYNTAX_NORMAL3(MULU_D, MULU_D, MULU_D, INTREG, INTREG, INTREG, AVR32_V1),
43.26037 -+    SYNTAX_NORMAL3(MULWH_D, MULWH_D, MULWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
43.26038 -+    SYNTAX_NORMAL1(MUSFR, MUSFR, MUSFR, INTREG, AVR32_V1),
43.26039 -+    SYNTAX_NORMAL1(MUSTR, MUSTR, MUSTR, INTREG, AVR32_V1),
43.26040 -+    SYNTAX_NORMAL3(MVCR_D, MVCR_D, MVCR_D, CPNO, DWREG, CPREG_D, AVR32_V1),
43.26041 -+    SYNTAX_NORMAL3(MVCR_W, MVCR_W, MVCR_W, CPNO, INTREG, CPREG, AVR32_V1),
43.26042 -+    SYNTAX_NORMAL3(MVRC_D, MVRC_D, MVRC_D, CPNO, CPREG_D, DWREG, AVR32_V1),
43.26043 -+    SYNTAX_NORMAL3(MVRC_W, MVRC_W, MVRC_W, CPNO, CPREG, INTREG, AVR32_V1),
43.26044 -+    SYNTAX_NORMAL1(NEG, NEG, NEG, INTREG, AVR32_V1),
43.26045 -+    SYNTAX_NORMAL0(NOP, NOP, NOP, AVR32_V1),
43.26046 -+    SYNTAX_NORMAL_C2(OR1, OR, OR1, OR2, INTREG, INTREG, AVR32_V1),
43.26047 -+    SYNTAX_NORMAL_C3(OR2, OR, OR2, OR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
43.26048 -+    SYNTAX_NORMAL3(OR3, OR, OR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
43.26049 -+    SYNTAX_NORMAL2(ORH, ORH, ORH, INTREG, UNSIGNED_CONST, AVR32_V1),
43.26050 -+    SYNTAX_NORMAL2(ORL, ORL, ORL, INTREG, UNSIGNED_CONST, AVR32_V1),
43.26051 -+    SYNTAX_NORMAL2(PABS_SB, PABS_SB, PABS_SB, INTREG, INTREG, AVR32_SIMD),
43.26052 -+    SYNTAX_NORMAL2(PABS_SH, PABS_SH, PABS_SH, INTREG, INTREG, AVR32_SIMD),
43.26053 -+    SYNTAX_NORMAL3(PACKSH_SB, PACKSH_SB, PACKSH_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26054 -+    SYNTAX_NORMAL3(PACKSH_UB, PACKSH_UB, PACKSH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26055 -+    SYNTAX_NORMAL3(PACKW_SH, PACKW_SH, PACKW_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26056 -+    SYNTAX_NORMAL3(PADD_B, PADD_B, PADD_B, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26057 -+    SYNTAX_NORMAL3(PADD_H, PADD_H, PADD_H, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26058 -+    SYNTAX_NORMAL3(PADDH_SH, PADDH_SH, PADDH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26059 -+    SYNTAX_NORMAL3(PADDH_UB, PADDH_UB, PADDH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26060 -+    SYNTAX_NORMAL3(PADDS_SB, PADDS_SB, PADDS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26061 -+    SYNTAX_NORMAL3(PADDS_SH, PADDS_SH, PADDS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26062 -+    SYNTAX_NORMAL3(PADDS_UB, PADDS_UB, PADDS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26063 -+    SYNTAX_NORMAL3(PADDS_UH, PADDS_UH, PADDS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26064 -+    SYNTAX_NORMAL3(PADDSUB_H, PADDSUB_H, PADDSUB_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
43.26065 -+    SYNTAX_NORMAL3(PADDSUBH_SH, PADDSUBH_SH, PADDSUBH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
43.26066 -+    SYNTAX_NORMAL3(PADDSUBS_SH, PADDSUBS_SH, PADDSUBS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
43.26067 -+    SYNTAX_NORMAL3(PADDSUBS_UH, PADDSUBS_UH, PADDSUBS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
43.26068 -+    SYNTAX_NORMAL3(PADDX_H, PADDX_H, PADDX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26069 -+    SYNTAX_NORMAL3(PADDXH_SH, PADDXH_SH, PADDXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26070 -+    SYNTAX_NORMAL3(PADDXS_SH, PADDXS_SH, PADDXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26071 -+    SYNTAX_NORMAL3(PADDXS_UH, PADDXS_UH, PADDXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26072 -+    SYNTAX_NORMAL3(PASR_B, PASR_B, PASR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
43.26073 -+    SYNTAX_NORMAL3(PASR_H, PASR_H, PASR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
43.26074 -+    SYNTAX_NORMAL3(PAVG_SH, PAVG_SH, PAVG_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26075 -+    SYNTAX_NORMAL3(PAVG_UB, PAVG_UB, PAVG_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26076 -+    SYNTAX_NORMAL3(PLSL_B, PLSL_B, PLSL_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
43.26077 -+    SYNTAX_NORMAL3(PLSL_H, PLSL_H, PLSL_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
43.26078 -+    SYNTAX_NORMAL3(PLSR_B, PLSR_B, PLSR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
43.26079 -+    SYNTAX_NORMAL3(PLSR_H, PLSR_H, PLSR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
43.26080 -+    SYNTAX_NORMAL3(PMAX_SH, PMAX_SH, PMAX_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26081 -+    SYNTAX_NORMAL3(PMAX_UB, PMAX_UB, PMAX_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26082 -+    SYNTAX_NORMAL3(PMIN_SH, PMIN_SH, PMIN_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26083 -+    SYNTAX_NORMAL3(PMIN_UB, PMIN_UB, PMIN_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26084 -+    SYNTAX_NORMAL0(POPJC, POPJC, POPJC, AVR32_V1),
43.26085 -+    SYNTAX_NORMAL_CM1(POPM, POPM, POPM, POPM_E, REGLIST9, AVR32_V1),
43.26086 -+    SYNTAX_NORMALM1(POPM_E, POPM, POPM_E, REGLIST16, AVR32_V1),
43.26087 -+    SYNTAX_NORMAL1(PREF, PREF, PREF, INTREG_SDISP, AVR32_V1),
43.26088 -+    SYNTAX_NORMAL3(PSAD, PSAD, PSAD, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26089 -+    SYNTAX_NORMAL3(PSUB_B, PSUB_B, PSUB_B, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26090 -+    SYNTAX_NORMAL3(PSUB_H, PSUB_H, PSUB_H, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26091 -+    SYNTAX_NORMAL3(PSUBADD_H, PSUBADD_H, PSUBADD_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
43.26092 -+    SYNTAX_NORMAL3(PSUBADDH_SH, PSUBADDH_SH, PSUBADDH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
43.26093 -+    SYNTAX_NORMAL3(PSUBADDS_SH, PSUBADDS_SH, PSUBADDS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
43.26094 -+    SYNTAX_NORMAL3(PSUBADDS_UH, PSUBADDS_UH, PSUBADDS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
43.26095 -+    SYNTAX_NORMAL3(PSUBH_SH, PSUBH_SH, PSUBH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26096 -+    SYNTAX_NORMAL3(PSUBH_UB, PSUBH_UB, PSUBH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26097 -+    SYNTAX_NORMAL3(PSUBS_SB, PSUBS_SB, PSUBS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26098 -+    SYNTAX_NORMAL3(PSUBS_SH, PSUBS_SH, PSUBS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26099 -+    SYNTAX_NORMAL3(PSUBS_UB, PSUBS_UB, PSUBS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26100 -+    SYNTAX_NORMAL3(PSUBS_UH, PSUBS_UH, PSUBS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26101 -+    SYNTAX_NORMAL3(PSUBX_H, PSUBX_H, PSUBX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26102 -+    SYNTAX_NORMAL3(PSUBXH_SH, PSUBXH_SH, PSUBXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26103 -+    SYNTAX_NORMAL3(PSUBXS_SH, PSUBXS_SH, PSUBXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26104 -+    SYNTAX_NORMAL3(PSUBXS_UH, PSUBXS_UH, PSUBXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
43.26105 -+    SYNTAX_NORMAL2(PUNPCKSB_H, PUNPCKSB_H, PUNPCKSB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
43.26106 -+    SYNTAX_NORMAL2(PUNPCKUB_H, PUNPCKUB_H, PUNPCKUB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
43.26107 -+    SYNTAX_NORMAL0(PUSHJC, PUSHJC, PUSHJC, AVR32_V1),
43.26108 -+    SYNTAX_NORMAL_CM1(PUSHM, PUSHM, PUSHM, PUSHM_E, REGLIST8, AVR32_V1),
43.26109 -+    SYNTAX_NORMALM1(PUSHM_E, PUSHM, PUSHM_E, REGLIST16, AVR32_V1),
43.26110 -+    SYNTAX_NORMAL_C1(RCALL1, RCALL, RCALL1, RCALL2, JMPLABEL, AVR32_V1),
43.26111 -+    SYNTAX_NORMAL1(RCALL2, RCALL, RCALL2, JMPLABEL, AVR32_V1),
43.26112 -+    SYNTAX_NORMAL1(RETEQ, RETEQ, RETEQ, RETVAL, AVR32_V1),
43.26113 -+    SYNTAX_NORMAL1(RETNE, RETNE, RETNE, RETVAL, AVR32_V1),
43.26114 -+    SYNTAX_NORMAL1(RETCC, RETCC, RETCC, RETVAL, AVR32_V1),
43.26115 -+    SYNTAX_NORMAL1(RETCS, RETCS, RETCS, RETVAL, AVR32_V1),
43.26116 -+    SYNTAX_NORMAL1(RETGE, RETGE, RETGE, RETVAL, AVR32_V1),
43.26117 -+    SYNTAX_NORMAL1(RETLT, RETLT, RETLT, RETVAL, AVR32_V1),
43.26118 -+    SYNTAX_NORMAL1(RETMI, RETMI, RETMI, RETVAL, AVR32_V1),
43.26119 -+    SYNTAX_NORMAL1(RETPL, RETPL, RETPL, RETVAL, AVR32_V1),
43.26120 -+    SYNTAX_NORMAL1(RETLS, RETLS, RETLS, RETVAL, AVR32_V1),
43.26121 -+    SYNTAX_NORMAL1(RETGT, RETGT, RETGT, RETVAL, AVR32_V1),
43.26122 -+    SYNTAX_NORMAL1(RETLE, RETLE, RETLE, RETVAL, AVR32_V1),
43.26123 -+    SYNTAX_NORMAL1(RETHI, RETHI, RETHI, RETVAL, AVR32_V1),
43.26124 -+    SYNTAX_NORMAL1(RETVS, RETVS, RETVS, RETVAL, AVR32_V1),
43.26125 -+    SYNTAX_NORMAL1(RETVC, RETVC, RETVC, RETVAL, AVR32_V1),
43.26126 -+    SYNTAX_NORMAL1(RETQS, RETQS, RETQS, RETVAL, AVR32_V1),
43.26127 -+    SYNTAX_NORMAL1(RETAL, RETAL, RETAL, RETVAL, AVR32_V1),
43.26128 -+    SYNTAX_NORMAL1(RETHS, RETHS, RETCC, RETVAL, AVR32_V1),
43.26129 -+    SYNTAX_NORMAL1(RETLO, RETLO, RETCS, RETVAL, AVR32_V1),
43.26130 -+    SYNTAX_NORMAL0(RETD, RETD, RETD, AVR32_V1),
43.26131 -+    SYNTAX_NORMAL0(RETE, RETE, RETE, AVR32_V1),
43.26132 -+    SYNTAX_NORMAL0(RETJ, RETJ, RETJ, AVR32_V1),
43.26133 -+    SYNTAX_NORMAL0(RETS, RETS, RETS, AVR32_V1),
43.26134 -+    SYNTAX_NORMAL1(RJMP, RJMP, RJMP, JMPLABEL, AVR32_V1),
43.26135 -+    SYNTAX_NORMAL1(ROL, ROL, ROL, INTREG, AVR32_V1),
43.26136 -+    SYNTAX_NORMAL1(ROR, ROR, ROR, INTREG, AVR32_V1),
43.26137 -+    SYNTAX_NORMAL_C2(RSUB1, RSUB, RSUB1, RSUB2, INTREG, INTREG, AVR32_V1),
43.26138 -+    SYNTAX_NORMAL3(RSUB2, RSUB, RSUB2, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
43.26139 -+    SYNTAX_NORMAL3(SATADD_H, SATADD_H, SATADD_H, INTREG, INTREG, INTREG,  AVR32_DSP),
43.26140 -+    SYNTAX_NORMAL3(SATADD_W, SATADD_W, SATADD_W, INTREG, INTREG, INTREG, AVR32_DSP),
43.26141 -+    SYNTAX_NORMAL2(SATRNDS, SATRNDS, SATRNDS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
43.26142 -+    SYNTAX_NORMAL2(SATRNDU, SATRNDU, SATRNDU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
43.26143 -+    SYNTAX_NORMAL2(SATS, SATS, SATS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
43.26144 -+    SYNTAX_NORMAL3(SATSUB_H, SATSUB_H, SATSUB_H, INTREG, INTREG, INTREG, AVR32_DSP),
43.26145 -+    SYNTAX_NORMAL_C3(SATSUB_W1, SATSUB_W, SATSUB_W1, SATSUB_W2, INTREG, INTREG, INTREG, AVR32_DSP),
43.26146 -+    SYNTAX_NORMAL3(SATSUB_W2, SATSUB_W, SATSUB_W2, INTREG, INTREG, SIGNED_CONST, AVR32_DSP),
43.26147 -+    SYNTAX_NORMAL2(SATU, SATU, SATU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_V1),
43.26148 -+    SYNTAX_NORMAL3(SBC, SBC, SBC, INTREG, INTREG, INTREG, AVR32_V1),
43.26149 -+    SYNTAX_NORMAL2(SBR, SBR, SBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
43.26150 -+    SYNTAX_NORMAL0(SCALL, SCALL, SCALL, AVR32_V1),
43.26151 -+    SYNTAX_NORMAL1(SCR, SCR, SCR, INTREG, AVR32_V1),
43.26152 -+    SYNTAX_NORMAL1(SLEEP, SLEEP, SLEEP, UNSIGNED_CONST, AVR32_V1),
43.26153 -+    SYNTAX_NORMAL1(SREQ, SREQ, SREQ, INTREG, AVR32_V1),
43.26154 -+    SYNTAX_NORMAL1(SRNE, SRNE, SRNE, INTREG, AVR32_V1),
43.26155 -+    SYNTAX_NORMAL1(SRCC, SRCC, SRCC, INTREG, AVR32_V1),
43.26156 -+    SYNTAX_NORMAL1(SRCS, SRCS, SRCS, INTREG, AVR32_V1),
43.26157 -+    SYNTAX_NORMAL1(SRGE, SRGE, SRGE, INTREG, AVR32_V1),
43.26158 -+    SYNTAX_NORMAL1(SRLT, SRLT, SRLT, INTREG, AVR32_V1),
43.26159 -+    SYNTAX_NORMAL1(SRMI, SRMI, SRMI, INTREG, AVR32_V1),
43.26160 -+    SYNTAX_NORMAL1(SRPL, SRPL, SRPL, INTREG, AVR32_V1),
43.26161 -+    SYNTAX_NORMAL1(SRLS, SRLS, SRLS, INTREG, AVR32_V1),
43.26162 -+    SYNTAX_NORMAL1(SRGT, SRGT, SRGT, INTREG, AVR32_V1),
43.26163 -+    SYNTAX_NORMAL1(SRLE, SRLE, SRLE, INTREG, AVR32_V1),
43.26164 -+    SYNTAX_NORMAL1(SRHI, SRHI, SRHI, INTREG, AVR32_V1),
43.26165 -+    SYNTAX_NORMAL1(SRVS, SRVS, SRVS, INTREG, AVR32_V1),
43.26166 -+    SYNTAX_NORMAL1(SRVC, SRVC, SRVC, INTREG, AVR32_V1),
43.26167 -+    SYNTAX_NORMAL1(SRQS, SRQS, SRQS, INTREG, AVR32_V1),
43.26168 -+    SYNTAX_NORMAL1(SRAL, SRAL, SRAL, INTREG, AVR32_V1),
43.26169 -+    SYNTAX_NORMAL1(SRHS, SRHS, SRCC, INTREG, AVR32_V1),
43.26170 -+    SYNTAX_NORMAL1(SRLO, SRLO, SRCS, INTREG, AVR32_V1),
43.26171 -+    SYNTAX_NORMAL1(SSRF, SSRF, SSRF, UNSIGNED_NUMBER, AVR32_V1),
43.26172 -+    SYNTAX_NORMAL_C2(ST_B1, ST_B, ST_B1, ST_B2, INTREG_POSTINC, INTREG, AVR32_V1),
43.26173 -+    SYNTAX_NORMAL_C2(ST_B2, ST_B, ST_B2, ST_B5, INTREG_PREDEC, INTREG, AVR32_V1),
43.26174 -+    SYNTAX_NORMAL_C2(ST_B5, ST_B, ST_B5, ST_B3, INTREG_INDEX, INTREG, AVR32_V1),
43.26175 -+    SYNTAX_NORMAL_C2(ST_B3, ST_B, ST_B3, ST_B4, INTREG_UDISP, INTREG, AVR32_V1),
43.26176 -+    SYNTAX_NORMAL2(ST_B4, ST_B, ST_B4, INTREG_SDISP, INTREG, AVR32_V1),
43.26177 -+    SYNTAX_NORMAL_C2(ST_D1, ST_D, ST_D1, ST_D2, INTREG_POSTINC, DWREG, AVR32_V1),
43.26178 -+    SYNTAX_NORMAL_C2(ST_D2, ST_D, ST_D2, ST_D3, INTREG_PREDEC, DWREG, AVR32_V1),
43.26179 -+    SYNTAX_NORMAL_C2(ST_D3, ST_D, ST_D3, ST_D5, INTREG, DWREG, AVR32_V1),
43.26180 -+    SYNTAX_NORMAL_C2(ST_D5, ST_D, ST_D5, ST_D4, INTREG_INDEX, DWREG, AVR32_V1),
43.26181 -+    SYNTAX_NORMAL2(ST_D4, ST_D, ST_D4, INTREG_SDISP, DWREG, AVR32_V1),
43.26182 -+    SYNTAX_NORMAL_C2(ST_H1, ST_H, ST_H1, ST_H2, INTREG_POSTINC, INTREG, AVR32_V1),
43.26183 -+    SYNTAX_NORMAL_C2(ST_H2, ST_H, ST_H2, ST_H5, INTREG_PREDEC, INTREG, AVR32_V1),
43.26184 -+    SYNTAX_NORMAL_C2(ST_H5, ST_H, ST_H5, ST_H3, INTREG_INDEX, INTREG, AVR32_V1),
43.26185 -+    SYNTAX_NORMAL_C2(ST_H3, ST_H, ST_H3, ST_H4, INTREG_UDISP_H, INTREG, AVR32_V1),
43.26186 -+    SYNTAX_NORMAL2(ST_H4, ST_H, ST_H4, INTREG_SDISP, INTREG, AVR32_V1),
43.26187 -+    SYNTAX_NORMAL_C2(ST_W1, ST_W, ST_W1, ST_W2, INTREG_POSTINC, INTREG, AVR32_V1),
43.26188 -+    SYNTAX_NORMAL_C2(ST_W2, ST_W, ST_W2, ST_W5, INTREG_PREDEC, INTREG, AVR32_V1),
43.26189 -+    SYNTAX_NORMAL_C2(ST_W5, ST_W, ST_W5, ST_W3, INTREG_INDEX, INTREG, AVR32_V1),
43.26190 -+    SYNTAX_NORMAL_C2(ST_W3, ST_W, ST_W3, ST_W4, INTREG_UDISP_W, INTREG, AVR32_V1),
43.26191 -+    SYNTAX_NORMAL2(ST_W4, ST_W, ST_W4, INTREG_SDISP, INTREG, AVR32_V1),
43.26192 -+    SYNTAX_NORMAL3(STC_D1, STC_D, STC_D1, CPNO, INTREG_UDISP_W, CPREG_D, AVR32_V1),
43.26193 -+    SYNTAX_NORMAL_C3(STC_D2, STC_D, STC_D2, STC_D1, CPNO, INTREG_POSTINC, CPREG_D, AVR32_V1),
43.26194 -+    SYNTAX_NORMAL_C3(STC_D3, STC_D, STC_D3, STC_D2, CPNO, INTREG_INDEX, CPREG_D, AVR32_V1),
43.26195 -+    SYNTAX_NORMAL3(STC_W1, STC_W, STC_W1, CPNO, INTREG_UDISP_W, CPREG, AVR32_V1),
43.26196 -+    SYNTAX_NORMAL_C3(STC_W2, STC_W, STC_W2, STC_W1, CPNO, INTREG_POSTINC, CPREG, AVR32_V1),
43.26197 -+    SYNTAX_NORMAL_C3(STC_W3, STC_W, STC_W3, STC_W2, CPNO, INTREG_INDEX, CPREG, AVR32_V1),
43.26198 -+    SYNTAX_NORMAL2(STC0_D, STC0_D, STC0_D, INTREG_UDISP_W, CPREG_D, AVR32_V1),
43.26199 -+    SYNTAX_NORMAL2(STC0_W, STC0_W, STC0_W, INTREG_UDISP_W, CPREG, AVR32_V1),
43.26200 -+    SYNTAX_NORMAL_CM3(STCM_D, STCM_D, STCM_D, STCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
43.26201 -+    SYNTAX_NORMALM3(STCM_D_PU, STCM_D, STCM_D_PU, CPNO, INTREG_PREDEC, REGLIST_CPD8, AVR32_V1),
43.26202 -+    SYNTAX_NORMAL_CM3(STCM_W, STCM_W, STCM_W, STCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
43.26203 -+    SYNTAX_NORMALM3(STCM_W_PU, STCM_W, STCM_W_PU, CPNO, INTREG_PREDEC, REGLIST_CP8, AVR32_V1),
43.26204 -+    SYNTAX_NORMAL2(STCOND, STCOND, STCOND, INTREG_SDISP, INTREG, AVR32_V1),
43.26205 -+    SYNTAX_NORMAL2(STDSP, STDSP, STDSP, SP_UDISP_W, INTREG, AVR32_V1),
43.26206 -+    SYNTAX_NORMAL_C3(STHH_W2, STHH_W, STHH_W2, STHH_W1, INTREG_INDEX, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
43.26207 -+    SYNTAX_NORMAL3(STHH_W1, STHH_W, STHH_W1, INTREG_UDISP_W, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
43.26208 -+    SYNTAX_NORMAL_CM2(STM, STM, STM, STM_PU, INTREG, REGLIST16, AVR32_V1),
43.26209 -+    SYNTAX_NORMALM2(STM_PU, STM, STM_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
43.26210 -+    SYNTAX_NORMAL_CM2(STMTS, STMTS, STMTS, STMTS_PU, INTREG, REGLIST16, AVR32_V1),
43.26211 -+    SYNTAX_NORMALM2(STMTS_PU, STMTS, STMTS_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
43.26212 -+    SYNTAX_NORMAL2(STSWP_H, STSWP_H, STSWP_H, INTREG_SDISP_H, INTREG, AVR32_V1),
43.26213 -+    SYNTAX_NORMAL2(STSWP_W, STSWP_W, STSWP_W, INTREG_SDISP_W, INTREG, AVR32_V1),
43.26214 -+    SYNTAX_NORMAL_C2(SUB1, SUB, SUB1, SUB2, INTREG, INTREG, AVR32_V1),
43.26215 -+    SYNTAX_NORMAL_C3(SUB2, SUB, SUB2, SUB5, INTREG, INTREG, INTREG_LSL, AVR32_V1),
43.26216 -+    SYNTAX_NORMAL_C3(SUB5, SUB, SUB5, SUB3_SP, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
43.26217 -+    SYNTAX_NORMAL_C2(SUB3_SP, SUB, SUB3_SP, SUB3, SP, SIGNED_CONST_W, AVR32_V1),
43.26218 -+    SYNTAX_NORMAL_C2(SUB3, SUB, SUB3, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
43.26219 -+    SYNTAX_NORMAL2(SUB4, SUB, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
43.26220 -+    SYNTAX_NORMAL_C2(SUBEQ, SUBEQ, SUBEQ, SUB2EQ, INTREG, SIGNED_CONST, AVR32_V1),
43.26221 -+    SYNTAX_NORMAL_C2(SUBNE, SUBNE, SUBNE, SUB2NE, INTREG, SIGNED_CONST, AVR32_V1),
43.26222 -+    SYNTAX_NORMAL_C2(SUBCC, SUBCC, SUBCC, SUB2CC, INTREG, SIGNED_CONST, AVR32_V1),
43.26223 -+    SYNTAX_NORMAL_C2(SUBCS, SUBCS, SUBCS, SUB2CS, INTREG, SIGNED_CONST, AVR32_V1),
43.26224 -+    SYNTAX_NORMAL_C2(SUBGE, SUBGE, SUBGE, SUB2GE, INTREG, SIGNED_CONST, AVR32_V1),
43.26225 -+    SYNTAX_NORMAL_C2(SUBLT, SUBLT, SUBLT, SUB2LT, INTREG, SIGNED_CONST, AVR32_V1),
43.26226 -+    SYNTAX_NORMAL_C2(SUBMI, SUBMI, SUBMI, SUB2MI, INTREG, SIGNED_CONST, AVR32_V1),
43.26227 -+    SYNTAX_NORMAL_C2(SUBPL, SUBPL, SUBPL, SUB2PL, INTREG, SIGNED_CONST, AVR32_V1),
43.26228 -+    SYNTAX_NORMAL_C2(SUBLS, SUBLS, SUBLS, SUB2LS, INTREG, SIGNED_CONST, AVR32_V1),
43.26229 -+    SYNTAX_NORMAL_C2(SUBGT, SUBGT, SUBGT, SUB2GT, INTREG, SIGNED_CONST, AVR32_V1),
43.26230 -+    SYNTAX_NORMAL_C2(SUBLE, SUBLE, SUBLE, SUB2LE, INTREG, SIGNED_CONST, AVR32_V1),
43.26231 -+    SYNTAX_NORMAL_C2(SUBHI, SUBHI, SUBHI, SUB2HI, INTREG, SIGNED_CONST, AVR32_V1),
43.26232 -+    SYNTAX_NORMAL_C2(SUBVS, SUBVS, SUBVS, SUB2VS, INTREG, SIGNED_CONST, AVR32_V1),
43.26233 -+    SYNTAX_NORMAL_C2(SUBVC, SUBVC, SUBVC, SUB2VC, INTREG, SIGNED_CONST, AVR32_V1),
43.26234 -+    SYNTAX_NORMAL_C2(SUBQS, SUBQS, SUBQS, SUB2QS, INTREG, SIGNED_CONST, AVR32_V1),
43.26235 -+    SYNTAX_NORMAL_C2(SUBAL, SUBAL, SUBAL, SUB2AL, INTREG, SIGNED_CONST, AVR32_V1),
43.26236 -+    SYNTAX_NORMAL_C2(SUBHS, SUBHS, SUBCC, SUB2CC, INTREG, SIGNED_CONST, AVR32_V1),
43.26237 -+    SYNTAX_NORMAL_C2(SUBLO, SUBLO, SUBCS, SUB2CS, INTREG, SIGNED_CONST, AVR32_V1),
43.26238 -+    SYNTAX_NORMAL2(SUBFEQ, SUBFEQ, SUBFEQ, INTREG, SIGNED_CONST, AVR32_V1),
43.26239 -+    SYNTAX_NORMAL2(SUBFNE, SUBFNE, SUBFNE, INTREG, SIGNED_CONST, AVR32_V1),
43.26240 -+    SYNTAX_NORMAL2(SUBFCC, SUBFCC, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
43.26241 -+    SYNTAX_NORMAL2(SUBFCS, SUBFCS, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
43.26242 -+    SYNTAX_NORMAL2(SUBFGE, SUBFGE, SUBFGE, INTREG, SIGNED_CONST, AVR32_V1),
43.26243 -+    SYNTAX_NORMAL2(SUBFLT, SUBFLT, SUBFLT, INTREG, SIGNED_CONST, AVR32_V1),
43.26244 -+    SYNTAX_NORMAL2(SUBFMI, SUBFMI, SUBFMI, INTREG, SIGNED_CONST, AVR32_V1),
43.26245 -+    SYNTAX_NORMAL2(SUBFPL, SUBFPL, SUBFPL, INTREG, SIGNED_CONST, AVR32_V1),
43.26246 -+    SYNTAX_NORMAL2(SUBFLS, SUBFLS, SUBFLS, INTREG, SIGNED_CONST, AVR32_V1),
43.26247 -+    SYNTAX_NORMAL2(SUBFGT, SUBFGT, SUBFGT, INTREG, SIGNED_CONST, AVR32_V1),
43.26248 -+    SYNTAX_NORMAL2(SUBFLE, SUBFLE, SUBFLE, INTREG, SIGNED_CONST, AVR32_V1),
43.26249 -+    SYNTAX_NORMAL2(SUBFHI, SUBFHI, SUBFHI, INTREG, SIGNED_CONST, AVR32_V1),
43.26250 -+    SYNTAX_NORMAL2(SUBFVS, SUBFVS, SUBFVS, INTREG, SIGNED_CONST, AVR32_V1),
43.26251 -+    SYNTAX_NORMAL2(SUBFVC, SUBFVC, SUBFVC, INTREG, SIGNED_CONST, AVR32_V1),
43.26252 -+    SYNTAX_NORMAL2(SUBFQS, SUBFQS, SUBFQS, INTREG, SIGNED_CONST, AVR32_V1),
43.26253 -+    SYNTAX_NORMAL2(SUBFAL, SUBFAL, SUBFAL, INTREG, SIGNED_CONST, AVR32_V1),
43.26254 -+    SYNTAX_NORMAL2(SUBFHS, SUBFHS, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
43.26255 -+    SYNTAX_NORMAL2(SUBFLO, SUBFLO, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
43.26256 -+    SYNTAX_NORMAL3(SUBHH_W, SUBHH_W, SUBHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
43.26257 -+    SYNTAX_NORMAL1(SWAP_B, SWAP_B, SWAP_B, INTREG, AVR32_V1),
43.26258 -+    SYNTAX_NORMAL1(SWAP_BH, SWAP_BH, SWAP_BH, INTREG, AVR32_V1),
43.26259 -+    SYNTAX_NORMAL1(SWAP_H, SWAP_H, SWAP_H, INTREG, AVR32_V1),
43.26260 -+    SYNTAX_NORMAL1(SYNC, SYNC, SYNC, UNSIGNED_CONST, AVR32_V1),
43.26261 -+    SYNTAX_NORMAL0(TLBR, TLBR, TLBR, AVR32_V1),
43.26262 -+    SYNTAX_NORMAL0(TLBS, TLBS, TLBS, AVR32_V1),
43.26263 -+    SYNTAX_NORMAL0(TLBW, TLBW, TLBW, AVR32_V1),
43.26264 -+    SYNTAX_NORMAL1(TNBZ, TNBZ, TNBZ, INTREG, AVR32_V1),
43.26265 -+    SYNTAX_NORMAL2(TST, TST, TST, INTREG, INTREG, AVR32_V1),
43.26266 -+    SYNTAX_NORMAL3(XCHG, XCHG, XCHG, INTREG, INTREG, INTREG, AVR32_V1),
43.26267 -+    SYNTAX_NORMAL2(MEMC, MEMC, MEMC, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
43.26268 -+    SYNTAX_NORMAL2(MEMS, MEMS, MEMS, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
43.26269 -+    SYNTAX_NORMAL2(MEMT, MEMT, MEMT, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
43.26270 -+    SYNTAX_FP(FADD, 3),
43.26271 -+    SYNTAX_FP(FSUB, 3),
43.26272 -+    SYNTAX_FP(FMAC, 3),
43.26273 -+    SYNTAX_FP(FNMAC, 3),
43.26274 -+    SYNTAX_FP(FMSC, 3),
43.26275 -+    SYNTAX_FP(FNMSC, 3),
43.26276 -+    SYNTAX_FP(FMUL, 3),
43.26277 -+    SYNTAX_FP(FNMUL, 3),
43.26278 -+    SYNTAX_FP(FNEG, 2),
43.26279 -+    SYNTAX_FP(FABS, 2),
43.26280 -+    SYNTAX_FP(FCMP, 2),
43.26281 -+    {
43.26282 -+      AVR32_SYNTAX_FMOV1_S,
43.26283 -+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
43.26284 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_S] },
43.26285 -+      &avr32_syntax_table[AVR32_SYNTAX_FMOV2_S],
43.26286 -+      2,
43.26287 -+      {
43.26288 -+	AVR32_OPERAND_FPREG_S,
43.26289 -+	AVR32_OPERAND_FPREG_S,
43.26290 -+      },
43.26291 -+    },
43.26292 -+    {
43.26293 -+      AVR32_SYNTAX_FMOV1_D,
43.26294 -+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
43.26295 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_D] },
43.26296 -+      &avr32_syntax_table[AVR32_SYNTAX_FMOV2_D],
43.26297 -+      2,
43.26298 -+      {
43.26299 -+	AVR32_OPERAND_FPREG_D,
43.26300 -+	AVR32_OPERAND_FPREG_D,
43.26301 -+      },
43.26302 -+    },
43.26303 -+    {
43.26304 -+      AVR32_SYNTAX_FMOV2_S,
43.26305 -+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
43.26306 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_S] },
43.26307 -+      &avr32_syntax_table[AVR32_SYNTAX_FMOV3_S],
43.26308 -+      2,
43.26309 -+      {
43.26310 -+	AVR32_OPERAND_INTREG,
43.26311 -+	AVR32_OPERAND_FPREG_S,
43.26312 -+      },
43.26313 -+    },
43.26314 -+    {
43.26315 -+      AVR32_SYNTAX_FMOV2_D,
43.26316 -+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
43.26317 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_D] },
43.26318 -+      &avr32_syntax_table[AVR32_SYNTAX_FMOV3_D],
43.26319 -+      2,
43.26320 -+      {
43.26321 -+	AVR32_OPERAND_DWREG,
43.26322 -+	AVR32_OPERAND_FPREG_D,
43.26323 -+      },
43.26324 -+    },
43.26325 -+    {
43.26326 -+      AVR32_SYNTAX_FMOV3_S,
43.26327 -+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
43.26328 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_S] }, NULL,
43.26329 -+      2,
43.26330 -+      {
43.26331 -+	AVR32_OPERAND_FPREG_S,
43.26332 -+	AVR32_OPERAND_INTREG,
43.26333 -+      },
43.26334 -+    },
43.26335 -+    {
43.26336 -+      AVR32_SYNTAX_FMOV3_D,
43.26337 -+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
43.26338 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_D] }, NULL,
43.26339 -+      2,
43.26340 -+      {
43.26341 -+	AVR32_OPERAND_FPREG_D,
43.26342 -+	AVR32_OPERAND_DWREG,
43.26343 -+      },
43.26344 -+    },
43.26345 -+    {
43.26346 -+      AVR32_SYNTAX_FCASTS_D,
43.26347 -+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
43.26348 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTS_D] }, NULL,
43.26349 -+      2,
43.26350 -+      {
43.26351 -+	AVR32_OPERAND_FPREG_S,
43.26352 -+	AVR32_OPERAND_FPREG_D,
43.26353 -+      },
43.26354 -+    },
43.26355 -+    {
43.26356 -+      AVR32_SYNTAX_FCASTD_S,
43.26357 -+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
43.26358 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTD_S] }, NULL,
43.26359 -+      2,
43.26360 -+      {
43.26361 -+	AVR32_OPERAND_FPREG_D,
43.26362 -+	AVR32_OPERAND_FPREG_S,
43.26363 -+      },
43.26364 -+    },
43.26365 -+    {
43.26366 -+      AVR32_SYNTAX_LDA_W,
43.26367 -+      AVR32_V1, NULL, AVR32_PARSER_LDA,
43.26368 -+      { NULL }, NULL,
43.26369 -+      2,
43.26370 -+      {
43.26371 -+	AVR32_OPERAND_INTREG,
43.26372 -+	AVR32_OPERAND_SIGNED_CONST,
43.26373 -+      },
43.26374 -+    },
43.26375 -+    {
43.26376 -+      AVR32_SYNTAX_CALL,
43.26377 -+      AVR32_V1, NULL, AVR32_PARSER_CALL,
43.26378 -+      { NULL }, NULL,
43.26379 -+      1,
43.26380 -+      {
43.26381 -+	AVR32_OPERAND_JMPLABEL,
43.26382 -+      },
43.26383 -+    },
43.26384 -+    {
43.26385 -+      AVR32_SYNTAX_PICOSVMAC0,
43.26386 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
43.26387 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC0] },
43.26388 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC1], 4,
43.26389 -+      {
43.26390 -+	AVR32_OPERAND_PICO_OUT0,
43.26391 -+	AVR32_OPERAND_PICO_IN,
43.26392 -+	AVR32_OPERAND_PICO_IN,
43.26393 -+	AVR32_OPERAND_PICO_IN,
43.26394 -+      },
43.26395 -+    },
43.26396 -+    {
43.26397 -+      AVR32_SYNTAX_PICOSVMAC1,
43.26398 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
43.26399 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC1] },
43.26400 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC2], 4,
43.26401 -+      {
43.26402 -+	AVR32_OPERAND_PICO_OUT1,
43.26403 -+	AVR32_OPERAND_PICO_IN,
43.26404 -+	AVR32_OPERAND_PICO_IN,
43.26405 -+	AVR32_OPERAND_PICO_IN,
43.26406 -+      },
43.26407 -+    },
43.26408 -+    {
43.26409 -+      AVR32_SYNTAX_PICOSVMAC2,
43.26410 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
43.26411 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC2] },
43.26412 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC3], 4,
43.26413 -+      {
43.26414 -+	AVR32_OPERAND_PICO_OUT2,
43.26415 -+	AVR32_OPERAND_PICO_IN,
43.26416 -+	AVR32_OPERAND_PICO_IN,
43.26417 -+	AVR32_OPERAND_PICO_IN,
43.26418 -+      },
43.26419 -+    },
43.26420 -+    {
43.26421 -+      AVR32_SYNTAX_PICOSVMAC3,
43.26422 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
43.26423 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC3] },
43.26424 -+      NULL, 4,
43.26425 -+      {
43.26426 -+	AVR32_OPERAND_PICO_OUT3,
43.26427 -+	AVR32_OPERAND_PICO_IN,
43.26428 -+	AVR32_OPERAND_PICO_IN,
43.26429 -+	AVR32_OPERAND_PICO_IN,
43.26430 -+      },
43.26431 -+    },
43.26432 -+    {
43.26433 -+      AVR32_SYNTAX_PICOSVMUL0,
43.26434 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
43.26435 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL0] },
43.26436 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL1], 4,
43.26437 -+      {
43.26438 -+	AVR32_OPERAND_PICO_OUT0,
43.26439 -+	AVR32_OPERAND_PICO_IN,
43.26440 -+	AVR32_OPERAND_PICO_IN,
43.26441 -+	AVR32_OPERAND_PICO_IN,
43.26442 -+      },
43.26443 -+    },
43.26444 -+    {
43.26445 -+      AVR32_SYNTAX_PICOSVMUL1,
43.26446 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
43.26447 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL1] },
43.26448 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL2], 4,
43.26449 -+      {
43.26450 -+	AVR32_OPERAND_PICO_OUT1,
43.26451 -+	AVR32_OPERAND_PICO_IN,
43.26452 -+	AVR32_OPERAND_PICO_IN,
43.26453 -+	AVR32_OPERAND_PICO_IN,
43.26454 -+      },
43.26455 -+    },
43.26456 -+    {
43.26457 -+      AVR32_SYNTAX_PICOSVMUL2,
43.26458 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
43.26459 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL2] },
43.26460 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL3], 4,
43.26461 -+      {
43.26462 -+	AVR32_OPERAND_PICO_OUT2,
43.26463 -+	AVR32_OPERAND_PICO_IN,
43.26464 -+	AVR32_OPERAND_PICO_IN,
43.26465 -+	AVR32_OPERAND_PICO_IN,
43.26466 -+      },
43.26467 -+    },
43.26468 -+    {
43.26469 -+      AVR32_SYNTAX_PICOSVMUL3,
43.26470 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
43.26471 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL3] },
43.26472 -+      NULL, 4,
43.26473 -+      {
43.26474 -+	AVR32_OPERAND_PICO_OUT3,
43.26475 -+	AVR32_OPERAND_PICO_IN,
43.26476 -+	AVR32_OPERAND_PICO_IN,
43.26477 -+	AVR32_OPERAND_PICO_IN,
43.26478 -+      },
43.26479 -+    },
43.26480 -+    {
43.26481 -+      AVR32_SYNTAX_PICOVMAC0,
43.26482 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
43.26483 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC0] },
43.26484 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC1], 4,
43.26485 -+      {
43.26486 -+	AVR32_OPERAND_PICO_OUT0,
43.26487 -+	AVR32_OPERAND_PICO_IN,
43.26488 -+	AVR32_OPERAND_PICO_IN,
43.26489 -+	AVR32_OPERAND_PICO_IN,
43.26490 -+      },
43.26491 -+    },
43.26492 -+    {
43.26493 -+      AVR32_SYNTAX_PICOVMAC1,
43.26494 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
43.26495 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC1] },
43.26496 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC2], 4,
43.26497 -+      {
43.26498 -+	AVR32_OPERAND_PICO_OUT1,
43.26499 -+	AVR32_OPERAND_PICO_IN,
43.26500 -+	AVR32_OPERAND_PICO_IN,
43.26501 -+	AVR32_OPERAND_PICO_IN,
43.26502 -+      },
43.26503 -+    },
43.26504 -+    {
43.26505 -+      AVR32_SYNTAX_PICOVMAC2,
43.26506 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
43.26507 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC2] },
43.26508 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC3], 4,
43.26509 -+      {
43.26510 -+	AVR32_OPERAND_PICO_OUT2,
43.26511 -+	AVR32_OPERAND_PICO_IN,
43.26512 -+	AVR32_OPERAND_PICO_IN,
43.26513 -+	AVR32_OPERAND_PICO_IN,
43.26514 -+      },
43.26515 -+    },
43.26516 -+    {
43.26517 -+      AVR32_SYNTAX_PICOVMAC3,
43.26518 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
43.26519 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC3] },
43.26520 -+      NULL, 4,
43.26521 -+      {
43.26522 -+	AVR32_OPERAND_PICO_OUT3,
43.26523 -+	AVR32_OPERAND_PICO_IN,
43.26524 -+	AVR32_OPERAND_PICO_IN,
43.26525 -+	AVR32_OPERAND_PICO_IN,
43.26526 -+      },
43.26527 -+    },
43.26528 -+    {
43.26529 -+      AVR32_SYNTAX_PICOVMUL0,
43.26530 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
43.26531 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL0] },
43.26532 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL1], 4,
43.26533 -+      {
43.26534 -+	AVR32_OPERAND_PICO_OUT0,
43.26535 -+	AVR32_OPERAND_PICO_IN,
43.26536 -+	AVR32_OPERAND_PICO_IN,
43.26537 -+	AVR32_OPERAND_PICO_IN,
43.26538 -+      },
43.26539 -+    },
43.26540 -+    {
43.26541 -+      AVR32_SYNTAX_PICOVMUL1,
43.26542 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
43.26543 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL1] },
43.26544 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL2], 4,
43.26545 -+      {
43.26546 -+	AVR32_OPERAND_PICO_OUT1,
43.26547 -+	AVR32_OPERAND_PICO_IN,
43.26548 -+	AVR32_OPERAND_PICO_IN,
43.26549 -+	AVR32_OPERAND_PICO_IN,
43.26550 -+      },
43.26551 -+    },
43.26552 -+    {
43.26553 -+      AVR32_SYNTAX_PICOVMUL2,
43.26554 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
43.26555 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL2] },
43.26556 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL3], 4,
43.26557 -+      {
43.26558 -+	AVR32_OPERAND_PICO_OUT2,
43.26559 -+	AVR32_OPERAND_PICO_IN,
43.26560 -+	AVR32_OPERAND_PICO_IN,
43.26561 -+	AVR32_OPERAND_PICO_IN,
43.26562 -+      },
43.26563 -+    },
43.26564 -+    {
43.26565 -+      AVR32_SYNTAX_PICOVMUL3,
43.26566 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
43.26567 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL3] },
43.26568 -+      NULL, 4,
43.26569 -+      {
43.26570 -+	AVR32_OPERAND_PICO_OUT3,
43.26571 -+	AVR32_OPERAND_PICO_IN,
43.26572 -+	AVR32_OPERAND_PICO_IN,
43.26573 -+	AVR32_OPERAND_PICO_IN,
43.26574 -+      },
43.26575 -+    },
43.26576 -+    {
43.26577 -+      AVR32_SYNTAX_PICOLD_D2,
43.26578 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
43.26579 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D2] },
43.26580 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D3], 2,
43.26581 -+      {
43.26582 -+	AVR32_OPERAND_PICO_REG_D,
43.26583 -+	AVR32_OPERAND_INTREG_PREDEC,
43.26584 -+      },
43.26585 -+    },
43.26586 -+    {
43.26587 -+      AVR32_SYNTAX_PICOLD_D3,
43.26588 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
43.26589 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D3] },
43.26590 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D1], 2,
43.26591 -+      {
43.26592 -+	AVR32_OPERAND_PICO_REG_D,
43.26593 -+	AVR32_OPERAND_INTREG_INDEX,
43.26594 -+      },
43.26595 -+    },
43.26596 -+    {
43.26597 -+      AVR32_SYNTAX_PICOLD_D1,
43.26598 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
43.26599 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D1] },
43.26600 -+      NULL, 2,
43.26601 -+      {
43.26602 -+	AVR32_OPERAND_PICO_REG_D,
43.26603 -+	AVR32_OPERAND_INTREG_UDISP_W,
43.26604 -+      },
43.26605 -+    },
43.26606 -+    {
43.26607 -+      AVR32_SYNTAX_PICOLD_W2,
43.26608 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
43.26609 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W2] },
43.26610 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W3], 2,
43.26611 -+      {
43.26612 -+	AVR32_OPERAND_PICO_REG_W,
43.26613 -+	AVR32_OPERAND_INTREG_PREDEC,
43.26614 -+      },
43.26615 -+    },
43.26616 -+    {
43.26617 -+      AVR32_SYNTAX_PICOLD_W3,
43.26618 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
43.26619 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W3] },
43.26620 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W1], 2,
43.26621 -+      {
43.26622 -+	AVR32_OPERAND_PICO_REG_W,
43.26623 -+	AVR32_OPERAND_INTREG_INDEX,
43.26624 -+      },
43.26625 -+    },
43.26626 -+    {
43.26627 -+      AVR32_SYNTAX_PICOLD_W1,
43.26628 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
43.26629 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W1] },
43.26630 -+      NULL, 2,
43.26631 -+      {
43.26632 -+	AVR32_OPERAND_PICO_REG_W,
43.26633 -+	AVR32_OPERAND_INTREG_UDISP_W,
43.26634 -+      },
43.26635 -+    },
43.26636 -+    {
43.26637 -+      AVR32_SYNTAX_PICOLDM_D,
43.26638 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
43.26639 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D] },
43.26640 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_D_PU], -2,
43.26641 -+      {
43.26642 -+	AVR32_OPERAND_INTREG,
43.26643 -+	AVR32_OPERAND_PICO_REGLIST_D,
43.26644 -+      },
43.26645 -+    },
43.26646 -+    {
43.26647 -+      AVR32_SYNTAX_PICOLDM_D_PU,
43.26648 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
43.26649 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D_PU] },
43.26650 -+      NULL, -2,
43.26651 -+      {
43.26652 -+	AVR32_OPERAND_INTREG_POSTINC,
43.26653 -+	AVR32_OPERAND_PICO_REGLIST_D,
43.26654 -+      },
43.26655 -+    },
43.26656 -+    {
43.26657 -+      AVR32_SYNTAX_PICOLDM_W,
43.26658 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
43.26659 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W] },
43.26660 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_W_PU], -2,
43.26661 -+      {
43.26662 -+	AVR32_OPERAND_INTREG,
43.26663 -+	AVR32_OPERAND_PICO_REGLIST_W,
43.26664 -+      },
43.26665 -+    },
43.26666 -+    {
43.26667 -+      AVR32_SYNTAX_PICOLDM_W_PU,
43.26668 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
43.26669 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W_PU] },
43.26670 -+      NULL, -2,
43.26671 -+      {
43.26672 -+	AVR32_OPERAND_INTREG_POSTINC,
43.26673 -+	AVR32_OPERAND_PICO_REGLIST_W,
43.26674 -+      },
43.26675 -+    },
43.26676 -+    {
43.26677 -+      AVR32_SYNTAX_PICOMV_D1,
43.26678 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
43.26679 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D1] },
43.26680 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOMV_D2], 2,
43.26681 -+      {
43.26682 -+	AVR32_OPERAND_DWREG,
43.26683 -+	AVR32_OPERAND_PICO_REG_D,
43.26684 -+      },
43.26685 -+    },
43.26686 -+    {
43.26687 -+      AVR32_SYNTAX_PICOMV_D2,
43.26688 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
43.26689 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D2] },
43.26690 -+      NULL, 2,
43.26691 -+      {
43.26692 -+	AVR32_OPERAND_PICO_REG_D,
43.26693 -+	AVR32_OPERAND_DWREG,
43.26694 -+      },
43.26695 -+    },
43.26696 -+    {
43.26697 -+      AVR32_SYNTAX_PICOMV_W1,
43.26698 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
43.26699 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W1] },
43.26700 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOMV_W2], 2,
43.26701 -+      {
43.26702 -+	AVR32_OPERAND_INTREG,
43.26703 -+	AVR32_OPERAND_PICO_REG_W,
43.26704 -+      },
43.26705 -+    },
43.26706 -+    {
43.26707 -+      AVR32_SYNTAX_PICOMV_W2,
43.26708 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
43.26709 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W2] },
43.26710 -+      NULL, 2,
43.26711 -+      {
43.26712 -+	AVR32_OPERAND_PICO_REG_W,
43.26713 -+	AVR32_OPERAND_INTREG,
43.26714 -+      },
43.26715 -+    },
43.26716 -+    {
43.26717 -+      AVR32_SYNTAX_PICOST_D2,
43.26718 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
43.26719 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D2] },
43.26720 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOST_D3], 2,
43.26721 -+      {
43.26722 -+	AVR32_OPERAND_INTREG_POSTINC,
43.26723 -+	AVR32_OPERAND_PICO_REG_D,
43.26724 -+      },
43.26725 -+    },
43.26726 -+    {
43.26727 -+      AVR32_SYNTAX_PICOST_D3,
43.26728 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
43.26729 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D3] },
43.26730 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOST_D1], 2,
43.26731 -+      {
43.26732 -+	AVR32_OPERAND_INTREG_INDEX,
43.26733 -+	AVR32_OPERAND_PICO_REG_D,
43.26734 -+      },
43.26735 -+    },
43.26736 -+    {
43.26737 -+      AVR32_SYNTAX_PICOST_D1,
43.26738 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
43.26739 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D1] },
43.26740 -+      NULL, 2,
43.26741 -+      {
43.26742 -+	AVR32_OPERAND_INTREG_UDISP_W,
43.26743 -+	AVR32_OPERAND_PICO_REG_D,
43.26744 -+      },
43.26745 -+    },
43.26746 -+    {
43.26747 -+      AVR32_SYNTAX_PICOST_W2,
43.26748 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
43.26749 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W2] },
43.26750 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOST_W3], 2,
43.26751 -+      {
43.26752 -+	AVR32_OPERAND_INTREG_POSTINC,
43.26753 -+	AVR32_OPERAND_PICO_REG_W,
43.26754 -+      },
43.26755 -+    },
43.26756 -+    {
43.26757 -+      AVR32_SYNTAX_PICOST_W3,
43.26758 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
43.26759 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W3] },
43.26760 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOST_W1], 2,
43.26761 -+      {
43.26762 -+	AVR32_OPERAND_INTREG_INDEX,
43.26763 -+	AVR32_OPERAND_PICO_REG_W,
43.26764 -+      },
43.26765 -+    },
43.26766 -+    {
43.26767 -+      AVR32_SYNTAX_PICOST_W1,
43.26768 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
43.26769 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W1] },
43.26770 -+      NULL, 2,
43.26771 -+      {
43.26772 -+	AVR32_OPERAND_INTREG_UDISP_W,
43.26773 -+	AVR32_OPERAND_PICO_REG_W,
43.26774 -+      },
43.26775 -+    },
43.26776 -+    {
43.26777 -+      AVR32_SYNTAX_PICOSTM_D,
43.26778 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
43.26779 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D] },
43.26780 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_D_PU], -2,
43.26781 -+      {
43.26782 -+	AVR32_OPERAND_INTREG,
43.26783 -+	AVR32_OPERAND_PICO_REGLIST_D,
43.26784 -+      },
43.26785 -+    },
43.26786 -+    {
43.26787 -+      AVR32_SYNTAX_PICOSTM_D_PU,
43.26788 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
43.26789 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D_PU] },
43.26790 -+      NULL, -2,
43.26791 -+      {
43.26792 -+	AVR32_OPERAND_INTREG_PREDEC,
43.26793 -+	AVR32_OPERAND_PICO_REGLIST_D,
43.26794 -+      },
43.26795 -+    },
43.26796 -+    {
43.26797 -+      AVR32_SYNTAX_PICOSTM_W,
43.26798 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
43.26799 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W] },
43.26800 -+      &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_W_PU], -2,
43.26801 -+      {
43.26802 -+	AVR32_OPERAND_INTREG,
43.26803 -+	AVR32_OPERAND_PICO_REGLIST_W,
43.26804 -+      },
43.26805 -+    },
43.26806 -+    {
43.26807 -+      AVR32_SYNTAX_PICOSTM_W_PU,
43.26808 -+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
43.26809 -+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W_PU] },
43.26810 -+      NULL, -2,
43.26811 -+      {
43.26812 -+	AVR32_OPERAND_INTREG_PREDEC,
43.26813 -+	AVR32_OPERAND_PICO_REGLIST_W,
43.26814 -+      },
43.26815 -+    },
43.26816 -+    SYNTAX_NORMAL2(RSUBEQ, RSUBEQ, RSUBEQ, INTREG, SIGNED_CONST, AVR32_V1),
43.26817 -+    SYNTAX_NORMAL2(RSUBNE, RSUBNE, RSUBNE, INTREG, SIGNED_CONST, AVR32_V2),
43.26818 -+    SYNTAX_NORMAL2(RSUBCC, RSUBCC, RSUBCC, INTREG, SIGNED_CONST, AVR32_V2),
43.26819 -+    SYNTAX_NORMAL2(RSUBCS, RSUBCS, RSUBCS, INTREG, SIGNED_CONST, AVR32_V2),
43.26820 -+    SYNTAX_NORMAL2(RSUBGE, RSUBGE, RSUBGE, INTREG, SIGNED_CONST, AVR32_V2),
43.26821 -+    SYNTAX_NORMAL2(RSUBLT, RSUBLT, RSUBLT, INTREG, SIGNED_CONST, AVR32_V2),
43.26822 -+    SYNTAX_NORMAL2(RSUBMI, RSUBMI, RSUBMI, INTREG, SIGNED_CONST, AVR32_V2),
43.26823 -+    SYNTAX_NORMAL2(RSUBPL, RSUBPL, RSUBPL, INTREG, SIGNED_CONST, AVR32_V2),
43.26824 -+    SYNTAX_NORMAL2(RSUBLS, RSUBLS, RSUBLS, INTREG, SIGNED_CONST, AVR32_V2),
43.26825 -+    SYNTAX_NORMAL2(RSUBGT, RSUBGT, RSUBGT, INTREG, SIGNED_CONST, AVR32_V2),
43.26826 -+    SYNTAX_NORMAL2(RSUBLE, RSUBLE, RSUBLE, INTREG, SIGNED_CONST, AVR32_V2),
43.26827 -+    SYNTAX_NORMAL2(RSUBHI, RSUBHI, RSUBHI, INTREG, SIGNED_CONST, AVR32_V2),
43.26828 -+    SYNTAX_NORMAL2(RSUBVS, RSUBVS, RSUBVS, INTREG, SIGNED_CONST, AVR32_V2),
43.26829 -+    SYNTAX_NORMAL2(RSUBVC, RSUBVC, RSUBVC, INTREG, SIGNED_CONST, AVR32_V2),
43.26830 -+    SYNTAX_NORMAL2(RSUBQS, RSUBQS, RSUBQS, INTREG, SIGNED_CONST, AVR32_V2),
43.26831 -+    SYNTAX_NORMAL2(RSUBAL, RSUBAL, RSUBAL, INTREG, SIGNED_CONST, AVR32_V2),
43.26832 -+    SYNTAX_NORMAL2(RSUBHS, RSUBHS, RSUBCC, INTREG, SIGNED_CONST, AVR32_V2),
43.26833 -+    SYNTAX_NORMAL2(RSUBLO, RSUBLO, RSUBCS, INTREG, SIGNED_CONST, AVR32_V2),
43.26834 -+    SYNTAX_NORMAL3(ADDEQ, ADDEQ, ADDEQ, INTREG, INTREG, INTREG, AVR32_V2),
43.26835 -+    SYNTAX_NORMAL3(ADDNE, ADDNE, ADDNE, INTREG, INTREG, INTREG, AVR32_V2),
43.26836 -+    SYNTAX_NORMAL3(ADDCC, ADDCC, ADDCC, INTREG, INTREG, INTREG, AVR32_V2),
43.26837 -+    SYNTAX_NORMAL3(ADDCS, ADDCS, ADDCS, INTREG, INTREG, INTREG, AVR32_V2),
43.26838 -+    SYNTAX_NORMAL3(ADDGE, ADDGE, ADDGE, INTREG, INTREG, INTREG, AVR32_V2),
43.26839 -+    SYNTAX_NORMAL3(ADDLT, ADDLT, ADDLT, INTREG, INTREG, INTREG, AVR32_V2),
43.26840 -+    SYNTAX_NORMAL3(ADDMI, ADDMI, ADDMI, INTREG, INTREG, INTREG, AVR32_V2),
43.26841 -+    SYNTAX_NORMAL3(ADDPL, ADDPL, ADDPL, INTREG, INTREG, INTREG, AVR32_V2),
43.26842 -+    SYNTAX_NORMAL3(ADDLS, ADDLS, ADDLS, INTREG, INTREG, INTREG, AVR32_V2),
43.26843 -+    SYNTAX_NORMAL3(ADDGT, ADDGT, ADDGT, INTREG, INTREG, INTREG, AVR32_V2),
43.26844 -+    SYNTAX_NORMAL3(ADDLE, ADDLE, ADDLE, INTREG, INTREG, INTREG, AVR32_V2),
43.26845 -+    SYNTAX_NORMAL3(ADDHI, ADDHI, ADDHI, INTREG, INTREG, INTREG, AVR32_V2),
43.26846 -+    SYNTAX_NORMAL3(ADDVS, ADDVS, ADDVS, INTREG, INTREG, INTREG, AVR32_V2),
43.26847 -+    SYNTAX_NORMAL3(ADDVC, ADDVC, ADDVC, INTREG, INTREG, INTREG, AVR32_V2),
43.26848 -+    SYNTAX_NORMAL3(ADDQS, ADDQS, ADDQS, INTREG, INTREG, INTREG, AVR32_V2),
43.26849 -+    SYNTAX_NORMAL3(ADDAL, ADDAL, ADDAL, INTREG, INTREG, INTREG, AVR32_V2),
43.26850 -+    SYNTAX_NORMAL3(ADDHS, ADDHS, ADDCC, INTREG, INTREG, INTREG, AVR32_V2),
43.26851 -+    SYNTAX_NORMAL3(ADDLO, ADDLO, ADDCS, INTREG, INTREG, INTREG, AVR32_V2),
43.26852 -+    SYNTAX_NORMAL3(SUB2EQ, SUBEQ, SUB2EQ, INTREG, INTREG, INTREG, AVR32_V2),
43.26853 -+    SYNTAX_NORMAL3(SUB2NE, SUBNE, SUB2NE, INTREG, INTREG, INTREG, AVR32_V2),
43.26854 -+    SYNTAX_NORMAL3(SUB2CC, SUBCC, SUB2CC, INTREG, INTREG, INTREG, AVR32_V2),
43.26855 -+    SYNTAX_NORMAL3(SUB2CS, SUBCS, SUB2CS, INTREG, INTREG, INTREG, AVR32_V2),
43.26856 -+    SYNTAX_NORMAL3(SUB2GE, SUBGE, SUB2GE, INTREG, INTREG, INTREG, AVR32_V2),
43.26857 -+    SYNTAX_NORMAL3(SUB2LT, SUBLT, SUB2LT, INTREG, INTREG, INTREG, AVR32_V2),
43.26858 -+    SYNTAX_NORMAL3(SUB2MI, SUBMI, SUB2MI, INTREG, INTREG, INTREG, AVR32_V2),
43.26859 -+    SYNTAX_NORMAL3(SUB2PL, SUBPL, SUB2PL, INTREG, INTREG, INTREG, AVR32_V2),
43.26860 -+    SYNTAX_NORMAL3(SUB2LS, SUBLS, SUB2LS, INTREG, INTREG, INTREG, AVR32_V2),
43.26861 -+    SYNTAX_NORMAL3(SUB2GT, SUBGT, SUB2GT, INTREG, INTREG, INTREG, AVR32_V2),
43.26862 -+    SYNTAX_NORMAL3(SUB2LE, SUBLE, SUB2LE, INTREG, INTREG, INTREG, AVR32_V2),
43.26863 -+    SYNTAX_NORMAL3(SUB2HI, SUBHI, SUB2HI, INTREG, INTREG, INTREG, AVR32_V2),
43.26864 -+    SYNTAX_NORMAL3(SUB2VS, SUBVS, SUB2VS, INTREG, INTREG, INTREG, AVR32_V2),
43.26865 -+    SYNTAX_NORMAL3(SUB2VC, SUBVC, SUB2VC, INTREG, INTREG, INTREG, AVR32_V2),
43.26866 -+    SYNTAX_NORMAL3(SUB2QS, SUBQS, SUB2QS, INTREG, INTREG, INTREG, AVR32_V2),
43.26867 -+    SYNTAX_NORMAL3(SUB2AL, SUBAL, SUB2AL, INTREG, INTREG, INTREG, AVR32_V2),
43.26868 -+    SYNTAX_NORMAL3(SUB2HS, SUBHS, SUB2CC, INTREG, INTREG, INTREG, AVR32_V2),
43.26869 -+    SYNTAX_NORMAL3(SUB2LO, SUBLO, SUB2CS, INTREG, INTREG, INTREG, AVR32_V2),
43.26870 -+    SYNTAX_NORMAL3(ANDEQ, ANDEQ, ANDEQ, INTREG, INTREG, INTREG, AVR32_V2),
43.26871 -+    SYNTAX_NORMAL3(ANDNE, ANDNE, ANDNE, INTREG, INTREG, INTREG, AVR32_V2),
43.26872 -+    SYNTAX_NORMAL3(ANDCC, ANDCC, ANDCC, INTREG, INTREG, INTREG, AVR32_V2),
43.26873 -+    SYNTAX_NORMAL3(ANDCS, ANDCS, ANDCS, INTREG, INTREG, INTREG, AVR32_V2),
43.26874 -+    SYNTAX_NORMAL3(ANDGE, ANDGE, ANDGE, INTREG, INTREG, INTREG, AVR32_V2),
43.26875 -+    SYNTAX_NORMAL3(ANDLT, ANDLT, ANDLT, INTREG, INTREG, INTREG, AVR32_V2),
43.26876 -+    SYNTAX_NORMAL3(ANDMI, ANDMI, ANDMI, INTREG, INTREG, INTREG, AVR32_V2),
43.26877 -+    SYNTAX_NORMAL3(ANDPL, ANDPL, ANDPL, INTREG, INTREG, INTREG, AVR32_V2),
43.26878 -+    SYNTAX_NORMAL3(ANDLS, ANDLS, ANDLS, INTREG, INTREG, INTREG, AVR32_V2),
43.26879 -+    SYNTAX_NORMAL3(ANDGT, ANDGT, ANDGT, INTREG, INTREG, INTREG, AVR32_V2),
43.26880 -+    SYNTAX_NORMAL3(ANDLE, ANDLE, ANDLE, INTREG, INTREG, INTREG, AVR32_V2),
43.26881 -+    SYNTAX_NORMAL3(ANDHI, ANDHI, ANDHI, INTREG, INTREG, INTREG, AVR32_V2),
43.26882 -+    SYNTAX_NORMAL3(ANDVS, ANDVS, ANDVS, INTREG, INTREG, INTREG, AVR32_V2),
43.26883 -+    SYNTAX_NORMAL3(ANDVC, ANDVC, ANDVC, INTREG, INTREG, INTREG, AVR32_V2),
43.26884 -+    SYNTAX_NORMAL3(ANDQS, ANDQS, ANDQS, INTREG, INTREG, INTREG, AVR32_V2),
43.26885 -+    SYNTAX_NORMAL3(ANDAL, ANDAL, ANDAL, INTREG, INTREG, INTREG, AVR32_V2),
43.26886 -+    SYNTAX_NORMAL3(ANDHS, ANDHS, ANDCC, INTREG, INTREG, INTREG, AVR32_V2),
43.26887 -+    SYNTAX_NORMAL3(ANDLO, ANDLO, ANDCS, INTREG, INTREG, INTREG, AVR32_V2),
43.26888 -+    SYNTAX_NORMAL3(OREQ, OREQ, OREQ, INTREG, INTREG, INTREG, AVR32_V2),
43.26889 -+    SYNTAX_NORMAL3(ORNE, ORNE, ORNE, INTREG, INTREG, INTREG, AVR32_V2),
43.26890 -+    SYNTAX_NORMAL3(ORCC, ORCC, ORCC, INTREG, INTREG, INTREG, AVR32_V2),
43.26891 -+    SYNTAX_NORMAL3(ORCS, ORCS, ORCS, INTREG, INTREG, INTREG, AVR32_V2),
43.26892 -+    SYNTAX_NORMAL3(ORGE, ORGE, ORGE, INTREG, INTREG, INTREG, AVR32_V2),
43.26893 -+    SYNTAX_NORMAL3(ORLT, ORLT, ORLT, INTREG, INTREG, INTREG, AVR32_V2),
43.26894 -+    SYNTAX_NORMAL3(ORMI, ORMI, ORMI, INTREG, INTREG, INTREG, AVR32_V2),
43.26895 -+    SYNTAX_NORMAL3(ORPL, ORPL, ORPL, INTREG, INTREG, INTREG, AVR32_V2),
43.26896 -+    SYNTAX_NORMAL3(ORLS, ORLS, ORLS, INTREG, INTREG, INTREG, AVR32_V2),
43.26897 -+    SYNTAX_NORMAL3(ORGT, ORGT, ORGT, INTREG, INTREG, INTREG, AVR32_V2),
43.26898 -+    SYNTAX_NORMAL3(ORLE, ORLE, ORLE, INTREG, INTREG, INTREG, AVR32_V2),
43.26899 -+    SYNTAX_NORMAL3(ORHI, ORHI, ORHI, INTREG, INTREG, INTREG, AVR32_V2),
43.26900 -+    SYNTAX_NORMAL3(ORVS, ORVS, ORVS, INTREG, INTREG, INTREG, AVR32_V2),
43.26901 -+    SYNTAX_NORMAL3(ORVC, ORVC, ORVC, INTREG, INTREG, INTREG, AVR32_V2),
43.26902 -+    SYNTAX_NORMAL3(ORQS, ORQS, ORQS, INTREG, INTREG, INTREG, AVR32_V2),
43.26903 -+    SYNTAX_NORMAL3(ORAL, ORAL, ORAL, INTREG, INTREG, INTREG, AVR32_V2),
43.26904 -+    SYNTAX_NORMAL3(ORHS, ORHS, ORCC, INTREG, INTREG, INTREG, AVR32_V2),
43.26905 -+    SYNTAX_NORMAL3(ORLO, ORLO, ORCS, INTREG, INTREG, INTREG, AVR32_V2),
43.26906 -+    SYNTAX_NORMAL3(EOREQ, EOREQ, EOREQ, INTREG, INTREG, INTREG, AVR32_V2),
43.26907 -+    SYNTAX_NORMAL3(EORNE, EORNE, EORNE, INTREG, INTREG, INTREG, AVR32_V2),
43.26908 -+    SYNTAX_NORMAL3(EORCC, EORCC, EORCC, INTREG, INTREG, INTREG, AVR32_V2),
43.26909 -+    SYNTAX_NORMAL3(EORCS, EORCS, EORCS, INTREG, INTREG, INTREG, AVR32_V2),
43.26910 -+    SYNTAX_NORMAL3(EORGE, EORGE, EORGE, INTREG, INTREG, INTREG, AVR32_V2),
43.26911 -+    SYNTAX_NORMAL3(EORLT, EORLT, EORLT, INTREG, INTREG, INTREG, AVR32_V2),
43.26912 -+    SYNTAX_NORMAL3(EORMI, EORMI, EORMI, INTREG, INTREG, INTREG, AVR32_V2),
43.26913 -+    SYNTAX_NORMAL3(EORPL, EORPL, EORPL, INTREG, INTREG, INTREG, AVR32_V2),
43.26914 -+    SYNTAX_NORMAL3(EORLS, EORLS, EORLS, INTREG, INTREG, INTREG, AVR32_V2),
43.26915 -+    SYNTAX_NORMAL3(EORGT, EORGT, EORGT, INTREG, INTREG, INTREG, AVR32_V2),
43.26916 -+    SYNTAX_NORMAL3(EORLE, EORLE, EORLE, INTREG, INTREG, INTREG, AVR32_V2),
43.26917 -+    SYNTAX_NORMAL3(EORHI, EORHI, EORHI, INTREG, INTREG, INTREG, AVR32_V2),
43.26918 -+    SYNTAX_NORMAL3(EORVS, EORVS, EORVS, INTREG, INTREG, INTREG, AVR32_V2),
43.26919 -+    SYNTAX_NORMAL3(EORVC, EORVC, EORVC, INTREG, INTREG, INTREG, AVR32_V2),
43.26920 -+    SYNTAX_NORMAL3(EORQS, EORQS, EORQS, INTREG, INTREG, INTREG, AVR32_V2),
43.26921 -+    SYNTAX_NORMAL3(EORAL, EORAL, EORAL, INTREG, INTREG, INTREG, AVR32_V2),
43.26922 -+    SYNTAX_NORMAL3(EORHS, EORHS, EORCC, INTREG, INTREG, INTREG, AVR32_V2),
43.26923 -+    SYNTAX_NORMAL3(EORLO, EORLO, EORCS, INTREG, INTREG, INTREG, AVR32_V2),
43.26924 -+    SYNTAX_NORMAL2(LD_WEQ, LD_WEQ, LD_WEQ, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26925 -+    SYNTAX_NORMAL2(LD_WNE, LD_WNE, LD_WNE, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26926 -+    SYNTAX_NORMAL2(LD_WCC, LD_WCC, LD_WCC, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26927 -+    SYNTAX_NORMAL2(LD_WCS, LD_WCS, LD_WCS, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26928 -+    SYNTAX_NORMAL2(LD_WGE, LD_WGE, LD_WGE, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26929 -+    SYNTAX_NORMAL2(LD_WLT, LD_WLT, LD_WLT, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26930 -+    SYNTAX_NORMAL2(LD_WMI, LD_WMI, LD_WMI, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26931 -+    SYNTAX_NORMAL2(LD_WPL, LD_WPL, LD_WPL, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26932 -+    SYNTAX_NORMAL2(LD_WLS, LD_WLS, LD_WLS, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26933 -+    SYNTAX_NORMAL2(LD_WGT, LD_WGT, LD_WGT, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26934 -+    SYNTAX_NORMAL2(LD_WLE, LD_WLE, LD_WLE, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26935 -+    SYNTAX_NORMAL2(LD_WHI, LD_WHI, LD_WHI, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26936 -+    SYNTAX_NORMAL2(LD_WVS, LD_WVS, LD_WVS, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26937 -+    SYNTAX_NORMAL2(LD_WVC, LD_WVC, LD_WVC, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26938 -+    SYNTAX_NORMAL2(LD_WQS, LD_WQS, LD_WQS, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26939 -+    SYNTAX_NORMAL2(LD_WAL, LD_WAL, LD_WAL, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26940 -+    SYNTAX_NORMAL2(LD_WHS, LD_WHS, LD_WCC, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26941 -+    SYNTAX_NORMAL2(LD_WLO, LD_WLO, LD_WCS, INTREG, INTREG_UDISP_W, AVR32_V2),
43.26942 -+    SYNTAX_NORMAL2(LD_SHEQ, LD_SHEQ, LD_SHEQ, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26943 -+    SYNTAX_NORMAL2(LD_SHNE, LD_SHNE, LD_SHNE, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26944 -+    SYNTAX_NORMAL2(LD_SHCC, LD_SHCC, LD_SHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26945 -+    SYNTAX_NORMAL2(LD_SHCS, LD_SHCS, LD_SHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26946 -+    SYNTAX_NORMAL2(LD_SHGE, LD_SHGE, LD_SHGE, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26947 -+    SYNTAX_NORMAL2(LD_SHLT, LD_SHLT, LD_SHLT, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26948 -+    SYNTAX_NORMAL2(LD_SHMI, LD_SHMI, LD_SHMI, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26949 -+    SYNTAX_NORMAL2(LD_SHPL, LD_SHPL, LD_SHPL, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26950 -+    SYNTAX_NORMAL2(LD_SHLS, LD_SHLS, LD_SHLS, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26951 -+    SYNTAX_NORMAL2(LD_SHGT, LD_SHGT, LD_SHGT, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26952 -+    SYNTAX_NORMAL2(LD_SHLE, LD_SHLE, LD_SHLE, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26953 -+    SYNTAX_NORMAL2(LD_SHHI, LD_SHHI, LD_SHHI, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26954 -+    SYNTAX_NORMAL2(LD_SHVS, LD_SHVS, LD_SHVS, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26955 -+    SYNTAX_NORMAL2(LD_SHVC, LD_SHVC, LD_SHVC, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26956 -+    SYNTAX_NORMAL2(LD_SHQS, LD_SHQS, LD_SHQS, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26957 -+    SYNTAX_NORMAL2(LD_SHAL, LD_SHAL, LD_SHAL, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26958 -+    SYNTAX_NORMAL2(LD_SHHS, LD_SHHS, LD_SHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26959 -+    SYNTAX_NORMAL2(LD_SHLO, LD_SHLO, LD_SHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26960 -+    SYNTAX_NORMAL2(LD_UHEQ, LD_UHEQ, LD_UHEQ, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26961 -+    SYNTAX_NORMAL2(LD_UHNE, LD_UHNE, LD_UHNE, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26962 -+    SYNTAX_NORMAL2(LD_UHCC, LD_UHCC, LD_UHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26963 -+    SYNTAX_NORMAL2(LD_UHCS, LD_UHCS, LD_UHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26964 -+    SYNTAX_NORMAL2(LD_UHGE, LD_UHGE, LD_UHGE, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26965 -+    SYNTAX_NORMAL2(LD_UHLT, LD_UHLT, LD_UHLT, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26966 -+    SYNTAX_NORMAL2(LD_UHMI, LD_UHMI, LD_UHMI, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26967 -+    SYNTAX_NORMAL2(LD_UHPL, LD_UHPL, LD_UHPL, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26968 -+    SYNTAX_NORMAL2(LD_UHLS, LD_UHLS, LD_UHLS, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26969 -+    SYNTAX_NORMAL2(LD_UHGT, LD_UHGT, LD_UHGT, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26970 -+    SYNTAX_NORMAL2(LD_UHLE, LD_UHLE, LD_UHLE, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26971 -+    SYNTAX_NORMAL2(LD_UHHI, LD_UHHI, LD_UHHI, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26972 -+    SYNTAX_NORMAL2(LD_UHVS, LD_UHVS, LD_UHVS, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26973 -+    SYNTAX_NORMAL2(LD_UHVC, LD_UHVC, LD_UHVC, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26974 -+    SYNTAX_NORMAL2(LD_UHQS, LD_UHQS, LD_UHQS, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26975 -+    SYNTAX_NORMAL2(LD_UHAL, LD_UHAL, LD_UHAL, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26976 -+    SYNTAX_NORMAL2(LD_UHHS, LD_UHHS, LD_UHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26977 -+    SYNTAX_NORMAL2(LD_UHLO, LD_UHLO, LD_UHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
43.26978 -+    SYNTAX_NORMAL2(LD_SBEQ, LD_SBEQ, LD_SBEQ, INTREG, INTREG_UDISP, AVR32_V2),
43.26979 -+    SYNTAX_NORMAL2(LD_SBNE, LD_SBNE, LD_SBNE, INTREG, INTREG_UDISP, AVR32_V2),
43.26980 -+    SYNTAX_NORMAL2(LD_SBCC, LD_SBCC, LD_SBCC, INTREG, INTREG_UDISP, AVR32_V2),
43.26981 -+    SYNTAX_NORMAL2(LD_SBCS, LD_SBCS, LD_SBCS, INTREG, INTREG_UDISP, AVR32_V2),
43.26982 -+    SYNTAX_NORMAL2(LD_SBGE, LD_SBGE, LD_SBGE, INTREG, INTREG_UDISP, AVR32_V2),
43.26983 -+    SYNTAX_NORMAL2(LD_SBLT, LD_SBLT, LD_SBLT, INTREG, INTREG_UDISP, AVR32_V2),
43.26984 -+    SYNTAX_NORMAL2(LD_SBMI, LD_SBMI, LD_SBMI, INTREG, INTREG_UDISP, AVR32_V2),
43.26985 -+    SYNTAX_NORMAL2(LD_SBPL, LD_SBPL, LD_SBPL, INTREG, INTREG_UDISP, AVR32_V2),
43.26986 -+    SYNTAX_NORMAL2(LD_SBLS, LD_SBLS, LD_SBLS, INTREG, INTREG_UDISP, AVR32_V2),
43.26987 -+    SYNTAX_NORMAL2(LD_SBGT, LD_SBGT, LD_SBGT, INTREG, INTREG_UDISP, AVR32_V2),
43.26988 -+    SYNTAX_NORMAL2(LD_SBLE, LD_SBLE, LD_SBLE, INTREG, INTREG_UDISP, AVR32_V2),
43.26989 -+    SYNTAX_NORMAL2(LD_SBHI, LD_SBHI, LD_SBHI, INTREG, INTREG_UDISP, AVR32_V2),
43.26990 -+    SYNTAX_NORMAL2(LD_SBVS, LD_SBVS, LD_SBVS, INTREG, INTREG_UDISP, AVR32_V2),
43.26991 -+    SYNTAX_NORMAL2(LD_SBVC, LD_SBVC, LD_SBVC, INTREG, INTREG_UDISP, AVR32_V2),
43.26992 -+    SYNTAX_NORMAL2(LD_SBQS, LD_SBQS, LD_SBQS, INTREG, INTREG_UDISP, AVR32_V2),
43.26993 -+    SYNTAX_NORMAL2(LD_SBAL, LD_SBAL, LD_SBAL, INTREG, INTREG_UDISP, AVR32_V2),
43.26994 -+    SYNTAX_NORMAL2(LD_SBHS, LD_SBHS, LD_SBCC, INTREG, INTREG_UDISP, AVR32_V2),
43.26995 -+    SYNTAX_NORMAL2(LD_SBLO, LD_SBLO, LD_SBCS, INTREG, INTREG_UDISP, AVR32_V2),
43.26996 -+    SYNTAX_NORMAL2(LD_UBEQ, LD_UBEQ, LD_UBEQ, INTREG, INTREG_UDISP, AVR32_V2),
43.26997 -+    SYNTAX_NORMAL2(LD_UBNE, LD_UBNE, LD_UBNE, INTREG, INTREG_UDISP, AVR32_V2),
43.26998 -+    SYNTAX_NORMAL2(LD_UBCC, LD_UBCC, LD_UBCC, INTREG, INTREG_UDISP, AVR32_V2),
43.26999 -+    SYNTAX_NORMAL2(LD_UBCS, LD_UBCS, LD_UBCS, INTREG, INTREG_UDISP, AVR32_V2),
43.27000 -+    SYNTAX_NORMAL2(LD_UBGE, LD_UBGE, LD_UBGE, INTREG, INTREG_UDISP, AVR32_V2),
43.27001 -+    SYNTAX_NORMAL2(LD_UBLT, LD_UBLT, LD_UBLT, INTREG, INTREG_UDISP, AVR32_V2),
43.27002 -+    SYNTAX_NORMAL2(LD_UBMI, LD_UBMI, LD_UBMI, INTREG, INTREG_UDISP, AVR32_V2),
43.27003 -+    SYNTAX_NORMAL2(LD_UBPL, LD_UBPL, LD_UBPL, INTREG, INTREG_UDISP, AVR32_V2),
43.27004 -+    SYNTAX_NORMAL2(LD_UBLS, LD_UBLS, LD_UBLS, INTREG, INTREG_UDISP, AVR32_V2),
43.27005 -+    SYNTAX_NORMAL2(LD_UBGT, LD_UBGT, LD_UBGT, INTREG, INTREG_UDISP, AVR32_V2),
43.27006 -+    SYNTAX_NORMAL2(LD_UBLE, LD_UBLE, LD_UBLE, INTREG, INTREG_UDISP, AVR32_V2),
43.27007 -+    SYNTAX_NORMAL2(LD_UBHI, LD_UBHI, LD_UBHI, INTREG, INTREG_UDISP, AVR32_V2),
43.27008 -+    SYNTAX_NORMAL2(LD_UBVS, LD_UBVS, LD_UBVS, INTREG, INTREG_UDISP, AVR32_V2),
43.27009 -+    SYNTAX_NORMAL2(LD_UBVC, LD_UBVC, LD_UBVC, INTREG, INTREG_UDISP, AVR32_V2),
43.27010 -+    SYNTAX_NORMAL2(LD_UBQS, LD_UBQS, LD_UBQS, INTREG, INTREG_UDISP, AVR32_V2),
43.27011 -+    SYNTAX_NORMAL2(LD_UBAL, LD_UBAL, LD_UBAL, INTREG, INTREG_UDISP, AVR32_V2),
43.27012 -+    SYNTAX_NORMAL2(LD_UBHS, LD_UBHS, LD_UBCC, INTREG, INTREG_UDISP, AVR32_V2),
43.27013 -+    SYNTAX_NORMAL2(LD_UBLO, LD_UBLO, LD_UBCS, INTREG, INTREG_UDISP, AVR32_V2),
43.27014 -+    SYNTAX_NORMAL2(ST_WEQ, ST_WEQ, ST_WEQ, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27015 -+    SYNTAX_NORMAL2(ST_WNE, ST_WNE, ST_WNE, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27016 -+    SYNTAX_NORMAL2(ST_WCC, ST_WCC, ST_WCC, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27017 -+    SYNTAX_NORMAL2(ST_WCS, ST_WCS, ST_WCS, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27018 -+    SYNTAX_NORMAL2(ST_WGE, ST_WGE, ST_WGE, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27019 -+    SYNTAX_NORMAL2(ST_WLT, ST_WLT, ST_WLT, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27020 -+    SYNTAX_NORMAL2(ST_WMI, ST_WMI, ST_WMI, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27021 -+    SYNTAX_NORMAL2(ST_WPL, ST_WPL, ST_WPL, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27022 -+    SYNTAX_NORMAL2(ST_WLS, ST_WLS, ST_WLS, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27023 -+    SYNTAX_NORMAL2(ST_WGT, ST_WGT, ST_WGT, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27024 -+    SYNTAX_NORMAL2(ST_WLE, ST_WLE, ST_WLE, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27025 -+    SYNTAX_NORMAL2(ST_WHI, ST_WHI, ST_WHI, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27026 -+    SYNTAX_NORMAL2(ST_WVS, ST_WVS, ST_WVS, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27027 -+    SYNTAX_NORMAL2(ST_WVC, ST_WVC, ST_WVC, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27028 -+    SYNTAX_NORMAL2(ST_WQS, ST_WQS, ST_WQS, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27029 -+    SYNTAX_NORMAL2(ST_WAL, ST_WAL, ST_WAL, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27030 -+    SYNTAX_NORMAL2(ST_WHS, ST_WHS, ST_WCC, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27031 -+    SYNTAX_NORMAL2(ST_WLO, ST_WLO, ST_WCS, INTREG_UDISP_W, INTREG, AVR32_V2),
43.27032 -+    SYNTAX_NORMAL2(ST_HEQ, ST_HEQ, ST_HEQ, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27033 -+    SYNTAX_NORMAL2(ST_HNE, ST_HNE, ST_HNE, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27034 -+    SYNTAX_NORMAL2(ST_HCC, ST_HCC, ST_HCC, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27035 -+    SYNTAX_NORMAL2(ST_HCS, ST_HCS, ST_HCS, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27036 -+    SYNTAX_NORMAL2(ST_HGE, ST_HGE, ST_HGE, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27037 -+    SYNTAX_NORMAL2(ST_HLT, ST_HLT, ST_HLT, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27038 -+    SYNTAX_NORMAL2(ST_HMI, ST_HMI, ST_HMI, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27039 -+    SYNTAX_NORMAL2(ST_HPL, ST_HPL, ST_HPL, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27040 -+    SYNTAX_NORMAL2(ST_HLS, ST_HLS, ST_HLS, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27041 -+    SYNTAX_NORMAL2(ST_HGT, ST_HGT, ST_HGT, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27042 -+    SYNTAX_NORMAL2(ST_HLE, ST_HLE, ST_HLE, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27043 -+    SYNTAX_NORMAL2(ST_HHI, ST_HHI, ST_HHI, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27044 -+    SYNTAX_NORMAL2(ST_HVS, ST_HVS, ST_HVS, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27045 -+    SYNTAX_NORMAL2(ST_HVC, ST_HVC, ST_HVC, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27046 -+    SYNTAX_NORMAL2(ST_HQS, ST_HQS, ST_HQS, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27047 -+    SYNTAX_NORMAL2(ST_HAL, ST_HAL, ST_HAL, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27048 -+    SYNTAX_NORMAL2(ST_HHS, ST_HHS, ST_HCC, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27049 -+    SYNTAX_NORMAL2(ST_HLO, ST_HLO, ST_HCS, INTREG_UDISP_H, INTREG, AVR32_V2),
43.27050 -+    SYNTAX_NORMAL2(ST_BEQ, ST_BEQ, ST_BEQ, INTREG_UDISP, INTREG, AVR32_V2),
43.27051 -+    SYNTAX_NORMAL2(ST_BNE, ST_BNE, ST_BNE, INTREG_UDISP, INTREG, AVR32_V2),
43.27052 -+    SYNTAX_NORMAL2(ST_BCC, ST_BCC, ST_BCC, INTREG_UDISP, INTREG, AVR32_V2),
43.27053 -+    SYNTAX_NORMAL2(ST_BCS, ST_BCS, ST_BCS, INTREG_UDISP, INTREG, AVR32_V2),
43.27054 -+    SYNTAX_NORMAL2(ST_BGE, ST_BGE, ST_BGE, INTREG_UDISP, INTREG, AVR32_V2),
43.27055 -+    SYNTAX_NORMAL2(ST_BLT, ST_BLT, ST_BLT, INTREG_UDISP, INTREG, AVR32_V2),
43.27056 -+    SYNTAX_NORMAL2(ST_BMI, ST_BMI, ST_BMI, INTREG_UDISP, INTREG, AVR32_V2),
43.27057 -+    SYNTAX_NORMAL2(ST_BPL, ST_BPL, ST_BPL, INTREG_UDISP, INTREG, AVR32_V2),
43.27058 -+    SYNTAX_NORMAL2(ST_BLS, ST_BLS, ST_BLS, INTREG_UDISP, INTREG, AVR32_V2),
43.27059 -+    SYNTAX_NORMAL2(ST_BGT, ST_BGT, ST_BGT, INTREG_UDISP, INTREG, AVR32_V2),
43.27060 -+    SYNTAX_NORMAL2(ST_BLE, ST_BLE, ST_BLE, INTREG_UDISP, INTREG, AVR32_V2),
43.27061 -+    SYNTAX_NORMAL2(ST_BHI, ST_BHI, ST_BHI, INTREG_UDISP, INTREG, AVR32_V2),
43.27062 -+    SYNTAX_NORMAL2(ST_BVS, ST_BVS, ST_BVS, INTREG_UDISP, INTREG, AVR32_V2),
43.27063 -+    SYNTAX_NORMAL2(ST_BVC, ST_BVC, ST_BVC, INTREG_UDISP, INTREG, AVR32_V2),
43.27064 -+    SYNTAX_NORMAL2(ST_BQS, ST_BQS, ST_BQS, INTREG_UDISP, INTREG, AVR32_V2),
43.27065 -+    SYNTAX_NORMAL2(ST_BAL, ST_BAL, ST_BAL, INTREG_UDISP, INTREG, AVR32_V2),
43.27066 -+    SYNTAX_NORMAL2(ST_BHS, ST_BHS, ST_BCC, INTREG_UDISP, INTREG, AVR32_V2),
43.27067 -+    SYNTAX_NORMAL2(ST_BLO, ST_BLO, ST_BCS, INTREG_UDISP, INTREG, AVR32_V2),
43.27068 -+    SYNTAX_NORMAL2(MOVH, MOVH, MOVH, INTREG, UNSIGNED_CONST, AVR32_V2),
43.27069 -+
43.27070 -+  };
43.27071 -+
43.27072 -+#define NORMAL_MNEMONIC(name, syntax, str)		\
43.27073 -+  {							\
43.27074 -+    AVR32_MNEMONIC_##name, str,				\
43.27075 -+    &avr32_syntax_table[AVR32_SYNTAX_##syntax],		\
43.27076 -+  }
43.27077 -+#define FP_MNEMONIC(name, syntax, str)			\
43.27078 -+  NORMAL_MNEMONIC(name##_S, syntax##_S, str ".s"),	\
43.27079 -+  NORMAL_MNEMONIC(name##_D, syntax##_D, str ".d")
43.27080 -+
43.27081 -+const struct avr32_mnemonic avr32_mnemonic_table[] =
43.27082 -+  {
43.27083 -+    NORMAL_MNEMONIC(ABS, ABS, "abs"),
43.27084 -+    NORMAL_MNEMONIC(ACALL, ACALL, "acall"),
43.27085 -+    NORMAL_MNEMONIC(ACR, ACR, "acr"),
43.27086 -+    NORMAL_MNEMONIC(ADC, ADC, "adc"),
43.27087 -+    NORMAL_MNEMONIC(ADD, ADD1, "add"),
43.27088 -+    NORMAL_MNEMONIC(ADDABS, ADDABS, "addabs"),
43.27089 -+    NORMAL_MNEMONIC(ADDHH_W, ADDHH_W, "addhh.w"),
43.27090 -+    NORMAL_MNEMONIC(AND, AND1, "and"),
43.27091 -+    NORMAL_MNEMONIC(ANDH, ANDH, "andh"),
43.27092 -+    NORMAL_MNEMONIC(ANDL, ANDL, "andl"),
43.27093 -+    NORMAL_MNEMONIC(ANDN, ANDN, "andn"),
43.27094 -+    NORMAL_MNEMONIC(ASR, ASR1, "asr"),
43.27095 -+    NORMAL_MNEMONIC(BFEXTS, BFEXTS, "bfexts"),
43.27096 -+    NORMAL_MNEMONIC(BFEXTU, BFEXTU, "bfextu"),
43.27097 -+    NORMAL_MNEMONIC(BFINS, BFINS, "bfins"),
43.27098 -+    NORMAL_MNEMONIC(BLD, BLD, "bld"),
43.27099 -+    NORMAL_MNEMONIC(BREQ, BREQ1, "breq"),
43.27100 -+    NORMAL_MNEMONIC(BRNE, BRNE1, "brne"),
43.27101 -+    NORMAL_MNEMONIC(BRCC, BRCC1, "brcc"),
43.27102 -+    NORMAL_MNEMONIC(BRCS, BRCS1, "brcs"),
43.27103 -+    NORMAL_MNEMONIC(BRGE, BRGE1, "brge"),
43.27104 -+    NORMAL_MNEMONIC(BRLT, BRLT1, "brlt"),
43.27105 -+    NORMAL_MNEMONIC(BRMI, BRMI1, "brmi"),
43.27106 -+    NORMAL_MNEMONIC(BRPL, BRPL1, "brpl"),
43.27107 -+    NORMAL_MNEMONIC(BRHS, BRHS1, "brhs"),
43.27108 -+    NORMAL_MNEMONIC(BRLO, BRLO1, "brlo"),
43.27109 -+    NORMAL_MNEMONIC(BRLS, BRLS, "brls"),
43.27110 -+    NORMAL_MNEMONIC(BRGT, BRGT, "brgt"),
43.27111 -+    NORMAL_MNEMONIC(BRLE, BRLE, "brle"),
43.27112 -+    NORMAL_MNEMONIC(BRHI, BRHI, "brhi"),
43.27113 -+    NORMAL_MNEMONIC(BRVS, BRVS, "brvs"),
43.27114 -+    NORMAL_MNEMONIC(BRVC, BRVC, "brvc"),
43.27115 -+    NORMAL_MNEMONIC(BRQS, BRQS, "brqs"),
43.27116 -+    NORMAL_MNEMONIC(BRAL, BRAL, "bral"),
43.27117 -+    NORMAL_MNEMONIC(BREAKPOINT, BREAKPOINT, "breakpoint"),
43.27118 -+    NORMAL_MNEMONIC(BREV, BREV, "brev"),
43.27119 -+    NORMAL_MNEMONIC(BST, BST, "bst"),
43.27120 -+    NORMAL_MNEMONIC(CACHE, CACHE, "cache"),
43.27121 -+    NORMAL_MNEMONIC(CASTS_B, CASTS_B, "casts.b"),
43.27122 -+    NORMAL_MNEMONIC(CASTS_H, CASTS_H, "casts.h"),
43.27123 -+    NORMAL_MNEMONIC(CASTU_B, CASTU_B, "castu.b"),
43.27124 -+    NORMAL_MNEMONIC(CASTU_H, CASTU_H, "castu.h"),
43.27125 -+    NORMAL_MNEMONIC(CBR, CBR, "cbr"),
43.27126 -+    NORMAL_MNEMONIC(CLZ, CLZ, "clz"),
43.27127 -+    NORMAL_MNEMONIC(COM, COM, "com"),
43.27128 -+    NORMAL_MNEMONIC(COP, COP, "cop"),
43.27129 -+    NORMAL_MNEMONIC(CP_B, CP_B, "cp.b"),
43.27130 -+    NORMAL_MNEMONIC(CP_H, CP_H, "cp.h"),
43.27131 -+    NORMAL_MNEMONIC(CP_W, CP_W1, "cp.w"),
43.27132 -+    NORMAL_MNEMONIC(CP, CP_W1, "cp"),
43.27133 -+    NORMAL_MNEMONIC(CPC, CPC1, "cpc"),
43.27134 -+    NORMAL_MNEMONIC(CSRF, CSRF, "csrf"),
43.27135 -+    NORMAL_MNEMONIC(CSRFCZ, CSRFCZ, "csrfcz"),
43.27136 -+    NORMAL_MNEMONIC(DIVS, DIVS, "divs"),
43.27137 -+    NORMAL_MNEMONIC(DIVU, DIVU, "divu"),
43.27138 -+    NORMAL_MNEMONIC(EOR, EOR1, "eor"),
43.27139 -+    NORMAL_MNEMONIC(EORL, EORL, "eorl"),
43.27140 -+    NORMAL_MNEMONIC(EORH, EORH, "eorh"),
43.27141 -+    NORMAL_MNEMONIC(FRS, FRS, "frs"),
43.27142 -+    NORMAL_MNEMONIC(ICALL, ICALL, "icall"),
43.27143 -+    NORMAL_MNEMONIC(INCJOSP, INCJOSP, "incjosp"),
43.27144 -+    NORMAL_MNEMONIC(LD_D, LD_D1, "ld.d"),
43.27145 -+    NORMAL_MNEMONIC(LD_SB, LD_SB2, "ld.sb"),
43.27146 -+    NORMAL_MNEMONIC(LD_UB, LD_UB1, "ld.ub"),
43.27147 -+    NORMAL_MNEMONIC(LD_SH, LD_SH1, "ld.sh"),
43.27148 -+    NORMAL_MNEMONIC(LD_UH, LD_UH1, "ld.uh"),
43.27149 -+    NORMAL_MNEMONIC(LD_W, LD_W1, "ld.w"),
43.27150 -+    NORMAL_MNEMONIC(LDC_D, LDC_D3, "ldc.d"),
43.27151 -+    NORMAL_MNEMONIC(LDC_W, LDC_W3, "ldc.w"),
43.27152 -+    NORMAL_MNEMONIC(LDC0_D, LDC0_D, "ldc0.d"),
43.27153 -+    NORMAL_MNEMONIC(LDC0_W, LDC0_W, "ldc0.w"),
43.27154 -+    NORMAL_MNEMONIC(LDCM_D, LDCM_D, "ldcm.d"),
43.27155 -+    NORMAL_MNEMONIC(LDCM_W, LDCM_W, "ldcm.w"),
43.27156 -+    NORMAL_MNEMONIC(LDDPC, LDDPC, "lddpc"),
43.27157 -+    NORMAL_MNEMONIC(LDDSP, LDDSP, "lddsp"),
43.27158 -+    NORMAL_MNEMONIC(LDINS_B, LDINS_B, "ldins.b"),
43.27159 -+    NORMAL_MNEMONIC(LDINS_H, LDINS_H, "ldins.h"),
43.27160 -+    NORMAL_MNEMONIC(LDM, LDM, "ldm"),
43.27161 -+    NORMAL_MNEMONIC(LDMTS, LDMTS, "ldmts"),
43.27162 -+    NORMAL_MNEMONIC(LDSWP_SH, LDSWP_SH, "ldswp.sh"),
43.27163 -+    NORMAL_MNEMONIC(LDSWP_UH, LDSWP_UH, "ldswp.uh"),
43.27164 -+    NORMAL_MNEMONIC(LDSWP_W, LDSWP_W, "ldswp.w"),
43.27165 -+    NORMAL_MNEMONIC(LSL, LSL1, "lsl"),
43.27166 -+    NORMAL_MNEMONIC(LSR, LSR1, "lsr"),
43.27167 -+    NORMAL_MNEMONIC(MAC, MAC, "mac"),
43.27168 -+    NORMAL_MNEMONIC(MACHH_D, MACHH_D, "machh.d"),
43.27169 -+    NORMAL_MNEMONIC(MACHH_W, MACHH_W, "machh.w"),
43.27170 -+    NORMAL_MNEMONIC(MACS_D, MACS_D, "macs.d"),
43.27171 -+    NORMAL_MNEMONIC(MACSATHH_W, MACSATHH_W, "macsathh.w"),
43.27172 -+    NORMAL_MNEMONIC(MACU_D, MACUD, "macu.d"),
43.27173 -+    NORMAL_MNEMONIC(MACWH_D, MACWH_D, "macwh.d"),
43.27174 -+    NORMAL_MNEMONIC(MAX, MAX, "max"),
43.27175 -+    NORMAL_MNEMONIC(MCALL, MCALL, "mcall"),
43.27176 -+    NORMAL_MNEMONIC(MFDR, MFDR, "mfdr"),
43.27177 -+    NORMAL_MNEMONIC(MFSR, MFSR, "mfsr"),
43.27178 -+    NORMAL_MNEMONIC(MIN, MIN, "min"),
43.27179 -+    NORMAL_MNEMONIC(MOV, MOV3, "mov"),
43.27180 -+    NORMAL_MNEMONIC(MOVEQ, MOVEQ1, "moveq"),
43.27181 -+    NORMAL_MNEMONIC(MOVNE, MOVNE1, "movne"),
43.27182 -+    NORMAL_MNEMONIC(MOVCC, MOVCC1, "movcc"),
43.27183 -+    NORMAL_MNEMONIC(MOVCS, MOVCS1, "movcs"),
43.27184 -+    NORMAL_MNEMONIC(MOVGE, MOVGE1, "movge"),
43.27185 -+    NORMAL_MNEMONIC(MOVLT, MOVLT1, "movlt"),
43.27186 -+    NORMAL_MNEMONIC(MOVMI, MOVMI1, "movmi"),
43.27187 -+    NORMAL_MNEMONIC(MOVPL, MOVPL1, "movpl"),
43.27188 -+    NORMAL_MNEMONIC(MOVLS, MOVLS1, "movls"),
43.27189 -+    NORMAL_MNEMONIC(MOVGT, MOVGT1, "movgt"),
43.27190 -+    NORMAL_MNEMONIC(MOVLE, MOVLE1, "movle"),
43.27191 -+    NORMAL_MNEMONIC(MOVHI, MOVHI1, "movhi"),
43.27192 -+    NORMAL_MNEMONIC(MOVVS, MOVVS1, "movvs"),
43.27193 -+    NORMAL_MNEMONIC(MOVVC, MOVVC1, "movvc"),
43.27194 -+    NORMAL_MNEMONIC(MOVQS, MOVQS1, "movqs"),
43.27195 -+    NORMAL_MNEMONIC(MOVAL, MOVAL1, "moval"),
43.27196 -+    NORMAL_MNEMONIC(MOVHS, MOVHS1, "movhs"),
43.27197 -+    NORMAL_MNEMONIC(MOVLO, MOVLO1, "movlo"),
43.27198 -+    NORMAL_MNEMONIC(MTDR, MTDR, "mtdr"),
43.27199 -+    NORMAL_MNEMONIC(MTSR, MTSR, "mtsr"),
43.27200 -+    NORMAL_MNEMONIC(MUL, MUL1, "mul"),
43.27201 -+    NORMAL_MNEMONIC(MULHH_W, MULHH_W, "mulhh.w"),
43.27202 -+    NORMAL_MNEMONIC(MULNHH_W, MULNHH_W, "mulnhh.w"),
43.27203 -+    NORMAL_MNEMONIC(MULNWH_D, MULNWH_D, "mulnwh.d"),
43.27204 -+    NORMAL_MNEMONIC(MULS_D, MULSD, "muls.d"),
43.27205 -+    NORMAL_MNEMONIC(MULSATHH_H, MULSATHH_H, "mulsathh.h"),
43.27206 -+    NORMAL_MNEMONIC(MULSATHH_W, MULSATHH_W, "mulsathh.w"),
43.27207 -+    NORMAL_MNEMONIC(MULSATRNDHH_H, MULSATRNDHH_H, "mulsatrndhh.h"),
43.27208 -+    NORMAL_MNEMONIC(MULSATRNDWH_W, MULSATRNDWH_W, "mulsatrndwh.w"),
43.27209 -+    NORMAL_MNEMONIC(MULSATWH_W, MULSATWH_W, "mulsatwh.w"),
43.27210 -+    NORMAL_MNEMONIC(MULU_D, MULU_D, "mulu.d"),
43.27211 -+    NORMAL_MNEMONIC(MULWH_D, MULWH_D, "mulwh.d"),
43.27212 -+    NORMAL_MNEMONIC(MUSFR, MUSFR, "musfr"),
43.27213 -+    NORMAL_MNEMONIC(MUSTR, MUSTR, "mustr"),
43.27214 -+    NORMAL_MNEMONIC(MVCR_D, MVCR_D, "mvcr.d"),
43.27215 -+    NORMAL_MNEMONIC(MVCR_W, MVCR_W, "mvcr.w"),
43.27216 -+    NORMAL_MNEMONIC(MVRC_D, MVRC_D, "mvrc.d"),
43.27217 -+    NORMAL_MNEMONIC(MVRC_W, MVRC_W, "mvrc.w"),
43.27218 -+    NORMAL_MNEMONIC(NEG, NEG, "neg"),
43.27219 -+    NORMAL_MNEMONIC(NOP, NOP, "nop"),
43.27220 -+    NORMAL_MNEMONIC(OR, OR1, "or"),
43.27221 -+    NORMAL_MNEMONIC(ORH, ORH, "orh"),
43.27222 -+    NORMAL_MNEMONIC(ORL, ORL, "orl"),
43.27223 -+    NORMAL_MNEMONIC(PABS_SB, PABS_SB, "pabs.sb"),
43.27224 -+    NORMAL_MNEMONIC(PABS_SH, PABS_SH, "pabs.sh"),
43.27225 -+    NORMAL_MNEMONIC(PACKSH_SB, PACKSH_SB, "packsh.sb"),
43.27226 -+    NORMAL_MNEMONIC(PACKSH_UB, PACKSH_UB, "packsh.ub"),
43.27227 -+    NORMAL_MNEMONIC(PACKW_SH, PACKW_SH, "packw.sh"),
43.27228 -+    NORMAL_MNEMONIC(PADD_B, PADD_B, "padd.b"),
43.27229 -+    NORMAL_MNEMONIC(PADD_H, PADD_H, "padd.h"),
43.27230 -+    NORMAL_MNEMONIC(PADDH_SH, PADDH_SH, "paddh.sh"),
43.27231 -+    NORMAL_MNEMONIC(PADDH_UB, PADDH_UB, "paddh.ub"),
43.27232 -+    NORMAL_MNEMONIC(PADDS_SB, PADDS_SB, "padds.sb"),
43.27233 -+    NORMAL_MNEMONIC(PADDS_SH, PADDS_SH, "padds.sh"),
43.27234 -+    NORMAL_MNEMONIC(PADDS_UB, PADDS_UB, "padds.ub"),
43.27235 -+    NORMAL_MNEMONIC(PADDS_UH, PADDS_UH, "padds.uh"),
43.27236 -+    NORMAL_MNEMONIC(PADDSUB_H, PADDSUB_H, "paddsub.h"),
43.27237 -+    NORMAL_MNEMONIC(PADDSUBH_SH, PADDSUBH_SH, "paddsubh.sh"),
43.27238 -+    NORMAL_MNEMONIC(PADDSUBS_SH, PADDSUBS_SH, "paddsubs.sh"),
43.27239 -+    NORMAL_MNEMONIC(PADDSUBS_UH, PADDSUBS_UH, "paddsubs.uh"),
43.27240 -+    NORMAL_MNEMONIC(PADDX_H, PADDX_H, "paddx.h"),
43.27241 -+    NORMAL_MNEMONIC(PADDXH_SH, PADDXH_SH, "paddxh.sh"),
43.27242 -+    NORMAL_MNEMONIC(PADDXS_SH, PADDXS_SH, "paddxs.sh"),
43.27243 -+    NORMAL_MNEMONIC(PADDXS_UH, PADDXS_UH, "paddxs.uh"),
43.27244 -+    NORMAL_MNEMONIC(PASR_B, PASR_B, "pasr.b"),
43.27245 -+    NORMAL_MNEMONIC(PASR_H, PASR_H, "pasr.h"),
43.27246 -+    NORMAL_MNEMONIC(PAVG_SH, PAVG_SH, "pavg.sh"),
43.27247 -+    NORMAL_MNEMONIC(PAVG_UB, PAVG_UB, "pavg.ub"),
43.27248 -+    NORMAL_MNEMONIC(PLSL_B, PLSL_B, "plsl.b"),
43.27249 -+    NORMAL_MNEMONIC(PLSL_H, PLSL_H, "plsl.h"),
43.27250 -+    NORMAL_MNEMONIC(PLSR_B, PLSR_B, "plsr.b"),
43.27251 -+    NORMAL_MNEMONIC(PLSR_H, PLSR_H, "plsr.h"),
43.27252 -+    NORMAL_MNEMONIC(PMAX_SH, PMAX_SH, "pmax.sh"),
43.27253 -+    NORMAL_MNEMONIC(PMAX_UB, PMAX_UB, "pmax.ub"),
43.27254 -+    NORMAL_MNEMONIC(PMIN_SH, PMIN_SH, "pmin.sh"),
43.27255 -+    NORMAL_MNEMONIC(PMIN_UB, PMIN_UB, "pmin.ub"),
43.27256 -+    NORMAL_MNEMONIC(POPJC, POPJC, "popjc"),
43.27257 -+    NORMAL_MNEMONIC(POPM, POPM, "popm"),
43.27258 -+    NORMAL_MNEMONIC(PREF, PREF, "pref"),
43.27259 -+    NORMAL_MNEMONIC(PSAD, PSAD, "psad"),
43.27260 -+    NORMAL_MNEMONIC(PSUB_B, PSUB_B, "psub.b"),
43.27261 -+    NORMAL_MNEMONIC(PSUB_H, PSUB_H, "psub.h"),
43.27262 -+    NORMAL_MNEMONIC(PSUBADD_H, PSUBADD_H, "psubadd.h"),
43.27263 -+    NORMAL_MNEMONIC(PSUBADDH_SH, PSUBADDH_SH, "psubaddh.sh"),
43.27264 -+    NORMAL_MNEMONIC(PSUBADDS_SH, PSUBADDS_SH, "psubadds.sh"),
43.27265 -+    NORMAL_MNEMONIC(PSUBADDS_UH, PSUBADDS_UH, "psubadds.uh"),
43.27266 -+    NORMAL_MNEMONIC(PSUBH_SH, PSUBH_SH, "psubh.sh"),
43.27267 -+    NORMAL_MNEMONIC(PSUBH_UB, PSUBH_UB, "psubh.ub"),
43.27268 -+    NORMAL_MNEMONIC(PSUBS_SB, PSUBS_SB, "psubs.sb"),
43.27269 -+    NORMAL_MNEMONIC(PSUBS_SH, PSUBS_SH, "psubs.sh"),
43.27270 -+    NORMAL_MNEMONIC(PSUBS_UB, PSUBS_UB, "psubs.ub"),
43.27271 -+    NORMAL_MNEMONIC(PSUBS_UH, PSUBS_UH, "psubs.uh"),
43.27272 -+    NORMAL_MNEMONIC(PSUBX_H, PSUBX_H, "psubx.h"),
43.27273 -+    NORMAL_MNEMONIC(PSUBXH_SH, PSUBXH_SH, "psubxh.sh"),
43.27274 -+    NORMAL_MNEMONIC(PSUBXS_SH, PSUBXS_SH, "psubxs.sh"),
43.27275 -+    NORMAL_MNEMONIC(PSUBXS_UH, PSUBXS_UH, "psubxs.uh"),
43.27276 -+    NORMAL_MNEMONIC(PUNPCKSB_H, PUNPCKSB_H, "punpcksb.h"),
43.27277 -+    NORMAL_MNEMONIC(PUNPCKUB_H, PUNPCKUB_H, "punpckub.h"),
43.27278 -+    NORMAL_MNEMONIC(PUSHJC, PUSHJC, "pushjc"),
43.27279 -+    NORMAL_MNEMONIC(PUSHM, PUSHM, "pushm"),
43.27280 -+    NORMAL_MNEMONIC(RCALL, RCALL1, "rcall"),
43.27281 -+    NORMAL_MNEMONIC(RETEQ, RETEQ, "reteq"),
43.27282 -+    NORMAL_MNEMONIC(RETNE, RETNE, "retne"),
43.27283 -+    NORMAL_MNEMONIC(RETCC, RETCC, "retcc"),
43.27284 -+    NORMAL_MNEMONIC(RETCS, RETCS, "retcs"),
43.27285 -+    NORMAL_MNEMONIC(RETGE, RETGE, "retge"),
43.27286 -+    NORMAL_MNEMONIC(RETLT, RETLT, "retlt"),
43.27287 -+    NORMAL_MNEMONIC(RETMI, RETMI, "retmi"),
43.27288 -+    NORMAL_MNEMONIC(RETPL, RETPL, "retpl"),
43.27289 -+    NORMAL_MNEMONIC(RETLS, RETLS, "retls"),
43.27290 -+    NORMAL_MNEMONIC(RETGT, RETGT, "retgt"),
43.27291 -+    NORMAL_MNEMONIC(RETLE, RETLE, "retle"),
43.27292 -+    NORMAL_MNEMONIC(RETHI, RETHI, "rethi"),
43.27293 -+    NORMAL_MNEMONIC(RETVS, RETVS, "retvs"),
43.27294 -+    NORMAL_MNEMONIC(RETVC, RETVC, "retvc"),
43.27295 -+    NORMAL_MNEMONIC(RETQS, RETQS, "retqs"),
43.27296 -+    NORMAL_MNEMONIC(RETAL, RETAL, "retal"),
43.27297 -+    NORMAL_MNEMONIC(RETHS, RETHS, "reths"),
43.27298 -+    NORMAL_MNEMONIC(RETLO, RETLO, "retlo"),
43.27299 -+    NORMAL_MNEMONIC(RET, RETAL, "ret"),
43.27300 -+    NORMAL_MNEMONIC(RETD, RETD, "retd"),
43.27301 -+    NORMAL_MNEMONIC(RETE, RETE, "rete"),
43.27302 -+    NORMAL_MNEMONIC(RETJ, RETJ, "retj"),
43.27303 -+    NORMAL_MNEMONIC(RETS, RETS, "rets"),
43.27304 -+    NORMAL_MNEMONIC(RJMP, RJMP, "rjmp"),
43.27305 -+    NORMAL_MNEMONIC(ROL, ROL, "rol"),
43.27306 -+    NORMAL_MNEMONIC(ROR, ROR, "ror"),
43.27307 -+    NORMAL_MNEMONIC(RSUB, RSUB1, "rsub"),
43.27308 -+    NORMAL_MNEMONIC(SATADD_H, SATADD_H, "satadd.h"),
43.27309 -+    NORMAL_MNEMONIC(SATADD_W, SATADD_W, "satadd.w"),
43.27310 -+    NORMAL_MNEMONIC(SATRNDS, SATRNDS, "satrnds"),
43.27311 -+    NORMAL_MNEMONIC(SATRNDU, SATRNDU, "satrndu"),
43.27312 -+    NORMAL_MNEMONIC(SATS, SATS, "sats"),
43.27313 -+    NORMAL_MNEMONIC(SATSUB_H, SATSUB_H, "satsub.h"),
43.27314 -+    NORMAL_MNEMONIC(SATSUB_W, SATSUB_W1, "satsub.w"),
43.27315 -+    NORMAL_MNEMONIC(SATU, SATU, "satu"),
43.27316 -+    NORMAL_MNEMONIC(SBC, SBC, "sbc"),
43.27317 -+    NORMAL_MNEMONIC(SBR, SBR, "sbr"),
43.27318 -+    NORMAL_MNEMONIC(SCALL, SCALL, "scall"),
43.27319 -+    NORMAL_MNEMONIC(SCR, SCR, "scr"),
43.27320 -+    NORMAL_MNEMONIC(SLEEP, SLEEP, "sleep"),
43.27321 -+    NORMAL_MNEMONIC(SREQ, SREQ, "sreq"),
43.27322 -+    NORMAL_MNEMONIC(SRNE, SRNE, "srne"),
43.27323 -+    NORMAL_MNEMONIC(SRCC, SRCC, "srcc"),
43.27324 -+    NORMAL_MNEMONIC(SRCS, SRCS, "srcs"),
43.27325 -+    NORMAL_MNEMONIC(SRGE, SRGE, "srge"),
43.27326 -+    NORMAL_MNEMONIC(SRLT, SRLT, "srlt"),
43.27327 -+    NORMAL_MNEMONIC(SRMI, SRMI, "srmi"),
43.27328 -+    NORMAL_MNEMONIC(SRPL, SRPL, "srpl"),
43.27329 -+    NORMAL_MNEMONIC(SRLS, SRLS, "srls"),
43.27330 -+    NORMAL_MNEMONIC(SRGT, SRGT, "srgt"),
43.27331 -+    NORMAL_MNEMONIC(SRLE, SRLE, "srle"),
43.27332 -+    NORMAL_MNEMONIC(SRHI, SRHI, "srhi"),
43.27333 -+    NORMAL_MNEMONIC(SRVS, SRVS, "srvs"),
43.27334 -+    NORMAL_MNEMONIC(SRVC, SRVC, "srvc"),
43.27335 -+    NORMAL_MNEMONIC(SRQS, SRQS, "srqs"),
43.27336 -+    NORMAL_MNEMONIC(SRAL, SRAL, "sral"),
43.27337 -+    NORMAL_MNEMONIC(SRHS, SRHS, "srhs"),
43.27338 -+    NORMAL_MNEMONIC(SRLO, SRLO, "srlo"),
43.27339 -+    NORMAL_MNEMONIC(SSRF, SSRF, "ssrf"),
43.27340 -+    NORMAL_MNEMONIC(ST_B, ST_B1, "st.b"),
43.27341 -+    NORMAL_MNEMONIC(ST_D, ST_D1, "st.d"),
43.27342 -+    NORMAL_MNEMONIC(ST_H, ST_H1, "st.h"),
43.27343 -+    NORMAL_MNEMONIC(ST_W, ST_W1, "st.w"),
43.27344 -+    NORMAL_MNEMONIC(STC_D, STC_D3, "stc.d"),
43.27345 -+    NORMAL_MNEMONIC(STC_W, STC_W3, "stc.w"),
43.27346 -+    NORMAL_MNEMONIC(STC0_D, STC0_D, "stc0.d"),
43.27347 -+    NORMAL_MNEMONIC(STC0_W, STC0_W, "stc0.w"),
43.27348 -+    NORMAL_MNEMONIC(STCM_D, STCM_D, "stcm.d"),
43.27349 -+    NORMAL_MNEMONIC(STCM_W, STCM_W, "stcm.w"),
43.27350 -+    NORMAL_MNEMONIC(STCOND, STCOND, "stcond"),
43.27351 -+    NORMAL_MNEMONIC(STDSP, STDSP, "stdsp"),
43.27352 -+    NORMAL_MNEMONIC(STHH_W, STHH_W2, "sthh.w"),
43.27353 -+    NORMAL_MNEMONIC(STM, STM, "stm"),
43.27354 -+    NORMAL_MNEMONIC(STMTS, STMTS, "stmts"),
43.27355 -+    NORMAL_MNEMONIC(STSWP_H, STSWP_H, "stswp.h"),
43.27356 -+    NORMAL_MNEMONIC(STSWP_W, STSWP_W, "stswp.w"),
43.27357 -+    NORMAL_MNEMONIC(SUB, SUB1, "sub"),
43.27358 -+    NORMAL_MNEMONIC(SUBEQ, SUBEQ, "subeq"),
43.27359 -+    NORMAL_MNEMONIC(SUBNE, SUBNE, "subne"),
43.27360 -+    NORMAL_MNEMONIC(SUBCC, SUBCC, "subcc"),
43.27361 -+    NORMAL_MNEMONIC(SUBCS, SUBCS, "subcs"),
43.27362 -+    NORMAL_MNEMONIC(SUBGE, SUBGE, "subge"),
43.27363 -+    NORMAL_MNEMONIC(SUBLT, SUBLT, "sublt"),
43.27364 -+    NORMAL_MNEMONIC(SUBMI, SUBMI, "submi"),
43.27365 -+    NORMAL_MNEMONIC(SUBPL, SUBPL, "subpl"),
43.27366 -+    NORMAL_MNEMONIC(SUBLS, SUBLS, "subls"),
43.27367 -+    NORMAL_MNEMONIC(SUBGT, SUBGT, "subgt"),
43.27368 -+    NORMAL_MNEMONIC(SUBLE, SUBLE, "suble"),
43.27369 -+    NORMAL_MNEMONIC(SUBHI, SUBHI, "subhi"),
43.27370 -+    NORMAL_MNEMONIC(SUBVS, SUBVS, "subvs"),
43.27371 -+    NORMAL_MNEMONIC(SUBVC, SUBVC, "subvc"),
43.27372 -+    NORMAL_MNEMONIC(SUBQS, SUBQS, "subqs"),
43.27373 -+    NORMAL_MNEMONIC(SUBAL, SUBAL, "subal"),
43.27374 -+    NORMAL_MNEMONIC(SUBHS, SUBHS, "subhs"),
43.27375 -+    NORMAL_MNEMONIC(SUBLO, SUBLO, "sublo"),
43.27376 -+    NORMAL_MNEMONIC(SUBFEQ, SUBFEQ, "subfeq"),
43.27377 -+    NORMAL_MNEMONIC(SUBFNE, SUBFNE, "subfne"),
43.27378 -+    NORMAL_MNEMONIC(SUBFCC, SUBFCC, "subfcc"),
43.27379 -+    NORMAL_MNEMONIC(SUBFCS, SUBFCS, "subfcs"),
43.27380 -+    NORMAL_MNEMONIC(SUBFGE, SUBFGE, "subfge"),
43.27381 -+    NORMAL_MNEMONIC(SUBFLT, SUBFLT, "subflt"),
43.27382 -+    NORMAL_MNEMONIC(SUBFMI, SUBFMI, "subfmi"),
43.27383 -+    NORMAL_MNEMONIC(SUBFPL, SUBFPL, "subfpl"),
43.27384 -+    NORMAL_MNEMONIC(SUBFLS, SUBFLS, "subfls"),
43.27385 -+    NORMAL_MNEMONIC(SUBFGT, SUBFGT, "subfgt"),
43.27386 -+    NORMAL_MNEMONIC(SUBFLE, SUBFLE, "subfle"),
43.27387 -+    NORMAL_MNEMONIC(SUBFHI, SUBFHI, "subfhi"),
43.27388 -+    NORMAL_MNEMONIC(SUBFVS, SUBFVS, "subfvs"),
43.27389 -+    NORMAL_MNEMONIC(SUBFVC, SUBFVC, "subfvc"),
43.27390 -+    NORMAL_MNEMONIC(SUBFQS, SUBFQS, "subfqs"),
43.27391 -+    NORMAL_MNEMONIC(SUBFAL, SUBFAL, "subfal"),
43.27392 -+    NORMAL_MNEMONIC(SUBFHS, SUBFHS, "subfhs"),
43.27393 -+    NORMAL_MNEMONIC(SUBFLO, SUBFLO, "subflo"),
43.27394 -+    NORMAL_MNEMONIC(SUBHH_W, SUBHH_W, "subhh.w"),
43.27395 -+    NORMAL_MNEMONIC(SWAP_B, SWAP_B, "swap.b"),
43.27396 -+    NORMAL_MNEMONIC(SWAP_BH, SWAP_BH, "swap.bh"),
43.27397 -+    NORMAL_MNEMONIC(SWAP_H, SWAP_H, "swap.h"),
43.27398 -+    NORMAL_MNEMONIC(SYNC, SYNC, "sync"),
43.27399 -+    NORMAL_MNEMONIC(TLBR, TLBR, "tlbr"),
43.27400 -+    NORMAL_MNEMONIC(TLBS, TLBS, "tlbs"),
43.27401 -+    NORMAL_MNEMONIC(TLBW, TLBW, "tlbw"),
43.27402 -+    NORMAL_MNEMONIC(TNBZ, TNBZ, "tnbz"),
43.27403 -+    NORMAL_MNEMONIC(TST, TST, "tst"),
43.27404 -+    NORMAL_MNEMONIC(XCHG, XCHG, "xchg"),
43.27405 -+    NORMAL_MNEMONIC(MEMC, MEMC, "memc"),
43.27406 -+    NORMAL_MNEMONIC(MEMS, MEMS, "mems"),
43.27407 -+    NORMAL_MNEMONIC(MEMT, MEMT, "memt"),
43.27408 -+    FP_MNEMONIC(FADD, FADD, "fadd"),
43.27409 -+    FP_MNEMONIC(FSUB, FSUB, "fsub"),
43.27410 -+    FP_MNEMONIC(FMAC, FMAC, "fmac"),
43.27411 -+    FP_MNEMONIC(FNMAC, FNMAC, "fnmac"),
43.27412 -+    FP_MNEMONIC(FMSC, FMSC, "fmsc"),
43.27413 -+    FP_MNEMONIC(FNMSC, FNMSC, "fnmsc"),
43.27414 -+    FP_MNEMONIC(FMUL, FMUL, "fmul"),
43.27415 -+    FP_MNEMONIC(FNMUL, FNMUL, "fnmul"),
43.27416 -+    FP_MNEMONIC(FNEG, FNEG, "fneg"),
43.27417 -+    FP_MNEMONIC(FABS, FABS, "fabs"),
43.27418 -+    FP_MNEMONIC(FCMP, FCMP, "fcmp"),
43.27419 -+    FP_MNEMONIC(FMOV, FMOV1, "fmov"),
43.27420 -+    NORMAL_MNEMONIC(FCASTS_D, FCASTS_D, "fcasts.d"),
43.27421 -+    NORMAL_MNEMONIC(FCASTD_S, FCASTD_S, "fcastd.s"),
43.27422 -+    NORMAL_MNEMONIC(LDA_W, LDA_W, "lda.w"),
43.27423 -+    NORMAL_MNEMONIC(CALL, CALL, "call"),
43.27424 -+    NORMAL_MNEMONIC(PICOSVMAC, PICOSVMAC0, "picosvmac"),
43.27425 -+    NORMAL_MNEMONIC(PICOSVMUL, PICOSVMUL0, "picosvmul"),
43.27426 -+    NORMAL_MNEMONIC(PICOVMAC, PICOVMAC0, "picovmac"),
43.27427 -+    NORMAL_MNEMONIC(PICOVMUL, PICOVMUL0, "picovmul"),
43.27428 -+    NORMAL_MNEMONIC(PICOLD_D, PICOLD_D2, "picold.d"),
43.27429 -+    NORMAL_MNEMONIC(PICOLD_W, PICOLD_W2, "picold.w"),
43.27430 -+    NORMAL_MNEMONIC(PICOLDM_D, PICOLDM_D, "picoldm.d"),
43.27431 -+    NORMAL_MNEMONIC(PICOLDM_W, PICOLDM_W, "picoldm.w"),
43.27432 -+    NORMAL_MNEMONIC(PICOMV_D, PICOMV_D1, "picomv.d"),
43.27433 -+    NORMAL_MNEMONIC(PICOMV_W, PICOMV_W1, "picomv.w"),
43.27434 -+    NORMAL_MNEMONIC(PICOST_D, PICOST_D2, "picost.d"),
43.27435 -+    NORMAL_MNEMONIC(PICOST_W, PICOST_W2, "picost.w"),
43.27436 -+    NORMAL_MNEMONIC(PICOSTM_D, PICOSTM_D, "picostm.d"),
43.27437 -+    NORMAL_MNEMONIC(PICOSTM_W, PICOSTM_W, "picostm.w"),
43.27438 -+    NORMAL_MNEMONIC(RSUBEQ, RSUBEQ, "rsubeq"),
43.27439 -+    NORMAL_MNEMONIC(RSUBNE, RSUBNE, "rsubne"),
43.27440 -+    NORMAL_MNEMONIC(RSUBCC, RSUBCC, "rsubcc"),
43.27441 -+    NORMAL_MNEMONIC(RSUBCS, RSUBCS, "rsubcs"),
43.27442 -+    NORMAL_MNEMONIC(RSUBGE, RSUBGE, "rsubge"),
43.27443 -+    NORMAL_MNEMONIC(RSUBLT, RSUBLT, "rsublt"),
43.27444 -+    NORMAL_MNEMONIC(RSUBMI, RSUBMI, "rsubmi"),
43.27445 -+    NORMAL_MNEMONIC(RSUBPL, RSUBPL, "rsubpl"),
43.27446 -+    NORMAL_MNEMONIC(RSUBLS, RSUBLS, "rsubls"),
43.27447 -+    NORMAL_MNEMONIC(RSUBGT, RSUBGT, "rsubgt"),
43.27448 -+    NORMAL_MNEMONIC(RSUBLE, RSUBLE, "rsuble"),
43.27449 -+    NORMAL_MNEMONIC(RSUBHI, RSUBHI, "rsubhi"),
43.27450 -+    NORMAL_MNEMONIC(RSUBVS, RSUBVS, "rsubvs"),
43.27451 -+    NORMAL_MNEMONIC(RSUBVC, RSUBVC, "rsubvc"),
43.27452 -+    NORMAL_MNEMONIC(RSUBQS, RSUBQS, "rsubqs"),
43.27453 -+    NORMAL_MNEMONIC(RSUBAL, RSUBAL, "rsubal"),
43.27454 -+    NORMAL_MNEMONIC(RSUBHS, RSUBHS, "rsubhs"),
43.27455 -+    NORMAL_MNEMONIC(RSUBLO, RSUBLO, "rsublo"),
43.27456 -+    NORMAL_MNEMONIC(ADDEQ, ADDEQ, "addeq"),
43.27457 -+    NORMAL_MNEMONIC(ADDNE, ADDNE, "addne"),
43.27458 -+    NORMAL_MNEMONIC(ADDCC, ADDCC, "addcc"),
43.27459 -+    NORMAL_MNEMONIC(ADDCS, ADDCS, "addcs"),
43.27460 -+    NORMAL_MNEMONIC(ADDGE, ADDGE, "addge"),
43.27461 -+    NORMAL_MNEMONIC(ADDLT, ADDLT, "addlt"),
43.27462 -+    NORMAL_MNEMONIC(ADDMI, ADDMI, "addmi"),
43.27463 -+    NORMAL_MNEMONIC(ADDPL, ADDPL, "addpl"),
43.27464 -+    NORMAL_MNEMONIC(ADDLS, ADDLS, "addls"),
43.27465 -+    NORMAL_MNEMONIC(ADDGT, ADDGT, "addgt"),
43.27466 -+    NORMAL_MNEMONIC(ADDLE, ADDLE, "addle"),
43.27467 -+    NORMAL_MNEMONIC(ADDHI, ADDHI, "addhi"),
43.27468 -+    NORMAL_MNEMONIC(ADDVS, ADDVS, "addvs"),
43.27469 -+    NORMAL_MNEMONIC(ADDVC, ADDVC, "addvc"),
43.27470 -+    NORMAL_MNEMONIC(ADDQS, ADDQS, "addqs"),
43.27471 -+    NORMAL_MNEMONIC(ADDAL, ADDAL, "addal"),
43.27472 -+    NORMAL_MNEMONIC(ADDHS, ADDHS, "addhs"),
43.27473 -+    NORMAL_MNEMONIC(ADDLO, ADDLO, "addlo"),
43.27474 -+    NORMAL_MNEMONIC(ANDEQ, ANDEQ, "andeq"),
43.27475 -+    NORMAL_MNEMONIC(ANDNE, ANDNE, "andne"),
43.27476 -+    NORMAL_MNEMONIC(ANDCC, ANDCC, "andcc"),
43.27477 -+    NORMAL_MNEMONIC(ANDCS, ANDCS, "andcs"),
43.27478 -+    NORMAL_MNEMONIC(ANDGE, ANDGE, "andge"),
43.27479 -+    NORMAL_MNEMONIC(ANDLT, ANDLT, "andlt"),
43.27480 -+    NORMAL_MNEMONIC(ANDMI, ANDMI, "andmi"),
43.27481 -+    NORMAL_MNEMONIC(ANDPL, ANDPL, "andpl"),
43.27482 -+    NORMAL_MNEMONIC(ANDLS, ANDLS, "andls"),
43.27483 -+    NORMAL_MNEMONIC(ANDGT, ANDGT, "andgt"),
43.27484 -+    NORMAL_MNEMONIC(ANDLE, ANDLE, "andle"),
43.27485 -+    NORMAL_MNEMONIC(ANDHI, ANDHI, "andhi"),
43.27486 -+    NORMAL_MNEMONIC(ANDVS, ANDVS, "andvs"),
43.27487 -+    NORMAL_MNEMONIC(ANDVC, ANDVC, "andvc"),
43.27488 -+    NORMAL_MNEMONIC(ANDQS, ANDQS, "andqs"),
43.27489 -+    NORMAL_MNEMONIC(ANDAL, ANDAL, "andal"),
43.27490 -+    NORMAL_MNEMONIC(ANDHS, ANDHS, "andhs"),
43.27491 -+    NORMAL_MNEMONIC(ANDLO, ANDLO, "andlo"),
43.27492 -+    NORMAL_MNEMONIC(OREQ, OREQ, "oreq"),
43.27493 -+    NORMAL_MNEMONIC(ORNE, ORNE, "orne"),
43.27494 -+    NORMAL_MNEMONIC(ORCC, ORCC, "orcc"),
43.27495 -+    NORMAL_MNEMONIC(ORCS, ORCS, "orcs"),
43.27496 -+    NORMAL_MNEMONIC(ORGE, ORGE, "orge"),
43.27497 -+    NORMAL_MNEMONIC(ORLT, ORLT, "orlt"),
43.27498 -+    NORMAL_MNEMONIC(ORMI, ORMI, "ormi"),
43.27499 -+    NORMAL_MNEMONIC(ORPL, ORPL, "orpl"),
43.27500 -+    NORMAL_MNEMONIC(ORLS, ORLS, "orls"),
43.27501 -+    NORMAL_MNEMONIC(ORGT, ORGT, "orgt"),
43.27502 -+    NORMAL_MNEMONIC(ORLE, ORLE, "orle"),
43.27503 -+    NORMAL_MNEMONIC(ORHI, ORHI, "orhi"),
43.27504 -+    NORMAL_MNEMONIC(ORVS, ORVS, "orvs"),
43.27505 -+    NORMAL_MNEMONIC(ORVC, ORVC, "orvc"),
43.27506 -+    NORMAL_MNEMONIC(ORQS, ORQS, "orqs"),
43.27507 -+    NORMAL_MNEMONIC(ORAL, ORAL, "oral"),
43.27508 -+    NORMAL_MNEMONIC(ORHS, ORHS, "orhs"),
43.27509 -+    NORMAL_MNEMONIC(ORLO, ORLO, "orlo"),
43.27510 -+    NORMAL_MNEMONIC(EOREQ, EOREQ, "eoreq"),
43.27511 -+    NORMAL_MNEMONIC(EORNE, EORNE, "eorne"),
43.27512 -+    NORMAL_MNEMONIC(EORCC, EORCC, "eorcc"),
43.27513 -+    NORMAL_MNEMONIC(EORCS, EORCS, "eorcs"),
43.27514 -+    NORMAL_MNEMONIC(EORGE, EORGE, "eorge"),
43.27515 -+    NORMAL_MNEMONIC(EORLT, EORLT, "eorlt"),
43.27516 -+    NORMAL_MNEMONIC(EORMI, EORMI, "eormi"),
43.27517 -+    NORMAL_MNEMONIC(EORPL, EORPL, "eorpl"),
43.27518 -+    NORMAL_MNEMONIC(EORLS, EORLS, "eorls"),
43.27519 -+    NORMAL_MNEMONIC(EORGT, EORGT, "eorgt"),
43.27520 -+    NORMAL_MNEMONIC(EORLE, EORLE, "eorle"),
43.27521 -+    NORMAL_MNEMONIC(EORHI, EORHI, "eorhi"),
43.27522 -+    NORMAL_MNEMONIC(EORVS, EORVS, "eorvs"),
43.27523 -+    NORMAL_MNEMONIC(EORVC, EORVC, "eorvc"),
43.27524 -+    NORMAL_MNEMONIC(EORQS, EORQS, "eorqs"),
43.27525 -+    NORMAL_MNEMONIC(EORAL, EORAL, "eoral"),
43.27526 -+    NORMAL_MNEMONIC(EORHS, EORHS, "eorhs"),
43.27527 -+    NORMAL_MNEMONIC(EORLO, EORLO, "eorlo"),
43.27528 -+    NORMAL_MNEMONIC(LD_WEQ, LD_WEQ, "ld.weq"),
43.27529 -+    NORMAL_MNEMONIC(LD_WNE, LD_WNE, "ld.wne"),
43.27530 -+    NORMAL_MNEMONIC(LD_WCC, LD_WCC, "ld.wcc"),
43.27531 -+    NORMAL_MNEMONIC(LD_WCS, LD_WCS, "ld.wcs"),
43.27532 -+    NORMAL_MNEMONIC(LD_WGE, LD_WGE, "ld.wge"),
43.27533 -+    NORMAL_MNEMONIC(LD_WLT, LD_WLT, "ld.wlt"),
43.27534 -+    NORMAL_MNEMONIC(LD_WMI, LD_WMI, "ld.wmi"),
43.27535 -+    NORMAL_MNEMONIC(LD_WPL, LD_WPL, "ld.wpl"),
43.27536 -+    NORMAL_MNEMONIC(LD_WLS, LD_WLS, "ld.wls"),
43.27537 -+    NORMAL_MNEMONIC(LD_WGT, LD_WGT, "ld.wgt"),
43.27538 -+    NORMAL_MNEMONIC(LD_WLE, LD_WLE, "ld.wle"),
43.27539 -+    NORMAL_MNEMONIC(LD_WHI, LD_WHI, "ld.whi"),
43.27540 -+    NORMAL_MNEMONIC(LD_WVS, LD_WVS, "ld.wvs"),
43.27541 -+    NORMAL_MNEMONIC(LD_WVC, LD_WVC, "ld.wvc"),
43.27542 -+    NORMAL_MNEMONIC(LD_WQS, LD_WQS, "ld.wqs"),
43.27543 -+    NORMAL_MNEMONIC(LD_WAL, LD_WAL, "ld.wal"),
43.27544 -+    NORMAL_MNEMONIC(LD_WHS, LD_WHS, "ld.whs"),
43.27545 -+    NORMAL_MNEMONIC(LD_WLO, LD_WLO, "ld.wlo"),
43.27546 -+    NORMAL_MNEMONIC(LD_SHEQ, LD_SHEQ, "ld.sheq"),
43.27547 -+    NORMAL_MNEMONIC(LD_SHNE, LD_SHNE, "ld.shne"),
43.27548 -+    NORMAL_MNEMONIC(LD_SHCC, LD_SHCC, "ld.shcc"),
43.27549 -+    NORMAL_MNEMONIC(LD_SHCS, LD_SHCS, "ld.shcs"),
43.27550 -+    NORMAL_MNEMONIC(LD_SHGE, LD_SHGE, "ld.shge"),
43.27551 -+    NORMAL_MNEMONIC(LD_SHLT, LD_SHLT, "ld.shlt"),
43.27552 -+    NORMAL_MNEMONIC(LD_SHMI, LD_SHMI, "ld.shmi"),
43.27553 -+    NORMAL_MNEMONIC(LD_SHPL, LD_SHPL, "ld.shpl"),
43.27554 -+    NORMAL_MNEMONIC(LD_SHLS, LD_SHLS, "ld.shls"),
43.27555 -+    NORMAL_MNEMONIC(LD_SHGT, LD_SHGT, "ld.shgt"),
43.27556 -+    NORMAL_MNEMONIC(LD_SHLE, LD_SHLE, "ld.shle"),
43.27557 -+    NORMAL_MNEMONIC(LD_SHHI, LD_SHHI, "ld.shhi"),
43.27558 -+    NORMAL_MNEMONIC(LD_SHVS, LD_SHVS, "ld.shvs"),
43.27559 -+    NORMAL_MNEMONIC(LD_SHVC, LD_SHVC, "ld.shvc"),
43.27560 -+    NORMAL_MNEMONIC(LD_SHQS, LD_SHQS, "ld.shqs"),
43.27561 -+    NORMAL_MNEMONIC(LD_SHAL, LD_SHAL, "ld.shal"),
43.27562 -+    NORMAL_MNEMONIC(LD_SHHS, LD_SHHS, "ld.shhs"),
43.27563 -+    NORMAL_MNEMONIC(LD_SHLO, LD_SHLO, "ld.shlo"),
43.27564 -+    NORMAL_MNEMONIC(LD_UHEQ, LD_UHEQ, "ld.uheq"),
43.27565 -+    NORMAL_MNEMONIC(LD_UHNE, LD_UHNE, "ld.uhne"),
43.27566 -+    NORMAL_MNEMONIC(LD_UHCC, LD_UHCC, "ld.uhcc"),
43.27567 -+    NORMAL_MNEMONIC(LD_UHCS, LD_UHCS, "ld.uhcs"),
43.27568 -+    NORMAL_MNEMONIC(LD_UHGE, LD_UHGE, "ld.uhge"),
43.27569 -+    NORMAL_MNEMONIC(LD_UHLT, LD_UHLT, "ld.uhlt"),
43.27570 -+    NORMAL_MNEMONIC(LD_UHMI, LD_UHMI, "ld.uhmi"),
43.27571 -+    NORMAL_MNEMONIC(LD_UHPL, LD_UHPL, "ld.uhpl"),
43.27572 -+    NORMAL_MNEMONIC(LD_UHLS, LD_UHLS, "ld.uhls"),
43.27573 -+    NORMAL_MNEMONIC(LD_UHGT, LD_UHGT, "ld.uhgt"),
43.27574 -+    NORMAL_MNEMONIC(LD_UHLE, LD_UHLE, "ld.uhle"),
43.27575 -+    NORMAL_MNEMONIC(LD_UHHI, LD_UHHI, "ld.uhhi"),
43.27576 -+    NORMAL_MNEMONIC(LD_UHVS, LD_UHVS, "ld.uhvs"),
43.27577 -+    NORMAL_MNEMONIC(LD_UHVC, LD_UHVC, "ld.uhvc"),
43.27578 -+    NORMAL_MNEMONIC(LD_UHQS, LD_UHQS, "ld.uhqs"),
43.27579 -+    NORMAL_MNEMONIC(LD_UHAL, LD_UHAL, "ld.uhal"),
43.27580 -+    NORMAL_MNEMONIC(LD_UHHS, LD_UHHS, "ld.uhhs"),
43.27581 -+    NORMAL_MNEMONIC(LD_UHLO, LD_UHLO, "ld.uhlo"),
43.27582 -+    NORMAL_MNEMONIC(LD_SBEQ, LD_SBEQ, "ld.sbeq"),
43.27583 -+    NORMAL_MNEMONIC(LD_SBNE, LD_SBNE, "ld.sbne"),
43.27584 -+    NORMAL_MNEMONIC(LD_SBCC, LD_SBCC, "ld.sbcc"),
43.27585 -+    NORMAL_MNEMONIC(LD_SBCS, LD_SBCS, "ld.sbcs"),
43.27586 -+    NORMAL_MNEMONIC(LD_SBGE, LD_SBGE, "ld.sbge"),
43.27587 -+    NORMAL_MNEMONIC(LD_SBLT, LD_SBLT, "ld.sblt"),
43.27588 -+    NORMAL_MNEMONIC(LD_SBMI, LD_SBMI, "ld.sbmi"),
43.27589 -+    NORMAL_MNEMONIC(LD_SBPL, LD_SBPL, "ld.sbpl"),
43.27590 -+    NORMAL_MNEMONIC(LD_SBLS, LD_SBLS, "ld.sbls"),
43.27591 -+    NORMAL_MNEMONIC(LD_SBGT, LD_SBGT, "ld.sbgt"),
43.27592 -+    NORMAL_MNEMONIC(LD_SBLE, LD_SBLE, "ld.sble"),
43.27593 -+    NORMAL_MNEMONIC(LD_SBHI, LD_SBHI, "ld.sbhi"),
43.27594 -+    NORMAL_MNEMONIC(LD_SBVS, LD_SBVS, "ld.sbvs"),
43.27595 -+    NORMAL_MNEMONIC(LD_SBVC, LD_SBVC, "ld.sbvc"),
43.27596 -+    NORMAL_MNEMONIC(LD_SBQS, LD_SBQS, "ld.sbqs"),
43.27597 -+    NORMAL_MNEMONIC(LD_SBAL, LD_SBAL, "ld.sbal"),
43.27598 -+    NORMAL_MNEMONIC(LD_SBHS, LD_SBHS, "ld.sbhs"),
43.27599 -+    NORMAL_MNEMONIC(LD_SBLO, LD_SBLO, "ld.sblo"),
43.27600 -+    NORMAL_MNEMONIC(LD_UBEQ, LD_UBEQ, "ld.ubeq"),
43.27601 -+    NORMAL_MNEMONIC(LD_UBNE, LD_UBNE, "ld.ubne"),
43.27602 -+    NORMAL_MNEMONIC(LD_UBCC, LD_UBCC, "ld.ubcc"),
43.27603 -+    NORMAL_MNEMONIC(LD_UBCS, LD_UBCS, "ld.ubcs"),
43.27604 -+    NORMAL_MNEMONIC(LD_UBGE, LD_UBGE, "ld.ubge"),
43.27605 -+    NORMAL_MNEMONIC(LD_UBLT, LD_UBLT, "ld.ublt"),
43.27606 -+    NORMAL_MNEMONIC(LD_UBMI, LD_UBMI, "ld.ubmi"),
43.27607 -+    NORMAL_MNEMONIC(LD_UBPL, LD_UBPL, "ld.ubpl"),
43.27608 -+    NORMAL_MNEMONIC(LD_UBLS, LD_UBLS, "ld.ubls"),
43.27609 -+    NORMAL_MNEMONIC(LD_UBGT, LD_UBGT, "ld.ubgt"),
43.27610 -+    NORMAL_MNEMONIC(LD_UBLE, LD_UBLE, "ld.uble"),
43.27611 -+    NORMAL_MNEMONIC(LD_UBHI, LD_UBHI, "ld.ubhi"),
43.27612 -+    NORMAL_MNEMONIC(LD_UBVS, LD_UBVS, "ld.ubvs"),
43.27613 -+    NORMAL_MNEMONIC(LD_UBVC, LD_UBVC, "ld.ubvc"),
43.27614 -+    NORMAL_MNEMONIC(LD_UBQS, LD_UBQS, "ld.ubqs"),
43.27615 -+    NORMAL_MNEMONIC(LD_UBAL, LD_UBAL, "ld.ubal"),
43.27616 -+    NORMAL_MNEMONIC(LD_UBHS, LD_UBHS, "ld.ubhs"),
43.27617 -+    NORMAL_MNEMONIC(LD_UBLO, LD_UBLO, "ld.ublo"),
43.27618 -+    NORMAL_MNEMONIC(ST_WEQ, ST_WEQ, "st.weq"),
43.27619 -+    NORMAL_MNEMONIC(ST_WNE, ST_WNE, "st.wne"),
43.27620 -+    NORMAL_MNEMONIC(ST_WCC, ST_WCC, "st.wcc"),
43.27621 -+    NORMAL_MNEMONIC(ST_WCS, ST_WCS, "st.wcs"),
43.27622 -+    NORMAL_MNEMONIC(ST_WGE, ST_WGE, "st.wge"),
43.27623 -+    NORMAL_MNEMONIC(ST_WLT, ST_WLT, "st.wlt"),
43.27624 -+    NORMAL_MNEMONIC(ST_WMI, ST_WMI, "st.wmi"),
43.27625 -+    NORMAL_MNEMONIC(ST_WPL, ST_WPL, "st.wpl"),
43.27626 -+    NORMAL_MNEMONIC(ST_WLS, ST_WLS, "st.wls"),
43.27627 -+    NORMAL_MNEMONIC(ST_WGT, ST_WGT, "st.wgt"),
43.27628 -+    NORMAL_MNEMONIC(ST_WLE, ST_WLE, "st.wle"),
43.27629 -+    NORMAL_MNEMONIC(ST_WHI, ST_WHI, "st.whi"),
43.27630 -+    NORMAL_MNEMONIC(ST_WVS, ST_WVS, "st.wvs"),
43.27631 -+    NORMAL_MNEMONIC(ST_WVC, ST_WVC, "st.wvc"),
43.27632 -+    NORMAL_MNEMONIC(ST_WQS, ST_WQS, "st.wqs"),
43.27633 -+    NORMAL_MNEMONIC(ST_WAL, ST_WAL, "st.wal"),
43.27634 -+    NORMAL_MNEMONIC(ST_WHS, ST_WHS, "st.whs"),
43.27635 -+    NORMAL_MNEMONIC(ST_WLO, ST_WLO, "st.wlo"),
43.27636 -+    NORMAL_MNEMONIC(ST_HEQ, ST_HEQ, "st.heq"),
43.27637 -+    NORMAL_MNEMONIC(ST_HNE, ST_HNE, "st.hne"),
43.27638 -+    NORMAL_MNEMONIC(ST_HCC, ST_HCC, "st.hcc"),
43.27639 -+    NORMAL_MNEMONIC(ST_HCS, ST_HCS, "st.hcs"),
43.27640 -+    NORMAL_MNEMONIC(ST_HGE, ST_HGE, "st.hge"),
43.27641 -+    NORMAL_MNEMONIC(ST_HLT, ST_HLT, "st.hlt"),
43.27642 -+    NORMAL_MNEMONIC(ST_HMI, ST_HMI, "st.hmi"),
43.27643 -+    NORMAL_MNEMONIC(ST_HPL, ST_HPL, "st.hpl"),
43.27644 -+    NORMAL_MNEMONIC(ST_HLS, ST_HLS, "st.hls"),
43.27645 -+    NORMAL_MNEMONIC(ST_HGT, ST_HGT, "st.hgt"),
43.27646 -+    NORMAL_MNEMONIC(ST_HLE, ST_HLE, "st.hle"),
43.27647 -+    NORMAL_MNEMONIC(ST_HHI, ST_HHI, "st.hhi"),
43.27648 -+    NORMAL_MNEMONIC(ST_HVS, ST_HVS, "st.hvs"),
43.27649 -+    NORMAL_MNEMONIC(ST_HVC, ST_HVC, "st.hvc"),
43.27650 -+    NORMAL_MNEMONIC(ST_HQS, ST_HQS, "st.hqs"),
43.27651 -+    NORMAL_MNEMONIC(ST_HAL, ST_HAL, "st.hal"),
43.27652 -+    NORMAL_MNEMONIC(ST_HHS, ST_HHS, "st.hhs"),
43.27653 -+    NORMAL_MNEMONIC(ST_HLO, ST_HLO, "st.hlo"),
43.27654 -+    NORMAL_MNEMONIC(ST_BEQ, ST_BEQ, "st.beq"),
43.27655 -+    NORMAL_MNEMONIC(ST_BNE, ST_BNE, "st.bne"),
43.27656 -+    NORMAL_MNEMONIC(ST_BCC, ST_BCC, "st.bcc"),
43.27657 -+    NORMAL_MNEMONIC(ST_BCS, ST_BCS, "st.bcs"),
43.27658 -+    NORMAL_MNEMONIC(ST_BGE, ST_BGE, "st.bge"),
43.27659 -+    NORMAL_MNEMONIC(ST_BLT, ST_BLT, "st.blt"),
43.27660 -+    NORMAL_MNEMONIC(ST_BMI, ST_BMI, "st.bmi"),
43.27661 -+    NORMAL_MNEMONIC(ST_BPL, ST_BPL, "st.bpl"),
43.27662 -+    NORMAL_MNEMONIC(ST_BLS, ST_BLS, "st.bls"),
43.27663 -+    NORMAL_MNEMONIC(ST_BGT, ST_BGT, "st.bgt"),
43.27664 -+    NORMAL_MNEMONIC(ST_BLE, ST_BLE, "st.ble"),
43.27665 -+    NORMAL_MNEMONIC(ST_BHI, ST_BHI, "st.bhi"),
43.27666 -+    NORMAL_MNEMONIC(ST_BVS, ST_BVS, "st.bvs"),
43.27667 -+    NORMAL_MNEMONIC(ST_BVC, ST_BVC, "st.bvc"),
43.27668 -+    NORMAL_MNEMONIC(ST_BQS, ST_BQS, "st.bqs"),
43.27669 -+    NORMAL_MNEMONIC(ST_BAL, ST_BAL, "st.bal"),
43.27670 -+    NORMAL_MNEMONIC(ST_BHS, ST_BHS, "st.bhs"),
43.27671 -+    NORMAL_MNEMONIC(ST_BLO, ST_BLO, "st.blo"),
43.27672 -+    NORMAL_MNEMONIC(MOVH, MOVH, "movh"),
43.27673 -+
43.27674 -+  };
43.27675 -+#undef NORMAL_MNEMONIC
43.27676 -+#undef ALIAS_MNEMONIC
43.27677 -+#undef FP_MNEMONIC
43.27678 ---- /dev/null
43.27679 -+++ b/opcodes/avr32-opc.h
43.27680 -@@ -0,0 +1,2370 @@
43.27681 -+/* Opcode tables for AVR32.
43.27682 -+   Copyright 2005, 2006 Atmel Corporation.
43.27683 -+
43.27684 -+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
43.27685 -+
43.27686 -+   This file is part of libopcodes.
43.27687 -+
43.27688 -+   This program is free software; you can redistribute it and/or
43.27689 -+   modify it under the terms of the GNU General Public License as
43.27690 -+   published by the Free Software Foundation; either version 2 of the
43.27691 -+   License, or (at your option) any later version.
43.27692 -+
43.27693 -+   This program is distributed in the hope that it will be useful, but
43.27694 -+   WITHOUT ANY WARRANTY; without even the implied warranty of
43.27695 -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
43.27696 -+   General Public License for more details.
43.27697 -+
43.27698 -+   You should have received a copy of the GNU General Public License
43.27699 -+   along with this program; if not, write to the Free Software
43.27700 -+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
43.27701 -+   02111-1307, USA.  */
43.27702 -+
43.27703 -+#include "bfd.h"
43.27704 -+
43.27705 -+#define AVR32_MAX_OPERANDS	8
43.27706 -+#define AVR32_MAX_FIELDS	8
43.27707 -+
43.27708 -+#define AVR32_V1	        (1 << 1)
43.27709 -+#define AVR32_SIMD		(1 << 2)
43.27710 -+#define AVR32_DSP		(1 << 3)
43.27711 -+#define AVR32_RMW		(1 << 4)
43.27712 -+#define AVR32_V2	        (1 << 5)
43.27713 -+#define AVR32_FP		(1 << 16)
43.27714 -+#define AVR32_PICO		(1 << 17)
43.27715 -+
43.27716 -+/* Registers we commonly refer to */
43.27717 -+#define AVR32_REG_R12		12
43.27718 -+#define AVR32_REG_SP		13
43.27719 -+#define AVR32_REG_LR		14
43.27720 -+#define AVR32_REG_PC		15
43.27721 -+
43.27722 -+struct avr32_ifield
43.27723 -+{
43.27724 -+  int id;
43.27725 -+  unsigned short bitsize;
43.27726 -+  unsigned short shift;
43.27727 -+  unsigned long mask;
43.27728 -+
43.27729 -+  /* If the value doesn't fit, it will be truncated with no warning */
43.27730 -+  void (*insert)(const struct avr32_ifield *, void *, unsigned long);
43.27731 -+  void (*extract)(const struct avr32_ifield *, void *, unsigned long *);
43.27732 -+};
43.27733 -+
43.27734 -+struct avr32_opcode
43.27735 -+{
43.27736 -+  int id;
43.27737 -+  int size;
43.27738 -+  unsigned long value;
43.27739 -+  unsigned long mask;
43.27740 -+  const struct avr32_syntax *syntax;
43.27741 -+  bfd_reloc_code_real_type reloc_type;
43.27742 -+  unsigned int nr_fields;
43.27743 -+  /* if relaxable, which field is variable, otherwise -1 */
43.27744 -+  int var_field;
43.27745 -+  const struct avr32_ifield *fields[AVR32_MAX_FIELDS];
43.27746 -+};
43.27747 -+
43.27748 -+struct avr32_alias
43.27749 -+{
43.27750 -+  int id;
43.27751 -+  const struct avr32_opcode *opc;
43.27752 -+  struct {
43.27753 -+    int is_opindex;
43.27754 -+    unsigned long value;
43.27755 -+  } operand_map[AVR32_MAX_OPERANDS];
43.27756 -+};
43.27757 -+
43.27758 -+struct avr32_syntax
43.27759 -+{
43.27760 -+  int id;
43.27761 -+  unsigned long isa_flags;
43.27762 -+  const struct avr32_mnemonic *mnemonic;
43.27763 -+  int type;
43.27764 -+  union {
43.27765 -+    const struct avr32_opcode *opc;
43.27766 -+    const struct avr32_alias *alias;
43.27767 -+  } u;
43.27768 -+  const struct avr32_syntax *next;
43.27769 -+  /* negative means "vararg" */
43.27770 -+  int nr_operands;
43.27771 -+  int operand[AVR32_MAX_OPERANDS];
43.27772 -+};
43.27773 -+
43.27774 -+#if 0
43.27775 -+#define AVR32_ALIAS_MAKE_CONST(val) ((val) | 0x80000000UL)
43.27776 -+#define AVR32_ALIAS_IS_CONST(mapval) (((mapval) & 0x80000000UL) != 0)
43.27777 -+#define AVR32_ALIAS_GET_CONST(mapval) ((mapval) & ~0x80000000UL)
43.27778 -+#endif
43.27779 -+
43.27780 -+struct avr32_mnemonic
43.27781 -+{
43.27782 -+  int id;
43.27783 -+  const char *name;
43.27784 -+  const struct avr32_syntax *syntax;
43.27785 -+};
43.27786 -+
43.27787 -+extern const struct avr32_ifield avr32_ifield_table[];
43.27788 -+extern struct avr32_opcode avr32_opc_table[];
43.27789 -+extern const struct avr32_syntax avr32_syntax_table[];
43.27790 -+extern const struct avr32_alias avr32_alias_table[];
43.27791 -+extern const struct avr32_mnemonic avr32_mnemonic_table[];
43.27792 -+
43.27793 -+extern void avr32_insert_simple(const struct avr32_ifield *field,
43.27794 -+				void *buf, unsigned long value);
43.27795 -+extern void avr32_insert_bit5c(const struct avr32_ifield *field,
43.27796 -+			       void *buf, unsigned long value);
43.27797 -+extern void avr32_insert_k10(const struct avr32_ifield *field,
43.27798 -+			     void *buf, unsigned long value);
43.27799 -+extern void avr32_insert_k21(const struct avr32_ifield *field,
43.27800 -+			     void *buf, unsigned long value);
43.27801 -+extern void avr32_insert_cpop(const struct avr32_ifield *field,
43.27802 -+			      void *buf, unsigned long value);
43.27803 -+extern void avr32_insert_k12cp(const struct avr32_ifield *field,
43.27804 -+			       void *buf, unsigned long value);
43.27805 -+
43.27806 -+extern void avr32_extract_simple(const struct avr32_ifield *field,
43.27807 -+				 void *buf, unsigned long *value);
43.27808 -+extern void avr32_extract_bit5c(const struct avr32_ifield *field,
43.27809 -+				void *buf, unsigned long *value);
43.27810 -+extern void avr32_extract_k10(const struct avr32_ifield *field,
43.27811 -+			      void *buf, unsigned long *value);
43.27812 -+extern void avr32_extract_k21(const struct avr32_ifield *field,
43.27813 -+			      void *buf, unsigned long *value);
43.27814 -+extern void avr32_extract_cpop(const struct avr32_ifield *field,
43.27815 -+			       void *buf, unsigned long *value);
43.27816 -+extern void avr32_extract_k12cp(const struct avr32_ifield *field,
43.27817 -+				void *buf, unsigned long *value);
43.27818 -+
43.27819 -+enum avr32_operand_type
43.27820 -+{
43.27821 -+  AVR32_OPERAND_INTREG,		/* just a register */
43.27822 -+  AVR32_OPERAND_INTREG_PREDEC,	/* register with pre-decrement */
43.27823 -+  AVR32_OPERAND_INTREG_POSTINC,	/* register with post-increment */
43.27824 -+  AVR32_OPERAND_INTREG_LSL,	/* register with left shift */
43.27825 -+  AVR32_OPERAND_INTREG_LSR,	/* register with right shift */
43.27826 -+  AVR32_OPERAND_INTREG_BSEL,	/* register with byte selector */
43.27827 -+  AVR32_OPERAND_INTREG_HSEL,	/* register with halfword selector */
43.27828 -+  AVR32_OPERAND_INTREG_SDISP,	/* Rp[signed disp] */
43.27829 -+  AVR32_OPERAND_INTREG_SDISP_H,	/* Rp[signed hword-aligned disp] */
43.27830 -+  AVR32_OPERAND_INTREG_SDISP_W,	/* Rp[signed word-aligned disp] */
43.27831 -+  AVR32_OPERAND_INTREG_UDISP,	/* Rp[unsigned disp] */
43.27832 -+  AVR32_OPERAND_INTREG_UDISP_H,	/* Rp[unsigned hword-aligned disp] */
43.27833 -+  AVR32_OPERAND_INTREG_UDISP_W, /* Rp[unsigned word-aligned disp] */
43.27834 -+  AVR32_OPERAND_INTREG_INDEX,	/* Rp[Ri << sa] */
43.27835 -+  AVR32_OPERAND_INTREG_XINDEX,	/* Rp[Ri:bytesel << 2] */
43.27836 -+  AVR32_OPERAND_DWREG,		/* Even-numbered register */
43.27837 -+  AVR32_OPERAND_PC_UDISP_W,	/* PC[unsigned word-aligned disp] or label */
43.27838 -+  AVR32_OPERAND_SP,		/* Just SP */
43.27839 -+  AVR32_OPERAND_SP_UDISP_W,	/* SP[unsigned word-aligned disp] */
43.27840 -+  AVR32_OPERAND_CPNO,
43.27841 -+  AVR32_OPERAND_CPREG,
43.27842 -+  AVR32_OPERAND_CPREG_D,
43.27843 -+  AVR32_OPERAND_UNSIGNED_CONST,
43.27844 -+  AVR32_OPERAND_UNSIGNED_CONST_W,
43.27845 -+  AVR32_OPERAND_SIGNED_CONST,
43.27846 -+  AVR32_OPERAND_SIGNED_CONST_W,
43.27847 -+  AVR32_OPERAND_JMPLABEL,
43.27848 -+  AVR32_OPERAND_UNSIGNED_NUMBER,
43.27849 -+  AVR32_OPERAND_UNSIGNED_NUMBER_W,
43.27850 -+  AVR32_OPERAND_REGLIST8,
43.27851 -+  AVR32_OPERAND_REGLIST9,
43.27852 -+  AVR32_OPERAND_REGLIST16,
43.27853 -+  AVR32_OPERAND_REGLIST_LDM,
43.27854 -+  AVR32_OPERAND_REGLIST_CP8,
43.27855 -+  AVR32_OPERAND_REGLIST_CPD8,
43.27856 -+  AVR32_OPERAND_RETVAL,
43.27857 -+  AVR32_OPERAND_MCALL,
43.27858 -+  AVR32_OPERAND_JOSPINC,
43.27859 -+  AVR32_OPERAND_COH,
43.27860 -+  AVR32_OPERAND_FPREG_S,
43.27861 -+  AVR32_OPERAND_FPREG_D,
43.27862 -+  AVR32_OPERAND_PICO_REG_W,
43.27863 -+  AVR32_OPERAND_PICO_REG_D,
43.27864 -+  AVR32_OPERAND_PICO_REGLIST_W,
43.27865 -+  AVR32_OPERAND_PICO_REGLIST_D,
43.27866 -+  AVR32_OPERAND_PICO_IN,
43.27867 -+  AVR32_OPERAND_PICO_OUT0,
43.27868 -+  AVR32_OPERAND_PICO_OUT1,
43.27869 -+  AVR32_OPERAND_PICO_OUT2,
43.27870 -+  AVR32_OPERAND_PICO_OUT3,
43.27871 -+  AVR32_OPERAND__END_
43.27872 -+};
43.27873 -+#define AVR32_OPERAND_UNKNOWN AVR32_OPERAND__END_
43.27874 -+#define AVR32_NR_OPERANDS AVR32_OPERAND__END_
43.27875 -+
43.27876 -+enum avr32_ifield_type
43.27877 -+{
43.27878 -+  AVR32_IFIELD_RX,
43.27879 -+  AVR32_IFIELD_RY,
43.27880 -+  AVR32_IFIELD_COND4C,
43.27881 -+  AVR32_IFIELD_K8C,
43.27882 -+  AVR32_IFIELD_K7C,
43.27883 -+  AVR32_IFIELD_K5C,
43.27884 -+  AVR32_IFIELD_K3,
43.27885 -+  AVR32_IFIELD_RY_DW,
43.27886 -+  AVR32_IFIELD_COND4E,
43.27887 -+  AVR32_IFIELD_K8E,
43.27888 -+  AVR32_IFIELD_BIT5C,
43.27889 -+  AVR32_IFIELD_COND3,
43.27890 -+  AVR32_IFIELD_K10,
43.27891 -+  AVR32_IFIELD_POPM,
43.27892 -+  AVR32_IFIELD_K2,
43.27893 -+  AVR32_IFIELD_RD_E,
43.27894 -+  AVR32_IFIELD_RD_DW,
43.27895 -+  AVR32_IFIELD_X,
43.27896 -+  AVR32_IFIELD_Y,
43.27897 -+  AVR32_IFIELD_X2,
43.27898 -+  AVR32_IFIELD_Y2,
43.27899 -+  AVR32_IFIELD_K5E,
43.27900 -+  AVR32_IFIELD_PART2,
43.27901 -+  AVR32_IFIELD_PART1,
43.27902 -+  AVR32_IFIELD_K16,
43.27903 -+  AVR32_IFIELD_CACHEOP,
43.27904 -+  AVR32_IFIELD_K11,
43.27905 -+  AVR32_IFIELD_K21,
43.27906 -+  AVR32_IFIELD_CPOP,
43.27907 -+  AVR32_IFIELD_CPNO,
43.27908 -+  AVR32_IFIELD_CRD_RI,
43.27909 -+  AVR32_IFIELD_CRX,
43.27910 -+  AVR32_IFIELD_CRY,
43.27911 -+  AVR32_IFIELD_K7E,
43.27912 -+  AVR32_IFIELD_CRD_DW,
43.27913 -+  AVR32_IFIELD_PART1_K12,
43.27914 -+  AVR32_IFIELD_PART2_K12,
43.27915 -+  AVR32_IFIELD_K12,
43.27916 -+  AVR32_IFIELD_S5,
43.27917 -+  AVR32_IFIELD_K5E2,
43.27918 -+  AVR32_IFIELD_K4,
43.27919 -+  AVR32_IFIELD_COND4E2,
43.27920 -+  AVR32_IFIELD_K8E2,
43.27921 -+  AVR32_IFIELD_K6,
43.27922 -+  AVR32_IFIELD_MEM15,
43.27923 -+  AVR32_IFIELD_MEMB5,
43.27924 -+  AVR32_IFIELD_W,
43.27925 -+  AVR32_IFIELD_CM_HL,
43.27926 -+  AVR32_IFIELD_K12CP,
43.27927 -+  AVR32_IFIELD_K9E,
43.27928 -+  AVR32_IFIELD__END_,
43.27929 -+};
43.27930 -+#define AVR32_NR_IFIELDS AVR32_IFIELD__END_
43.27931 -+
43.27932 -+enum avr32_opc_type
43.27933 -+{
43.27934 -+  AVR32_OPC_ABS,
43.27935 -+  AVR32_OPC_ACALL,
43.27936 -+  AVR32_OPC_ACR,
43.27937 -+  AVR32_OPC_ADC,
43.27938 -+  AVR32_OPC_ADD1,
43.27939 -+  AVR32_OPC_ADD2,
43.27940 -+  AVR32_OPC_ADDABS,
43.27941 -+  AVR32_OPC_ADDHH_W,
43.27942 -+  AVR32_OPC_AND1,
43.27943 -+  AVR32_OPC_AND2,
43.27944 -+  AVR32_OPC_AND3,
43.27945 -+  AVR32_OPC_ANDH,
43.27946 -+  AVR32_OPC_ANDH_COH,
43.27947 -+  AVR32_OPC_ANDL,
43.27948 -+  AVR32_OPC_ANDL_COH,
43.27949 -+  AVR32_OPC_ANDN,
43.27950 -+  AVR32_OPC_ASR1,
43.27951 -+  AVR32_OPC_ASR3,
43.27952 -+  AVR32_OPC_ASR2,
43.27953 -+  AVR32_OPC_BLD,
43.27954 -+  AVR32_OPC_BREQ1,
43.27955 -+  AVR32_OPC_BRNE1,
43.27956 -+  AVR32_OPC_BRCC1,
43.27957 -+  AVR32_OPC_BRCS1,
43.27958 -+  AVR32_OPC_BRGE1,
43.27959 -+  AVR32_OPC_BRLT1,
43.27960 -+  AVR32_OPC_BRMI1,
43.27961 -+  AVR32_OPC_BRPL1,
43.27962 -+  AVR32_OPC_BREQ2,
43.27963 -+  AVR32_OPC_BRNE2,
43.27964 -+  AVR32_OPC_BRCC2,
43.27965 -+  AVR32_OPC_BRCS2,
43.27966 -+  AVR32_OPC_BRGE2,
43.27967 -+  AVR32_OPC_BRLT2,
43.27968 -+  AVR32_OPC_BRMI2,
43.27969 -+  AVR32_OPC_BRPL2,
43.27970 -+  AVR32_OPC_BRLS,
43.27971 -+  AVR32_OPC_BRGT,
43.27972 -+  AVR32_OPC_BRLE,
43.27973 -+  AVR32_OPC_BRHI,
43.27974 -+  AVR32_OPC_BRVS,
43.27975 -+  AVR32_OPC_BRVC,
43.27976 -+  AVR32_OPC_BRQS,
43.27977 -+  AVR32_OPC_BRAL,
43.27978 -+  AVR32_OPC_BREAKPOINT,
43.27979 -+  AVR32_OPC_BREV,
43.27980 -+  AVR32_OPC_BST,
43.27981 -+  AVR32_OPC_CACHE,
43.27982 -+  AVR32_OPC_CASTS_B,
43.27983 -+  AVR32_OPC_CASTS_H,
43.27984 -+  AVR32_OPC_CASTU_B,
43.27985 -+  AVR32_OPC_CASTU_H,
43.27986 -+  AVR32_OPC_CBR,
43.27987 -+  AVR32_OPC_CLZ,
43.27988 -+  AVR32_OPC_COM,
43.27989 -+  AVR32_OPC_COP,
43.27990 -+  AVR32_OPC_CP_B,
43.27991 -+  AVR32_OPC_CP_H,
43.27992 -+  AVR32_OPC_CP_W1,
43.27993 -+  AVR32_OPC_CP_W2,
43.27994 -+  AVR32_OPC_CP_W3,
43.27995 -+  AVR32_OPC_CPC1,
43.27996 -+  AVR32_OPC_CPC2,
43.27997 -+  AVR32_OPC_CSRF,
43.27998 -+  AVR32_OPC_CSRFCZ,
43.27999 -+  AVR32_OPC_DIVS,
43.28000 -+  AVR32_OPC_DIVU,
43.28001 -+  AVR32_OPC_EOR1,
43.28002 -+  AVR32_OPC_EOR2,
43.28003 -+  AVR32_OPC_EOR3,
43.28004 -+  AVR32_OPC_EORL,
43.28005 -+  AVR32_OPC_EORH,
43.28006 -+  AVR32_OPC_FRS,
43.28007 -+  AVR32_OPC_ICALL,
43.28008 -+  AVR32_OPC_INCJOSP,
43.28009 -+  AVR32_OPC_LD_D1,
43.28010 -+  AVR32_OPC_LD_D2,
43.28011 -+  AVR32_OPC_LD_D3,
43.28012 -+  AVR32_OPC_LD_D5,
43.28013 -+  AVR32_OPC_LD_D4,
43.28014 -+  AVR32_OPC_LD_SB2,
43.28015 -+  AVR32_OPC_LD_SB1,
43.28016 -+  AVR32_OPC_LD_UB1,
43.28017 -+  AVR32_OPC_LD_UB2,
43.28018 -+  AVR32_OPC_LD_UB5,
43.28019 -+  AVR32_OPC_LD_UB3,
43.28020 -+  AVR32_OPC_LD_UB4,
43.28021 -+  AVR32_OPC_LD_SH1,
43.28022 -+  AVR32_OPC_LD_SH2,
43.28023 -+  AVR32_OPC_LD_SH5,
43.28024 -+  AVR32_OPC_LD_SH3,
43.28025 -+  AVR32_OPC_LD_SH4,
43.28026 -+  AVR32_OPC_LD_UH1,
43.28027 -+  AVR32_OPC_LD_UH2,
43.28028 -+  AVR32_OPC_LD_UH5,
43.28029 -+  AVR32_OPC_LD_UH3,
43.28030 -+  AVR32_OPC_LD_UH4,
43.28031 -+  AVR32_OPC_LD_W1,
43.28032 -+  AVR32_OPC_LD_W2,
43.28033 -+  AVR32_OPC_LD_W5,
43.28034 -+  AVR32_OPC_LD_W6,
43.28035 -+  AVR32_OPC_LD_W3,
43.28036 -+  AVR32_OPC_LD_W4,
43.28037 -+  AVR32_OPC_LDC_D1,
43.28038 -+  AVR32_OPC_LDC_D2,
43.28039 -+  AVR32_OPC_LDC_D3,
43.28040 -+  AVR32_OPC_LDC_W1,
43.28041 -+  AVR32_OPC_LDC_W2,
43.28042 -+  AVR32_OPC_LDC_W3,
43.28043 -+  AVR32_OPC_LDC0_D,
43.28044 -+  AVR32_OPC_LDC0_W,
43.28045 -+  AVR32_OPC_LDCM_D,
43.28046 -+  AVR32_OPC_LDCM_D_PU,
43.28047 -+  AVR32_OPC_LDCM_W,
43.28048 -+  AVR32_OPC_LDCM_W_PU,
43.28049 -+  AVR32_OPC_LDDPC,
43.28050 -+  AVR32_OPC_LDDPC_EXT,
43.28051 -+  AVR32_OPC_LDDSP,
43.28052 -+  AVR32_OPC_LDINS_B,
43.28053 -+  AVR32_OPC_LDINS_H,
43.28054 -+  AVR32_OPC_LDM,
43.28055 -+  AVR32_OPC_LDMTS,
43.28056 -+  AVR32_OPC_LDMTS_PU,
43.28057 -+  AVR32_OPC_LDSWP_SH,
43.28058 -+  AVR32_OPC_LDSWP_UH,
43.28059 -+  AVR32_OPC_LDSWP_W,
43.28060 -+  AVR32_OPC_LSL1,
43.28061 -+  AVR32_OPC_LSL3,
43.28062 -+  AVR32_OPC_LSL2,
43.28063 -+  AVR32_OPC_LSR1,
43.28064 -+  AVR32_OPC_LSR3,
43.28065 -+  AVR32_OPC_LSR2,
43.28066 -+  AVR32_OPC_MAC,
43.28067 -+  AVR32_OPC_MACHH_D,
43.28068 -+  AVR32_OPC_MACHH_W,
43.28069 -+  AVR32_OPC_MACS_D,
43.28070 -+  AVR32_OPC_MACSATHH_W,
43.28071 -+  AVR32_OPC_MACUD,
43.28072 -+  AVR32_OPC_MACWH_D,
43.28073 -+  AVR32_OPC_MAX,
43.28074 -+  AVR32_OPC_MCALL,
43.28075 -+  AVR32_OPC_MFDR,
43.28076 -+  AVR32_OPC_MFSR,
43.28077 -+  AVR32_OPC_MIN,
43.28078 -+  AVR32_OPC_MOV3,
43.28079 -+  AVR32_OPC_MOV1,
43.28080 -+  AVR32_OPC_MOV2,
43.28081 -+  AVR32_OPC_MOVEQ1,
43.28082 -+  AVR32_OPC_MOVNE1,
43.28083 -+  AVR32_OPC_MOVCC1,
43.28084 -+  AVR32_OPC_MOVCS1,
43.28085 -+  AVR32_OPC_MOVGE1,
43.28086 -+  AVR32_OPC_MOVLT1,
43.28087 -+  AVR32_OPC_MOVMI1,
43.28088 -+  AVR32_OPC_MOVPL1,
43.28089 -+  AVR32_OPC_MOVLS1,
43.28090 -+  AVR32_OPC_MOVGT1,
43.28091 -+  AVR32_OPC_MOVLE1,
43.28092 -+  AVR32_OPC_MOVHI1,
43.28093 -+  AVR32_OPC_MOVVS1,
43.28094 -+  AVR32_OPC_MOVVC1,
43.28095 -+  AVR32_OPC_MOVQS1,
43.28096 -+  AVR32_OPC_MOVAL1,
43.28097 -+  AVR32_OPC_MOVEQ2,
43.28098 -+  AVR32_OPC_MOVNE2,
43.28099 -+  AVR32_OPC_MOVCC2,
43.28100 -+  AVR32_OPC_MOVCS2,
43.28101 -+  AVR32_OPC_MOVGE2,
43.28102 -+  AVR32_OPC_MOVLT2,
43.28103 -+  AVR32_OPC_MOVMI2,
43.28104 -+  AVR32_OPC_MOVPL2,
43.28105 -+  AVR32_OPC_MOVLS2,
43.28106 -+  AVR32_OPC_MOVGT2,
43.28107 -+  AVR32_OPC_MOVLE2,
43.28108 -+  AVR32_OPC_MOVHI2,
43.28109 -+  AVR32_OPC_MOVVS2,
43.28110 -+  AVR32_OPC_MOVVC2,
43.28111 -+  AVR32_OPC_MOVQS2,
43.28112 -+  AVR32_OPC_MOVAL2,
43.28113 -+  AVR32_OPC_MTDR,
43.28114 -+  AVR32_OPC_MTSR,
43.28115 -+  AVR32_OPC_MUL1,
43.28116 -+  AVR32_OPC_MUL2,
43.28117 -+  AVR32_OPC_MUL3,
43.28118 -+  AVR32_OPC_MULHH_W,
43.28119 -+  AVR32_OPC_MULNHH_W,
43.28120 -+  AVR32_OPC_MULNWH_D,
43.28121 -+  AVR32_OPC_MULSD,
43.28122 -+  AVR32_OPC_MULSATHH_H,
43.28123 -+  AVR32_OPC_MULSATHH_W,
43.28124 -+  AVR32_OPC_MULSATRNDHH_H,
43.28125 -+  AVR32_OPC_MULSATRNDWH_W,
43.28126 -+  AVR32_OPC_MULSATWH_W,
43.28127 -+  AVR32_OPC_MULU_D,
43.28128 -+  AVR32_OPC_MULWH_D,
43.28129 -+  AVR32_OPC_MUSFR,
43.28130 -+  AVR32_OPC_MUSTR,
43.28131 -+  AVR32_OPC_MVCR_D,
43.28132 -+  AVR32_OPC_MVCR_W,
43.28133 -+  AVR32_OPC_MVRC_D,
43.28134 -+  AVR32_OPC_MVRC_W,
43.28135 -+  AVR32_OPC_NEG,
43.28136 -+  AVR32_OPC_NOP,
43.28137 -+  AVR32_OPC_OR1,
43.28138 -+  AVR32_OPC_OR2,
43.28139 -+  AVR32_OPC_OR3,
43.28140 -+  AVR32_OPC_ORH,
43.28141 -+  AVR32_OPC_ORL,
43.28142 -+  AVR32_OPC_PABS_SB,
43.28143 -+  AVR32_OPC_PABS_SH,
43.28144 -+  AVR32_OPC_PACKSH_SB,
43.28145 -+  AVR32_OPC_PACKSH_UB,
43.28146 -+  AVR32_OPC_PACKW_SH,
43.28147 -+  AVR32_OPC_PADD_B,
43.28148 -+  AVR32_OPC_PADD_H,
43.28149 -+  AVR32_OPC_PADDH_SH,
43.28150 -+  AVR32_OPC_PADDH_UB,
43.28151 -+  AVR32_OPC_PADDS_SB,
43.28152 -+  AVR32_OPC_PADDS_SH,
43.28153 -+  AVR32_OPC_PADDS_UB,
43.28154 -+  AVR32_OPC_PADDS_UH,
43.28155 -+  AVR32_OPC_PADDSUB_H,
43.28156 -+  AVR32_OPC_PADDSUBH_SH,
43.28157 -+  AVR32_OPC_PADDSUBS_SH,
43.28158 -+  AVR32_OPC_PADDSUBS_UH,
43.28159 -+  AVR32_OPC_PADDX_H,
43.28160 -+  AVR32_OPC_PADDXH_SH,
43.28161 -+  AVR32_OPC_PADDXS_SH,
43.28162 -+  AVR32_OPC_PADDXS_UH,
43.28163 -+  AVR32_OPC_PASR_B,
43.28164 -+  AVR32_OPC_PASR_H,
43.28165 -+  AVR32_OPC_PAVG_SH,
43.28166 -+  AVR32_OPC_PAVG_UB,
43.28167 -+  AVR32_OPC_PLSL_B,
43.28168 -+  AVR32_OPC_PLSL_H,
43.28169 -+  AVR32_OPC_PLSR_B,
43.28170 -+  AVR32_OPC_PLSR_H,
43.28171 -+  AVR32_OPC_PMAX_SH,
43.28172 -+  AVR32_OPC_PMAX_UB,
43.28173 -+  AVR32_OPC_PMIN_SH,
43.28174 -+  AVR32_OPC_PMIN_UB,
43.28175 -+  AVR32_OPC_POPJC,
43.28176 -+  AVR32_OPC_POPM,
43.28177 -+  AVR32_OPC_POPM_E,
43.28178 -+  AVR32_OPC_PREF,
43.28179 -+  AVR32_OPC_PSAD,
43.28180 -+  AVR32_OPC_PSUB_B,
43.28181 -+  AVR32_OPC_PSUB_H,
43.28182 -+  AVR32_OPC_PSUBADD_H,
43.28183 -+  AVR32_OPC_PSUBADDH_SH,
43.28184 -+  AVR32_OPC_PSUBADDS_SH,
43.28185 -+  AVR32_OPC_PSUBADDS_UH,
43.28186 -+  AVR32_OPC_PSUBH_SH,
43.28187 -+  AVR32_OPC_PSUBH_UB,
43.28188 -+  AVR32_OPC_PSUBS_SB,
43.28189 -+  AVR32_OPC_PSUBS_SH,
43.28190 -+  AVR32_OPC_PSUBS_UB,
43.28191 -+  AVR32_OPC_PSUBS_UH,
43.28192 -+  AVR32_OPC_PSUBX_H,
43.28193 -+  AVR32_OPC_PSUBXH_SH,
43.28194 -+  AVR32_OPC_PSUBXS_SH,
43.28195 -+  AVR32_OPC_PSUBXS_UH,
43.28196 -+  AVR32_OPC_PUNPCKSB_H,
43.28197 -+  AVR32_OPC_PUNPCKUB_H,
43.28198 -+  AVR32_OPC_PUSHJC,
43.28199 -+  AVR32_OPC_PUSHM,
43.28200 -+  AVR32_OPC_PUSHM_E,
43.28201 -+  AVR32_OPC_RCALL1,
43.28202 -+  AVR32_OPC_RCALL2,
43.28203 -+  AVR32_OPC_RETEQ,
43.28204 -+  AVR32_OPC_RETNE,
43.28205 -+  AVR32_OPC_RETCC,
43.28206 -+  AVR32_OPC_RETCS,
43.28207 -+  AVR32_OPC_RETGE,
43.28208 -+  AVR32_OPC_RETLT,
43.28209 -+  AVR32_OPC_RETMI,
43.28210 -+  AVR32_OPC_RETPL,
43.28211 -+  AVR32_OPC_RETLS,
43.28212 -+  AVR32_OPC_RETGT,
43.28213 -+  AVR32_OPC_RETLE,
43.28214 -+  AVR32_OPC_RETHI,
43.28215 -+  AVR32_OPC_RETVS,
43.28216 -+  AVR32_OPC_RETVC,
43.28217 -+  AVR32_OPC_RETQS,
43.28218 -+  AVR32_OPC_RETAL,
43.28219 -+  AVR32_OPC_RETD,
43.28220 -+  AVR32_OPC_RETE,
43.28221 -+  AVR32_OPC_RETJ,
43.28222 -+  AVR32_OPC_RETS,
43.28223 -+  AVR32_OPC_RJMP,
43.28224 -+  AVR32_OPC_ROL,
43.28225 -+  AVR32_OPC_ROR,
43.28226 -+  AVR32_OPC_RSUB1,
43.28227 -+  AVR32_OPC_RSUB2,
43.28228 -+  AVR32_OPC_SATADD_H,
43.28229 -+  AVR32_OPC_SATADD_W,
43.28230 -+  AVR32_OPC_SATRNDS,
43.28231 -+  AVR32_OPC_SATRNDU,
43.28232 -+  AVR32_OPC_SATS,
43.28233 -+  AVR32_OPC_SATSUB_H,
43.28234 -+  AVR32_OPC_SATSUB_W1,
43.28235 -+  AVR32_OPC_SATSUB_W2,
43.28236 -+  AVR32_OPC_SATU,
43.28237 -+  AVR32_OPC_SBC,
43.28238 -+  AVR32_OPC_SBR,
43.28239 -+  AVR32_OPC_SCALL,
43.28240 -+  AVR32_OPC_SCR,
43.28241 -+  AVR32_OPC_SLEEP,
43.28242 -+  AVR32_OPC_SREQ,
43.28243 -+  AVR32_OPC_SRNE,
43.28244 -+  AVR32_OPC_SRCC,
43.28245 -+  AVR32_OPC_SRCS,
43.28246 -+  AVR32_OPC_SRGE,
43.28247 -+  AVR32_OPC_SRLT,
43.28248 -+  AVR32_OPC_SRMI,
43.28249 -+  AVR32_OPC_SRPL,
43.28250 -+  AVR32_OPC_SRLS,
43.28251 -+  AVR32_OPC_SRGT,
43.28252 -+  AVR32_OPC_SRLE,
43.28253 -+  AVR32_OPC_SRHI,
43.28254 -+  AVR32_OPC_SRVS,
43.28255 -+  AVR32_OPC_SRVC,
43.28256 -+  AVR32_OPC_SRQS,
43.28257 -+  AVR32_OPC_SRAL,
43.28258 -+  AVR32_OPC_SSRF,
43.28259 -+  AVR32_OPC_ST_B1,
43.28260 -+  AVR32_OPC_ST_B2,
43.28261 -+  AVR32_OPC_ST_B5,
43.28262 -+  AVR32_OPC_ST_B3,
43.28263 -+  AVR32_OPC_ST_B4,
43.28264 -+  AVR32_OPC_ST_D1,
43.28265 -+  AVR32_OPC_ST_D2,
43.28266 -+  AVR32_OPC_ST_D3,
43.28267 -+  AVR32_OPC_ST_D5,
43.28268 -+  AVR32_OPC_ST_D4,
43.28269 -+  AVR32_OPC_ST_H1,
43.28270 -+  AVR32_OPC_ST_H2,
43.28271 -+  AVR32_OPC_ST_H5,
43.28272 -+  AVR32_OPC_ST_H3,
43.28273 -+  AVR32_OPC_ST_H4,
43.28274 -+  AVR32_OPC_ST_W1,
43.28275 -+  AVR32_OPC_ST_W2,
43.28276 -+  AVR32_OPC_ST_W5,
43.28277 -+  AVR32_OPC_ST_W3,
43.28278 -+  AVR32_OPC_ST_W4,
43.28279 -+  AVR32_OPC_STC_D1,
43.28280 -+  AVR32_OPC_STC_D2,
43.28281 -+  AVR32_OPC_STC_D3,
43.28282 -+  AVR32_OPC_STC_W1,
43.28283 -+  AVR32_OPC_STC_W2,
43.28284 -+  AVR32_OPC_STC_W3,
43.28285 -+  AVR32_OPC_STC0_D,
43.28286 -+  AVR32_OPC_STC0_W,
43.28287 -+  AVR32_OPC_STCM_D,
43.28288 -+  AVR32_OPC_STCM_D_PU,
43.28289 -+  AVR32_OPC_STCM_W,
43.28290 -+  AVR32_OPC_STCM_W_PU,
43.28291 -+  AVR32_OPC_STCOND,
43.28292 -+  AVR32_OPC_STDSP,
43.28293 -+  AVR32_OPC_STHH_W2,
43.28294 -+  AVR32_OPC_STHH_W1,
43.28295 -+  AVR32_OPC_STM,
43.28296 -+  AVR32_OPC_STM_PU,
43.28297 -+  AVR32_OPC_STMTS,
43.28298 -+  AVR32_OPC_STMTS_PU,
43.28299 -+  AVR32_OPC_STSWP_H,
43.28300 -+  AVR32_OPC_STSWP_W,
43.28301 -+  AVR32_OPC_SUB1,
43.28302 -+  AVR32_OPC_SUB2,
43.28303 -+  AVR32_OPC_SUB5,
43.28304 -+  AVR32_OPC_SUB3_SP,
43.28305 -+  AVR32_OPC_SUB3,
43.28306 -+  AVR32_OPC_SUB4,
43.28307 -+  AVR32_OPC_SUBEQ,
43.28308 -+  AVR32_OPC_SUBNE,
43.28309 -+  AVR32_OPC_SUBCC,
43.28310 -+  AVR32_OPC_SUBCS,
43.28311 -+  AVR32_OPC_SUBGE,
43.28312 -+  AVR32_OPC_SUBLT,
43.28313 -+  AVR32_OPC_SUBMI,
43.28314 -+  AVR32_OPC_SUBPL,
43.28315 -+  AVR32_OPC_SUBLS,
43.28316 -+  AVR32_OPC_SUBGT,
43.28317 -+  AVR32_OPC_SUBLE,
43.28318 -+  AVR32_OPC_SUBHI,
43.28319 -+  AVR32_OPC_SUBVS,
43.28320 -+  AVR32_OPC_SUBVC,
43.28321 -+  AVR32_OPC_SUBQS,
43.28322 -+  AVR32_OPC_SUBAL,
43.28323 -+  AVR32_OPC_SUBFEQ,
43.28324 -+  AVR32_OPC_SUBFNE,
43.28325 -+  AVR32_OPC_SUBFCC,
43.28326 -+  AVR32_OPC_SUBFCS,
43.28327 -+  AVR32_OPC_SUBFGE,
43.28328 -+  AVR32_OPC_SUBFLT,
43.28329 -+  AVR32_OPC_SUBFMI,
43.28330 -+  AVR32_OPC_SUBFPL,
43.28331 -+  AVR32_OPC_SUBFLS,
43.28332 -+  AVR32_OPC_SUBFGT,
43.28333 -+  AVR32_OPC_SUBFLE,
43.28334 -+  AVR32_OPC_SUBFHI,
43.28335 -+  AVR32_OPC_SUBFVS,
43.28336 -+  AVR32_OPC_SUBFVC,
43.28337 -+  AVR32_OPC_SUBFQS,
43.28338 -+  AVR32_OPC_SUBFAL,
43.28339 -+  AVR32_OPC_SUBHH_W,
43.28340 -+  AVR32_OPC_SWAP_B,
43.28341 -+  AVR32_OPC_SWAP_BH,
43.28342 -+  AVR32_OPC_SWAP_H,
43.28343 -+  AVR32_OPC_SYNC,
43.28344 -+  AVR32_OPC_TLBR,
43.28345 -+  AVR32_OPC_TLBS,
43.28346 -+  AVR32_OPC_TLBW,
43.28347 -+  AVR32_OPC_TNBZ,
43.28348 -+  AVR32_OPC_TST,
43.28349 -+  AVR32_OPC_XCHG,
43.28350 -+  AVR32_OPC_MEMC,
43.28351 -+  AVR32_OPC_MEMS,
43.28352 -+  AVR32_OPC_MEMT,
43.28353 -+  AVR32_OPC_BFEXTS,
43.28354 -+  AVR32_OPC_BFEXTU,
43.28355 -+  AVR32_OPC_BFINS,
43.28356 -+  AVR32_OPC_RSUBEQ,
43.28357 -+  AVR32_OPC_RSUBNE,
43.28358 -+  AVR32_OPC_RSUBCC,
43.28359 -+  AVR32_OPC_RSUBCS,
43.28360 -+  AVR32_OPC_RSUBGE,
43.28361 -+  AVR32_OPC_RSUBLT,
43.28362 -+  AVR32_OPC_RSUBMI,
43.28363 -+  AVR32_OPC_RSUBPL,
43.28364 -+  AVR32_OPC_RSUBLS,
43.28365 -+  AVR32_OPC_RSUBGT,
43.28366 -+  AVR32_OPC_RSUBLE,
43.28367 -+  AVR32_OPC_RSUBHI,
43.28368 -+  AVR32_OPC_RSUBVS,
43.28369 -+  AVR32_OPC_RSUBVC,
43.28370 -+  AVR32_OPC_RSUBQS,
43.28371 -+  AVR32_OPC_RSUBAL,
43.28372 -+  AVR32_OPC_ADDEQ,
43.28373 -+  AVR32_OPC_ADDNE,
43.28374 -+  AVR32_OPC_ADDCC,
43.28375 -+  AVR32_OPC_ADDCS,
43.28376 -+  AVR32_OPC_ADDGE,
43.28377 -+  AVR32_OPC_ADDLT,
43.28378 -+  AVR32_OPC_ADDMI,
43.28379 -+  AVR32_OPC_ADDPL,
43.28380 -+  AVR32_OPC_ADDLS,
43.28381 -+  AVR32_OPC_ADDGT,
43.28382 -+  AVR32_OPC_ADDLE,
43.28383 -+  AVR32_OPC_ADDHI,
43.28384 -+  AVR32_OPC_ADDVS,
43.28385 -+  AVR32_OPC_ADDVC,
43.28386 -+  AVR32_OPC_ADDQS,
43.28387 -+  AVR32_OPC_ADDAL,
43.28388 -+  AVR32_OPC_SUB2EQ,
43.28389 -+  AVR32_OPC_SUB2NE,
43.28390 -+  AVR32_OPC_SUB2CC,
43.28391 -+  AVR32_OPC_SUB2CS,
43.28392 -+  AVR32_OPC_SUB2GE,
43.28393 -+  AVR32_OPC_SUB2LT,
43.28394 -+  AVR32_OPC_SUB2MI,
43.28395 -+  AVR32_OPC_SUB2PL,
43.28396 -+  AVR32_OPC_SUB2LS,
43.28397 -+  AVR32_OPC_SUB2GT,
43.28398 -+  AVR32_OPC_SUB2LE,
43.28399 -+  AVR32_OPC_SUB2HI,
43.28400 -+  AVR32_OPC_SUB2VS,
43.28401 -+  AVR32_OPC_SUB2VC,
43.28402 -+  AVR32_OPC_SUB2QS,
43.28403 -+  AVR32_OPC_SUB2AL,
43.28404 -+  AVR32_OPC_ANDEQ,
43.28405 -+  AVR32_OPC_ANDNE,
43.28406 -+  AVR32_OPC_ANDCC,
43.28407 -+  AVR32_OPC_ANDCS,
43.28408 -+  AVR32_OPC_ANDGE,
43.28409 -+  AVR32_OPC_ANDLT,
43.28410 -+  AVR32_OPC_ANDMI,
43.28411 -+  AVR32_OPC_ANDPL,
43.28412 -+  AVR32_OPC_ANDLS,
43.28413 -+  AVR32_OPC_ANDGT,
43.28414 -+  AVR32_OPC_ANDLE,
43.28415 -+  AVR32_OPC_ANDHI,
43.28416 -+  AVR32_OPC_ANDVS,
43.28417 -+  AVR32_OPC_ANDVC,
43.28418 -+  AVR32_OPC_ANDQS,
43.28419 -+  AVR32_OPC_ANDAL,
43.28420 -+  AVR32_OPC_OREQ,
43.28421 -+  AVR32_OPC_ORNE,
43.28422 -+  AVR32_OPC_ORCC,
43.28423 -+  AVR32_OPC_ORCS,
43.28424 -+  AVR32_OPC_ORGE,
43.28425 -+  AVR32_OPC_ORLT,
43.28426 -+  AVR32_OPC_ORMI,
43.28427 -+  AVR32_OPC_ORPL,
43.28428 -+  AVR32_OPC_ORLS,
43.28429 -+  AVR32_OPC_ORGT,
43.28430 -+  AVR32_OPC_ORLE,
43.28431 -+  AVR32_OPC_ORHI,
43.28432 -+  AVR32_OPC_ORVS,
43.28433 -+  AVR32_OPC_ORVC,
43.28434 -+  AVR32_OPC_ORQS,
43.28435 -+  AVR32_OPC_ORAL,
43.28436 -+  AVR32_OPC_EOREQ,
43.28437 -+  AVR32_OPC_EORNE,
43.28438 -+  AVR32_OPC_EORCC,
43.28439 -+  AVR32_OPC_EORCS,
43.28440 -+  AVR32_OPC_EORGE,
43.28441 -+  AVR32_OPC_EORLT,
43.28442 -+  AVR32_OPC_EORMI,
43.28443 -+  AVR32_OPC_EORPL,
43.28444 -+  AVR32_OPC_EORLS,
43.28445 -+  AVR32_OPC_EORGT,
43.28446 -+  AVR32_OPC_EORLE,
43.28447 -+  AVR32_OPC_EORHI,
43.28448 -+  AVR32_OPC_EORVS,
43.28449 -+  AVR32_OPC_EORVC,
43.28450 -+  AVR32_OPC_EORQS,
43.28451 -+  AVR32_OPC_EORAL,
43.28452 -+  AVR32_OPC_LD_WEQ,
43.28453 -+  AVR32_OPC_LD_WNE,
43.28454 -+  AVR32_OPC_LD_WCC,
43.28455 -+  AVR32_OPC_LD_WCS,
43.28456 -+  AVR32_OPC_LD_WGE,
43.28457 -+  AVR32_OPC_LD_WLT,
43.28458 -+  AVR32_OPC_LD_WMI,
43.28459 -+  AVR32_OPC_LD_WPL,
43.28460 -+  AVR32_OPC_LD_WLS,
43.28461 -+  AVR32_OPC_LD_WGT,
43.28462 -+  AVR32_OPC_LD_WLE,
43.28463 -+  AVR32_OPC_LD_WHI,
43.28464 -+  AVR32_OPC_LD_WVS,
43.28465 -+  AVR32_OPC_LD_WVC,
43.28466 -+  AVR32_OPC_LD_WQS,
43.28467 -+  AVR32_OPC_LD_WAL,
43.28468 -+  AVR32_OPC_LD_SHEQ,
43.28469 -+  AVR32_OPC_LD_SHNE,
43.28470 -+  AVR32_OPC_LD_SHCC,
43.28471 -+  AVR32_OPC_LD_SHCS,
43.28472 -+  AVR32_OPC_LD_SHGE,
43.28473 -+  AVR32_OPC_LD_SHLT,
43.28474 -+  AVR32_OPC_LD_SHMI,
43.28475 -+  AVR32_OPC_LD_SHPL,
43.28476 -+  AVR32_OPC_LD_SHLS,
43.28477 -+  AVR32_OPC_LD_SHGT,
43.28478 -+  AVR32_OPC_LD_SHLE,
43.28479 -+  AVR32_OPC_LD_SHHI,
43.28480 -+  AVR32_OPC_LD_SHVS,
43.28481 -+  AVR32_OPC_LD_SHVC,
43.28482 -+  AVR32_OPC_LD_SHQS,
43.28483 -+  AVR32_OPC_LD_SHAL,
43.28484 -+  AVR32_OPC_LD_UHEQ,
43.28485 -+  AVR32_OPC_LD_UHNE,
43.28486 -+  AVR32_OPC_LD_UHCC,
43.28487 -+  AVR32_OPC_LD_UHCS,
43.28488 -+  AVR32_OPC_LD_UHGE,
43.28489 -+  AVR32_OPC_LD_UHLT,
43.28490 -+  AVR32_OPC_LD_UHMI,
43.28491 -+  AVR32_OPC_LD_UHPL,
43.28492 -+  AVR32_OPC_LD_UHLS,
43.28493 -+  AVR32_OPC_LD_UHGT,
43.28494 -+  AVR32_OPC_LD_UHLE,
43.28495 -+  AVR32_OPC_LD_UHHI,
43.28496 -+  AVR32_OPC_LD_UHVS,
43.28497 -+  AVR32_OPC_LD_UHVC,
43.28498 -+  AVR32_OPC_LD_UHQS,
43.28499 -+  AVR32_OPC_LD_UHAL,
43.28500 -+  AVR32_OPC_LD_SBEQ,
43.28501 -+  AVR32_OPC_LD_SBNE,
43.28502 -+  AVR32_OPC_LD_SBCC,
43.28503 -+  AVR32_OPC_LD_SBCS,
43.28504 -+  AVR32_OPC_LD_SBGE,
43.28505 -+  AVR32_OPC_LD_SBLT,
43.28506 -+  AVR32_OPC_LD_SBMI,
43.28507 -+  AVR32_OPC_LD_SBPL,
43.28508 -+  AVR32_OPC_LD_SBLS,
43.28509 -+  AVR32_OPC_LD_SBGT,
43.28510 -+  AVR32_OPC_LD_SBLE,
43.28511 -+  AVR32_OPC_LD_SBHI,
43.28512 -+  AVR32_OPC_LD_SBVS,
43.28513 -+  AVR32_OPC_LD_SBVC,
43.28514 -+  AVR32_OPC_LD_SBQS,
43.28515 -+  AVR32_OPC_LD_SBAL,
43.28516 -+  AVR32_OPC_LD_UBEQ,
43.28517 -+  AVR32_OPC_LD_UBNE,
43.28518 -+  AVR32_OPC_LD_UBCC,
43.28519 -+  AVR32_OPC_LD_UBCS,
43.28520 -+  AVR32_OPC_LD_UBGE,
43.28521 -+  AVR32_OPC_LD_UBLT,
43.28522 -+  AVR32_OPC_LD_UBMI,
43.28523 -+  AVR32_OPC_LD_UBPL,
43.28524 -+  AVR32_OPC_LD_UBLS,
43.28525 -+  AVR32_OPC_LD_UBGT,
43.28526 -+  AVR32_OPC_LD_UBLE,
43.28527 -+  AVR32_OPC_LD_UBHI,
43.28528 -+  AVR32_OPC_LD_UBVS,
43.28529 -+  AVR32_OPC_LD_UBVC,
43.28530 -+  AVR32_OPC_LD_UBQS,
43.28531 -+  AVR32_OPC_LD_UBAL,
43.28532 -+  AVR32_OPC_ST_WEQ,
43.28533 -+  AVR32_OPC_ST_WNE,
43.28534 -+  AVR32_OPC_ST_WCC,
43.28535 -+  AVR32_OPC_ST_WCS,
43.28536 -+  AVR32_OPC_ST_WGE,
43.28537 -+  AVR32_OPC_ST_WLT,
43.28538 -+  AVR32_OPC_ST_WMI,
43.28539 -+  AVR32_OPC_ST_WPL,
43.28540 -+  AVR32_OPC_ST_WLS,
43.28541 -+  AVR32_OPC_ST_WGT,
43.28542 -+  AVR32_OPC_ST_WLE,
43.28543 -+  AVR32_OPC_ST_WHI,
43.28544 -+  AVR32_OPC_ST_WVS,
43.28545 -+  AVR32_OPC_ST_WVC,
43.28546 -+  AVR32_OPC_ST_WQS,
43.28547 -+  AVR32_OPC_ST_WAL,
43.28548 -+  AVR32_OPC_ST_HEQ,
43.28549 -+  AVR32_OPC_ST_HNE,
43.28550 -+  AVR32_OPC_ST_HCC,
43.28551 -+  AVR32_OPC_ST_HCS,
43.28552 -+  AVR32_OPC_ST_HGE,
43.28553 -+  AVR32_OPC_ST_HLT,
43.28554 -+  AVR32_OPC_ST_HMI,
43.28555 -+  AVR32_OPC_ST_HPL,
43.28556 -+  AVR32_OPC_ST_HLS,
43.28557 -+  AVR32_OPC_ST_HGT,
43.28558 -+  AVR32_OPC_ST_HLE,
43.28559 -+  AVR32_OPC_ST_HHI,
43.28560 -+  AVR32_OPC_ST_HVS,
43.28561 -+  AVR32_OPC_ST_HVC,
43.28562 -+  AVR32_OPC_ST_HQS,
43.28563 -+  AVR32_OPC_ST_HAL,
43.28564 -+  AVR32_OPC_ST_BEQ,
43.28565 -+  AVR32_OPC_ST_BNE,
43.28566 -+  AVR32_OPC_ST_BCC,
43.28567 -+  AVR32_OPC_ST_BCS,
43.28568 -+  AVR32_OPC_ST_BGE,
43.28569 -+  AVR32_OPC_ST_BLT,
43.28570 -+  AVR32_OPC_ST_BMI,
43.28571 -+  AVR32_OPC_ST_BPL,
43.28572 -+  AVR32_OPC_ST_BLS,
43.28573 -+  AVR32_OPC_ST_BGT,
43.28574 -+  AVR32_OPC_ST_BLE,
43.28575 -+  AVR32_OPC_ST_BHI,
43.28576 -+  AVR32_OPC_ST_BVS,
43.28577 -+  AVR32_OPC_ST_BVC,
43.28578 -+  AVR32_OPC_ST_BQS,
43.28579 -+  AVR32_OPC_ST_BAL,
43.28580 -+  AVR32_OPC_MOVH,
43.28581 -+  AVR32_OPC__END_
43.28582 -+};
43.28583 -+#define AVR32_NR_OPCODES AVR32_OPC__END_
43.28584 -+
43.28585 -+enum avr32_syntax_type
43.28586 -+{
43.28587 -+  AVR32_SYNTAX_ABS,
43.28588 -+  AVR32_SYNTAX_ACALL,
43.28589 -+  AVR32_SYNTAX_ACR,
43.28590 -+  AVR32_SYNTAX_ADC,
43.28591 -+  AVR32_SYNTAX_ADD1,
43.28592 -+  AVR32_SYNTAX_ADD2,
43.28593 -+  AVR32_SYNTAX_ADDABS,
43.28594 -+  AVR32_SYNTAX_ADDHH_W,
43.28595 -+  AVR32_SYNTAX_AND1,
43.28596 -+  AVR32_SYNTAX_AND2,
43.28597 -+  AVR32_SYNTAX_AND3,
43.28598 -+  AVR32_SYNTAX_ANDH,
43.28599 -+  AVR32_SYNTAX_ANDH_COH,
43.28600 -+  AVR32_SYNTAX_ANDL,
43.28601 -+  AVR32_SYNTAX_ANDL_COH,
43.28602 -+  AVR32_SYNTAX_ANDN,
43.28603 -+  AVR32_SYNTAX_ASR1,
43.28604 -+  AVR32_SYNTAX_ASR3,
43.28605 -+  AVR32_SYNTAX_ASR2,
43.28606 -+  AVR32_SYNTAX_BFEXTS,
43.28607 -+  AVR32_SYNTAX_BFEXTU,
43.28608 -+  AVR32_SYNTAX_BFINS,
43.28609 -+  AVR32_SYNTAX_BLD,
43.28610 -+  AVR32_SYNTAX_BREQ1,
43.28611 -+  AVR32_SYNTAX_BRNE1,
43.28612 -+  AVR32_SYNTAX_BRCC1,
43.28613 -+  AVR32_SYNTAX_BRCS1,
43.28614 -+  AVR32_SYNTAX_BRGE1,
43.28615 -+  AVR32_SYNTAX_BRLT1,
43.28616 -+  AVR32_SYNTAX_BRMI1,
43.28617 -+  AVR32_SYNTAX_BRPL1,
43.28618 -+  AVR32_SYNTAX_BRHS1,
43.28619 -+  AVR32_SYNTAX_BRLO1,
43.28620 -+  AVR32_SYNTAX_BREQ2,
43.28621 -+  AVR32_SYNTAX_BRNE2,
43.28622 -+  AVR32_SYNTAX_BRCC2,
43.28623 -+  AVR32_SYNTAX_BRCS2,
43.28624 -+  AVR32_SYNTAX_BRGE2,
43.28625 -+  AVR32_SYNTAX_BRLT2,
43.28626 -+  AVR32_SYNTAX_BRMI2,
43.28627 -+  AVR32_SYNTAX_BRPL2,
43.28628 -+  AVR32_SYNTAX_BRLS,
43.28629 -+  AVR32_SYNTAX_BRGT,
43.28630 -+  AVR32_SYNTAX_BRLE,
43.28631 -+  AVR32_SYNTAX_BRHI,
43.28632 -+  AVR32_SYNTAX_BRVS,
43.28633 -+  AVR32_SYNTAX_BRVC,
43.28634 -+  AVR32_SYNTAX_BRQS,
43.28635 -+  AVR32_SYNTAX_BRAL,
43.28636 -+  AVR32_SYNTAX_BRHS2,
43.28637 -+  AVR32_SYNTAX_BRLO2,
43.28638 -+  AVR32_SYNTAX_BREAKPOINT,
43.28639 -+  AVR32_SYNTAX_BREV,
43.28640 -+  AVR32_SYNTAX_BST,
43.28641 -+  AVR32_SYNTAX_CACHE,
43.28642 -+  AVR32_SYNTAX_CASTS_B,
43.28643 -+  AVR32_SYNTAX_CASTS_H,
43.28644 -+  AVR32_SYNTAX_CASTU_B,
43.28645 -+  AVR32_SYNTAX_CASTU_H,
43.28646 -+  AVR32_SYNTAX_CBR,
43.28647 -+  AVR32_SYNTAX_CLZ,
43.28648 -+  AVR32_SYNTAX_COM,
43.28649 -+  AVR32_SYNTAX_COP,
43.28650 -+  AVR32_SYNTAX_CP_B,
43.28651 -+  AVR32_SYNTAX_CP_H,
43.28652 -+  AVR32_SYNTAX_CP_W1,
43.28653 -+  AVR32_SYNTAX_CP_W2,
43.28654 -+  AVR32_SYNTAX_CP_W3,
43.28655 -+  AVR32_SYNTAX_CPC1,
43.28656 -+  AVR32_SYNTAX_CPC2,
43.28657 -+  AVR32_SYNTAX_CSRF,
43.28658 -+  AVR32_SYNTAX_CSRFCZ,
43.28659 -+  AVR32_SYNTAX_DIVS,
43.28660 -+  AVR32_SYNTAX_DIVU,
43.28661 -+  AVR32_SYNTAX_EOR1,
43.28662 -+  AVR32_SYNTAX_EOR2,
43.28663 -+  AVR32_SYNTAX_EOR3,
43.28664 -+  AVR32_SYNTAX_EORL,
43.28665 -+  AVR32_SYNTAX_EORH,
43.28666 -+  AVR32_SYNTAX_FRS,
43.28667 -+  AVR32_SYNTAX_ICALL,
43.28668 -+  AVR32_SYNTAX_INCJOSP,
43.28669 -+  AVR32_SYNTAX_LD_D1,
43.28670 -+  AVR32_SYNTAX_LD_D2,
43.28671 -+  AVR32_SYNTAX_LD_D3,
43.28672 -+  AVR32_SYNTAX_LD_D5,
43.28673 -+  AVR32_SYNTAX_LD_D4,
43.28674 -+  AVR32_SYNTAX_LD_SB2,
43.28675 -+  AVR32_SYNTAX_LD_SB1,
43.28676 -+  AVR32_SYNTAX_LD_UB1,
43.28677 -+  AVR32_SYNTAX_LD_UB2,
43.28678 -+  AVR32_SYNTAX_LD_UB5,
43.28679 -+  AVR32_SYNTAX_LD_UB3,
43.28680 -+  AVR32_SYNTAX_LD_UB4,
43.28681 -+  AVR32_SYNTAX_LD_SH1,
43.28682 -+  AVR32_SYNTAX_LD_SH2,
43.28683 -+  AVR32_SYNTAX_LD_SH5,
43.28684 -+  AVR32_SYNTAX_LD_SH3,
43.28685 -+  AVR32_SYNTAX_LD_SH4,
43.28686 -+  AVR32_SYNTAX_LD_UH1,
43.28687 -+  AVR32_SYNTAX_LD_UH2,
43.28688 -+  AVR32_SYNTAX_LD_UH5,
43.28689 -+  AVR32_SYNTAX_LD_UH3,
43.28690 -+  AVR32_SYNTAX_LD_UH4,
43.28691 -+  AVR32_SYNTAX_LD_W1,
43.28692 -+  AVR32_SYNTAX_LD_W2,
43.28693 -+  AVR32_SYNTAX_LD_W5,
43.28694 -+  AVR32_SYNTAX_LD_W6,
43.28695 -+  AVR32_SYNTAX_LD_W3,
43.28696 -+  AVR32_SYNTAX_LD_W4,
43.28697 -+  AVR32_SYNTAX_LDC_D1,
43.28698 -+  AVR32_SYNTAX_LDC_D2,
43.28699 -+  AVR32_SYNTAX_LDC_D3,
43.28700 -+  AVR32_SYNTAX_LDC_W1,
43.28701 -+  AVR32_SYNTAX_LDC_W2,
43.28702 -+  AVR32_SYNTAX_LDC_W3,
43.28703 -+  AVR32_SYNTAX_LDC0_D,
43.28704 -+  AVR32_SYNTAX_LDC0_W,
43.28705 -+  AVR32_SYNTAX_LDCM_D,
43.28706 -+  AVR32_SYNTAX_LDCM_D_PU,
43.28707 -+  AVR32_SYNTAX_LDCM_W,
43.28708 -+  AVR32_SYNTAX_LDCM_W_PU,
43.28709 -+  AVR32_SYNTAX_LDDPC,
43.28710 -+  AVR32_SYNTAX_LDDPC_EXT,
43.28711 -+  AVR32_SYNTAX_LDDSP,
43.28712 -+  AVR32_SYNTAX_LDINS_B,
43.28713 -+  AVR32_SYNTAX_LDINS_H,
43.28714 -+  AVR32_SYNTAX_LDM,
43.28715 -+  AVR32_SYNTAX_LDMTS,
43.28716 -+  AVR32_SYNTAX_LDMTS_PU,
43.28717 -+  AVR32_SYNTAX_LDSWP_SH,
43.28718 -+  AVR32_SYNTAX_LDSWP_UH,
43.28719 -+  AVR32_SYNTAX_LDSWP_W,
43.28720 -+  AVR32_SYNTAX_LSL1,
43.28721 -+  AVR32_SYNTAX_LSL3,
43.28722 -+  AVR32_SYNTAX_LSL2,
43.28723 -+  AVR32_SYNTAX_LSR1,
43.28724 -+  AVR32_SYNTAX_LSR3,
43.28725 -+  AVR32_SYNTAX_LSR2,
43.28726 -+  AVR32_SYNTAX_MAC,
43.28727 -+  AVR32_SYNTAX_MACHH_D,
43.28728 -+  AVR32_SYNTAX_MACHH_W,
43.28729 -+  AVR32_SYNTAX_MACS_D,
43.28730 -+  AVR32_SYNTAX_MACSATHH_W,
43.28731 -+  AVR32_SYNTAX_MACUD,
43.28732 -+  AVR32_SYNTAX_MACWH_D,
43.28733 -+  AVR32_SYNTAX_MAX,
43.28734 -+  AVR32_SYNTAX_MCALL,
43.28735 -+  AVR32_SYNTAX_MFDR,
43.28736 -+  AVR32_SYNTAX_MFSR,
43.28737 -+  AVR32_SYNTAX_MIN,
43.28738 -+  AVR32_SYNTAX_MOV3,
43.28739 -+  AVR32_SYNTAX_MOV1,
43.28740 -+  AVR32_SYNTAX_MOV2,
43.28741 -+  AVR32_SYNTAX_MOVEQ1,
43.28742 -+  AVR32_SYNTAX_MOVNE1,
43.28743 -+  AVR32_SYNTAX_MOVCC1,
43.28744 -+  AVR32_SYNTAX_MOVCS1,
43.28745 -+  AVR32_SYNTAX_MOVGE1,
43.28746 -+  AVR32_SYNTAX_MOVLT1,
43.28747 -+  AVR32_SYNTAX_MOVMI1,
43.28748 -+  AVR32_SYNTAX_MOVPL1,
43.28749 -+  AVR32_SYNTAX_MOVLS1,
43.28750 -+  AVR32_SYNTAX_MOVGT1,
43.28751 -+  AVR32_SYNTAX_MOVLE1,
43.28752 -+  AVR32_SYNTAX_MOVHI1,
43.28753 -+  AVR32_SYNTAX_MOVVS1,
43.28754 -+  AVR32_SYNTAX_MOVVC1,
43.28755 -+  AVR32_SYNTAX_MOVQS1,
43.28756 -+  AVR32_SYNTAX_MOVAL1,
43.28757 -+  AVR32_SYNTAX_MOVHS1,
43.28758 -+  AVR32_SYNTAX_MOVLO1,
43.28759 -+  AVR32_SYNTAX_MOVEQ2,
43.28760 -+  AVR32_SYNTAX_MOVNE2,
43.28761 -+  AVR32_SYNTAX_MOVCC2,
43.28762 -+  AVR32_SYNTAX_MOVCS2,
43.28763 -+  AVR32_SYNTAX_MOVGE2,
43.28764 -+  AVR32_SYNTAX_MOVLT2,
43.28765 -+  AVR32_SYNTAX_MOVMI2,
43.28766 -+  AVR32_SYNTAX_MOVPL2,
43.28767 -+  AVR32_SYNTAX_MOVLS2,
43.28768 -+  AVR32_SYNTAX_MOVGT2,
43.28769 -+  AVR32_SYNTAX_MOVLE2,
43.28770 -+  AVR32_SYNTAX_MOVHI2,
43.28771 -+  AVR32_SYNTAX_MOVVS2,
43.28772 -+  AVR32_SYNTAX_MOVVC2,
43.28773 -+  AVR32_SYNTAX_MOVQS2,
43.28774 -+  AVR32_SYNTAX_MOVAL2,
43.28775 -+  AVR32_SYNTAX_MOVHS2,
43.28776 -+  AVR32_SYNTAX_MOVLO2,
43.28777 -+  AVR32_SYNTAX_MTDR,
43.28778 -+  AVR32_SYNTAX_MTSR,
43.28779 -+  AVR32_SYNTAX_MUL1,
43.28780 -+  AVR32_SYNTAX_MUL2,
43.28781 -+  AVR32_SYNTAX_MUL3,
43.28782 -+  AVR32_SYNTAX_MULHH_W,
43.28783 -+  AVR32_SYNTAX_MULNHH_W,
43.28784 -+  AVR32_SYNTAX_MULNWH_D,
43.28785 -+  AVR32_SYNTAX_MULSD,
43.28786 -+  AVR32_SYNTAX_MULSATHH_H,
43.28787 -+  AVR32_SYNTAX_MULSATHH_W,
43.28788 -+  AVR32_SYNTAX_MULSATRNDHH_H,
43.28789 -+  AVR32_SYNTAX_MULSATRNDWH_W,
43.28790 -+  AVR32_SYNTAX_MULSATWH_W,
43.28791 -+  AVR32_SYNTAX_MULU_D,
43.28792 -+  AVR32_SYNTAX_MULWH_D,
43.28793 -+  AVR32_SYNTAX_MUSFR,
43.28794 -+  AVR32_SYNTAX_MUSTR,
43.28795 -+  AVR32_SYNTAX_MVCR_D,
43.28796 -+  AVR32_SYNTAX_MVCR_W,
43.28797 -+  AVR32_SYNTAX_MVRC_D,
43.28798 -+  AVR32_SYNTAX_MVRC_W,
43.28799 -+  AVR32_SYNTAX_NEG,
43.28800 -+  AVR32_SYNTAX_NOP,
43.28801 -+  AVR32_SYNTAX_OR1,
43.28802 -+  AVR32_SYNTAX_OR2,
43.28803 -+  AVR32_SYNTAX_OR3,
43.28804 -+  AVR32_SYNTAX_ORH,
43.28805 -+  AVR32_SYNTAX_ORL,
43.28806 -+  AVR32_SYNTAX_PABS_SB,
43.28807 -+  AVR32_SYNTAX_PABS_SH,
43.28808 -+  AVR32_SYNTAX_PACKSH_SB,
43.28809 -+  AVR32_SYNTAX_PACKSH_UB,
43.28810 -+  AVR32_SYNTAX_PACKW_SH,
43.28811 -+  AVR32_SYNTAX_PADD_B,
43.28812 -+  AVR32_SYNTAX_PADD_H,
43.28813 -+  AVR32_SYNTAX_PADDH_SH,
43.28814 -+  AVR32_SYNTAX_PADDH_UB,
43.28815 -+  AVR32_SYNTAX_PADDS_SB,
43.28816 -+  AVR32_SYNTAX_PADDS_SH,
43.28817 -+  AVR32_SYNTAX_PADDS_UB,
43.28818 -+  AVR32_SYNTAX_PADDS_UH,
43.28819 -+  AVR32_SYNTAX_PADDSUB_H,
43.28820 -+  AVR32_SYNTAX_PADDSUBH_SH,
43.28821 -+  AVR32_SYNTAX_PADDSUBS_SH,
43.28822 -+  AVR32_SYNTAX_PADDSUBS_UH,
43.28823 -+  AVR32_SYNTAX_PADDX_H,
43.28824 -+  AVR32_SYNTAX_PADDXH_SH,
43.28825 -+  AVR32_SYNTAX_PADDXS_SH,
43.28826 -+  AVR32_SYNTAX_PADDXS_UH,
43.28827 -+  AVR32_SYNTAX_PASR_B,
43.28828 -+  AVR32_SYNTAX_PASR_H,
43.28829 -+  AVR32_SYNTAX_PAVG_SH,
43.28830 -+  AVR32_SYNTAX_PAVG_UB,
43.28831 -+  AVR32_SYNTAX_PLSL_B,
43.28832 -+  AVR32_SYNTAX_PLSL_H,
43.28833 -+  AVR32_SYNTAX_PLSR_B,
43.28834 -+  AVR32_SYNTAX_PLSR_H,
43.28835 -+  AVR32_SYNTAX_PMAX_SH,
43.28836 -+  AVR32_SYNTAX_PMAX_UB,
43.28837 -+  AVR32_SYNTAX_PMIN_SH,
43.28838 -+  AVR32_SYNTAX_PMIN_UB,
43.28839 -+  AVR32_SYNTAX_POPJC,
43.28840 -+  AVR32_SYNTAX_POPM,
43.28841 -+  AVR32_SYNTAX_POPM_E,
43.28842 -+  AVR32_SYNTAX_PREF,
43.28843 -+  AVR32_SYNTAX_PSAD,
43.28844 -+  AVR32_SYNTAX_PSUB_B,
43.28845 -+  AVR32_SYNTAX_PSUB_H,
43.28846 -+  AVR32_SYNTAX_PSUBADD_H,
43.28847 -+  AVR32_SYNTAX_PSUBADDH_SH,
43.28848 -+  AVR32_SYNTAX_PSUBADDS_SH,
43.28849 -+  AVR32_SYNTAX_PSUBADDS_UH,
43.28850 -+  AVR32_SYNTAX_PSUBH_SH,
43.28851 -+  AVR32_SYNTAX_PSUBH_UB,
43.28852 -+  AVR32_SYNTAX_PSUBS_SB,
43.28853 -+  AVR32_SYNTAX_PSUBS_SH,
43.28854 -+  AVR32_SYNTAX_PSUBS_UB,
43.28855 -+  AVR32_SYNTAX_PSUBS_UH,
43.28856 -+  AVR32_SYNTAX_PSUBX_H,
43.28857 -+  AVR32_SYNTAX_PSUBXH_SH,
43.28858 -+  AVR32_SYNTAX_PSUBXS_SH,
43.28859 -+  AVR32_SYNTAX_PSUBXS_UH,
43.28860 -+  AVR32_SYNTAX_PUNPCKSB_H,
43.28861 -+  AVR32_SYNTAX_PUNPCKUB_H,
43.28862 -+  AVR32_SYNTAX_PUSHJC,
43.28863 -+  AVR32_SYNTAX_PUSHM,
43.28864 -+  AVR32_SYNTAX_PUSHM_E,
43.28865 -+  AVR32_SYNTAX_RCALL1,
43.28866 -+  AVR32_SYNTAX_RCALL2,
43.28867 -+  AVR32_SYNTAX_RETEQ,
43.28868 -+  AVR32_SYNTAX_RETNE,
43.28869 -+  AVR32_SYNTAX_RETCC,
43.28870 -+  AVR32_SYNTAX_RETCS,
43.28871 -+  AVR32_SYNTAX_RETGE,
43.28872 -+  AVR32_SYNTAX_RETLT,
43.28873 -+  AVR32_SYNTAX_RETMI,
43.28874 -+  AVR32_SYNTAX_RETPL,
43.28875 -+  AVR32_SYNTAX_RETLS,
43.28876 -+  AVR32_SYNTAX_RETGT,
43.28877 -+  AVR32_SYNTAX_RETLE,
43.28878 -+  AVR32_SYNTAX_RETHI,
43.28879 -+  AVR32_SYNTAX_RETVS,
43.28880 -+  AVR32_SYNTAX_RETVC,
43.28881 -+  AVR32_SYNTAX_RETQS,
43.28882 -+  AVR32_SYNTAX_RETAL,
43.28883 -+  AVR32_SYNTAX_RETHS,
43.28884 -+  AVR32_SYNTAX_RETLO,
43.28885 -+  AVR32_SYNTAX_RETD,
43.28886 -+  AVR32_SYNTAX_RETE,
43.28887 -+  AVR32_SYNTAX_RETJ,
43.28888 -+  AVR32_SYNTAX_RETS,
43.28889 -+  AVR32_SYNTAX_RJMP,
43.28890 -+  AVR32_SYNTAX_ROL,
43.28891 -+  AVR32_SYNTAX_ROR,
43.28892 -+  AVR32_SYNTAX_RSUB1,
43.28893 -+  AVR32_SYNTAX_RSUB2,
43.28894 -+  AVR32_SYNTAX_SATADD_H,
43.28895 -+  AVR32_SYNTAX_SATADD_W,
43.28896 -+  AVR32_SYNTAX_SATRNDS,
43.28897 -+  AVR32_SYNTAX_SATRNDU,
43.28898 -+  AVR32_SYNTAX_SATS,
43.28899 -+  AVR32_SYNTAX_SATSUB_H,
43.28900 -+  AVR32_SYNTAX_SATSUB_W1,
43.28901 -+  AVR32_SYNTAX_SATSUB_W2,
43.28902 -+  AVR32_SYNTAX_SATU,
43.28903 -+  AVR32_SYNTAX_SBC,
43.28904 -+  AVR32_SYNTAX_SBR,
43.28905 -+  AVR32_SYNTAX_SCALL,
43.28906 -+  AVR32_SYNTAX_SCR,
43.28907 -+  AVR32_SYNTAX_SLEEP,
43.28908 -+  AVR32_SYNTAX_SREQ,
43.28909 -+  AVR32_SYNTAX_SRNE,
43.28910 -+  AVR32_SYNTAX_SRCC,
43.28911 -+  AVR32_SYNTAX_SRCS,
43.28912 -+  AVR32_SYNTAX_SRGE,
43.28913 -+  AVR32_SYNTAX_SRLT,
43.28914 -+  AVR32_SYNTAX_SRMI,
43.28915 -+  AVR32_SYNTAX_SRPL,
43.28916 -+  AVR32_SYNTAX_SRLS,
43.28917 -+  AVR32_SYNTAX_SRGT,
43.28918 -+  AVR32_SYNTAX_SRLE,
43.28919 -+  AVR32_SYNTAX_SRHI,
43.28920 -+  AVR32_SYNTAX_SRVS,
43.28921 -+  AVR32_SYNTAX_SRVC,
43.28922 -+  AVR32_SYNTAX_SRQS,
43.28923 -+  AVR32_SYNTAX_SRAL,
43.28924 -+  AVR32_SYNTAX_SRHS,
43.28925 -+  AVR32_SYNTAX_SRLO,
43.28926 -+  AVR32_SYNTAX_SSRF,
43.28927 -+  AVR32_SYNTAX_ST_B1,
43.28928 -+  AVR32_SYNTAX_ST_B2,
43.28929 -+  AVR32_SYNTAX_ST_B5,
43.28930 -+  AVR32_SYNTAX_ST_B3,
43.28931 -+  AVR32_SYNTAX_ST_B4,
43.28932 -+  AVR32_SYNTAX_ST_D1,
43.28933 -+  AVR32_SYNTAX_ST_D2,
43.28934 -+  AVR32_SYNTAX_ST_D3,
43.28935 -+  AVR32_SYNTAX_ST_D5,
43.28936 -+  AVR32_SYNTAX_ST_D4,
43.28937 -+  AVR32_SYNTAX_ST_H1,
43.28938 -+  AVR32_SYNTAX_ST_H2,
43.28939 -+  AVR32_SYNTAX_ST_H5,
43.28940 -+  AVR32_SYNTAX_ST_H3,
43.28941 -+  AVR32_SYNTAX_ST_H4,
43.28942 -+  AVR32_SYNTAX_ST_W1,
43.28943 -+  AVR32_SYNTAX_ST_W2,
43.28944 -+  AVR32_SYNTAX_ST_W5,
43.28945 -+  AVR32_SYNTAX_ST_W3,
43.28946 -+  AVR32_SYNTAX_ST_W4,
43.28947 -+  AVR32_SYNTAX_STC_D1,
43.28948 -+  AVR32_SYNTAX_STC_D2,
43.28949 -+  AVR32_SYNTAX_STC_D3,
43.28950 -+  AVR32_SYNTAX_STC_W1,
43.28951 -+  AVR32_SYNTAX_STC_W2,
43.28952 -+  AVR32_SYNTAX_STC_W3,
43.28953 -+  AVR32_SYNTAX_STC0_D,
43.28954 -+  AVR32_SYNTAX_STC0_W,
43.28955 -+  AVR32_SYNTAX_STCM_D,
43.28956 -+  AVR32_SYNTAX_STCM_D_PU,
43.28957 -+  AVR32_SYNTAX_STCM_W,
43.28958 -+  AVR32_SYNTAX_STCM_W_PU,
43.28959 -+  AVR32_SYNTAX_STCOND,
43.28960 -+  AVR32_SYNTAX_STDSP,
43.28961 -+  AVR32_SYNTAX_STHH_W2,
43.28962 -+  AVR32_SYNTAX_STHH_W1,
43.28963 -+  AVR32_SYNTAX_STM,
43.28964 -+  AVR32_SYNTAX_STM_PU,
43.28965 -+  AVR32_SYNTAX_STMTS,
43.28966 -+  AVR32_SYNTAX_STMTS_PU,
43.28967 -+  AVR32_SYNTAX_STSWP_H,
43.28968 -+  AVR32_SYNTAX_STSWP_W,
43.28969 -+  AVR32_SYNTAX_SUB1,
43.28970 -+  AVR32_SYNTAX_SUB2,
43.28971 -+  AVR32_SYNTAX_SUB5,
43.28972 -+  AVR32_SYNTAX_SUB3_SP,
43.28973 -+  AVR32_SYNTAX_SUB3,
43.28974 -+  AVR32_SYNTAX_SUB4,
43.28975 -+  AVR32_SYNTAX_SUBEQ,
43.28976 -+  AVR32_SYNTAX_SUBNE,
43.28977 -+  AVR32_SYNTAX_SUBCC,
43.28978 -+  AVR32_SYNTAX_SUBCS,
43.28979 -+  AVR32_SYNTAX_SUBGE,
43.28980 -+  AVR32_SYNTAX_SUBLT,
43.28981 -+  AVR32_SYNTAX_SUBMI,
43.28982 -+  AVR32_SYNTAX_SUBPL,
43.28983 -+  AVR32_SYNTAX_SUBLS,
43.28984 -+  AVR32_SYNTAX_SUBGT,
43.28985 -+  AVR32_SYNTAX_SUBLE,
43.28986 -+  AVR32_SYNTAX_SUBHI,
43.28987 -+  AVR32_SYNTAX_SUBVS,
43.28988 -+  AVR32_SYNTAX_SUBVC,
43.28989 -+  AVR32_SYNTAX_SUBQS,
43.28990 -+  AVR32_SYNTAX_SUBAL,
43.28991 -+  AVR32_SYNTAX_SUBHS,
43.28992 -+  AVR32_SYNTAX_SUBLO,
43.28993 -+  AVR32_SYNTAX_SUBFEQ,
43.28994 -+  AVR32_SYNTAX_SUBFNE,
43.28995 -+  AVR32_SYNTAX_SUBFCC,
43.28996 -+  AVR32_SYNTAX_SUBFCS,
43.28997 -+  AVR32_SYNTAX_SUBFGE,
43.28998 -+  AVR32_SYNTAX_SUBFLT,
43.28999 -+  AVR32_SYNTAX_SUBFMI,
43.29000 -+  AVR32_SYNTAX_SUBFPL,
43.29001 -+  AVR32_SYNTAX_SUBFLS,
43.29002 -+  AVR32_SYNTAX_SUBFGT,
43.29003 -+  AVR32_SYNTAX_SUBFLE,
43.29004 -+  AVR32_SYNTAX_SUBFHI,
43.29005 -+  AVR32_SYNTAX_SUBFVS,
43.29006 -+  AVR32_SYNTAX_SUBFVC,
43.29007 -+  AVR32_SYNTAX_SUBFQS,
43.29008 -+  AVR32_SYNTAX_SUBFAL,
43.29009 -+  AVR32_SYNTAX_SUBFHS,
43.29010 -+  AVR32_SYNTAX_SUBFLO,
43.29011 -+  AVR32_SYNTAX_SUBHH_W,
43.29012 -+  AVR32_SYNTAX_SWAP_B,
43.29013 -+  AVR32_SYNTAX_SWAP_BH,
43.29014 -+  AVR32_SYNTAX_SWAP_H,
43.29015 -+  AVR32_SYNTAX_SYNC,
43.29016 -+  AVR32_SYNTAX_TLBR,
43.29017 -+  AVR32_SYNTAX_TLBS,
43.29018 -+  AVR32_SYNTAX_TLBW,
43.29019 -+  AVR32_SYNTAX_TNBZ,
43.29020 -+  AVR32_SYNTAX_TST,
43.29021 -+  AVR32_SYNTAX_XCHG,
43.29022 -+  AVR32_SYNTAX_MEMC,
43.29023 -+  AVR32_SYNTAX_MEMS,
43.29024 -+  AVR32_SYNTAX_MEMT,
43.29025 -+  AVR32_SYNTAX_FADD_S,
43.29026 -+  AVR32_SYNTAX_FADD_D,
43.29027 -+  AVR32_SYNTAX_FSUB_S,
43.29028 -+  AVR32_SYNTAX_FSUB_D,
43.29029 -+  AVR32_SYNTAX_FMAC_S,
43.29030 -+  AVR32_SYNTAX_FMAC_D,
43.29031 -+  AVR32_SYNTAX_FNMAC_S,
43.29032 -+  AVR32_SYNTAX_FNMAC_D,
43.29033 -+  AVR32_SYNTAX_FMSC_S,
43.29034 -+  AVR32_SYNTAX_FMSC_D,
43.29035 -+  AVR32_SYNTAX_FNMSC_S,
43.29036 -+  AVR32_SYNTAX_FNMSC_D,
43.29037 -+  AVR32_SYNTAX_FMUL_S,
43.29038 -+  AVR32_SYNTAX_FMUL_D,
43.29039 -+  AVR32_SYNTAX_FNMUL_S,
43.29040 -+  AVR32_SYNTAX_FNMUL_D,
43.29041 -+  AVR32_SYNTAX_FNEG_S,
43.29042 -+  AVR32_SYNTAX_FNEG_D,
43.29043 -+  AVR32_SYNTAX_FABS_S,
43.29044 -+  AVR32_SYNTAX_FABS_D,
43.29045 -+  AVR32_SYNTAX_FCMP_S,
43.29046 -+  AVR32_SYNTAX_FCMP_D,
43.29047 -+  AVR32_SYNTAX_FMOV1_S,
43.29048 -+  AVR32_SYNTAX_FMOV1_D,
43.29049 -+  AVR32_SYNTAX_FMOV2_S,
43.29050 -+  AVR32_SYNTAX_FMOV2_D,
43.29051 -+  AVR32_SYNTAX_FMOV3_S,
43.29052 -+  AVR32_SYNTAX_FMOV3_D,
43.29053 -+  AVR32_SYNTAX_FCASTS_D,
43.29054 -+  AVR32_SYNTAX_FCASTD_S,
43.29055 -+  AVR32_SYNTAX_LDA_W,
43.29056 -+  AVR32_SYNTAX_CALL,
43.29057 -+  AVR32_SYNTAX_PICOSVMAC0,
43.29058 -+  AVR32_SYNTAX_PICOSVMAC1,
43.29059 -+  AVR32_SYNTAX_PICOSVMAC2,
43.29060 -+  AVR32_SYNTAX_PICOSVMAC3,
43.29061 -+  AVR32_SYNTAX_PICOSVMUL0,
43.29062 -+  AVR32_SYNTAX_PICOSVMUL1,
43.29063 -+  AVR32_SYNTAX_PICOSVMUL2,
43.29064 -+  AVR32_SYNTAX_PICOSVMUL3,
43.29065 -+  AVR32_SYNTAX_PICOVMAC0,
43.29066 -+  AVR32_SYNTAX_PICOVMAC1,
43.29067 -+  AVR32_SYNTAX_PICOVMAC2,
43.29068 -+  AVR32_SYNTAX_PICOVMAC3,
43.29069 -+  AVR32_SYNTAX_PICOVMUL0,
43.29070 -+  AVR32_SYNTAX_PICOVMUL1,
43.29071 -+  AVR32_SYNTAX_PICOVMUL2,
43.29072 -+  AVR32_SYNTAX_PICOVMUL3,
43.29073 -+  AVR32_SYNTAX_PICOLD_D2,
43.29074 -+  AVR32_SYNTAX_PICOLD_D3,
43.29075 -+  AVR32_SYNTAX_PICOLD_D1,
43.29076 -+  AVR32_SYNTAX_PICOLD_W2,
43.29077 -+  AVR32_SYNTAX_PICOLD_W3,
43.29078 -+  AVR32_SYNTAX_PICOLD_W1,
43.29079 -+  AVR32_SYNTAX_PICOLDM_D,
43.29080 -+  AVR32_SYNTAX_PICOLDM_D_PU,
43.29081 -+  AVR32_SYNTAX_PICOLDM_W,
43.29082 -+  AVR32_SYNTAX_PICOLDM_W_PU,
43.29083 -+  AVR32_SYNTAX_PICOMV_D1,
43.29084 -+  AVR32_SYNTAX_PICOMV_D2,
43.29085 -+  AVR32_SYNTAX_PICOMV_W1,
43.29086 -+  AVR32_SYNTAX_PICOMV_W2,
43.29087 -+  AVR32_SYNTAX_PICOST_D2,
43.29088 -+  AVR32_SYNTAX_PICOST_D3,
43.29089 -+  AVR32_SYNTAX_PICOST_D1,
43.29090 -+  AVR32_SYNTAX_PICOST_W2,
43.29091 -+  AVR32_SYNTAX_PICOST_W3,
43.29092 -+  AVR32_SYNTAX_PICOST_W1,
43.29093 -+  AVR32_SYNTAX_PICOSTM_D,
43.29094 -+  AVR32_SYNTAX_PICOSTM_D_PU,
43.29095 -+  AVR32_SYNTAX_PICOSTM_W,
43.29096 -+  AVR32_SYNTAX_PICOSTM_W_PU,
43.29097 -+  AVR32_SYNTAX_RSUBEQ,
43.29098 -+  AVR32_SYNTAX_RSUBNE,
43.29099 -+  AVR32_SYNTAX_RSUBCC,
43.29100 -+  AVR32_SYNTAX_RSUBCS,
43.29101 -+  AVR32_SYNTAX_RSUBGE,
43.29102 -+  AVR32_SYNTAX_RSUBLT,
43.29103 -+  AVR32_SYNTAX_RSUBMI,
43.29104 -+  AVR32_SYNTAX_RSUBPL,
43.29105 -+  AVR32_SYNTAX_RSUBLS,
43.29106 -+  AVR32_SYNTAX_RSUBGT,
43.29107 -+  AVR32_SYNTAX_RSUBLE,
43.29108 -+  AVR32_SYNTAX_RSUBHI,
43.29109 -+  AVR32_SYNTAX_RSUBVS,
43.29110 -+  AVR32_SYNTAX_RSUBVC,
43.29111 -+  AVR32_SYNTAX_RSUBQS,
43.29112 -+  AVR32_SYNTAX_RSUBAL,
43.29113 -+  AVR32_SYNTAX_RSUBHS,
43.29114 -+  AVR32_SYNTAX_RSUBLO,
43.29115 -+  AVR32_SYNTAX_ADDEQ,
43.29116 -+  AVR32_SYNTAX_ADDNE,
43.29117 -+  AVR32_SYNTAX_ADDCC,
43.29118 -+  AVR32_SYNTAX_ADDCS,
43.29119 -+  AVR32_SYNTAX_ADDGE,
43.29120 -+  AVR32_SYNTAX_ADDLT,
43.29121 -+  AVR32_SYNTAX_ADDMI,
43.29122 -+  AVR32_SYNTAX_ADDPL,
43.29123 -+  AVR32_SYNTAX_ADDLS,
43.29124 -+  AVR32_SYNTAX_ADDGT,
43.29125 -+  AVR32_SYNTAX_ADDLE,
43.29126 -+  AVR32_SYNTAX_ADDHI,
43.29127 -+  AVR32_SYNTAX_ADDVS,
43.29128 -+  AVR32_SYNTAX_ADDVC,
43.29129 -+  AVR32_SYNTAX_ADDQS,
43.29130 -+  AVR32_SYNTAX_ADDAL,
43.29131 -+  AVR32_SYNTAX_ADDHS,
43.29132 -+  AVR32_SYNTAX_ADDLO,
43.29133 -+  AVR32_SYNTAX_SUB2EQ,
43.29134 -+  AVR32_SYNTAX_SUB2NE,
43.29135 -+  AVR32_SYNTAX_SUB2CC,
43.29136 -+  AVR32_SYNTAX_SUB2CS,
43.29137 -+  AVR32_SYNTAX_SUB2GE,
43.29138 -+  AVR32_SYNTAX_SUB2LT,
43.29139 -+  AVR32_SYNTAX_SUB2MI,
43.29140 -+  AVR32_SYNTAX_SUB2PL,
43.29141 -+  AVR32_SYNTAX_SUB2LS,
43.29142 -+  AVR32_SYNTAX_SUB2GT,
43.29143 -+  AVR32_SYNTAX_SUB2LE,
43.29144 -+  AVR32_SYNTAX_SUB2HI,
43.29145 -+  AVR32_SYNTAX_SUB2VS,
43.29146 -+  AVR32_SYNTAX_SUB2VC,
43.29147 -+  AVR32_SYNTAX_SUB2QS,
43.29148 -+  AVR32_SYNTAX_SUB2AL,
43.29149 -+  AVR32_SYNTAX_SUB2HS,
43.29150 -+  AVR32_SYNTAX_SUB2LO,
43.29151 -+  AVR32_SYNTAX_ANDEQ,
43.29152 -+  AVR32_SYNTAX_ANDNE,
43.29153 -+  AVR32_SYNTAX_ANDCC,
43.29154 -+  AVR32_SYNTAX_ANDCS,
43.29155 -+  AVR32_SYNTAX_ANDGE,
43.29156 -+  AVR32_SYNTAX_ANDLT,
43.29157 -+  AVR32_SYNTAX_ANDMI,
43.29158 -+  AVR32_SYNTAX_ANDPL,
43.29159 -+  AVR32_SYNTAX_ANDLS,
43.29160 -+  AVR32_SYNTAX_ANDGT,
43.29161 -+  AVR32_SYNTAX_ANDLE,
43.29162 -+  AVR32_SYNTAX_ANDHI,
43.29163 -+  AVR32_SYNTAX_ANDVS,
43.29164 -+  AVR32_SYNTAX_ANDVC,
43.29165 -+  AVR32_SYNTAX_ANDQS,
43.29166 -+  AVR32_SYNTAX_ANDAL,
43.29167 -+  AVR32_SYNTAX_ANDHS,
43.29168 -+  AVR32_SYNTAX_ANDLO,
43.29169 -+  AVR32_SYNTAX_OREQ,
43.29170 -+  AVR32_SYNTAX_ORNE,
43.29171 -+  AVR32_SYNTAX_ORCC,
43.29172 -+  AVR32_SYNTAX_ORCS,
43.29173 -+  AVR32_SYNTAX_ORGE,
43.29174 -+  AVR32_SYNTAX_ORLT,
43.29175 -+  AVR32_SYNTAX_ORMI,
43.29176 -+  AVR32_SYNTAX_ORPL,
43.29177 -+  AVR32_SYNTAX_ORLS,
43.29178 -+  AVR32_SYNTAX_ORGT,
43.29179 -+  AVR32_SYNTAX_ORLE,
43.29180 -+  AVR32_SYNTAX_ORHI,
43.29181 -+  AVR32_SYNTAX_ORVS,
43.29182 -+  AVR32_SYNTAX_ORVC,
43.29183 -+  AVR32_SYNTAX_ORQS,
43.29184 -+  AVR32_SYNTAX_ORAL,
43.29185 -+  AVR32_SYNTAX_ORHS,
43.29186 -+  AVR32_SYNTAX_ORLO,
43.29187 -+  AVR32_SYNTAX_EOREQ,
43.29188 -+  AVR32_SYNTAX_EORNE,
43.29189 -+  AVR32_SYNTAX_EORCC,
43.29190 -+  AVR32_SYNTAX_EORCS,
43.29191 -+  AVR32_SYNTAX_EORGE,
43.29192 -+  AVR32_SYNTAX_EORLT,
43.29193 -+  AVR32_SYNTAX_EORMI,
43.29194 -+  AVR32_SYNTAX_EORPL,
43.29195 -+  AVR32_SYNTAX_EORLS,
43.29196 -+  AVR32_SYNTAX_EORGT,
43.29197 -+  AVR32_SYNTAX_EORLE,
43.29198 -+  AVR32_SYNTAX_EORHI,
43.29199 -+  AVR32_SYNTAX_EORVS,
43.29200 -+  AVR32_SYNTAX_EORVC,
43.29201 -+  AVR32_SYNTAX_EORQS,
43.29202 -+  AVR32_SYNTAX_EORAL,
43.29203 -+  AVR32_SYNTAX_EORHS,
43.29204 -+  AVR32_SYNTAX_EORLO,
43.29205 -+  AVR32_SYNTAX_LD_WEQ,
43.29206 -+  AVR32_SYNTAX_LD_WNE,
43.29207 -+  AVR32_SYNTAX_LD_WCC,
43.29208 -+  AVR32_SYNTAX_LD_WCS,
43.29209 -+  AVR32_SYNTAX_LD_WGE,
43.29210 -+  AVR32_SYNTAX_LD_WLT,
43.29211 -+  AVR32_SYNTAX_LD_WMI,
43.29212 -+  AVR32_SYNTAX_LD_WPL,
43.29213 -+  AVR32_SYNTAX_LD_WLS,
43.29214 -+  AVR32_SYNTAX_LD_WGT,
43.29215 -+  AVR32_SYNTAX_LD_WLE,
43.29216 -+  AVR32_SYNTAX_LD_WHI,
43.29217 -+  AVR32_SYNTAX_LD_WVS,
43.29218 -+  AVR32_SYNTAX_LD_WVC,
43.29219 -+  AVR32_SYNTAX_LD_WQS,
43.29220 -+  AVR32_SYNTAX_LD_WAL,
43.29221 -+  AVR32_SYNTAX_LD_WHS,
43.29222 -+  AVR32_SYNTAX_LD_WLO,
43.29223 -+  AVR32_SYNTAX_LD_SHEQ,
43.29224 -+  AVR32_SYNTAX_LD_SHNE,
43.29225 -+  AVR32_SYNTAX_LD_SHCC,
43.29226 -+  AVR32_SYNTAX_LD_SHCS,
43.29227 -+  AVR32_SYNTAX_LD_SHGE,
43.29228 -+  AVR32_SYNTAX_LD_SHLT,
43.29229 -+  AVR32_SYNTAX_LD_SHMI,
43.29230 -+  AVR32_SYNTAX_LD_SHPL,
43.29231 -+  AVR32_SYNTAX_LD_SHLS,
43.29232 -+  AVR32_SYNTAX_LD_SHGT,
43.29233 -+  AVR32_SYNTAX_LD_SHLE,
43.29234 -+  AVR32_SYNTAX_LD_SHHI,
43.29235 -+  AVR32_SYNTAX_LD_SHVS,
43.29236 -+  AVR32_SYNTAX_LD_SHVC,
43.29237 -+  AVR32_SYNTAX_LD_SHQS,
43.29238 -+  AVR32_SYNTAX_LD_SHAL,
43.29239 -+  AVR32_SYNTAX_LD_SHHS,
43.29240 -+  AVR32_SYNTAX_LD_SHLO,
43.29241 -+  AVR32_SYNTAX_LD_UHEQ,
43.29242 -+  AVR32_SYNTAX_LD_UHNE,
43.29243 -+  AVR32_SYNTAX_LD_UHCC,
43.29244 -+  AVR32_SYNTAX_LD_UHCS,
43.29245 -+  AVR32_SYNTAX_LD_UHGE,
43.29246 -+  AVR32_SYNTAX_LD_UHLT,
43.29247 -+  AVR32_SYNTAX_LD_UHMI,
43.29248 -+  AVR32_SYNTAX_LD_UHPL,
43.29249 -+  AVR32_SYNTAX_LD_UHLS,
43.29250 -+  AVR32_SYNTAX_LD_UHGT,
43.29251 -+  AVR32_SYNTAX_LD_UHLE,
43.29252 -+  AVR32_SYNTAX_LD_UHHI,
43.29253 -+  AVR32_SYNTAX_LD_UHVS,
43.29254 -+  AVR32_SYNTAX_LD_UHVC,
43.29255 -+  AVR32_SYNTAX_LD_UHQS,
43.29256 -+  AVR32_SYNTAX_LD_UHAL,
43.29257 -+  AVR32_SYNTAX_LD_UHHS,
43.29258 -+  AVR32_SYNTAX_LD_UHLO,
43.29259 -+  AVR32_SYNTAX_LD_SBEQ,
43.29260 -+  AVR32_SYNTAX_LD_SBNE,
43.29261 -+  AVR32_SYNTAX_LD_SBCC,
43.29262 -+  AVR32_SYNTAX_LD_SBCS,
43.29263 -+  AVR32_SYNTAX_LD_SBGE,
43.29264 -+  AVR32_SYNTAX_LD_SBLT,
43.29265 -+  AVR32_SYNTAX_LD_SBMI,
43.29266 -+  AVR32_SYNTAX_LD_SBPL,
43.29267 -+  AVR32_SYNTAX_LD_SBLS,
43.29268 -+  AVR32_SYNTAX_LD_SBGT,
43.29269 -+  AVR32_SYNTAX_LD_SBLE,
43.29270 -+  AVR32_SYNTAX_LD_SBHI,
43.29271 -+  AVR32_SYNTAX_LD_SBVS,
43.29272 -+  AVR32_SYNTAX_LD_SBVC,
43.29273 -+  AVR32_SYNTAX_LD_SBQS,
43.29274 -+  AVR32_SYNTAX_LD_SBAL,
43.29275 -+  AVR32_SYNTAX_LD_SBHS,
43.29276 -+  AVR32_SYNTAX_LD_SBLO,
43.29277 -+  AVR32_SYNTAX_LD_UBEQ,
43.29278 -+  AVR32_SYNTAX_LD_UBNE,
43.29279 -+  AVR32_SYNTAX_LD_UBCC,
43.29280 -+  AVR32_SYNTAX_LD_UBCS,
43.29281 -+  AVR32_SYNTAX_LD_UBGE,
43.29282 -+  AVR32_SYNTAX_LD_UBLT,
43.29283 -+  AVR32_SYNTAX_LD_UBMI,
43.29284 -+  AVR32_SYNTAX_LD_UBPL,
43.29285 -+  AVR32_SYNTAX_LD_UBLS,
43.29286 -+  AVR32_SYNTAX_LD_UBGT,
43.29287 -+  AVR32_SYNTAX_LD_UBLE,
43.29288 -+  AVR32_SYNTAX_LD_UBHI,
43.29289 -+  AVR32_SYNTAX_LD_UBVS,
43.29290 -+  AVR32_SYNTAX_LD_UBVC,
43.29291 -+  AVR32_SYNTAX_LD_UBQS,
43.29292 -+  AVR32_SYNTAX_LD_UBAL,
43.29293 -+  AVR32_SYNTAX_LD_UBHS,
43.29294 -+  AVR32_SYNTAX_LD_UBLO,
43.29295 -+  AVR32_SYNTAX_ST_WEQ,
43.29296 -+  AVR32_SYNTAX_ST_WNE,
43.29297 -+  AVR32_SYNTAX_ST_WCC,
43.29298 -+  AVR32_SYNTAX_ST_WCS,
43.29299 -+  AVR32_SYNTAX_ST_WGE,
43.29300 -+  AVR32_SYNTAX_ST_WLT,
43.29301 -+  AVR32_SYNTAX_ST_WMI,
43.29302 -+  AVR32_SYNTAX_ST_WPL,
43.29303 -+  AVR32_SYNTAX_ST_WLS,
43.29304 -+  AVR32_SYNTAX_ST_WGT,
43.29305 -+  AVR32_SYNTAX_ST_WLE,
43.29306 -+  AVR32_SYNTAX_ST_WHI,
43.29307 -+  AVR32_SYNTAX_ST_WVS,
43.29308 -+  AVR32_SYNTAX_ST_WVC,
43.29309 -+  AVR32_SYNTAX_ST_WQS,
43.29310 -+  AVR32_SYNTAX_ST_WAL,
43.29311 -+  AVR32_SYNTAX_ST_WHS,
43.29312 -+  AVR32_SYNTAX_ST_WLO,
43.29313 -+  AVR32_SYNTAX_ST_HEQ,
43.29314 -+  AVR32_SYNTAX_ST_HNE,
43.29315 -+  AVR32_SYNTAX_ST_HCC,
43.29316 -+  AVR32_SYNTAX_ST_HCS,
43.29317 -+  AVR32_SYNTAX_ST_HGE,
43.29318 -+  AVR32_SYNTAX_ST_HLT,
43.29319 -+  AVR32_SYNTAX_ST_HMI,
43.29320 -+  AVR32_SYNTAX_ST_HPL,
43.29321 -+  AVR32_SYNTAX_ST_HLS,
43.29322 -+  AVR32_SYNTAX_ST_HGT,
43.29323 -+  AVR32_SYNTAX_ST_HLE,
43.29324 -+  AVR32_SYNTAX_ST_HHI,
43.29325 -+  AVR32_SYNTAX_ST_HVS,
43.29326 -+  AVR32_SYNTAX_ST_HVC,
43.29327 -+  AVR32_SYNTAX_ST_HQS,
43.29328 -+  AVR32_SYNTAX_ST_HAL,
43.29329 -+  AVR32_SYNTAX_ST_HHS,
43.29330 -+  AVR32_SYNTAX_ST_HLO,
43.29331 -+  AVR32_SYNTAX_ST_BEQ,
43.29332 -+  AVR32_SYNTAX_ST_BNE,
43.29333 -+  AVR32_SYNTAX_ST_BCC,
43.29334 -+  AVR32_SYNTAX_ST_BCS,
43.29335 -+  AVR32_SYNTAX_ST_BGE,
43.29336 -+  AVR32_SYNTAX_ST_BLT,
43.29337 -+  AVR32_SYNTAX_ST_BMI,
43.29338 -+  AVR32_SYNTAX_ST_BPL,
43.29339 -+  AVR32_SYNTAX_ST_BLS,
43.29340 -+  AVR32_SYNTAX_ST_BGT,
43.29341 -+  AVR32_SYNTAX_ST_BLE,
43.29342 -+  AVR32_SYNTAX_ST_BHI,
43.29343 -+  AVR32_SYNTAX_ST_BVS,
43.29344 -+  AVR32_SYNTAX_ST_BVC,
43.29345 -+  AVR32_SYNTAX_ST_BQS,
43.29346 -+  AVR32_SYNTAX_ST_BAL,
43.29347 -+  AVR32_SYNTAX_ST_BHS,
43.29348 -+  AVR32_SYNTAX_ST_BLO,
43.29349 -+  AVR32_SYNTAX_MOVH,
43.29350 -+  AVR32_SYNTAX__END_
43.29351 -+};
43.29352 -+#define AVR32_NR_SYNTAX AVR32_SYNTAX__END_
43.29353 -+
43.29354 -+enum avr32_alias_type
43.29355 -+  {
43.29356 -+    AVR32_ALIAS_FMAC_S,
43.29357 -+    AVR32_ALIAS_FMAC_D,
43.29358 -+    AVR32_ALIAS_FNMAC_S,
43.29359 -+    AVR32_ALIAS_FNMAC_D,
43.29360 -+    AVR32_ALIAS_FMSC_S,
43.29361 -+    AVR32_ALIAS_FMSC_D,
43.29362 -+    AVR32_ALIAS_FNMSC_S,
43.29363 -+    AVR32_ALIAS_FNMSC_D,
43.29364 -+    AVR32_ALIAS_FADD_S,
43.29365 -+    AVR32_ALIAS_FADD_D,
43.29366 -+    AVR32_ALIAS_FSUB_S,
43.29367 -+    AVR32_ALIAS_FSUB_D,
43.29368 -+    AVR32_ALIAS_FMUL_S,
43.29369 -+    AVR32_ALIAS_FMUL_D,
43.29370 -+    AVR32_ALIAS_FNMUL_S,
43.29371 -+    AVR32_ALIAS_FNMUL_D,
43.29372 -+    AVR32_ALIAS_FNEG_S,
43.29373 -+    AVR32_ALIAS_FNEG_D,
43.29374 -+    AVR32_ALIAS_FABS_S,
43.29375 -+    AVR32_ALIAS_FABS_D,
43.29376 -+    AVR32_ALIAS_FCMP_S,
43.29377 -+    AVR32_ALIAS_FCMP_D,
43.29378 -+    AVR32_ALIAS_FMOV1_S,
43.29379 -+    AVR32_ALIAS_FMOV1_D,
43.29380 -+    AVR32_ALIAS_FMOV2_S,
43.29381 -+    AVR32_ALIAS_FMOV2_D,
43.29382 -+    AVR32_ALIAS_FMOV3_S,
43.29383 -+    AVR32_ALIAS_FMOV3_D,
43.29384 -+    AVR32_ALIAS_FCASTS_D,
43.29385 -+    AVR32_ALIAS_FCASTD_S,
43.29386 -+    AVR32_ALIAS_PICOSVMAC0,
43.29387 -+    AVR32_ALIAS_PICOSVMAC1,
43.29388 -+    AVR32_ALIAS_PICOSVMAC2,
43.29389 -+    AVR32_ALIAS_PICOSVMAC3,
43.29390 -+    AVR32_ALIAS_PICOSVMUL0,
43.29391 -+    AVR32_ALIAS_PICOSVMUL1,
43.29392 -+    AVR32_ALIAS_PICOSVMUL2,
43.29393 -+    AVR32_ALIAS_PICOSVMUL3,
43.29394 -+    AVR32_ALIAS_PICOVMAC0,
43.29395 -+    AVR32_ALIAS_PICOVMAC1,
43.29396 -+    AVR32_ALIAS_PICOVMAC2,
43.29397 -+    AVR32_ALIAS_PICOVMAC3,
43.29398 -+    AVR32_ALIAS_PICOVMUL0,
43.29399 -+    AVR32_ALIAS_PICOVMUL1,
43.29400 -+    AVR32_ALIAS_PICOVMUL2,
43.29401 -+    AVR32_ALIAS_PICOVMUL3,
43.29402 -+    AVR32_ALIAS_PICOLD_D1,
43.29403 -+    AVR32_ALIAS_PICOLD_D2,
43.29404 -+    AVR32_ALIAS_PICOLD_D3,
43.29405 -+    AVR32_ALIAS_PICOLD_W1,
43.29406 -+    AVR32_ALIAS_PICOLD_W2,
43.29407 -+    AVR32_ALIAS_PICOLD_W3,
43.29408 -+    AVR32_ALIAS_PICOLDM_D,
43.29409 -+    AVR32_ALIAS_PICOLDM_D_PU,
43.29410 -+    AVR32_ALIAS_PICOLDM_W,
43.29411 -+    AVR32_ALIAS_PICOLDM_W_PU,
43.29412 -+    AVR32_ALIAS_PICOMV_D1,
43.29413 -+    AVR32_ALIAS_PICOMV_D2,
43.29414 -+    AVR32_ALIAS_PICOMV_W1,
43.29415 -+    AVR32_ALIAS_PICOMV_W2,
43.29416 -+    AVR32_ALIAS_PICOST_D1,
43.29417 -+    AVR32_ALIAS_PICOST_D2,
43.29418 -+    AVR32_ALIAS_PICOST_D3,
43.29419 -+    AVR32_ALIAS_PICOST_W1,
43.29420 -+    AVR32_ALIAS_PICOST_W2,
43.29421 -+    AVR32_ALIAS_PICOST_W3,
43.29422 -+    AVR32_ALIAS_PICOSTM_D,
43.29423 -+    AVR32_ALIAS_PICOSTM_D_PU,
43.29424 -+    AVR32_ALIAS_PICOSTM_W,
43.29425 -+    AVR32_ALIAS_PICOSTM_W_PU,
43.29426 -+    AVR32_ALIAS__END_
43.29427 -+  };
43.29428 -+#define AVR32_NR_ALIAS AVR32_ALIAS__END_
43.29429 -+
43.29430 -+enum avr32_mnemonic_type
43.29431 -+{
43.29432 -+  AVR32_MNEMONIC_ABS,
43.29433 -+  AVR32_MNEMONIC_ACALL,
43.29434 -+  AVR32_MNEMONIC_ACR,
43.29435 -+  AVR32_MNEMONIC_ADC,
43.29436 -+  AVR32_MNEMONIC_ADD,
43.29437 -+  AVR32_MNEMONIC_ADDABS,
43.29438 -+  AVR32_MNEMONIC_ADDHH_W,
43.29439 -+  AVR32_MNEMONIC_AND,
43.29440 -+  AVR32_MNEMONIC_ANDH,
43.29441 -+  AVR32_MNEMONIC_ANDL,
43.29442 -+  AVR32_MNEMONIC_ANDN,
43.29443 -+  AVR32_MNEMONIC_ASR,
43.29444 -+  AVR32_MNEMONIC_BFEXTS,
43.29445 -+  AVR32_MNEMONIC_BFEXTU,
43.29446 -+  AVR32_MNEMONIC_BFINS,
43.29447 -+  AVR32_MNEMONIC_BLD,
43.29448 -+  AVR32_MNEMONIC_BREQ,
43.29449 -+  AVR32_MNEMONIC_BRNE,
43.29450 -+  AVR32_MNEMONIC_BRCC,
43.29451 -+  AVR32_MNEMONIC_BRCS,
43.29452 -+  AVR32_MNEMONIC_BRGE,
43.29453 -+  AVR32_MNEMONIC_BRLT,
43.29454 -+  AVR32_MNEMONIC_BRMI,
43.29455 -+  AVR32_MNEMONIC_BRPL,
43.29456 -+  AVR32_MNEMONIC_BRHS,
43.29457 -+  AVR32_MNEMONIC_BRLO,
43.29458 -+  AVR32_MNEMONIC_BRLS,
43.29459 -+  AVR32_MNEMONIC_BRGT,
43.29460 -+  AVR32_MNEMONIC_BRLE,
43.29461 -+  AVR32_MNEMONIC_BRHI,
43.29462 -+  AVR32_MNEMONIC_BRVS,
43.29463 -+  AVR32_MNEMONIC_BRVC,
43.29464 -+  AVR32_MNEMONIC_BRQS,
43.29465 -+  AVR32_MNEMONIC_BRAL,
43.29466 -+  AVR32_MNEMONIC_BREAKPOINT,
43.29467 -+  AVR32_MNEMONIC_BREV,
43.29468 -+  AVR32_MNEMONIC_BST,
43.29469 -+  AVR32_MNEMONIC_CACHE,
43.29470 -+  AVR32_MNEMONIC_CASTS_B,
43.29471 -+  AVR32_MNEMONIC_CASTS_H,
43.29472 -+  AVR32_MNEMONIC_CASTU_B,
43.29473 -+  AVR32_MNEMONIC_CASTU_H,
43.29474 -+  AVR32_MNEMONIC_CBR,
43.29475 -+  AVR32_MNEMONIC_CLZ,
43.29476 -+  AVR32_MNEMONIC_COM,
43.29477 -+  AVR32_MNEMONIC_COP,
43.29478 -+  AVR32_MNEMONIC_CP_B,
43.29479 -+  AVR32_MNEMONIC_CP_H,
43.29480 -+  AVR32_MNEMONIC_CP_W,
43.29481 -+  AVR32_MNEMONIC_CP,
43.29482 -+  AVR32_MNEMONIC_CPC,
43.29483 -+  AVR32_MNEMONIC_CSRF,
43.29484 -+  AVR32_MNEMONIC_CSRFCZ,
43.29485 -+  AVR32_MNEMONIC_DIVS,
43.29486 -+  AVR32_MNEMONIC_DIVU,
43.29487 -+  AVR32_MNEMONIC_EOR,
43.29488 -+  AVR32_MNEMONIC_EORL,
43.29489 -+  AVR32_MNEMONIC_EORH,
43.29490 -+  AVR32_MNEMONIC_FRS,
43.29491 -+  AVR32_MNEMONIC_ICALL,
43.29492 -+  AVR32_MNEMONIC_INCJOSP,
43.29493 -+  AVR32_MNEMONIC_LD_D,
43.29494 -+  AVR32_MNEMONIC_LD_SB,
43.29495 -+  AVR32_MNEMONIC_LD_UB,
43.29496 -+  AVR32_MNEMONIC_LD_SH,
43.29497 -+  AVR32_MNEMONIC_LD_UH,
43.29498 -+  AVR32_MNEMONIC_LD_W,
43.29499 -+  AVR32_MNEMONIC_LDC_D,
43.29500 -+  AVR32_MNEMONIC_LDC_W,
43.29501 -+  AVR32_MNEMONIC_LDC0_D,
43.29502 -+  AVR32_MNEMONIC_LDC0_W,
43.29503 -+  AVR32_MNEMONIC_LDCM_D,
43.29504 -+  AVR32_MNEMONIC_LDCM_W,
43.29505 -+  AVR32_MNEMONIC_LDDPC,
43.29506 -+  AVR32_MNEMONIC_LDDSP,
43.29507 -+  AVR32_MNEMONIC_LDINS_B,
43.29508 -+  AVR32_MNEMONIC_LDINS_H,
43.29509 -+  AVR32_MNEMONIC_LDM,
43.29510 -+  AVR32_MNEMONIC_LDMTS,
43.29511 -+  AVR32_MNEMONIC_LDSWP_SH,
43.29512 -+  AVR32_MNEMONIC_LDSWP_UH,
43.29513 -+  AVR32_MNEMONIC_LDSWP_W,
43.29514 -+  AVR32_MNEMONIC_LSL,
43.29515 -+  AVR32_MNEMONIC_LSR,
43.29516 -+  AVR32_MNEMONIC_MAC,
43.29517 -+  AVR32_MNEMONIC_MACHH_D,
43.29518 -+  AVR32_MNEMONIC_MACHH_W,
43.29519 -+  AVR32_MNEMONIC_MACS_D,
43.29520 -+  AVR32_MNEMONIC_MACSATHH_W,
43.29521 -+  AVR32_MNEMONIC_MACU_D,
43.29522 -+  AVR32_MNEMONIC_MACWH_D,
43.29523 -+  AVR32_MNEMONIC_MAX,
43.29524 -+  AVR32_MNEMONIC_MCALL,
43.29525 -+  AVR32_MNEMONIC_MFDR,
43.29526 -+  AVR32_MNEMONIC_MFSR,
43.29527 -+  AVR32_MNEMONIC_MIN,
43.29528 -+  AVR32_MNEMONIC_MOV,
43.29529 -+  AVR32_MNEMONIC_MOVEQ,
43.29530 -+  AVR32_MNEMONIC_MOVNE,
43.29531 -+  AVR32_MNEMONIC_MOVCC,
43.29532 -+  AVR32_MNEMONIC_MOVCS,
43.29533 -+  AVR32_MNEMONIC_MOVGE,
43.29534 -+  AVR32_MNEMONIC_MOVLT,
43.29535 -+  AVR32_MNEMONIC_MOVMI,
43.29536 -+  AVR32_MNEMONIC_MOVPL,
43.29537 -+  AVR32_MNEMONIC_MOVLS,
43.29538 -+  AVR32_MNEMONIC_MOVGT,
43.29539 -+  AVR32_MNEMONIC_MOVLE,
43.29540 -+  AVR32_MNEMONIC_MOVHI,
43.29541 -+  AVR32_MNEMONIC_MOVVS,
43.29542 -+  AVR32_MNEMONIC_MOVVC,
43.29543 -+  AVR32_MNEMONIC_MOVQS,
43.29544 -+  AVR32_MNEMONIC_MOVAL,
43.29545 -+  AVR32_MNEMONIC_MOVHS,
43.29546 -+  AVR32_MNEMONIC_MOVLO,
43.29547 -+  AVR32_MNEMONIC_MTDR,
43.29548 -+  AVR32_MNEMONIC_MTSR,
43.29549 -+  AVR32_MNEMONIC_MUL,
43.29550 -+  AVR32_MNEMONIC_MULHH_W,
43.29551 -+  AVR32_MNEMONIC_MULNHH_W,
43.29552 -+  AVR32_MNEMONIC_MULNWH_D,
43.29553 -+  AVR32_MNEMONIC_MULS_D,
43.29554 -+  AVR32_MNEMONIC_MULSATHH_H,
43.29555 -+  AVR32_MNEMONIC_MULSATHH_W,
43.29556 -+  AVR32_MNEMONIC_MULSATRNDHH_H,
43.29557 -+  AVR32_MNEMONIC_MULSATRNDWH_W,
43.29558 -+  AVR32_MNEMONIC_MULSATWH_W,
43.29559 -+  AVR32_MNEMONIC_MULU_D,
43.29560 -+  AVR32_MNEMONIC_MULWH_D,
43.29561 -+  AVR32_MNEMONIC_MUSFR,
43.29562 -+  AVR32_MNEMONIC_MUSTR,
43.29563 -+  AVR32_MNEMONIC_MVCR_D,
43.29564 -+  AVR32_MNEMONIC_MVCR_W,
43.29565 -+  AVR32_MNEMONIC_MVRC_D,
43.29566 -+  AVR32_MNEMONIC_MVRC_W,
43.29567 -+  AVR32_MNEMONIC_NEG,
43.29568 -+  AVR32_MNEMONIC_NOP,
43.29569 -+  AVR32_MNEMONIC_OR,
43.29570 -+  AVR32_MNEMONIC_ORH,
43.29571 -+  AVR32_MNEMONIC_ORL,
43.29572 -+  AVR32_MNEMONIC_PABS_SB,
43.29573 -+  AVR32_MNEMONIC_PABS_SH,
43.29574 -+  AVR32_MNEMONIC_PACKSH_SB,
43.29575 -+  AVR32_MNEMONIC_PACKSH_UB,
43.29576 -+  AVR32_MNEMONIC_PACKW_SH,
43.29577 -+  AVR32_MNEMONIC_PADD_B,
43.29578 -+  AVR32_MNEMONIC_PADD_H,
43.29579 -+  AVR32_MNEMONIC_PADDH_SH,
43.29580 -+  AVR32_MNEMONIC_PADDH_UB,
43.29581 -+  AVR32_MNEMONIC_PADDS_SB,
43.29582 -+  AVR32_MNEMONIC_PADDS_SH,
43.29583 -+  AVR32_MNEMONIC_PADDS_UB,
43.29584 -+  AVR32_MNEMONIC_PADDS_UH,
43.29585 -+  AVR32_MNEMONIC_PADDSUB_H,
43.29586 -+  AVR32_MNEMONIC_PADDSUBH_SH,
43.29587 -+  AVR32_MNEMONIC_PADDSUBS_SH,
43.29588 -+  AVR32_MNEMONIC_PADDSUBS_UH,
43.29589 -+  AVR32_MNEMONIC_PADDX_H,
43.29590 -+  AVR32_MNEMONIC_PADDXH_SH,
43.29591 -+  AVR32_MNEMONIC_PADDXS_SH,
43.29592 -+  AVR32_MNEMONIC_PADDXS_UH,
43.29593 -+  AVR32_MNEMONIC_PASR_B,
43.29594 -+  AVR32_MNEMONIC_PASR_H,
43.29595 -+  AVR32_MNEMONIC_PAVG_SH,
43.29596 -+  AVR32_MNEMONIC_PAVG_UB,
43.29597 -+  AVR32_MNEMONIC_PLSL_B,
43.29598 -+  AVR32_MNEMONIC_PLSL_H,
43.29599 -+  AVR32_MNEMONIC_PLSR_B,
43.29600 -+  AVR32_MNEMONIC_PLSR_H,
43.29601 -+  AVR32_MNEMONIC_PMAX_SH,
43.29602 -+  AVR32_MNEMONIC_PMAX_UB,
43.29603 -+  AVR32_MNEMONIC_PMIN_SH,
43.29604 -+  AVR32_MNEMONIC_PMIN_UB,
43.29605 -+  AVR32_MNEMONIC_POPJC,
43.29606 -+  AVR32_MNEMONIC_POPM,
43.29607 -+  AVR32_MNEMONIC_PREF,
43.29608 -+  AVR32_MNEMONIC_PSAD,
43.29609 -+  AVR32_MNEMONIC_PSUB_B,
43.29610 -+  AVR32_MNEMONIC_PSUB_H,
43.29611 -+  AVR32_MNEMONIC_PSUBADD_H,
43.29612 -+  AVR32_MNEMONIC_PSUBADDH_SH,
43.29613 -+  AVR32_MNEMONIC_PSUBADDS_SH,
43.29614 -+  AVR32_MNEMONIC_PSUBADDS_UH,
43.29615 -+  AVR32_MNEMONIC_PSUBH_SH,
43.29616 -+  AVR32_MNEMONIC_PSUBH_UB,
43.29617 -+  AVR32_MNEMONIC_PSUBS_SB,
43.29618 -+  AVR32_MNEMONIC_PSUBS_SH,
43.29619 -+  AVR32_MNEMONIC_PSUBS_UB,
43.29620 -+  AVR32_MNEMONIC_PSUBS_UH,
43.29621 -+  AVR32_MNEMONIC_PSUBX_H,
43.29622 -+  AVR32_MNEMONIC_PSUBXH_SH,
43.29623 -+  AVR32_MNEMONIC_PSUBXS_SH,
43.29624 -+  AVR32_MNEMONIC_PSUBXS_UH,
43.29625 -+  AVR32_MNEMONIC_PUNPCKSB_H,
43.29626 -+  AVR32_MNEMONIC_PUNPCKUB_H,
43.29627 -+  AVR32_MNEMONIC_PUSHJC,
43.29628 -+  AVR32_MNEMONIC_PUSHM,
43.29629 -+  AVR32_MNEMONIC_RCALL,
43.29630 -+  AVR32_MNEMONIC_RETEQ,
43.29631 -+  AVR32_MNEMONIC_RETNE,
43.29632 -+  AVR32_MNEMONIC_RETCC,
43.29633 -+  AVR32_MNEMONIC_RETCS,
43.29634 -+  AVR32_MNEMONIC_RETGE,
43.29635 -+  AVR32_MNEMONIC_RETLT,
43.29636 -+  AVR32_MNEMONIC_RETMI,
43.29637 -+  AVR32_MNEMONIC_RETPL,
43.29638 -+  AVR32_MNEMONIC_RETLS,
43.29639 -+  AVR32_MNEMONIC_RETGT,
43.29640 -+  AVR32_MNEMONIC_RETLE,
43.29641 -+  AVR32_MNEMONIC_RETHI,
43.29642 -+  AVR32_MNEMONIC_RETVS,
43.29643 -+  AVR32_MNEMONIC_RETVC,
43.29644 -+  AVR32_MNEMONIC_RETQS,
43.29645 -+  AVR32_MNEMONIC_RETAL,
43.29646 -+  AVR32_MNEMONIC_RETHS,
43.29647 -+  AVR32_MNEMONIC_RETLO,
43.29648 -+  AVR32_MNEMONIC_RET,
43.29649 -+  AVR32_MNEMONIC_RETD,
43.29650 -+  AVR32_MNEMONIC_RETE,
43.29651 -+  AVR32_MNEMONIC_RETJ,
43.29652 -+  AVR32_MNEMONIC_RETS,
43.29653 -+  AVR32_MNEMONIC_RJMP,
43.29654 -+  AVR32_MNEMONIC_ROL,
43.29655 -+  AVR32_MNEMONIC_ROR,
43.29656 -+  AVR32_MNEMONIC_RSUB,
43.29657 -+  AVR32_MNEMONIC_SATADD_H,
43.29658 -+  AVR32_MNEMONIC_SATADD_W,
43.29659 -+  AVR32_MNEMONIC_SATRNDS,
43.29660 -+  AVR32_MNEMONIC_SATRNDU,
43.29661 -+  AVR32_MNEMONIC_SATS,
43.29662 -+  AVR32_MNEMONIC_SATSUB_H,
43.29663 -+  AVR32_MNEMONIC_SATSUB_W,
43.29664 -+  AVR32_MNEMONIC_SATU,
43.29665 -+  AVR32_MNEMONIC_SBC,
43.29666 -+  AVR32_MNEMONIC_SBR,
43.29667 -+  AVR32_MNEMONIC_SCALL,
43.29668 -+  AVR32_MNEMONIC_SCR,
43.29669 -+  AVR32_MNEMONIC_SLEEP,
43.29670 -+  AVR32_MNEMONIC_SREQ,
43.29671 -+  AVR32_MNEMONIC_SRNE,
43.29672 -+  AVR32_MNEMONIC_SRCC,
43.29673 -+  AVR32_MNEMONIC_SRCS,
43.29674 -+  AVR32_MNEMONIC_SRGE,
43.29675 -+  AVR32_MNEMONIC_SRLT,
43.29676 -+  AVR32_MNEMONIC_SRMI,
43.29677 -+  AVR32_MNEMONIC_SRPL,
43.29678 -+  AVR32_MNEMONIC_SRLS,
43.29679 -+  AVR32_MNEMONIC_SRGT,
43.29680 -+  AVR32_MNEMONIC_SRLE,
43.29681 -+  AVR32_MNEMONIC_SRHI,
43.29682 -+  AVR32_MNEMONIC_SRVS,
43.29683 -+  AVR32_MNEMONIC_SRVC,
43.29684 -+  AVR32_MNEMONIC_SRQS,
43.29685 -+  AVR32_MNEMONIC_SRAL,
43.29686 -+  AVR32_MNEMONIC_SRHS,
43.29687 -+  AVR32_MNEMONIC_SRLO,
43.29688 -+  AVR32_MNEMONIC_SSRF,
43.29689 -+  AVR32_MNEMONIC_ST_B,
43.29690 -+  AVR32_MNEMONIC_ST_D,
43.29691 -+  AVR32_MNEMONIC_ST_H,
43.29692 -+  AVR32_MNEMONIC_ST_W,
43.29693 -+  AVR32_MNEMONIC_STC_D,
43.29694 -+  AVR32_MNEMONIC_STC_W,
43.29695 -+  AVR32_MNEMONIC_STC0_D,
43.29696 -+  AVR32_MNEMONIC_STC0_W,
43.29697 -+  AVR32_MNEMONIC_STCM_D,
43.29698 -+  AVR32_MNEMONIC_STCM_W,
43.29699 -+  AVR32_MNEMONIC_STCOND,
43.29700 -+  AVR32_MNEMONIC_STDSP,
43.29701 -+  AVR32_MNEMONIC_STHH_W,
43.29702 -+  AVR32_MNEMONIC_STM,
43.29703 -+  AVR32_MNEMONIC_STMTS,
43.29704 -+  AVR32_MNEMONIC_STSWP_H,
43.29705 -+  AVR32_MNEMONIC_STSWP_W,
43.29706 -+  AVR32_MNEMONIC_SUB,
43.29707 -+  AVR32_MNEMONIC_SUBEQ,
43.29708 -+  AVR32_MNEMONIC_SUBNE,
43.29709 -+  AVR32_MNEMONIC_SUBCC,
43.29710 -+  AVR32_MNEMONIC_SUBCS,
43.29711 -+  AVR32_MNEMONIC_SUBGE,
43.29712 -+  AVR32_MNEMONIC_SUBLT,
43.29713 -+  AVR32_MNEMONIC_SUBMI,
43.29714 -+  AVR32_MNEMONIC_SUBPL,
43.29715 -+  AVR32_MNEMONIC_SUBLS,
43.29716 -+  AVR32_MNEMONIC_SUBGT,
43.29717 -+  AVR32_MNEMONIC_SUBLE,
43.29718 -+  AVR32_MNEMONIC_SUBHI,
43.29719 -+  AVR32_MNEMONIC_SUBVS,
43.29720 -+  AVR32_MNEMONIC_SUBVC,
43.29721 -+  AVR32_MNEMONIC_SUBQS,
43.29722 -+  AVR32_MNEMONIC_SUBAL,
43.29723 -+  AVR32_MNEMONIC_SUBHS,
43.29724 -+  AVR32_MNEMONIC_SUBLO,
43.29725 -+  AVR32_MNEMONIC_SUBFEQ,
43.29726 -+  AVR32_MNEMONIC_SUBFNE,
43.29727 -+  AVR32_MNEMONIC_SUBFCC,
43.29728 -+  AVR32_MNEMONIC_SUBFCS,
43.29729 -+  AVR32_MNEMONIC_SUBFGE,
43.29730 -+  AVR32_MNEMONIC_SUBFLT,
43.29731 -+  AVR32_MNEMONIC_SUBFMI,
43.29732 -+  AVR32_MNEMONIC_SUBFPL,
43.29733 -+  AVR32_MNEMONIC_SUBFLS,
43.29734 -+  AVR32_MNEMONIC_SUBFGT,
43.29735 -+  AVR32_MNEMONIC_SUBFLE,
43.29736 -+  AVR32_MNEMONIC_SUBFHI,
43.29737 -+  AVR32_MNEMONIC_SUBFVS,
43.29738 -+  AVR32_MNEMONIC_SUBFVC,
43.29739 -+  AVR32_MNEMONIC_SUBFQS,
43.29740 -+  AVR32_MNEMONIC_SUBFAL,
43.29741 -+  AVR32_MNEMONIC_SUBFHS,
43.29742 -+  AVR32_MNEMONIC_SUBFLO,
43.29743 -+  AVR32_MNEMONIC_SUBHH_W,
43.29744 -+  AVR32_MNEMONIC_SWAP_B,
43.29745 -+  AVR32_MNEMONIC_SWAP_BH,
43.29746 -+  AVR32_MNEMONIC_SWAP_H,
43.29747 -+  AVR32_MNEMONIC_SYNC,
43.29748 -+  AVR32_MNEMONIC_TLBR,
43.29749 -+  AVR32_MNEMONIC_TLBS,
43.29750 -+  AVR32_MNEMONIC_TLBW,
43.29751 -+  AVR32_MNEMONIC_TNBZ,
43.29752 -+  AVR32_MNEMONIC_TST,
43.29753 -+  AVR32_MNEMONIC_XCHG,
43.29754 -+  AVR32_MNEMONIC_MEMC,
43.29755 -+  AVR32_MNEMONIC_MEMS,
43.29756 -+  AVR32_MNEMONIC_MEMT,
43.29757 -+  AVR32_MNEMONIC_FADD_S,
43.29758 -+  AVR32_MNEMONIC_FADD_D,
43.29759 -+  AVR32_MNEMONIC_FSUB_S,
43.29760 -+  AVR32_MNEMONIC_FSUB_D,
43.29761 -+  AVR32_MNEMONIC_FMAC_S,
43.29762 -+  AVR32_MNEMONIC_FMAC_D,
43.29763 -+  AVR32_MNEMONIC_FNMAC_S,
43.29764 -+  AVR32_MNEMONIC_FNMAC_D,
43.29765 -+  AVR32_MNEMONIC_FMSC_S,
43.29766 -+  AVR32_MNEMONIC_FMSC_D,
43.29767 -+  AVR32_MNEMONIC_FNMSC_S,
43.29768 -+  AVR32_MNEMONIC_FNMSC_D,
43.29769 -+  AVR32_MNEMONIC_FMUL_S,
43.29770 -+  AVR32_MNEMONIC_FMUL_D,
43.29771 -+  AVR32_MNEMONIC_FNMUL_S,
43.29772 -+  AVR32_MNEMONIC_FNMUL_D,
43.29773 -+  AVR32_MNEMONIC_FNEG_S,
43.29774 -+  AVR32_MNEMONIC_FNEG_D,
43.29775 -+  AVR32_MNEMONIC_FABS_S,
43.29776 -+  AVR32_MNEMONIC_FABS_D,
43.29777 -+  AVR32_MNEMONIC_FCMP_S,
43.29778 -+  AVR32_MNEMONIC_FCMP_D,
43.29779 -+  AVR32_MNEMONIC_FMOV_S,
43.29780 -+  AVR32_MNEMONIC_FMOV_D,
43.29781 -+  AVR32_MNEMONIC_FCASTS_D,
43.29782 -+  AVR32_MNEMONIC_FCASTD_S,
43.29783 -+  /* AVR32_MNEMONIC_FLD_S,
43.29784 -+     AVR32_MNEMONIC_FLD_D,
43.29785 -+     AVR32_MNEMONIC_FST_S,
43.29786 -+     AVR32_MNEMONIC_FST_D, */
43.29787 -+  AVR32_MNEMONIC_LDA_W,
43.29788 -+  AVR32_MNEMONIC_CALL,
43.29789 -+  AVR32_MNEMONIC_PICOSVMAC,
43.29790 -+  AVR32_MNEMONIC_PICOSVMUL,
43.29791 -+  AVR32_MNEMONIC_PICOVMAC,
43.29792 -+  AVR32_MNEMONIC_PICOVMUL,
43.29793 -+  AVR32_MNEMONIC_PICOLD_D,
43.29794 -+  AVR32_MNEMONIC_PICOLD_W,
43.29795 -+  AVR32_MNEMONIC_PICOLDM_D,
43.29796 -+  AVR32_MNEMONIC_PICOLDM_W,
43.29797 -+  AVR32_MNEMONIC_PICOMV_D,
43.29798 -+  AVR32_MNEMONIC_PICOMV_W,
43.29799 -+  AVR32_MNEMONIC_PICOST_D,
43.29800 -+  AVR32_MNEMONIC_PICOST_W,
43.29801 -+  AVR32_MNEMONIC_PICOSTM_D,
43.29802 -+  AVR32_MNEMONIC_PICOSTM_W,
43.29803 -+  AVR32_MNEMONIC_RSUBEQ,
43.29804 -+  AVR32_MNEMONIC_RSUBNE,
43.29805 -+  AVR32_MNEMONIC_RSUBCC,
43.29806 -+  AVR32_MNEMONIC_RSUBCS,
43.29807 -+  AVR32_MNEMONIC_RSUBGE,
43.29808 -+  AVR32_MNEMONIC_RSUBLT,
43.29809 -+  AVR32_MNEMONIC_RSUBMI,
43.29810 -+  AVR32_MNEMONIC_RSUBPL,
43.29811 -+  AVR32_MNEMONIC_RSUBLS,
43.29812 -+  AVR32_MNEMONIC_RSUBGT,
43.29813 -+  AVR32_MNEMONIC_RSUBLE,
43.29814 -+  AVR32_MNEMONIC_RSUBHI,
43.29815 -+  AVR32_MNEMONIC_RSUBVS,
43.29816 -+  AVR32_MNEMONIC_RSUBVC,
43.29817 -+  AVR32_MNEMONIC_RSUBQS,
43.29818 -+  AVR32_MNEMONIC_RSUBAL,
43.29819 -+  AVR32_MNEMONIC_RSUBHS,
43.29820 -+  AVR32_MNEMONIC_RSUBLO,
43.29821 -+  AVR32_MNEMONIC_ADDEQ,
43.29822 -+  AVR32_MNEMONIC_ADDNE,
43.29823 -+  AVR32_MNEMONIC_ADDCC,
43.29824 -+  AVR32_MNEMONIC_ADDCS,
43.29825 -+  AVR32_MNEMONIC_ADDGE,
43.29826 -+  AVR32_MNEMONIC_ADDLT,
43.29827 -+  AVR32_MNEMONIC_ADDMI,
43.29828 -+  AVR32_MNEMONIC_ADDPL,
43.29829 -+  AVR32_MNEMONIC_ADDLS,
43.29830 -+  AVR32_MNEMONIC_ADDGT,
43.29831 -+  AVR32_MNEMONIC_ADDLE,
43.29832 -+  AVR32_MNEMONIC_ADDHI,
43.29833 -+  AVR32_MNEMONIC_ADDVS,
43.29834 -+  AVR32_MNEMONIC_ADDVC,
43.29835 -+  AVR32_MNEMONIC_ADDQS,
43.29836 -+  AVR32_MNEMONIC_ADDAL,
43.29837 -+  AVR32_MNEMONIC_ADDHS,
43.29838 -+  AVR32_MNEMONIC_ADDLO,
43.29839 -+  AVR32_MNEMONIC_ANDEQ,
43.29840 -+  AVR32_MNEMONIC_ANDNE,
43.29841 -+  AVR32_MNEMONIC_ANDCC,
43.29842 -+  AVR32_MNEMONIC_ANDCS,
43.29843 -+  AVR32_MNEMONIC_ANDGE,
43.29844 -+  AVR32_MNEMONIC_ANDLT,
43.29845 -+  AVR32_MNEMONIC_ANDMI,
43.29846 -+  AVR32_MNEMONIC_ANDPL,
43.29847 -+  AVR32_MNEMONIC_ANDLS,
43.29848 -+  AVR32_MNEMONIC_ANDGT,
43.29849 -+  AVR32_MNEMONIC_ANDLE,
43.29850 -+  AVR32_MNEMONIC_ANDHI,
43.29851 -+  AVR32_MNEMONIC_ANDVS,
43.29852 -+  AVR32_MNEMONIC_ANDVC,
43.29853 -+  AVR32_MNEMONIC_ANDQS,
43.29854 -+  AVR32_MNEMONIC_ANDAL,
43.29855 -+  AVR32_MNEMONIC_ANDHS,
43.29856 -+  AVR32_MNEMONIC_ANDLO,
43.29857 -+  AVR32_MNEMONIC_OREQ,
43.29858 -+  AVR32_MNEMONIC_ORNE,
43.29859 -+  AVR32_MNEMONIC_ORCC,
43.29860 -+  AVR32_MNEMONIC_ORCS,
43.29861 -+  AVR32_MNEMONIC_ORGE,
43.29862 -+  AVR32_MNEMONIC_ORLT,
43.29863 -+  AVR32_MNEMONIC_ORMI,
43.29864 -+  AVR32_MNEMONIC_ORPL,
43.29865 -+  AVR32_MNEMONIC_ORLS,
43.29866 -+  AVR32_MNEMONIC_ORGT,
43.29867 -+  AVR32_MNEMONIC_ORLE,
43.29868 -+  AVR32_MNEMONIC_ORHI,
43.29869 -+  AVR32_MNEMONIC_ORVS,
43.29870 -+  AVR32_MNEMONIC_ORVC,
43.29871 -+  AVR32_MNEMONIC_ORQS,
43.29872 -+  AVR32_MNEMONIC_ORAL,
43.29873 -+  AVR32_MNEMONIC_ORHS,
43.29874 -+  AVR32_MNEMONIC_ORLO,
43.29875 -+  AVR32_MNEMONIC_EOREQ,
43.29876 -+  AVR32_MNEMONIC_EORNE,
43.29877 -+  AVR32_MNEMONIC_EORCC,
43.29878 -+  AVR32_MNEMONIC_EORCS,
43.29879 -+  AVR32_MNEMONIC_EORGE,
43.29880 -+  AVR32_MNEMONIC_EORLT,
43.29881 -+  AVR32_MNEMONIC_EORMI,
43.29882 -+  AVR32_MNEMONIC_EORPL,
43.29883 -+  AVR32_MNEMONIC_EORLS,
43.29884 -+  AVR32_MNEMONIC_EORGT,
43.29885 -+  AVR32_MNEMONIC_EORLE,
43.29886 -+  AVR32_MNEMONIC_EORHI,
43.29887 -+  AVR32_MNEMONIC_EORVS,
43.29888 -+  AVR32_MNEMONIC_EORVC,
43.29889 -+  AVR32_MNEMONIC_EORQS,
43.29890 -+  AVR32_MNEMONIC_EORAL,
43.29891 -+  AVR32_MNEMONIC_EORHS,
43.29892 -+  AVR32_MNEMONIC_EORLO,
43.29893 -+  AVR32_MNEMONIC_LD_WEQ,
43.29894 -+  AVR32_MNEMONIC_LD_WNE,
43.29895 -+  AVR32_MNEMONIC_LD_WCC,
43.29896 -+  AVR32_MNEMONIC_LD_WCS,
43.29897 -+  AVR32_MNEMONIC_LD_WGE,
43.29898 -+  AVR32_MNEMONIC_LD_WLT,
43.29899 -+  AVR32_MNEMONIC_LD_WMI,
43.29900 -+  AVR32_MNEMONIC_LD_WPL,
43.29901 -+  AVR32_MNEMONIC_LD_WLS,
43.29902 -+  AVR32_MNEMONIC_LD_WGT,
43.29903 -+  AVR32_MNEMONIC_LD_WLE,
43.29904 -+  AVR32_MNEMONIC_LD_WHI,
43.29905 -+  AVR32_MNEMONIC_LD_WVS,
43.29906 -+  AVR32_MNEMONIC_LD_WVC,
43.29907 -+  AVR32_MNEMONIC_LD_WQS,
43.29908 -+  AVR32_MNEMONIC_LD_WAL,
43.29909 -+  AVR32_MNEMONIC_LD_WHS,
43.29910 -+  AVR32_MNEMONIC_LD_WLO,
43.29911 -+  AVR32_MNEMONIC_LD_SHEQ,
43.29912 -+  AVR32_MNEMONIC_LD_SHNE,
43.29913 -+  AVR32_MNEMONIC_LD_SHCC,
43.29914 -+  AVR32_MNEMONIC_LD_SHCS,
43.29915 -+  AVR32_MNEMONIC_LD_SHGE,
43.29916 -+  AVR32_MNEMONIC_LD_SHLT,
43.29917 -+  AVR32_MNEMONIC_LD_SHMI,
43.29918 -+  AVR32_MNEMONIC_LD_SHPL,
43.29919 -+  AVR32_MNEMONIC_LD_SHLS,
43.29920 -+  AVR32_MNEMONIC_LD_SHGT,
43.29921 -+  AVR32_MNEMONIC_LD_SHLE,
43.29922 -+  AVR32_MNEMONIC_LD_SHHI,
43.29923 -+  AVR32_MNEMONIC_LD_SHVS,
43.29924 -+  AVR32_MNEMONIC_LD_SHVC,
43.29925 -+  AVR32_MNEMONIC_LD_SHQS,
43.29926 -+  AVR32_MNEMONIC_LD_SHAL,
43.29927 -+  AVR32_MNEMONIC_LD_SHHS,
43.29928 -+  AVR32_MNEMONIC_LD_SHLO,
43.29929 -+  AVR32_MNEMONIC_LD_UHEQ,
43.29930 -+  AVR32_MNEMONIC_LD_UHNE,
43.29931 -+  AVR32_MNEMONIC_LD_UHCC,
43.29932 -+  AVR32_MNEMONIC_LD_UHCS,
43.29933 -+  AVR32_MNEMONIC_LD_UHGE,
43.29934 -+  AVR32_MNEMONIC_LD_UHLT,
43.29935 -+  AVR32_MNEMONIC_LD_UHMI,
43.29936 -+  AVR32_MNEMONIC_LD_UHPL,
43.29937 -+  AVR32_MNEMONIC_LD_UHLS,
43.29938 -+  AVR32_MNEMONIC_LD_UHGT,
43.29939 -+  AVR32_MNEMONIC_LD_UHLE,
43.29940 -+  AVR32_MNEMONIC_LD_UHHI,
43.29941 -+  AVR32_MNEMONIC_LD_UHVS,
43.29942 -+  AVR32_MNEMONIC_LD_UHVC,
43.29943 -+  AVR32_MNEMONIC_LD_UHQS,
43.29944 -+  AVR32_MNEMONIC_LD_UHAL,
43.29945 -+  AVR32_MNEMONIC_LD_UHHS,
43.29946 -+  AVR32_MNEMONIC_LD_UHLO,
43.29947 -+  AVR32_MNEMONIC_LD_SBEQ,
43.29948 -+  AVR32_MNEMONIC_LD_SBNE,
43.29949 -+  AVR32_MNEMONIC_LD_SBCC,
43.29950 -+  AVR32_MNEMONIC_LD_SBCS,
43.29951 -+  AVR32_MNEMONIC_LD_SBGE,
43.29952 -+  AVR32_MNEMONIC_LD_SBLT,
43.29953 -+  AVR32_MNEMONIC_LD_SBMI,
43.29954 -+  AVR32_MNEMONIC_LD_SBPL,
43.29955 -+  AVR32_MNEMONIC_LD_SBLS,
43.29956 -+  AVR32_MNEMONIC_LD_SBGT,
43.29957 -+  AVR32_MNEMONIC_LD_SBLE,
43.29958 -+  AVR32_MNEMONIC_LD_SBHI,
43.29959 -+  AVR32_MNEMONIC_LD_SBVS,
43.29960 -+  AVR32_MNEMONIC_LD_SBVC,
43.29961 -+  AVR32_MNEMONIC_LD_SBQS,
43.29962 -+  AVR32_MNEMONIC_LD_SBAL,
43.29963 -+  AVR32_MNEMONIC_LD_SBHS,
43.29964 -+  AVR32_MNEMONIC_LD_SBLO,
43.29965 -+  AVR32_MNEMONIC_LD_UBEQ,
43.29966 -+  AVR32_MNEMONIC_LD_UBNE,
43.29967 -+  AVR32_MNEMONIC_LD_UBCC,
43.29968 -+  AVR32_MNEMONIC_LD_UBCS,
43.29969 -+  AVR32_MNEMONIC_LD_UBGE,
43.29970 -+  AVR32_MNEMONIC_LD_UBLT,
43.29971 -+  AVR32_MNEMONIC_LD_UBMI,
43.29972 -+  AVR32_MNEMONIC_LD_UBPL,
43.29973 -+  AVR32_MNEMONIC_LD_UBLS,
43.29974 -+  AVR32_MNEMONIC_LD_UBGT,
43.29975 -+  AVR32_MNEMONIC_LD_UBLE,
43.29976 -+  AVR32_MNEMONIC_LD_UBHI,
43.29977 -+  AVR32_MNEMONIC_LD_UBVS,
43.29978 -+  AVR32_MNEMONIC_LD_UBVC,
43.29979 -+  AVR32_MNEMONIC_LD_UBQS,
43.29980 -+  AVR32_MNEMONIC_LD_UBAL,
43.29981 -+  AVR32_MNEMONIC_LD_UBHS,
43.29982 -+  AVR32_MNEMONIC_LD_UBLO,
43.29983 -+  AVR32_MNEMONIC_ST_WEQ,
43.29984 -+  AVR32_MNEMONIC_ST_WNE,
43.29985 -+  AVR32_MNEMONIC_ST_WCC,
43.29986 -+  AVR32_MNEMONIC_ST_WCS,
43.29987 -+  AVR32_MNEMONIC_ST_WGE,
43.29988 -+  AVR32_MNEMONIC_ST_WLT,
43.29989 -+  AVR32_MNEMONIC_ST_WMI,
43.29990 -+  AVR32_MNEMONIC_ST_WPL,
43.29991 -+  AVR32_MNEMONIC_ST_WLS,
43.29992 -+  AVR32_MNEMONIC_ST_WGT,
43.29993 -+  AVR32_MNEMONIC_ST_WLE,
43.29994 -+  AVR32_MNEMONIC_ST_WHI,
43.29995 -+  AVR32_MNEMONIC_ST_WVS,
43.29996 -+  AVR32_MNEMONIC_ST_WVC,
43.29997 -+  AVR32_MNEMONIC_ST_WQS,
43.29998 -+  AVR32_MNEMONIC_ST_WAL,
43.29999 -+  AVR32_MNEMONIC_ST_WHS,
43.30000 -+  AVR32_MNEMONIC_ST_WLO,
43.30001 -+  AVR32_MNEMONIC_ST_HEQ,
43.30002 -+  AVR32_MNEMONIC_ST_HNE,
43.30003 -+  AVR32_MNEMONIC_ST_HCC,
43.30004 -+  AVR32_MNEMONIC_ST_HCS,
43.30005 -+  AVR32_MNEMONIC_ST_HGE,
43.30006 -+  AVR32_MNEMONIC_ST_HLT,
43.30007 -+  AVR32_MNEMONIC_ST_HMI,
43.30008 -+  AVR32_MNEMONIC_ST_HPL,
43.30009 -+  AVR32_MNEMONIC_ST_HLS,
43.30010 -+  AVR32_MNEMONIC_ST_HGT,
43.30011 -+  AVR32_MNEMONIC_ST_HLE,
43.30012 -+  AVR32_MNEMONIC_ST_HHI,
43.30013 -+  AVR32_MNEMONIC_ST_HVS,
43.30014 -+  AVR32_MNEMONIC_ST_HVC,
43.30015 -+  AVR32_MNEMONIC_ST_HQS,
43.30016 -+  AVR32_MNEMONIC_ST_HAL,
43.30017 -+  AVR32_MNEMONIC_ST_HHS,
43.30018 -+  AVR32_MNEMONIC_ST_HLO,
43.30019 -+  AVR32_MNEMONIC_ST_BEQ,
43.30020 -+  AVR32_MNEMONIC_ST_BNE,
43.30021 -+  AVR32_MNEMONIC_ST_BCC,
43.30022 -+  AVR32_MNEMONIC_ST_BCS,
43.30023 -+  AVR32_MNEMONIC_ST_BGE,
43.30024 -+  AVR32_MNEMONIC_ST_BLT,
43.30025 -+  AVR32_MNEMONIC_ST_BMI,
43.30026 -+  AVR32_MNEMONIC_ST_BPL,
43.30027 -+  AVR32_MNEMONIC_ST_BLS,
43.30028 -+  AVR32_MNEMONIC_ST_BGT,
43.30029 -+  AVR32_MNEMONIC_ST_BLE,
43.30030 -+  AVR32_MNEMONIC_ST_BHI,
43.30031 -+  AVR32_MNEMONIC_ST_BVS,
43.30032 -+  AVR32_MNEMONIC_ST_BVC,
43.30033 -+  AVR32_MNEMONIC_ST_BQS,
43.30034 -+  AVR32_MNEMONIC_ST_BAL,
43.30035 -+  AVR32_MNEMONIC_ST_BHS,
43.30036 -+  AVR32_MNEMONIC_ST_BLO,
43.30037 -+  AVR32_MNEMONIC_MOVH,
43.30038 -+  AVR32_MNEMONIC__END_
43.30039 -+};
43.30040 -+#define AVR32_NR_MNEMONICS AVR32_MNEMONIC__END_
43.30041 -+
43.30042 -+enum avr32_syntax_parser
43.30043 -+  {
43.30044 -+    AVR32_PARSER_NORMAL,
43.30045 -+    AVR32_PARSER_ALIAS,
43.30046 -+    AVR32_PARSER_LDA,
43.30047 -+    AVR32_PARSER_CALL,
43.30048 -+    AVR32_PARSER__END_
43.30049 -+  };
43.30050 -+#define AVR32_NR_PARSERS AVR32_PARSER__END_
43.30051 ---- a/opcodes/configure.in
43.30052 -+++ b/opcodes/configure.in
43.30053 -@@ -158,6 +158,7 @@ if test x${all_targets} = xfalse ; then
43.30054 - 	bfd_arc_arch)		ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
43.30055 - 	bfd_arm_arch)		ta="$ta arm-dis.lo" ;;
43.30056 - 	bfd_avr_arch)		ta="$ta avr-dis.lo" ;;
43.30057 -+	bfd_avr32_arch)		ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
43.30058 - 	bfd_bfin_arch)		ta="$ta bfin-dis.lo" ;;
43.30059 - 	bfd_cr16_arch)    	ta="$ta cr16-dis.lo cr16-opc.lo" ;;
43.30060 - 	bfd_cris_arch)		ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
43.30061 -@@ -216,7 +217,7 @@ if test x${all_targets} = xfalse ; then
43.30062 - 				ta="$ta sh64-dis.lo sh64-opc.lo"
43.30063 - 				archdefs="$archdefs -DINCLUDE_SHMEDIA"
43.30064 - 				break;;
43.30065 --	    esac;
43.30066 -+	    esac
43.30067 - 	  done
43.30068 - 				ta="$ta sh-dis.lo cgen-bitset.lo" ;;
43.30069 - 	bfd_sparc_arch)		ta="$ta sparc-dis.lo sparc-opc.lo" ;;
43.30070 ---- a/opcodes/disassemble.c
43.30071 -+++ b/opcodes/disassemble.c
43.30072 -@@ -27,6 +27,7 @@
43.30073 - #define ARCH_arc
43.30074 - #define ARCH_arm
43.30075 - #define ARCH_avr
43.30076 -+#define ARCH_avr32
43.30077 - #define ARCH_bfin
43.30078 - #define ARCH_cr16
43.30079 - #define ARCH_cris
43.30080 -@@ -128,6 +129,11 @@ disassembler (abfd)
43.30081 -       disassemble = print_insn_avr;
43.30082 -       break;
43.30083 - #endif
43.30084 -+#ifdef ARCH_avr32
43.30085 -+    case bfd_arch_avr32:
43.30086 -+      disassemble = print_insn_avr32;
43.30087 -+      break;
43.30088 -+#endif
43.30089 - #ifdef ARCH_bfin
43.30090 -     case bfd_arch_bfin:
43.30091 -       disassemble = print_insn_bfin;
43.30092 -@@ -346,9 +352,9 @@ disassembler (abfd)
43.30093 - #ifdef ARCH_score
43.30094 -     case bfd_arch_score:
43.30095 -       if (bfd_big_endian (abfd))
43.30096 --        disassemble = print_insn_big_score;      
43.30097 -+        disassemble = print_insn_big_score;
43.30098 -       else
43.30099 --        disassemble = print_insn_little_score; 
43.30100 -+        disassemble = print_insn_little_score;
43.30101 -      break;
43.30102 - #endif
43.30103 - #ifdef ARCH_sh
43.30104 -@@ -466,6 +472,9 @@ disassembler_usage (stream)
43.30105 - #ifdef ARCH_i386
43.30106 -   print_i386_disassembler_options (stream);
43.30107 - #endif
43.30108 -+#ifdef ARCH_avr32
43.30109 -+  print_avr32_disassembler_options (stream);
43.30110 -+#endif
43.30111 - 
43.30112 -   return;
43.30113 - }
43.30114 ---- a/opcodes/Makefile.am
43.30115 -+++ b/opcodes/Makefile.am
43.30116 -@@ -30,6 +30,7 @@ LIBIBERTY = ../libiberty/libiberty.a
43.30117 - # Header files.
43.30118 - HFILES = \
43.30119 - 	cgen-ops.h cgen-types.h \
43.30120 -+	avr32-asm.h avr32-opc.h \
43.30121 - 	fr30-desc.h fr30-opc.h \
43.30122 - 	frv-desc.h frv-opc.h \
43.30123 - 	h8500-opc.h \
43.30124 -@@ -63,6 +64,9 @@ CFILES = \
43.30125 - 	arc-ext.c \
43.30126 - 	arm-dis.c \
43.30127 - 	avr-dis.c \
43.30128 -+	avr32-asm.c \
43.30129 -+	avr32-dis.c \
43.30130 -+	avr32-opc.c \
43.30131 - 	bfin-dis.c \
43.30132 - 	cgen-asm.c \
43.30133 - 	cgen-bitset.c \
43.30134 -@@ -217,6 +221,9 @@ ALL_MACHINES = \
43.30135 - 	arc-ext.lo \
43.30136 - 	arm-dis.lo \
43.30137 - 	avr-dis.lo \
43.30138 -+	avr32-asm.lo \
43.30139 -+	avr32-dis.lo \
43.30140 -+	avr32-opc.lo \
43.30141 - 	bfin-dis.lo \
43.30142 - 	cgen-asm.lo \
43.30143 - 	cgen-bitset.lo \
43.30144 -@@ -674,6 +681,15 @@ avr-dis.lo: avr-dis.c sysdep.h config.h 
43.30145 -   $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
43.30146 -   opintl.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \
43.30147 -   $(INCDIR)/opcode/avr.h
43.30148 -+avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
43.30149 -+  $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
43.30150 -+  $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
43.30151 -+  $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
43.30152 -+avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
43.30153 -+  $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
43.30154 -+  avr32-opc.h opintl.h
43.30155 -+avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
43.30156 -+  $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
43.30157 - bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
43.30158 -   $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
43.30159 - cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
43.30160 ---- a/bfd/bfd-in2.h
43.30161 -+++ b/bfd/bfd-in2.h
43.30162 -@@ -2017,6 +2017,11 @@ enum bfd_architecture
43.30163 - #define bfd_mach_avr4          4
43.30164 - #define bfd_mach_avr5          5
43.30165 - #define bfd_mach_avr6          6
43.30166 -+  bfd_arch_avr32,     /* Atmel AVR32 */
43.30167 -+#define bfd_mach_avr32_ap      7000
43.30168 -+#define bfd_mach_avr32_uc      3000
43.30169 -+#define bfd_mach_avr32_ucr1    3001
43.30170 -+#define bfd_mach_avr32_ucr2    3002
43.30171 -   bfd_arch_bfin,        /* ADI Blackfin */
43.30172 - #define bfd_mach_bfin          1
43.30173 -   bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */
43.30174 -@@ -3758,6 +3763,88 @@ instructions  */
43.30175 - instructions  */
43.30176 -   BFD_RELOC_AVR_6_ADIW,
43.30177 - 
43.30178 -+/* Difference between two labels: L2 - L1. The value of L1 is encoded
43.30179 -+as sym + addend, while the initial difference after assembly is
43.30180 -+inserted into the object file by the assembler.  */
43.30181 -+  BFD_RELOC_AVR32_DIFF32,
43.30182 -+  BFD_RELOC_AVR32_DIFF16,
43.30183 -+  BFD_RELOC_AVR32_DIFF8,
43.30184 -+
43.30185 -+/* Reference to a symbol through the Global Offset Table. The linker
43.30186 -+will allocate an entry for symbol in the GOT and insert the offset
43.30187 -+of this entry as the relocation value.  */
43.30188 -+  BFD_RELOC_AVR32_GOT32,
43.30189 -+  BFD_RELOC_AVR32_GOT16,
43.30190 -+  BFD_RELOC_AVR32_GOT8,
43.30191 -+
43.30192 -+/* Normal (non-pc-relative) code relocations. Alignment and signedness
43.30193 -+is indicated by the suffixes. S means signed, U means unsigned. W
43.30194 -+means word-aligned, H means halfword-aligned, neither means
43.30195 -+byte-aligned (no alignment.) SUB5 is the same relocation as 16S.  */
43.30196 -+  BFD_RELOC_AVR32_21S,
43.30197 -+  BFD_RELOC_AVR32_16U,
43.30198 -+  BFD_RELOC_AVR32_16S,
43.30199 -+  BFD_RELOC_AVR32_SUB5,
43.30200 -+  BFD_RELOC_AVR32_8S_EXT,
43.30201 -+  BFD_RELOC_AVR32_8S,
43.30202 -+  BFD_RELOC_AVR32_15S,
43.30203 -+
43.30204 -+/* PC-relative relocations are signed if neither 'U' nor 'S' is
43.30205 -+specified. However, we explicitly tack on a 'B' to indicate no
43.30206 -+alignment, to avoid confusion with data relocs. All of these resolve
43.30207 -+to sym + addend - offset, except the one with 'N' (negated) suffix.
43.30208 -+This particular one resolves to offset - sym - addend.  */
43.30209 -+  BFD_RELOC_AVR32_22H_PCREL,
43.30210 -+  BFD_RELOC_AVR32_18W_PCREL,
43.30211 -+  BFD_RELOC_AVR32_16B_PCREL,
43.30212 -+  BFD_RELOC_AVR32_16N_PCREL,
43.30213 -+  BFD_RELOC_AVR32_14UW_PCREL,
43.30214 -+  BFD_RELOC_AVR32_11H_PCREL,
43.30215 -+  BFD_RELOC_AVR32_10UW_PCREL,
43.30216 -+  BFD_RELOC_AVR32_9H_PCREL,
43.30217 -+  BFD_RELOC_AVR32_9UW_PCREL,
43.30218 -+
43.30219 -+/* Subtract the link-time address of the GOT from (symbol + addend)
43.30220 -+and insert the result.  */
43.30221 -+  BFD_RELOC_AVR32_GOTPC,
43.30222 -+
43.30223 -+/* Reference to a symbol through the GOT. The linker will allocate an
43.30224 -+entry for symbol in the GOT and insert the offset of this entry as
43.30225 -+the relocation value. addend must be zero. As usual, 'S' means
43.30226 -+signed, 'W' means word-aligned, etc.  */
43.30227 -+  BFD_RELOC_AVR32_GOTCALL,
43.30228 -+  BFD_RELOC_AVR32_LDA_GOT,
43.30229 -+  BFD_RELOC_AVR32_GOT21S,
43.30230 -+  BFD_RELOC_AVR32_GOT18SW,
43.30231 -+  BFD_RELOC_AVR32_GOT16S,
43.30232 -+
43.30233 -+/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make
43.30234 -+a whole lot of sense.  */
43.30235 -+  BFD_RELOC_AVR32_32_CPENT,
43.30236 -+
43.30237 -+/* Constant pool references. Some of these relocations are signed,
43.30238 -+others are unsigned. It doesn't really matter, since the constant
43.30239 -+pool always comes after the code that references it.  */
43.30240 -+  BFD_RELOC_AVR32_CPCALL,
43.30241 -+  BFD_RELOC_AVR32_16_CP,
43.30242 -+  BFD_RELOC_AVR32_9W_CP,
43.30243 -+
43.30244 -+/* sym must be the absolute symbol. The addend specifies the alignment
43.30245 -+order, e.g. if addend is 2, the linker must add padding so that the
43.30246 -+next address is aligned to a 4-byte boundary.  */
43.30247 -+  BFD_RELOC_AVR32_ALIGN,
43.30248 -+
43.30249 -+/* Code relocations that will never make it to the output file.  */
43.30250 -+  BFD_RELOC_AVR32_14UW,
43.30251 -+  BFD_RELOC_AVR32_10UW,
43.30252 -+  BFD_RELOC_AVR32_10SW,
43.30253 -+  BFD_RELOC_AVR32_STHH_W,
43.30254 -+  BFD_RELOC_AVR32_7UW,
43.30255 -+  BFD_RELOC_AVR32_6S,
43.30256 -+  BFD_RELOC_AVR32_6UW,
43.30257 -+  BFD_RELOC_AVR32_4UH,
43.30258 -+  BFD_RELOC_AVR32_3U,
43.30259 -+
43.30260 - /* Direct 12 bit.  */
43.30261 -   BFD_RELOC_390_12,
43.30262 - 
43.30263 ---- /dev/null
43.30264 -+++ b/bfd/bfd-in3.h
43.30265 -@@ -0,0 +1,5406 @@
43.30266 -+/* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically 
43.30267 -+   generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c", 
43.30268 -+   "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c", 
43.30269 -+   "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c", 
43.30270 -+   "linker.c" and "simple.c".
43.30271 -+   Run "make headers" in your build bfd/ to regenerate.  */
43.30272 -+
43.30273 -+/* Main header file for the bfd library -- portable access to object files.
43.30274 -+
43.30275 -+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
43.30276 -+   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
43.30277 -+   Free Software Foundation, Inc.
43.30278 -+
43.30279 -+   Contributed by Cygnus Support.
43.30280 -+
43.30281 -+   This file is part of BFD, the Binary File Descriptor library.
43.30282 -+
43.30283 -+   This program is free software; you can redistribute it and/or modify
43.30284 -+   it under the terms of the GNU General Public License as published by
43.30285 -+   the Free Software Foundation; either version 3 of the License, or
43.30286 -+   (at your option) any later version.
43.30287 -+
43.30288 -+   This program is distributed in the hope that it will be useful,
43.30289 -+   but WITHOUT ANY WARRANTY; without even the implied warranty of
43.30290 -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
43.30291 -+   GNU General Public License for more details.
43.30292 -+
43.30293 -+   You should have received a copy of the GNU General Public License
43.30294 -+   along with this program; if not, write to the Free Software
43.30295 -+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
43.30296 -+
43.30297 -+#ifndef __BFD_H_SEEN__
43.30298 -+#define __BFD_H_SEEN__
43.30299 -+
43.30300 -+#ifdef __cplusplus
43.30301 -+extern "C" {
43.30302 -+#endif
43.30303 -+
43.30304 -+#include "ansidecl.h"
43.30305 -+#include "symcat.h"
43.30306 -+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
43.30307 -+#ifndef SABER
43.30308 -+/* This hack is to avoid a problem with some strict ANSI C preprocessors.
43.30309 -+   The problem is, "32_" is not a valid preprocessing token, and we don't
43.30310 -+   want extra underscores (e.g., "nlm_32_").  The XCONCAT2 macro will
43.30311 -+   cause the inner CONCAT2 macros to be evaluated first, producing
43.30312 -+   still-valid pp-tokens.  Then the final concatenation can be done.  */
43.30313 -+#undef CONCAT4
43.30314 -+#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
43.30315 -+#endif
43.30316 -+#endif
43.30317 -+
43.30318 -+/* This is a utility macro to handle the situation where the code
43.30319 -+   wants to place a constant string into the code, followed by a
43.30320 -+   comma and then the length of the string.  Doing this by hand
43.30321 -+   is error prone, so using this macro is safer.  The macro will
43.30322 -+   also safely handle the case where a NULL is passed as the arg.  */
43.30323 -+#define STRING_COMMA_LEN(STR) (STR), ((STR) ? sizeof (STR) - 1 : 0)
43.30324 -+/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
43.30325 -+   to create the arguments to another macro, since the preprocessor
43.30326 -+   will mis-count the number of arguments to the outer macro (by not
43.30327 -+   evaluating STRING_COMMA_LEN and so missing the comma).  This is a
43.30328 -+   problem for example when trying to use STRING_COMMA_LEN to build
43.30329 -+   the arguments to the strncmp() macro.  Hence this alternative
43.30330 -+   definition of strncmp is provided here.
43.30331 -+   
43.30332 -+   Note - these macros do NOT work if STR2 is not a constant string.  */
43.30333 -+#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
43.30334 -+  /* strcpy() can have a similar problem, but since we know we are
43.30335 -+     copying a constant string, we can use memcpy which will be faster
43.30336 -+     since there is no need to check for a NUL byte inside STR.  We
43.30337 -+     can also save time if we do not need to copy the terminating NUL.  */
43.30338 -+#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
43.30339 -+#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
43.30340 -+
43.30341 -+
43.30342 -+/* The word size used by BFD on the host.  This may be 64 with a 32
43.30343 -+   bit target if the host is 64 bit, or if other 64 bit targets have
43.30344 -+   been selected with --enable-targets, or if --enable-64-bit-bfd.  */
43.30345 -+#define BFD_ARCH_SIZE 32
43.30346 -+
43.30347 -+/* The word size of the default bfd target.  */
43.30348 -+#define BFD_DEFAULT_TARGET_SIZE 32
43.30349 -+
43.30350 -+#define BFD_HOST_64BIT_LONG 0
43.30351 -+#define BFD_HOST_64BIT_LONG_LONG 0
43.30352 -+#define BFD_HOST_LONG_LONG 1
43.30353 -+#if 1
43.30354 -+#define BFD_HOST_64_BIT long long
43.30355 -+#define BFD_HOST_U_64_BIT unsigned long long
43.30356 -+typedef BFD_HOST_64_BIT bfd_int64_t;
43.30357 -+typedef BFD_HOST_U_64_BIT bfd_uint64_t;
43.30358 -+#endif
43.30359 -+
43.30360 -+#if BFD_ARCH_SIZE >= 64
43.30361 -+#define BFD64
43.30362 -+#endif
43.30363 -+
43.30364 -+#ifndef INLINE
43.30365 -+#if __GNUC__ >= 2
43.30366 -+#define INLINE __inline__
43.30367 -+#else
43.30368 -+#define INLINE
43.30369 -+#endif
43.30370 -+#endif
43.30371 -+
43.30372 -+/* Declaring a type wide enough to hold a host long and a host pointer.  */
43.30373 -+#define BFD_HOSTPTR_T	unsigned long
43.30374 -+typedef BFD_HOSTPTR_T bfd_hostptr_t;
43.30375 -+
43.30376 -+/* Forward declaration.  */
43.30377 -+typedef struct bfd bfd;
43.30378 -+
43.30379 -+/* Boolean type used in bfd.  Too many systems define their own
43.30380 -+   versions of "boolean" for us to safely typedef a "boolean" of
43.30381 -+   our own.  Using an enum for "bfd_boolean" has its own set of
43.30382 -+   problems, with strange looking casts required to avoid warnings
43.30383 -+   on some older compilers.  Thus we just use an int.
43.30384 -+
43.30385 -+   General rule: Functions which are bfd_boolean return TRUE on
43.30386 -+   success and FALSE on failure (unless they're a predicate).  */
43.30387 -+
43.30388 -+typedef int bfd_boolean;
43.30389 -+#undef FALSE
43.30390 -+#undef TRUE
43.30391 -+#define FALSE 0
43.30392 -+#define TRUE 1
43.30393 -+
43.30394 -+#ifdef BFD64
43.30395 -+
43.30396 -+#ifndef BFD_HOST_64_BIT
43.30397 -+ #error No 64 bit integer type available
43.30398 -+#endif /* ! defined (BFD_HOST_64_BIT) */
43.30399 -+
43.30400 -+typedef BFD_HOST_U_64_BIT bfd_vma;
43.30401 -+typedef BFD_HOST_64_BIT bfd_signed_vma;
43.30402 -+typedef BFD_HOST_U_64_BIT bfd_size_type;
43.30403 -+typedef BFD_HOST_U_64_BIT symvalue;
43.30404 -+
43.30405 -+#ifndef fprintf_vma
43.30406 -+#if BFD_HOST_64BIT_LONG
43.30407 -+#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
43.30408 -+#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
43.30409 -+#elif BFD_HOST_64BIT_LONG_LONG
43.30410 -+#define sprintf_vma(s,x) sprintf (s, "%016llx", x)
43.30411 -+#define fprintf_vma(f,x) fprintf (f, "%016llx", x)
43.30412 -+#else
43.30413 -+#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
43.30414 -+#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
43.30415 -+#define fprintf_vma(s,x) \
43.30416 -+  fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
43.30417 -+#define sprintf_vma(s,x) \
43.30418 -+  sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
43.30419 -+#endif
43.30420 -+#endif
43.30421 -+
43.30422 -+#else /* not BFD64  */
43.30423 -+
43.30424 -+/* Represent a target address.  Also used as a generic unsigned type
43.30425 -+   which is guaranteed to be big enough to hold any arithmetic types
43.30426 -+   we need to deal with.  */
43.30427 -+typedef unsigned long bfd_vma;
43.30428 -+
43.30429 -+/* A generic signed type which is guaranteed to be big enough to hold any
43.30430 -+   arithmetic types we need to deal with.  Can be assumed to be compatible
43.30431 -+   with bfd_vma in the same way that signed and unsigned ints are compatible
43.30432 -+   (as parameters, in assignment, etc).  */
43.30433 -+typedef long bfd_signed_vma;
43.30434 -+
43.30435 -+typedef unsigned long symvalue;
43.30436 -+typedef unsigned long bfd_size_type;
43.30437 -+
43.30438 -+/* Print a bfd_vma x on stream s.  */
43.30439 -+#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
43.30440 -+#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
43.30441 -+
43.30442 -+#endif /* not BFD64  */
43.30443 -+
43.30444 -+#define HALF_BFD_SIZE_TYPE \
43.30445 -+  (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
43.30446 -+
43.30447 -+#ifndef BFD_HOST_64_BIT
43.30448 -+/* Fall back on a 32 bit type.  The idea is to make these types always
43.30449 -+   available for function return types, but in the case that
43.30450 -+   BFD_HOST_64_BIT is undefined such a function should abort or
43.30451 -+   otherwise signal an error.  */
43.30452 -+typedef bfd_signed_vma bfd_int64_t;
43.30453 -+typedef bfd_vma bfd_uint64_t;
43.30454 -+#endif
43.30455 -+
43.30456 -+/* An offset into a file.  BFD always uses the largest possible offset
43.30457 -+   based on the build time availability of fseek, fseeko, or fseeko64.  */
43.30458 -+typedef BFD_HOST_64_BIT file_ptr;
43.30459 -+typedef unsigned BFD_HOST_64_BIT ufile_ptr;
43.30460 -+
43.30461 -+extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
43.30462 -+extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
43.30463 -+
43.30464 -+#define printf_vma(x) fprintf_vma(stdout,x)
43.30465 -+#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
43.30466 -+
43.30467 -+typedef unsigned int flagword;	/* 32 bits of flags */
43.30468 -+typedef unsigned char bfd_byte;
43.30469 -+
43.30470 -+/* File formats.  */
43.30471 -+
43.30472 -+typedef enum bfd_format
43.30473 -+{
43.30474 -+  bfd_unknown = 0,	/* File format is unknown.  */
43.30475 -+  bfd_object,		/* Linker/assembler/compiler output.  */
43.30476 -+  bfd_archive,		/* Object archive file.  */
43.30477 -+  bfd_core,		/* Core dump.  */
43.30478 -+  bfd_type_end		/* Marks the end; don't use it!  */
43.30479 -+}
43.30480 -+bfd_format;
43.30481 -+
43.30482 -+/* Values that may appear in the flags field of a BFD.  These also
43.30483 -+   appear in the object_flags field of the bfd_target structure, where
43.30484 -+   they indicate the set of flags used by that backend (not all flags
43.30485 -+   are meaningful for all object file formats) (FIXME: at the moment,
43.30486 -+   the object_flags values have mostly just been copied from backend
43.30487 -+   to another, and are not necessarily correct).  */
43.30488 -+
43.30489 -+/* No flags.  */
43.30490 -+#define BFD_NO_FLAGS   	0x00
43.30491 -+
43.30492 -+/* BFD contains relocation entries.  */
43.30493 -+#define HAS_RELOC   	0x01
43.30494 -+
43.30495 -+/* BFD is directly executable.  */
43.30496 -+#define EXEC_P      	0x02
43.30497 -+
43.30498 -+/* BFD has line number information (basically used for F_LNNO in a
43.30499 -+   COFF header).  */
43.30500 -+#define HAS_LINENO  	0x04
43.30501 -+
43.30502 -+/* BFD has debugging information.  */
43.30503 -+#define HAS_DEBUG   	0x08
43.30504 -+
43.30505 -+/* BFD has symbols.  */
43.30506 -+#define HAS_SYMS    	0x10
43.30507 -+
43.30508 -+/* BFD has local symbols (basically used for F_LSYMS in a COFF
43.30509 -+   header).  */
43.30510 -+#define HAS_LOCALS  	0x20
43.30511 -+
43.30512 -+/* BFD is a dynamic object.  */
43.30513 -+#define DYNAMIC     	0x40
43.30514 -+
43.30515 -+/* Text section is write protected (if D_PAGED is not set, this is
43.30516 -+   like an a.out NMAGIC file) (the linker sets this by default, but
43.30517 -+   clears it for -r or -N).  */
43.30518 -+#define WP_TEXT     	0x80
43.30519 -+
43.30520 -+/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
43.30521 -+   linker sets this by default, but clears it for -r or -n or -N).  */
43.30522 -+#define D_PAGED     	0x100
43.30523 -+
43.30524 -+/* BFD is relaxable (this means that bfd_relax_section may be able to
43.30525 -+   do something) (sometimes bfd_relax_section can do something even if
43.30526 -+   this is not set).  */
43.30527 -+#define BFD_IS_RELAXABLE 0x200
43.30528 -+
43.30529 -+/* This may be set before writing out a BFD to request using a
43.30530 -+   traditional format.  For example, this is used to request that when
43.30531 -+   writing out an a.out object the symbols not be hashed to eliminate
43.30532 -+   duplicates.  */
43.30533 -+#define BFD_TRADITIONAL_FORMAT 0x400
43.30534 -+
43.30535 -+/* This flag indicates that the BFD contents are actually cached in
43.30536 -+   memory.  If this is set, iostream points to a bfd_in_memory struct.  */
43.30537 -+#define BFD_IN_MEMORY 0x800
43.30538 -+
43.30539 -+/* The sections in this BFD specify a memory page.  */
43.30540 -+#define HAS_LOAD_PAGE 0x1000
43.30541 -+
43.30542 -+/* This BFD has been created by the linker and doesn't correspond
43.30543 -+   to any input file.  */
43.30544 -+#define BFD_LINKER_CREATED 0x2000
43.30545 -+
43.30546 -+/* Symbols and relocation.  */
43.30547 -+
43.30548 -+/* A count of carsyms (canonical archive symbols).  */
43.30549 -+typedef unsigned long symindex;
43.30550 -+
43.30551 -+/* How to perform a relocation.  */
43.30552 -+typedef const struct reloc_howto_struct reloc_howto_type;
43.30553 -+
43.30554 -+#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
43.30555 -+
43.30556 -+/* General purpose part of a symbol X;
43.30557 -+   target specific parts are in libcoff.h, libaout.h, etc.  */
43.30558 -+
43.30559 -+#define bfd_get_section(x) ((x)->section)
43.30560 -+#define bfd_get_output_section(x) ((x)->section->output_section)
43.30561 -+#define bfd_set_section(x,y) ((x)->section) = (y)
43.30562 -+#define bfd_asymbol_base(x) ((x)->section->vma)
43.30563 -+#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
43.30564 -+#define bfd_asymbol_name(x) ((x)->name)
43.30565 -+/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
43.30566 -+#define bfd_asymbol_bfd(x) ((x)->the_bfd)
43.30567 -+#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
43.30568 -+
43.30569 -+/* A canonical archive symbol.  */
43.30570 -+/* This is a type pun with struct ranlib on purpose!  */
43.30571 -+typedef struct carsym
43.30572 -+{
43.30573 -+  char *name;
43.30574 -+  file_ptr file_offset;	/* Look here to find the file.  */
43.30575 -+}
43.30576 -+carsym;			/* To make these you call a carsymogen.  */
43.30577 -+
43.30578 -+/* Used in generating armaps (archive tables of contents).
43.30579 -+   Perhaps just a forward definition would do?  */
43.30580 -+struct orl 			/* Output ranlib.  */
43.30581 -+{
43.30582 -+  char **name;		/* Symbol name.  */
43.30583 -+  union
43.30584 -+  {
43.30585 -+    file_ptr pos;
43.30586 -+    bfd *abfd;
43.30587 -+  } u;			/* bfd* or file position.  */
43.30588 -+  int namidx;		/* Index into string table.  */
43.30589 -+};
43.30590 -+
43.30591 -+/* Linenumber stuff.  */
43.30592 -+typedef struct lineno_cache_entry
43.30593 -+{
43.30594 -+  unsigned int line_number;	/* Linenumber from start of function.  */
43.30595 -+  union
43.30596 -+  {
43.30597 -+    struct bfd_symbol *sym;	/* Function name.  */
43.30598 -+    bfd_vma offset;	    		/* Offset into section.  */
43.30599 -+  } u;
43.30600 -+}
43.30601 -+alent;
43.30602 -+
43.30603 -+/* Object and core file sections.  */
43.30604 -+
43.30605 -+#define	align_power(addr, align)	\
43.30606 -+  (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
43.30607 -+
43.30608 -+typedef struct bfd_section *sec_ptr;
43.30609 -+
43.30610 -+#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
43.30611 -+#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
43.30612 -+#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
43.30613 -+#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
43.30614 -+#define bfd_section_name(bfd, ptr) ((ptr)->name)
43.30615 -+#define bfd_section_size(bfd, ptr) ((ptr)->size)
43.30616 -+#define bfd_get_section_size(ptr) ((ptr)->size)
43.30617 -+#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
43.30618 -+#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
43.30619 -+#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
43.30620 -+#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
43.30621 -+#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
43.30622 -+
43.30623 -+#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
43.30624 -+
43.30625 -+#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
43.30626 -+#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
43.30627 -+#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
43.30628 -+/* Find the address one past the end of SEC.  */
43.30629 -+#define bfd_get_section_limit(bfd, sec) \
43.30630 -+  (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
43.30631 -+   / bfd_octets_per_byte (bfd))
43.30632 -+
43.30633 -+/* Return TRUE if section has been discarded.  */
43.30634 -+#define elf_discarded_section(sec)				\
43.30635 -+  (!bfd_is_abs_section (sec)					\
43.30636 -+   && bfd_is_abs_section ((sec)->output_section)		\
43.30637 -+   && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE		\
43.30638 -+   && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
43.30639 -+
43.30640 -+/* Forward define.  */
43.30641 -+struct stat;
43.30642 -+
43.30643 -+typedef enum bfd_print_symbol
43.30644 -+{
43.30645 -+  bfd_print_symbol_name,
43.30646 -+  bfd_print_symbol_more,
43.30647 -+  bfd_print_symbol_all
43.30648 -+} bfd_print_symbol_type;
43.30649 -+
43.30650 -+/* Information about a symbol that nm needs.  */
43.30651 -+
43.30652 -+typedef struct _symbol_info
43.30653 -+{
43.30654 -+  symvalue value;
43.30655 -+  char type;
43.30656 -+  const char *name;            /* Symbol name.  */
43.30657 -+  unsigned char stab_type;     /* Stab type.  */
43.30658 -+  char stab_other;             /* Stab other.  */
43.30659 -+  short stab_desc;             /* Stab desc.  */
43.30660 -+  const char *stab_name;       /* String for stab type.  */
43.30661 -+} symbol_info;
43.30662 -+
43.30663 -+/* Get the name of a stabs type code.  */
43.30664 -+
43.30665 -+extern const char *bfd_get_stab_name (int);
43.30666 -+
43.30667 -+/* Hash table routines.  There is no way to free up a hash table.  */
43.30668 -+
43.30669 -+/* An element in the hash table.  Most uses will actually use a larger
43.30670 -+   structure, and an instance of this will be the first field.  */
43.30671 -+
43.30672 -+struct bfd_hash_entry
43.30673 -+{
43.30674 -+  /* Next entry for this hash code.  */
43.30675 -+  struct bfd_hash_entry *next;
43.30676 -+  /* String being hashed.  */
43.30677 -+  const char *string;
43.30678 -+  /* Hash code.  This is the full hash code, not the index into the
43.30679 -+     table.  */
43.30680 -+  unsigned long hash;
43.30681 -+};
43.30682 -+
43.30683 -+/* A hash table.  */
43.30684 -+
43.30685 -+struct bfd_hash_table
43.30686 -+{
43.30687 -+  /* The hash array.  */
43.30688 -+  struct bfd_hash_entry **table;
43.30689 -+  /* A function used to create new elements in the hash table.  The
43.30690 -+     first entry is itself a pointer to an element.  When this
43.30691 -+     function is first invoked, this pointer will be NULL.  However,
43.30692 -+     having the pointer permits a hierarchy of method functions to be
43.30693 -+     built each of which calls the function in the superclass.  Thus
43.30694 -+     each function should be written to allocate a new block of memory
43.30695 -+     only if the argument is NULL.  */
43.30696 -+  struct bfd_hash_entry *(*newfunc)
43.30697 -+    (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
43.30698 -+   /* An objalloc for this hash table.  This is a struct objalloc *,
43.30699 -+     but we use void * to avoid requiring the inclusion of objalloc.h.  */
43.30700 -+  void *memory;
43.30701 -+  /* The number of slots in the hash table.  */
43.30702 -+  unsigned int size;
43.30703 -+  /* The number of entries in the hash table.  */
43.30704 -+  unsigned int count;
43.30705 -+  /* The size of elements.  */
43.30706 -+  unsigned int entsize;
43.30707 -+  /* If non-zero, don't grow the hash table.  */
43.30708 -+  unsigned int frozen:1;
43.30709 -+};
43.30710 -+
43.30711 -+/* Initialize a hash table.  */
43.30712 -+extern bfd_boolean bfd_hash_table_init
43.30713 -+  (struct bfd_hash_table *,
43.30714 -+   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
43.30715 -+			       struct bfd_hash_table *,
43.30716 -+			       const char *),
43.30717 -+   unsigned int);
43.30718 -+
43.30719 -+/* Initialize a hash table specifying a size.  */
43.30720 -+extern bfd_boolean bfd_hash_table_init_n
43.30721 -+  (struct bfd_hash_table *,
43.30722 -+   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
43.30723 -+			       struct bfd_hash_table *,
43.30724 -+			       const char *),
43.30725 -+   unsigned int, unsigned int);
43.30726 -+
43.30727 -+/* Free up a hash table.  */
43.30728 -+extern void bfd_hash_table_free
43.30729 -+  (struct bfd_hash_table *);
43.30730 -+
43.30731 -+/* Look up a string in a hash table.  If CREATE is TRUE, a new entry
43.30732 -+   will be created for this string if one does not already exist.  The
43.30733 -+   COPY argument must be TRUE if this routine should copy the string
43.30734 -+   into newly allocated memory when adding an entry.  */
43.30735 -+extern struct bfd_hash_entry *bfd_hash_lookup
43.30736 -+  (struct bfd_hash_table *, const char *, bfd_boolean create,
43.30737 -+   bfd_boolean copy);
43.30738 -+
43.30739 -+/* Replace an entry in a hash table.  */
43.30740 -+extern void bfd_hash_replace
43.30741 -+  (struct bfd_hash_table *, struct bfd_hash_entry *old,
43.30742 -+   struct bfd_hash_entry *nw);
43.30743 -+
43.30744 -+/* Base method for creating a hash table entry.  */
43.30745 -+extern struct bfd_hash_entry *bfd_hash_newfunc
43.30746 -+  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
43.30747 -+
43.30748 -+/* Grab some space for a hash table entry.  */
43.30749 -+extern void *bfd_hash_allocate
43.30750 -+  (struct bfd_hash_table *, unsigned int);
43.30751 -+
43.30752 -+/* Traverse a hash table in a random order, calling a function on each
43.30753 -+   element.  If the function returns FALSE, the traversal stops.  The
43.30754 -+   INFO argument is passed to the function.  */
43.30755 -+extern void bfd_hash_traverse
43.30756 -+  (struct bfd_hash_table *,
43.30757 -+   bfd_boolean (*) (struct bfd_hash_entry *, void *),
43.30758 -+   void *info);
43.30759 -+
43.30760 -+/* Allows the default size of a hash table to be configured. New hash
43.30761 -+   tables allocated using bfd_hash_table_init will be created with
43.30762 -+   this size.  */
43.30763 -+extern void bfd_hash_set_default_size (bfd_size_type);
43.30764 -+
43.30765 -+/* This structure is used to keep track of stabs in sections
43.30766 -+   information while linking.  */
43.30767 -+
43.30768 -+struct stab_info
43.30769 -+{
43.30770 -+  /* A hash table used to hold stabs strings.  */
43.30771 -+  struct bfd_strtab_hash *strings;
43.30772 -+  /* The header file hash table.  */
43.30773 -+  struct bfd_hash_table includes;
43.30774 -+  /* The first .stabstr section.  */
43.30775 -+  struct bfd_section *stabstr;
43.30776 -+};
43.30777 -+
43.30778 -+#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
43.30779 -+
43.30780 -+/* User program access to BFD facilities.  */
43.30781 -+
43.30782 -+/* Direct I/O routines, for programs which know more about the object
43.30783 -+   file than BFD does.  Use higher level routines if possible.  */
43.30784 -+
43.30785 -+extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
43.30786 -+extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
43.30787 -+extern int bfd_seek (bfd *, file_ptr, int);
43.30788 -+extern file_ptr bfd_tell (bfd *);
43.30789 -+extern int bfd_flush (bfd *);
43.30790 -+extern int bfd_stat (bfd *, struct stat *);
43.30791 -+
43.30792 -+/* Deprecated old routines.  */
43.30793 -+#if __GNUC__
43.30794 -+#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
43.30795 -+  (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__),	\
43.30796 -+   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
43.30797 -+#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
43.30798 -+  (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__),	\
43.30799 -+   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
43.30800 -+#else
43.30801 -+#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
43.30802 -+  (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
43.30803 -+   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
43.30804 -+#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
43.30805 -+  (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
43.30806 -+   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
43.30807 -+#endif
43.30808 -+extern void warn_deprecated (const char *, const char *, int, const char *);
43.30809 -+
43.30810 -+/* Cast from const char * to char * so that caller can assign to
43.30811 -+   a char * without a warning.  */
43.30812 -+#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
43.30813 -+#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
43.30814 -+#define bfd_get_format(abfd) ((abfd)->format)
43.30815 -+#define bfd_get_target(abfd) ((abfd)->xvec->name)
43.30816 -+#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
43.30817 -+#define bfd_family_coff(abfd) \
43.30818 -+  (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
43.30819 -+   bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
43.30820 -+#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
43.30821 -+#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
43.30822 -+#define bfd_header_big_endian(abfd) \
43.30823 -+  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
43.30824 -+#define bfd_header_little_endian(abfd) \
43.30825 -+  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
43.30826 -+#define bfd_get_file_flags(abfd) ((abfd)->flags)
43.30827 -+#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
43.30828 -+#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
43.30829 -+#define bfd_my_archive(abfd) ((abfd)->my_archive)
43.30830 -+#define bfd_has_map(abfd) ((abfd)->has_armap)
43.30831 -+
43.30832 -+#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
43.30833 -+#define bfd_usrdata(abfd) ((abfd)->usrdata)
43.30834 -+
43.30835 -+#define bfd_get_start_address(abfd) ((abfd)->start_address)
43.30836 -+#define bfd_get_symcount(abfd) ((abfd)->symcount)
43.30837 -+#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
43.30838 -+#define bfd_count_sections(abfd) ((abfd)->section_count)
43.30839 -+
43.30840 -+#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
43.30841 -+
43.30842 -+#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
43.30843 -+
43.30844 -+#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
43.30845 -+
43.30846 -+extern bfd_boolean bfd_cache_close
43.30847 -+  (bfd *abfd);
43.30848 -+/* NB: This declaration should match the autogenerated one in libbfd.h.  */
43.30849 -+
43.30850 -+extern bfd_boolean bfd_cache_close_all (void);
43.30851 -+
43.30852 -+extern bfd_boolean bfd_record_phdr
43.30853 -+  (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
43.30854 -+   bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
43.30855 -+
43.30856 -+/* Byte swapping routines.  */
43.30857 -+
43.30858 -+bfd_uint64_t bfd_getb64 (const void *);
43.30859 -+bfd_uint64_t bfd_getl64 (const void *);
43.30860 -+bfd_int64_t bfd_getb_signed_64 (const void *);
43.30861 -+bfd_int64_t bfd_getl_signed_64 (const void *);
43.30862 -+bfd_vma bfd_getb32 (const void *);
43.30863 -+bfd_vma bfd_getl32 (const void *);
43.30864 -+bfd_signed_vma bfd_getb_signed_32 (const void *);
43.30865 -+bfd_signed_vma bfd_getl_signed_32 (const void *);
43.30866 -+bfd_vma bfd_getb16 (const void *);
43.30867 -+bfd_vma bfd_getl16 (const void *);
43.30868 -+bfd_signed_vma bfd_getb_signed_16 (const void *);
43.30869 -+bfd_signed_vma bfd_getl_signed_16 (const void *);
43.30870 -+void bfd_putb64 (bfd_uint64_t, void *);
43.30871 -+void bfd_putl64 (bfd_uint64_t, void *);
43.30872 -+void bfd_putb32 (bfd_vma, void *);
43.30873 -+void bfd_putl32 (bfd_vma, void *);
43.30874 -+void bfd_putb16 (bfd_vma, void *);
43.30875 -+void bfd_putl16 (bfd_vma, void *);
43.30876 -+
43.30877 -+/* Byte swapping routines which take size and endiannes as arguments.  */
43.30878 -+
43.30879 -+bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
43.30880 -+void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
43.30881 -+
43.30882 -+extern bfd_boolean bfd_section_already_linked_table_init (void);
43.30883 -+extern void bfd_section_already_linked_table_free (void);
43.30884 -+
43.30885 -+/* Externally visible ECOFF routines.  */
43.30886 -+
43.30887 -+#if defined(__STDC__) || defined(ALMOST_STDC)
43.30888 -+struct ecoff_debug_info;
43.30889 -+struct ecoff_debug_swap;
43.30890 -+struct ecoff_extr;
43.30891 -+struct bfd_symbol;
43.30892 -+struct bfd_link_info;
43.30893 -+struct bfd_link_hash_entry;
43.30894 -+struct bfd_elf_version_tree;
43.30895 -+#endif
43.30896 -+extern bfd_vma bfd_ecoff_get_gp_value
43.30897 -+  (bfd * abfd);
43.30898 -+extern bfd_boolean bfd_ecoff_set_gp_value
43.30899 -+  (bfd *abfd, bfd_vma gp_value);
43.30900 -+extern bfd_boolean bfd_ecoff_set_regmasks
43.30901 -+  (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
43.30902 -+   unsigned long *cprmask);
43.30903 -+extern void *bfd_ecoff_debug_init
43.30904 -+  (bfd *output_bfd, struct ecoff_debug_info *output_debug,
43.30905 -+   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
43.30906 -+extern void bfd_ecoff_debug_free
43.30907 -+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
43.30908 -+   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
43.30909 -+extern bfd_boolean bfd_ecoff_debug_accumulate
43.30910 -+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
43.30911 -+   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
43.30912 -+   struct ecoff_debug_info *input_debug,
43.30913 -+   const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
43.30914 -+extern bfd_boolean bfd_ecoff_debug_accumulate_other
43.30915 -+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
43.30916 -+   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
43.30917 -+   struct bfd_link_info *);
43.30918 -+extern bfd_boolean bfd_ecoff_debug_externals
43.30919 -+  (bfd *abfd, struct ecoff_debug_info *debug,
43.30920 -+   const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
43.30921 -+   bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
43.30922 -+   void (*set_index) (struct bfd_symbol *, bfd_size_type));
43.30923 -+extern bfd_boolean bfd_ecoff_debug_one_external
43.30924 -+  (bfd *abfd, struct ecoff_debug_info *debug,
43.30925 -+   const struct ecoff_debug_swap *swap, const char *name,
43.30926 -+   struct ecoff_extr *esym);
43.30927 -+extern bfd_size_type bfd_ecoff_debug_size
43.30928 -+  (bfd *abfd, struct ecoff_debug_info *debug,
43.30929 -+   const struct ecoff_debug_swap *swap);
43.30930 -+extern bfd_boolean bfd_ecoff_write_debug
43.30931 -+  (bfd *abfd, struct ecoff_debug_info *debug,
43.30932 -+   const struct ecoff_debug_swap *swap, file_ptr where);
43.30933 -+extern bfd_boolean bfd_ecoff_write_accumulated_debug
43.30934 -+  (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
43.30935 -+   const struct ecoff_debug_swap *swap,
43.30936 -+   struct bfd_link_info *info, file_ptr where);
43.30937 -+
43.30938 -+/* Externally visible ELF routines.  */
43.30939 -+
43.30940 -+struct bfd_link_needed_list
43.30941 -+{
43.30942 -+  struct bfd_link_needed_list *next;
43.30943 -+  bfd *by;
43.30944 -+  const char *name;
43.30945 -+};
43.30946 -+
43.30947 -+enum dynamic_lib_link_class {
43.30948 -+  DYN_NORMAL = 0,
43.30949 -+  DYN_AS_NEEDED = 1,
43.30950 -+  DYN_DT_NEEDED = 2,
43.30951 -+  DYN_NO_ADD_NEEDED = 4,
43.30952 -+  DYN_NO_NEEDED = 8
43.30953 -+};
43.30954 -+
43.30955 -+enum notice_asneeded_action {
43.30956 -+  notice_as_needed,
43.30957 -+  notice_not_needed,
43.30958 -+  notice_needed
43.30959 -+};
43.30960 -+
43.30961 -+extern bfd_boolean bfd_elf_record_link_assignment
43.30962 -+  (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
43.30963 -+   bfd_boolean);
43.30964 -+extern struct bfd_link_needed_list *bfd_elf_get_needed_list
43.30965 -+  (bfd *, struct bfd_link_info *);
43.30966 -+extern bfd_boolean bfd_elf_get_bfd_needed_list
43.30967 -+  (bfd *, struct bfd_link_needed_list **);
43.30968 -+extern bfd_boolean bfd_elf_size_dynamic_sections
43.30969 -+  (bfd *, const char *, const char *, const char *, const char * const *,
43.30970 -+   struct bfd_link_info *, struct bfd_section **,
43.30971 -+   struct bfd_elf_version_tree *);
43.30972 -+extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
43.30973 -+  (bfd *, struct bfd_link_info *);
43.30974 -+extern void bfd_elf_set_dt_needed_name
43.30975 -+  (bfd *, const char *);
43.30976 -+extern const char *bfd_elf_get_dt_soname
43.30977 -+  (bfd *);
43.30978 -+extern void bfd_elf_set_dyn_lib_class
43.30979 -+  (bfd *, enum dynamic_lib_link_class);
43.30980 -+extern int bfd_elf_get_dyn_lib_class
43.30981 -+  (bfd *);
43.30982 -+extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
43.30983 -+  (bfd *, struct bfd_link_info *);
43.30984 -+extern bfd_boolean bfd_elf_discard_info
43.30985 -+  (bfd *, struct bfd_link_info *);
43.30986 -+extern unsigned int _bfd_elf_default_action_discarded
43.30987 -+  (struct bfd_section *);
43.30988 -+
43.30989 -+/* Return an upper bound on the number of bytes required to store a
43.30990 -+   copy of ABFD's program header table entries.  Return -1 if an error
43.30991 -+   occurs; bfd_get_error will return an appropriate code.  */
43.30992 -+extern long bfd_get_elf_phdr_upper_bound
43.30993 -+  (bfd *abfd);
43.30994 -+
43.30995 -+/* Copy ABFD's program header table entries to *PHDRS.  The entries
43.30996 -+   will be stored as an array of Elf_Internal_Phdr structures, as
43.30997 -+   defined in include/elf/internal.h.  To find out how large the
43.30998 -+   buffer needs to be, call bfd_get_elf_phdr_upper_bound.
43.30999 -+
43.31000 -+   Return the number of program header table entries read, or -1 if an
43.31001 -+   error occurs; bfd_get_error will return an appropriate code.  */
43.31002 -+extern int bfd_get_elf_phdrs
43.31003 -+  (bfd *abfd, void *phdrs);
43.31004 -+
43.31005 -+/* Create a new BFD as if by bfd_openr.  Rather than opening a file,
43.31006 -+   reconstruct an ELF file by reading the segments out of remote memory
43.31007 -+   based on the ELF file header at EHDR_VMA and the ELF program headers it
43.31008 -+   points to.  If not null, *LOADBASEP is filled in with the difference
43.31009 -+   between the VMAs from which the segments were read, and the VMAs the
43.31010 -+   file headers (and hence BFD's idea of each section's VMA) put them at.
43.31011 -+
43.31012 -+   The function TARGET_READ_MEMORY is called to copy LEN bytes from the
43.31013 -+   remote memory at target address VMA into the local buffer at MYADDR; it
43.31014 -+   should return zero on success or an `errno' code on failure.  TEMPL must
43.31015 -+   be a BFD for an ELF target with the word size and byte order found in
43.31016 -+   the remote memory.  */
43.31017 -+extern bfd *bfd_elf_bfd_from_remote_memory
43.31018 -+  (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
43.31019 -+   int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
43.31020 -+
43.31021 -+/* Return the arch_size field of an elf bfd, or -1 if not elf.  */
43.31022 -+extern int bfd_get_arch_size
43.31023 -+  (bfd *);
43.31024 -+
43.31025 -+/* Return TRUE if address "naturally" sign extends, or -1 if not elf.  */
43.31026 -+extern int bfd_get_sign_extend_vma
43.31027 -+  (bfd *);
43.31028 -+
43.31029 -+extern struct bfd_section *_bfd_elf_tls_setup
43.31030 -+  (bfd *, struct bfd_link_info *);
43.31031 -+
43.31032 -+extern void _bfd_fix_excluded_sec_syms
43.31033 -+  (bfd *, struct bfd_link_info *);
43.31034 -+
43.31035 -+extern unsigned bfd_m68k_mach_to_features (int);
43.31036 -+
43.31037 -+extern int bfd_m68k_features_to_mach (unsigned);
43.31038 -+
43.31039 -+extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
43.31040 -+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
43.31041 -+   char **);
43.31042 -+
43.31043 -+extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
43.31044 -+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
43.31045 -+   char **);
43.31046 -+
43.31047 -+/* SunOS shared library support routines for the linker.  */
43.31048 -+
43.31049 -+extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
43.31050 -+  (bfd *, struct bfd_link_info *);
43.31051 -+extern bfd_boolean bfd_sunos_record_link_assignment
43.31052 -+  (bfd *, struct bfd_link_info *, const char *);
43.31053 -+extern bfd_boolean bfd_sunos_size_dynamic_sections
43.31054 -+  (bfd *, struct bfd_link_info *, struct bfd_section **,
43.31055 -+   struct bfd_section **, struct bfd_section **);
43.31056 -+
43.31057 -+/* Linux shared library support routines for the linker.  */
43.31058 -+
43.31059 -+extern bfd_boolean bfd_i386linux_size_dynamic_sections
43.31060 -+  (bfd *, struct bfd_link_info *);
43.31061 -+extern bfd_boolean bfd_m68klinux_size_dynamic_sections
43.31062 -+  (bfd *, struct bfd_link_info *);
43.31063 -+extern bfd_boolean bfd_sparclinux_size_dynamic_sections
43.31064 -+  (bfd *, struct bfd_link_info *);
43.31065 -+
43.31066 -+/* mmap hacks */
43.31067 -+
43.31068 -+struct _bfd_window_internal;
43.31069 -+typedef struct _bfd_window_internal bfd_window_internal;
43.31070 -+
43.31071 -+typedef struct _bfd_window
43.31072 -+{
43.31073 -+  /* What the user asked for.  */
43.31074 -+  void *data;
43.31075 -+  bfd_size_type size;
43.31076 -+  /* The actual window used by BFD.  Small user-requested read-only
43.31077 -+     regions sharing a page may share a single window into the object
43.31078 -+     file.  Read-write versions shouldn't until I've fixed things to
43.31079 -+     keep track of which portions have been claimed by the
43.31080 -+     application; don't want to give the same region back when the
43.31081 -+     application wants two writable copies!  */
43.31082 -+  struct _bfd_window_internal *i;
43.31083 -+}
43.31084 -+bfd_window;
43.31085 -+
43.31086 -+extern void bfd_init_window
43.31087 -+  (bfd_window *);
43.31088 -+extern void bfd_free_window
43.31089 -+  (bfd_window *);
43.31090 -+extern bfd_boolean bfd_get_file_window
43.31091 -+  (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
43.31092 -+
43.31093 -+/* XCOFF support routines for the linker.  */
43.31094 -+
43.31095 -+extern bfd_boolean bfd_xcoff_link_record_set
43.31096 -+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
43.31097 -+extern bfd_boolean bfd_xcoff_import_symbol
43.31098 -+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
43.31099 -+   const char *, const char *, const char *, unsigned int);
43.31100 -+extern bfd_boolean bfd_xcoff_export_symbol
43.31101 -+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
43.31102 -+extern bfd_boolean bfd_xcoff_link_count_reloc
43.31103 -+  (bfd *, struct bfd_link_info *, const char *);
43.31104 -+extern bfd_boolean bfd_xcoff_record_link_assignment
43.31105 -+  (bfd *, struct bfd_link_info *, const char *);
43.31106 -+extern bfd_boolean bfd_xcoff_size_dynamic_sections
43.31107 -+  (bfd *, struct bfd_link_info *, const char *, const char *,
43.31108 -+   unsigned long, unsigned long, unsigned long, bfd_boolean,
43.31109 -+   int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
43.31110 -+extern bfd_boolean bfd_xcoff_link_generate_rtinit
43.31111 -+  (bfd *, const char *, const char *, bfd_boolean);
43.31112 -+
43.31113 -+/* XCOFF support routines for ar.  */
43.31114 -+extern bfd_boolean bfd_xcoff_ar_archive_set_magic
43.31115 -+  (bfd *, char *);
43.31116 -+
43.31117 -+/* Externally visible COFF routines.  */
43.31118 -+
43.31119 -+#if defined(__STDC__) || defined(ALMOST_STDC)
43.31120 -+struct internal_syment;
43.31121 -+union internal_auxent;
43.31122 -+#endif
43.31123 -+
43.31124 -+extern bfd_boolean bfd_coff_get_syment
43.31125 -+  (bfd *, struct bfd_symbol *, struct internal_syment *);
43.31126 -+
43.31127 -+extern bfd_boolean bfd_coff_get_auxent
43.31128 -+  (bfd *, struct bfd_symbol *, int, union internal_auxent *);
43.31129 -+
43.31130 -+extern bfd_boolean bfd_coff_set_symbol_class
43.31131 -+  (bfd *, struct bfd_symbol *, unsigned int);
43.31132 -+
43.31133 -+extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
43.31134 -+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
43.31135 -+
43.31136 -+/* ARM VFP11 erratum workaround support.  */
43.31137 -+typedef enum
43.31138 -+{
43.31139 -+  BFD_ARM_VFP11_FIX_DEFAULT,
43.31140 -+  BFD_ARM_VFP11_FIX_NONE,
43.31141 -+  BFD_ARM_VFP11_FIX_SCALAR,
43.31142 -+  BFD_ARM_VFP11_FIX_VECTOR
43.31143 -+} bfd_arm_vfp11_fix;
43.31144 -+
43.31145 -+extern void bfd_elf32_arm_init_maps
43.31146 -+  (bfd *);
43.31147 -+
43.31148 -+extern void bfd_elf32_arm_set_vfp11_fix
43.31149 -+  (bfd *, struct bfd_link_info *);
43.31150 -+
43.31151 -+extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
43.31152 -+  (bfd *, struct bfd_link_info *);
43.31153 -+
43.31154 -+extern void bfd_elf32_arm_vfp11_fix_veneer_locations
43.31155 -+  (bfd *, struct bfd_link_info *);
43.31156 -+
43.31157 -+/* ARM Interworking support.  Called from linker.  */
43.31158 -+extern bfd_boolean bfd_arm_allocate_interworking_sections
43.31159 -+  (struct bfd_link_info *);
43.31160 -+
43.31161 -+extern bfd_boolean bfd_arm_process_before_allocation
43.31162 -+  (bfd *, struct bfd_link_info *, int);
43.31163 -+
43.31164 -+extern bfd_boolean bfd_arm_get_bfd_for_interworking
43.31165 -+  (bfd *, struct bfd_link_info *);
43.31166 -+
43.31167 -+/* PE ARM Interworking support.  Called from linker.  */
43.31168 -+extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
43.31169 -+  (struct bfd_link_info *);
43.31170 -+
43.31171 -+extern bfd_boolean bfd_arm_pe_process_before_allocation
43.31172 -+  (bfd *, struct bfd_link_info *, int);
43.31173 -+
43.31174 -+extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
43.31175 -+  (bfd *, struct bfd_link_info *);
43.31176 -+
43.31177 -+/* ELF ARM Interworking support.  Called from linker.  */
43.31178 -+extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
43.31179 -+  (struct bfd_link_info *);
43.31180 -+
43.31181 -+extern bfd_boolean bfd_elf32_arm_process_before_allocation
43.31182 -+  (bfd *, struct bfd_link_info *);
43.31183 -+
43.31184 -+void bfd_elf32_arm_set_target_relocs
43.31185 -+  (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
43.31186 -+   int, int);
43.31187 -+
43.31188 -+extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
43.31189 -+  (bfd *, struct bfd_link_info *);
43.31190 -+
43.31191 -+extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
43.31192 -+  (bfd *, struct bfd_link_info *);
43.31193 -+
43.31194 -+/* ELF ARM mapping symbol support */
43.31195 -+#define BFD_ARM_SPECIAL_SYM_TYPE_MAP	(1 << 0)
43.31196 -+#define BFD_ARM_SPECIAL_SYM_TYPE_TAG	(1 << 1)
43.31197 -+#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER  (1 << 2)
43.31198 -+#define BFD_ARM_SPECIAL_SYM_TYPE_ANY	(~0)
43.31199 -+extern bfd_boolean bfd_is_arm_special_symbol_name
43.31200 -+  (const char * name, int type);
43.31201 -+
43.31202 -+extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
43.31203 -+
43.31204 -+/* ARM Note section processing.  */
43.31205 -+extern bfd_boolean bfd_arm_merge_machines
43.31206 -+  (bfd *, bfd *);
43.31207 -+
43.31208 -+extern bfd_boolean bfd_arm_update_notes
43.31209 -+  (bfd *, const char *);
43.31210 -+
43.31211 -+extern unsigned int bfd_arm_get_mach_from_notes
43.31212 -+  (bfd *, const char *);
43.31213 -+
43.31214 -+/* TI COFF load page support.  */
43.31215 -+extern void bfd_ticoff_set_section_load_page
43.31216 -+  (struct bfd_section *, int);
43.31217 -+
43.31218 -+extern int bfd_ticoff_get_section_load_page
43.31219 -+  (struct bfd_section *);
43.31220 -+
43.31221 -+/* H8/300 functions.  */
43.31222 -+extern bfd_vma bfd_h8300_pad_address
43.31223 -+  (bfd *, bfd_vma);
43.31224 -+
43.31225 -+/* IA64 Itanium code generation.  Called from linker.  */
43.31226 -+extern void bfd_elf32_ia64_after_parse
43.31227 -+  (int);
43.31228 -+
43.31229 -+extern void bfd_elf64_ia64_after_parse
43.31230 -+  (int);
43.31231 -+
43.31232 -+/* This structure is used for a comdat section, as in PE.  A comdat
43.31233 -+   section is associated with a particular symbol.  When the linker
43.31234 -+   sees a comdat section, it keeps only one of the sections with a
43.31235 -+   given name and associated with a given symbol.  */
43.31236 -+
43.31237 -+struct coff_comdat_info
43.31238 -+{
43.31239 -+  /* The name of the symbol associated with a comdat section.  */
43.31240 -+  const char *name;
43.31241 -+
43.31242 -+  /* The local symbol table index of the symbol associated with a
43.31243 -+     comdat section.  This is only meaningful to the object file format
43.31244 -+     specific code; it is not an index into the list returned by
43.31245 -+     bfd_canonicalize_symtab.  */
43.31246 -+  long symbol;
43.31247 -+};
43.31248 -+
43.31249 -+extern struct coff_comdat_info *bfd_coff_get_comdat_section
43.31250 -+  (bfd *, struct bfd_section *);
43.31251 -+
43.31252 -+/* Extracted from init.c.  */
43.31253 -+void bfd_init (void);
43.31254 -+
43.31255 -+/* Extracted from opncls.c.  */
43.31256 -+bfd *bfd_fopen (const char *filename, const char *target,
43.31257 -+    const char *mode, int fd);
43.31258 -+
43.31259 -+bfd *bfd_openr (const char *filename, const char *target);
43.31260 -+
43.31261 -+bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
43.31262 -+
43.31263 -+bfd *bfd_openstreamr (const char *, const char *, void *);
43.31264 -+
43.31265 -+bfd *bfd_openr_iovec (const char *filename, const char *target,
43.31266 -+    void *(*open) (struct bfd *nbfd,
43.31267 -+    void *open_closure),
43.31268 -+    void *open_closure,
43.31269 -+    file_ptr (*pread) (struct bfd *nbfd,
43.31270 -+    void *stream,
43.31271 -+    void *buf,
43.31272 -+    file_ptr nbytes,
43.31273 -+    file_ptr offset),
43.31274 -+    int (*close) (struct bfd *nbfd,
43.31275 -+    void *stream),
43.31276 -+    int (*stat) (struct bfd *abfd,
43.31277 -+    void *stream,
43.31278 -+    struct stat *sb));
43.31279 -+
43.31280 -+bfd *bfd_openw (const char *filename, const char *target);
43.31281 -+
43.31282 -+bfd_boolean bfd_close (bfd *abfd);
43.31283 -+
43.31284 -+bfd_boolean bfd_close_all_done (bfd *);
43.31285 -+
43.31286 -+bfd *bfd_create (const char *filename, bfd *templ);
43.31287 -+
43.31288 -+bfd_boolean bfd_make_writable (bfd *abfd);
43.31289 -+
43.31290 -+bfd_boolean bfd_make_readable (bfd *abfd);
43.31291 -+
43.31292 -+unsigned long bfd_calc_gnu_debuglink_crc32
43.31293 -+   (unsigned long crc, const unsigned char *buf, bfd_size_type len);
43.31294 -+
43.31295 -+char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
43.31296 -+
43.31297 -+struct bfd_section *bfd_create_gnu_debuglink_section
43.31298 -+   (bfd *abfd, const char *filename);
43.31299 -+
43.31300 -+bfd_boolean bfd_fill_in_gnu_debuglink_section
43.31301 -+   (bfd *abfd, struct bfd_section *sect, const char *filename);
43.31302 -+
43.31303 -+/* Extracted from libbfd.c.  */
43.31304 -+
43.31305 -+/* Byte swapping macros for user section data.  */
43.31306 -+
43.31307 -+#define bfd_put_8(abfd, val, ptr) \
43.31308 -+  ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
43.31309 -+#define bfd_put_signed_8 \
43.31310 -+  bfd_put_8
43.31311 -+#define bfd_get_8(abfd, ptr) \
43.31312 -+  (*(unsigned char *) (ptr) & 0xff)
43.31313 -+#define bfd_get_signed_8(abfd, ptr) \
43.31314 -+  (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
43.31315 -+
43.31316 -+#define bfd_put_16(abfd, val, ptr) \
43.31317 -+  BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
43.31318 -+#define bfd_put_signed_16 \
43.31319 -+  bfd_put_16
43.31320 -+#define bfd_get_16(abfd, ptr) \
43.31321 -+  BFD_SEND (abfd, bfd_getx16, (ptr))
43.31322 -+#define bfd_get_signed_16(abfd, ptr) \
43.31323 -+  BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
43.31324 -+
43.31325 -+#define bfd_put_32(abfd, val, ptr) \
43.31326 -+  BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
43.31327 -+#define bfd_put_signed_32 \
43.31328 -+  bfd_put_32
43.31329 -+#define bfd_get_32(abfd, ptr) \
43.31330 -+  BFD_SEND (abfd, bfd_getx32, (ptr))
43.31331 -+#define bfd_get_signed_32(abfd, ptr) \
43.31332 -+  BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
43.31333 -+
43.31334 -+#define bfd_put_64(abfd, val, ptr) \
43.31335 -+  BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
43.31336 -+#define bfd_put_signed_64 \
43.31337 -+  bfd_put_64
43.31338 -+#define bfd_get_64(abfd, ptr) \
43.31339 -+  BFD_SEND (abfd, bfd_getx64, (ptr))
43.31340 -+#define bfd_get_signed_64(abfd, ptr) \
43.31341 -+  BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
43.31342 -+
43.31343 -+#define bfd_get(bits, abfd, ptr)                       \
43.31344 -+  ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
43.31345 -+   : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
43.31346 -+   : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
43.31347 -+   : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
43.31348 -+   : (abort (), (bfd_vma) - 1))
43.31349 -+
43.31350 -+#define bfd_put(bits, abfd, val, ptr)                  \
43.31351 -+  ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \
43.31352 -+   : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)                \
43.31353 -+   : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)                \
43.31354 -+   : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)                \
43.31355 -+   : (abort (), (void) 0))
43.31356 -+
43.31357 -+
43.31358 -+/* Byte swapping macros for file header data.  */
43.31359 -+
43.31360 -+#define bfd_h_put_8(abfd, val, ptr) \
43.31361 -+  bfd_put_8 (abfd, val, ptr)
43.31362 -+#define bfd_h_put_signed_8(abfd, val, ptr) \
43.31363 -+  bfd_put_8 (abfd, val, ptr)
43.31364 -+#define bfd_h_get_8(abfd, ptr) \
43.31365 -+  bfd_get_8 (abfd, ptr)
43.31366 -+#define bfd_h_get_signed_8(abfd, ptr) \
43.31367 -+  bfd_get_signed_8 (abfd, ptr)
43.31368 -+
43.31369 -+#define bfd_h_put_16(abfd, val, ptr) \
43.31370 -+  BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
43.31371 -+#define bfd_h_put_signed_16 \
43.31372 -+  bfd_h_put_16
43.31373 -+#define bfd_h_get_16(abfd, ptr) \
43.31374 -+  BFD_SEND (abfd, bfd_h_getx16, (ptr))
43.31375 -+#define bfd_h_get_signed_16(abfd, ptr) \
43.31376 -+  BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
43.31377 -+
43.31378 -+#define bfd_h_put_32(abfd, val, ptr) \
43.31379 -+  BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
43.31380 -+#define bfd_h_put_signed_32 \
43.31381 -+  bfd_h_put_32
43.31382 -+#define bfd_h_get_32(abfd, ptr) \
43.31383 -+  BFD_SEND (abfd, bfd_h_getx32, (ptr))
43.31384 -+#define bfd_h_get_signed_32(abfd, ptr) \
43.31385 -+  BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
43.31386 -+
43.31387 -+#define bfd_h_put_64(abfd, val, ptr) \
43.31388 -+  BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
43.31389 -+#define bfd_h_put_signed_64 \
43.31390 -+  bfd_h_put_64
43.31391 -+#define bfd_h_get_64(abfd, ptr) \
43.31392 -+  BFD_SEND (abfd, bfd_h_getx64, (ptr))
43.31393 -+#define bfd_h_get_signed_64(abfd, ptr) \
43.31394 -+  BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
43.31395 -+
43.31396 -+/* Aliases for the above, which should eventually go away.  */
43.31397 -+
43.31398 -+#define H_PUT_64  bfd_h_put_64
43.31399 -+#define H_PUT_32  bfd_h_put_32
43.31400 -+#define H_PUT_16  bfd_h_put_16
43.31401 -+#define H_PUT_8   bfd_h_put_8
43.31402 -+#define H_PUT_S64 bfd_h_put_signed_64
43.31403 -+#define H_PUT_S32 bfd_h_put_signed_32
43.31404 -+#define H_PUT_S16 bfd_h_put_signed_16
43.31405 -+#define H_PUT_S8  bfd_h_put_signed_8
43.31406 -+#define H_GET_64  bfd_h_get_64
43.31407 -+#define H_GET_32  bfd_h_get_32
43.31408 -+#define H_GET_16  bfd_h_get_16
43.31409 -+#define H_GET_8   bfd_h_get_8
43.31410 -+#define H_GET_S64 bfd_h_get_signed_64
43.31411 -+#define H_GET_S32 bfd_h_get_signed_32
43.31412 -+#define H_GET_S16 bfd_h_get_signed_16
43.31413 -+#define H_GET_S8  bfd_h_get_signed_8
43.31414 -+
43.31415 -+
43.31416 -+/* Extracted from bfdio.c.  */
43.31417 -+long bfd_get_mtime (bfd *abfd);
43.31418 -+
43.31419 -+file_ptr bfd_get_size (bfd *abfd);
43.31420 -+
43.31421 -+/* Extracted from bfdwin.c.  */
43.31422 -+/* Extracted from section.c.  */
43.31423 -+typedef struct bfd_section
43.31424 -+{
43.31425 -+  /* The name of the section; the name isn't a copy, the pointer is
43.31426 -+     the same as that passed to bfd_make_section.  */
43.31427 -+  const char *name;
43.31428 -+
43.31429 -+  /* A unique sequence number.  */
43.31430 -+  int id;
43.31431 -+
43.31432 -+  /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
43.31433 -+  int index;
43.31434 -+
43.31435 -+  /* The next section in the list belonging to the BFD, or NULL.  */
43.31436 -+  struct bfd_section *next;
43.31437 -+
43.31438 -+  /* The previous section in the list belonging to the BFD, or NULL.  */
43.31439 -+  struct bfd_section *prev;
43.31440 -+
43.31441 -+  /* The field flags contains attributes of the section. Some
43.31442 -+     flags are read in from the object file, and some are
43.31443 -+     synthesized from other information.  */
43.31444 -+  flagword flags;
43.31445 -+
43.31446 -+#define SEC_NO_FLAGS   0x000
43.31447 -+
43.31448 -+  /* Tells the OS to allocate space for this section when loading.
43.31449 -+     This is clear for a section containing debug information only.  */
43.31450 -+#define SEC_ALLOC      0x001
43.31451 -+
43.31452 -+  /* Tells the OS to load the section from the file when loading.
43.31453 -+     This is clear for a .bss section.  */
43.31454 -+#define SEC_LOAD       0x002
43.31455 -+
43.31456 -+  /* The section contains data still to be relocated, so there is
43.31457 -+     some relocation information too.  */
43.31458 -+#define SEC_RELOC      0x004
43.31459 -+
43.31460 -+  /* A signal to the OS that the section contains read only data.  */
43.31461 -+#define SEC_READONLY   0x008
43.31462 -+
43.31463 -+  /* The section contains code only.  */
43.31464 -+#define SEC_CODE       0x010
43.31465 -+
43.31466 -+  /* The section contains data only.  */
43.31467 -+#define SEC_DATA       0x020
43.31468 -+
43.31469 -+  /* The section will reside in ROM.  */
43.31470 -+#define SEC_ROM        0x040
43.31471 -+
43.31472 -+  /* The section contains constructor information. This section
43.31473 -+     type is used by the linker to create lists of constructors and
43.31474 -+     destructors used by <<g++>>. When a back end sees a symbol
43.31475 -+     which should be used in a constructor list, it creates a new
43.31476 -+     section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
43.31477 -+     the symbol to it, and builds a relocation. To build the lists
43.31478 -+     of constructors, all the linker has to do is catenate all the
43.31479 -+     sections called <<__CTOR_LIST__>> and relocate the data
43.31480 -+     contained within - exactly the operations it would peform on
43.31481 -+     standard data.  */
43.31482 -+#define SEC_CONSTRUCTOR 0x080
43.31483 -+
43.31484 -+  /* The section has contents - a data section could be
43.31485 -+     <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
43.31486 -+     <<SEC_HAS_CONTENTS>>  */
43.31487 -+#define SEC_HAS_CONTENTS 0x100
43.31488 -+
43.31489 -+  /* An instruction to the linker to not output the section
43.31490 -+     even if it has information which would normally be written.  */
43.31491 -+#define SEC_NEVER_LOAD 0x200
43.31492 -+
43.31493 -+  /* The section contains thread local data.  */
43.31494 -+#define SEC_THREAD_LOCAL 0x400
43.31495 -+
43.31496 -+  /* The section has GOT references.  This flag is only for the
43.31497 -+     linker, and is currently only used by the elf32-hppa back end.
43.31498 -+     It will be set if global offset table references were detected
43.31499 -+     in this section, which indicate to the linker that the section
43.31500 -+     contains PIC code, and must be handled specially when doing a
43.31501 -+     static link.  */
43.31502 -+#define SEC_HAS_GOT_REF 0x800
43.31503 -+
43.31504 -+  /* The section contains common symbols (symbols may be defined
43.31505 -+     multiple times, the value of a symbol is the amount of
43.31506 -+     space it requires, and the largest symbol value is the one
43.31507 -+     used).  Most targets have exactly one of these (which we
43.31508 -+     translate to bfd_com_section_ptr), but ECOFF has two.  */
43.31509 -+#define SEC_IS_COMMON 0x1000
43.31510 -+
43.31511 -+  /* The section contains only debugging information.  For
43.31512 -+     example, this is set for ELF .debug and .stab sections.
43.31513 -+     strip tests this flag to see if a section can be
43.31514 -+     discarded.  */
43.31515 -+#define SEC_DEBUGGING 0x2000
43.31516 -+
43.31517 -+  /* The contents of this section are held in memory pointed to
43.31518 -+     by the contents field.  This is checked by bfd_get_section_contents,
43.31519 -+     and the data is retrieved from memory if appropriate.  */
43.31520 -+#define SEC_IN_MEMORY 0x4000
43.31521 -+
43.31522 -+  /* The contents of this section are to be excluded by the
43.31523 -+     linker for executable and shared objects unless those
43.31524 -+     objects are to be further relocated.  */
43.31525 -+#define SEC_EXCLUDE 0x8000
43.31526 -+
43.31527 -+  /* The contents of this section are to be sorted based on the sum of
43.31528 -+     the symbol and addend values specified by the associated relocation
43.31529 -+     entries.  Entries without associated relocation entries will be
43.31530 -+     appended to the end of the section in an unspecified order.  */
43.31531 -+#define SEC_SORT_ENTRIES 0x10000
43.31532 -+
43.31533 -+  /* When linking, duplicate sections of the same name should be
43.31534 -+     discarded, rather than being combined into a single section as
43.31535 -+     is usually done.  This is similar to how common symbols are
43.31536 -+     handled.  See SEC_LINK_DUPLICATES below.  */
43.31537 -+#define SEC_LINK_ONCE 0x20000
43.31538 -+
43.31539 -+  /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
43.31540 -+     should handle duplicate sections.  */
43.31541 -+#define SEC_LINK_DUPLICATES 0x40000
43.31542 -+
43.31543 -+  /* This value for SEC_LINK_DUPLICATES means that duplicate
43.31544 -+     sections with the same name should simply be discarded.  */
43.31545 -+#define SEC_LINK_DUPLICATES_DISCARD 0x0
43.31546 -+
43.31547 -+  /* This value for SEC_LINK_DUPLICATES means that the linker
43.31548 -+     should warn if there are any duplicate sections, although
43.31549 -+     it should still only link one copy.  */
43.31550 -+#define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
43.31551 -+
43.31552 -+  /* This value for SEC_LINK_DUPLICATES means that the linker
43.31553 -+     should warn if any duplicate sections are a different size.  */
43.31554 -+#define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
43.31555 -+
43.31556 -+  /* This value for SEC_LINK_DUPLICATES means that the linker
43.31557 -+     should warn if any duplicate sections contain different
43.31558 -+     contents.  */
43.31559 -+#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
43.31560 -+  (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
43.31561 -+
43.31562 -+  /* This section was created by the linker as part of dynamic
43.31563 -+     relocation or other arcane processing.  It is skipped when
43.31564 -+     going through the first-pass output, trusting that someone
43.31565 -+     else up the line will take care of it later.  */
43.31566 -+#define SEC_LINKER_CREATED 0x200000
43.31567 -+
43.31568 -+  /* This section should not be subject to garbage collection.
43.31569 -+     Also set to inform the linker that this section should not be
43.31570 -+     listed in the link map as discarded.  */
43.31571 -+#define SEC_KEEP 0x400000
43.31572 -+
43.31573 -+  /* This section contains "short" data, and should be placed
43.31574 -+     "near" the GP.  */
43.31575 -+#define SEC_SMALL_DATA 0x800000
43.31576 -+
43.31577 -+  /* Attempt to merge identical entities in the section.
43.31578 -+     Entity size is given in the entsize field.  */
43.31579 -+#define SEC_MERGE 0x1000000
43.31580 -+
43.31581 -+  /* If given with SEC_MERGE, entities to merge are zero terminated
43.31582 -+     strings where entsize specifies character size instead of fixed
43.31583 -+     size entries.  */
43.31584 -+#define SEC_STRINGS 0x2000000
43.31585 -+
43.31586 -+  /* This section contains data about section groups.  */
43.31587 -+#define SEC_GROUP 0x4000000
43.31588 -+
43.31589 -+  /* The section is a COFF shared library section.  This flag is
43.31590 -+     only for the linker.  If this type of section appears in
43.31591 -+     the input file, the linker must copy it to the output file
43.31592 -+     without changing the vma or size.  FIXME: Although this
43.31593 -+     was originally intended to be general, it really is COFF
43.31594 -+     specific (and the flag was renamed to indicate this).  It
43.31595 -+     might be cleaner to have some more general mechanism to
43.31596 -+     allow the back end to control what the linker does with
43.31597 -+     sections.  */
43.31598 -+#define SEC_COFF_SHARED_LIBRARY 0x10000000
43.31599 -+
43.31600 -+  /* This section contains data which may be shared with other
43.31601 -+     executables or shared objects. This is for COFF only.  */
43.31602 -+#define SEC_COFF_SHARED 0x20000000
43.31603 -+
43.31604 -+  /* When a section with this flag is being linked, then if the size of
43.31605 -+     the input section is less than a page, it should not cross a page
43.31606 -+     boundary.  If the size of the input section is one page or more,
43.31607 -+     it should be aligned on a page boundary.  This is for TI
43.31608 -+     TMS320C54X only.  */
43.31609 -+#define SEC_TIC54X_BLOCK 0x40000000
43.31610 -+
43.31611 -+  /* Conditionally link this section; do not link if there are no
43.31612 -+     references found to any symbol in the section.  This is for TI
43.31613 -+     TMS320C54X only.  */
43.31614 -+#define SEC_TIC54X_CLINK 0x80000000
43.31615 -+
43.31616 -+  /*  End of section flags.  */
43.31617 -+
43.31618 -+  /* Some internal packed boolean fields.  */
43.31619 -+
43.31620 -+  /* See the vma field.  */
43.31621 -+  unsigned int user_set_vma : 1;
43.31622 -+
43.31623 -+  /* A mark flag used by some of the linker backends.  */
43.31624 -+  unsigned int linker_mark : 1;
43.31625 -+
43.31626 -+  /* Another mark flag used by some of the linker backends.  Set for
43.31627 -+     output sections that have an input section.  */
43.31628 -+  unsigned int linker_has_input : 1;
43.31629 -+
43.31630 -+  /* Mark flags used by some linker backends for garbage collection.  */
43.31631 -+  unsigned int gc_mark : 1;
43.31632 -+  unsigned int gc_mark_from_eh : 1;
43.31633 -+
43.31634 -+  /* The following flags are used by the ELF linker. */
43.31635 -+
43.31636 -+  /* Mark sections which have been allocated to segments.  */
43.31637 -+  unsigned int segment_mark : 1;
43.31638 -+
43.31639 -+  /* Type of sec_info information.  */
43.31640 -+  unsigned int sec_info_type:3;
43.31641 -+#define ELF_INFO_TYPE_NONE      0
43.31642 -+#define ELF_INFO_TYPE_STABS     1
43.31643 -+#define ELF_INFO_TYPE_MERGE     2
43.31644 -+#define ELF_INFO_TYPE_EH_FRAME  3
43.31645 -+#define ELF_INFO_TYPE_JUST_SYMS 4
43.31646 -+
43.31647 -+  /* Nonzero if this section uses RELA relocations, rather than REL.  */
43.31648 -+  unsigned int use_rela_p:1;
43.31649 -+
43.31650 -+  /* Bits used by various backends.  The generic code doesn't touch
43.31651 -+     these fields.  */
43.31652 -+
43.31653 -+  /* Nonzero if this section has TLS related relocations.  */
43.31654 -+  unsigned int has_tls_reloc:1;
43.31655 -+
43.31656 -+  /* Nonzero if this section has a gp reloc.  */
43.31657 -+  unsigned int has_gp_reloc:1;
43.31658 -+
43.31659 -+  /* Nonzero if this section needs the relax finalize pass.  */
43.31660 -+  unsigned int need_finalize_relax:1;
43.31661 -+
43.31662 -+  /* Whether relocations have been processed.  */
43.31663 -+  unsigned int reloc_done : 1;
43.31664 -+
43.31665 -+  /* End of internal packed boolean fields.  */
43.31666 -+
43.31667 -+  /*  The virtual memory address of the section - where it will be
43.31668 -+      at run time.  The symbols are relocated against this.  The
43.31669 -+      user_set_vma flag is maintained by bfd; if it's not set, the
43.31670 -+      backend can assign addresses (for example, in <<a.out>>, where
43.31671 -+      the default address for <<.data>> is dependent on the specific
43.31672 -+      target and various flags).  */
43.31673 -+  bfd_vma vma;
43.31674 -+
43.31675 -+  /*  The load address of the section - where it would be in a
43.31676 -+      rom image; really only used for writing section header
43.31677 -+      information.  */
43.31678 -+  bfd_vma lma;
43.31679 -+
43.31680 -+  /* The size of the section in octets, as it will be output.
43.31681 -+     Contains a value even if the section has no contents (e.g., the
43.31682 -+     size of <<.bss>>).  */
43.31683 -+  bfd_size_type size;
43.31684 -+
43.31685 -+  /* For input sections, the original size on disk of the section, in
43.31686 -+     octets.  This field is used by the linker relaxation code.  It is
43.31687 -+     currently only set for sections where the linker relaxation scheme
43.31688 -+     doesn't cache altered section and reloc contents (stabs, eh_frame,
43.31689 -+     SEC_MERGE, some coff relaxing targets), and thus the original size
43.31690 -+     needs to be kept to read the section multiple times.
43.31691 -+     For output sections, rawsize holds the section size calculated on
43.31692 -+     a previous linker relaxation pass.  */
43.31693 -+  bfd_size_type rawsize;
43.31694 -+
43.31695 -+  /* If this section is going to be output, then this value is the
43.31696 -+     offset in *bytes* into the output section of the first byte in the
43.31697 -+     input section (byte ==> smallest addressable unit on the
43.31698 -+     target).  In most cases, if this was going to start at the
43.31699 -+     100th octet (8-bit quantity) in the output section, this value
43.31700 -+     would be 100.  However, if the target byte size is 16 bits
43.31701 -+     (bfd_octets_per_byte is "2"), this value would be 50.  */
43.31702 -+  bfd_vma output_offset;
43.31703 -+
43.31704 -+  /* The output section through which to map on output.  */
43.31705 -+  struct bfd_section *output_section;
43.31706 -+
43.31707 -+  /* The alignment requirement of the section, as an exponent of 2 -
43.31708 -+     e.g., 3 aligns to 2^3 (or 8).  */
43.31709 -+  unsigned int alignment_power;
43.31710 -+
43.31711 -+  /* If an input section, a pointer to a vector of relocation
43.31712 -+     records for the data in this section.  */
43.31713 -+  struct reloc_cache_entry *relocation;
43.31714 -+
43.31715 -+  /* If an output section, a pointer to a vector of pointers to
43.31716 -+     relocation records for the data in this section.  */
43.31717 -+  struct reloc_cache_entry **orelocation;
43.31718 -+
43.31719 -+  /* The number of relocation records in one of the above.  */
43.31720 -+  unsigned reloc_count;
43.31721 -+
43.31722 -+  /* Information below is back end specific - and not always used
43.31723 -+     or updated.  */
43.31724 -+
43.31725 -+  /* File position of section data.  */
43.31726 -+  file_ptr filepos;
43.31727 -+
43.31728 -+  /* File position of relocation info.  */
43.31729 -+  file_ptr rel_filepos;
43.31730 -+
43.31731 -+  /* File position of line data.  */
43.31732 -+  file_ptr line_filepos;
43.31733 -+
43.31734 -+  /* Pointer to data for applications.  */
43.31735 -+  void *userdata;
43.31736 -+
43.31737 -+  /* If the SEC_IN_MEMORY flag is set, this points to the actual
43.31738 -+     contents.  */
43.31739 -+  unsigned char *contents;
43.31740 -+
43.31741 -+  /* Attached line number information.  */
43.31742 -+  alent *lineno;
43.31743 -+
43.31744 -+  /* Number of line number records.  */
43.31745 -+  unsigned int lineno_count;
43.31746 -+
43.31747 -+  /* Entity size for merging purposes.  */
43.31748 -+  unsigned int entsize;
43.31749 -+
43.31750 -+  /* Points to the kept section if this section is a link-once section,
43.31751 -+     and is discarded.  */
43.31752 -+  struct bfd_section *kept_section;
43.31753 -+
43.31754 -+  /* When a section is being output, this value changes as more
43.31755 -+     linenumbers are written out.  */
43.31756 -+  file_ptr moving_line_filepos;
43.31757 -+
43.31758 -+  /* What the section number is in the target world.  */
43.31759 -+  int target_index;
43.31760 -+
43.31761 -+  void *used_by_bfd;
43.31762 -+
43.31763 -+  /* If this is a constructor section then here is a list of the
43.31764 -+     relocations created to relocate items within it.  */
43.31765 -+  struct relent_chain *constructor_chain;
43.31766 -+
43.31767 -+  /* The BFD which owns the section.  */
43.31768 -+  bfd *owner;
43.31769 -+
43.31770 -+  /* A symbol which points at this section only.  */
43.31771 -+  struct bfd_symbol *symbol;
43.31772 -+  struct bfd_symbol **symbol_ptr_ptr;
43.31773 -+
43.31774 -+  /* Early in the link process, map_head and map_tail are used to build
43.31775 -+     a list of input sections attached to an output section.  Later,
43.31776 -+     output sections use these fields for a list of bfd_link_order
43.31777 -+     structs.  */
43.31778 -+  union {
43.31779 -+    struct bfd_link_order *link_order;
43.31780 -+    struct bfd_section *s;
43.31781 -+  } map_head, map_tail;
43.31782 -+} asection;
43.31783 -+
43.31784 -+/* These sections are global, and are managed by BFD.  The application
43.31785 -+   and target back end are not permitted to change the values in
43.31786 -+   these sections.  New code should use the section_ptr macros rather
43.31787 -+   than referring directly to the const sections.  The const sections
43.31788 -+   may eventually vanish.  */
43.31789 -+#define BFD_ABS_SECTION_NAME "*ABS*"
43.31790 -+#define BFD_UND_SECTION_NAME "*UND*"
43.31791 -+#define BFD_COM_SECTION_NAME "*COM*"
43.31792 -+#define BFD_IND_SECTION_NAME "*IND*"
43.31793 -+
43.31794 -+/* The absolute section.  */
43.31795 -+extern asection bfd_abs_section;
43.31796 -+#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
43.31797 -+#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
43.31798 -+/* Pointer to the undefined section.  */
43.31799 -+extern asection bfd_und_section;
43.31800 -+#define bfd_und_section_ptr ((asection *) &bfd_und_section)
43.31801 -+#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
43.31802 -+/* Pointer to the common section.  */
43.31803 -+extern asection bfd_com_section;
43.31804 -+#define bfd_com_section_ptr ((asection *) &bfd_com_section)
43.31805 -+/* Pointer to the indirect section.  */
43.31806 -+extern asection bfd_ind_section;
43.31807 -+#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
43.31808 -+#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
43.31809 -+
43.31810 -+#define bfd_is_const_section(SEC)              \
43.31811 -+ (   ((SEC) == bfd_abs_section_ptr)            \
43.31812 -+  || ((SEC) == bfd_und_section_ptr)            \
43.31813 -+  || ((SEC) == bfd_com_section_ptr)            \
43.31814 -+  || ((SEC) == bfd_ind_section_ptr))
43.31815 -+
43.31816 -+/* Macros to handle insertion and deletion of a bfd's sections.  These
43.31817 -+   only handle the list pointers, ie. do not adjust section_count,
43.31818 -+   target_index etc.  */
43.31819 -+#define bfd_section_list_remove(ABFD, S) \
43.31820 -+  do                                                   \
43.31821 -+    {                                                  \
43.31822 -+      asection *_s = S;                                \
43.31823 -+      asection *_next = _s->next;                      \
43.31824 -+      asection *_prev = _s->prev;                      \
43.31825 -+      if (_prev)                                       \
43.31826 -+        _prev->next = _next;                           \
43.31827 -+      else                                             \
43.31828 -+        (ABFD)->sections = _next;                      \
43.31829 -+      if (_next)                                       \
43.31830 -+        _next->prev = _prev;                           \
43.31831 -+      else                                             \
43.31832 -+        (ABFD)->section_last = _prev;                  \
43.31833 -+    }                                                  \
43.31834 -+  while (0)
43.31835 -+#define bfd_section_list_append(ABFD, S) \
43.31836 -+  do                                                   \
43.31837 -+    {                                                  \
43.31838 -+      asection *_s = S;                                \
43.31839 -+      bfd *_abfd = ABFD;                               \
43.31840 -+      _s->next = NULL;                                 \
43.31841 -+      if (_abfd->section_last)                         \
43.31842 -+        {                                              \
43.31843 -+          _s->prev = _abfd->section_last;              \
43.31844 -+          _abfd->section_last->next = _s;              \
43.31845 -+        }                                              \
43.31846 -+      else                                             \
43.31847 -+        {                                              \
43.31848 -+          _s->prev = NULL;                             \
43.31849 -+          _abfd->sections = _s;                        \
43.31850 -+        }                                              \
43.31851 -+      _abfd->section_last = _s;                        \
43.31852 -+    }                                                  \
43.31853 -+  while (0)
43.31854 -+#define bfd_section_list_prepend(ABFD, S) \
43.31855 -+  do                                                   \
43.31856 -+    {                                                  \
43.31857 -+      asection *_s = S;                                \
43.31858 -+      bfd *_abfd = ABFD;                               \
43.31859 -+      _s->prev = NULL;                                 \
43.31860 -+      if (_abfd->sections)                             \
43.31861 -+        {                                              \
43.31862 -+          _s->next = _abfd->sections;                  \
43.31863 -+          _abfd->sections->prev = _s;                  \
43.31864 -+        }                                              \
43.31865 -+      else                                             \
43.31866 -+        {                                              \
43.31867 -+          _s->next = NULL;                             \
43.31868 -+          _abfd->section_last = _s;                    \
43.31869 -+        }                                              \
43.31870 -+      _abfd->sections = _s;                            \
43.31871 -+    }                                                  \
43.31872 -+  while (0)
43.31873 -+#define bfd_section_list_insert_after(ABFD, A, S) \
43.31874 -+  do                                                   \
43.31875 -+    {                                                  \
43.31876 -+      asection *_a = A;                                \
43.31877 -+      asection *_s = S;                                \
43.31878 -+      asection *_next = _a->next;                      \
43.31879 -+      _s->next = _next;                                \
43.31880 -+      _s->prev = _a;                                   \
43.31881 -+      _a->next = _s;                                   \
43.31882 -+      if (_next)                                       \
43.31883 -+        _next->prev = _s;                              \
43.31884 -+      else                                             \
43.31885 -+        (ABFD)->section_last = _s;                     \
43.31886 -+    }                                                  \
43.31887 -+  while (0)
43.31888 -+#define bfd_section_list_insert_before(ABFD, B, S) \
43.31889 -+  do                                                   \
43.31890 -+    {                                                  \
43.31891 -+      asection *_b = B;                                \
43.31892 -+      asection *_s = S;                                \
43.31893 -+      asection *_prev = _b->prev;                      \
43.31894 -+      _s->prev = _prev;                                \
43.31895 -+      _s->next = _b;                                   \
43.31896 -+      _b->prev = _s;                                   \
43.31897 -+      if (_prev)                                       \
43.31898 -+        _prev->next = _s;                              \
43.31899 -+      else                                             \
43.31900 -+        (ABFD)->sections = _s;                         \
43.31901 -+    }                                                  \
43.31902 -+  while (0)
43.31903 -+#define bfd_section_removed_from_list(ABFD, S) \
43.31904 -+  ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
43.31905 -+
43.31906 -+#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX)                   \
43.31907 -+  /* name, id,  index, next, prev, flags, user_set_vma,            */  \
43.31908 -+  { NAME,  IDX, 0,     NULL, NULL, FLAGS, 0,                           \
43.31909 -+                                                                       \
43.31910 -+  /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh,      */  \
43.31911 -+     0,           0,                1,       0,                        \
43.31912 -+                                                                       \
43.31913 -+  /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc,       */  \
43.31914 -+     0,            0,             0,          0,                       \
43.31915 -+                                                                       \
43.31916 -+  /* has_gp_reloc, need_finalize_relax, reloc_done,                */  \
43.31917 -+     0,            0,                   0,                             \
43.31918 -+                                                                       \
43.31919 -+  /* vma, lma, size, rawsize                                       */  \
43.31920 -+     0,   0,   0,    0,                                                \
43.31921 -+                                                                       \
43.31922 -+  /* output_offset, output_section,              alignment_power,  */  \
43.31923 -+     0,             (struct bfd_section *) &SEC, 0,                    \
43.31924 -+                                                                       \
43.31925 -+  /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
43.31926 -+     NULL,       NULL,        0,           0,       0,                 \
43.31927 -+                                                                       \
43.31928 -+  /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
43.31929 -+     0,            NULL,     NULL,     NULL,   0,                      \
43.31930 -+                                                                       \
43.31931 -+  /* entsize, kept_section, moving_line_filepos,                    */ \
43.31932 -+     0,       NULL,          0,                                        \
43.31933 -+                                                                       \
43.31934 -+  /* target_index, used_by_bfd, constructor_chain, owner,          */  \
43.31935 -+     0,            NULL,        NULL,              NULL,               \
43.31936 -+                                                                       \
43.31937 -+  /* symbol,                    symbol_ptr_ptr,                    */  \
43.31938 -+     (struct bfd_symbol *) SYM, &SEC.symbol,                           \
43.31939 -+                                                                       \
43.31940 -+  /* map_head, map_tail                                            */  \
43.31941 -+     { NULL }, { NULL }                                                \
43.31942 -+    }
43.31943 -+
43.31944 -+void bfd_section_list_clear (bfd *);
43.31945 -+
43.31946 -+asection *bfd_get_section_by_name (bfd *abfd, const char *name);
43.31947 -+
43.31948 -+asection *bfd_get_section_by_name_if
43.31949 -+   (bfd *abfd,
43.31950 -+    const char *name,
43.31951 -+    bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
43.31952 -+    void *obj);
43.31953 -+
43.31954 -+char *bfd_get_unique_section_name
43.31955 -+   (bfd *abfd, const char *templat, int *count);
43.31956 -+
43.31957 -+asection *bfd_make_section_old_way (bfd *abfd, const char *name);
43.31958 -+
43.31959 -+asection *bfd_make_section_anyway_with_flags
43.31960 -+   (bfd *abfd, const char *name, flagword flags);
43.31961 -+
43.31962 -+asection *bfd_make_section_anyway (bfd *abfd, const char *name);
43.31963 -+
43.31964 -+asection *bfd_make_section_with_flags
43.31965 -+   (bfd *, const char *name, flagword flags);
43.31966 -+
43.31967 -+asection *bfd_make_section (bfd *, const char *name);
43.31968 -+
43.31969 -+bfd_boolean bfd_set_section_flags
43.31970 -+   (bfd *abfd, asection *sec, flagword flags);
43.31971 -+
43.31972 -+void bfd_map_over_sections
43.31973 -+   (bfd *abfd,
43.31974 -+    void (*func) (bfd *abfd, asection *sect, void *obj),
43.31975 -+    void *obj);
43.31976 -+
43.31977 -+asection *bfd_sections_find_if
43.31978 -+   (bfd *abfd,
43.31979 -+    bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
43.31980 -+    void *obj);
43.31981 -+
43.31982 -+bfd_boolean bfd_set_section_size
43.31983 -+   (bfd *abfd, asection *sec, bfd_size_type val);
43.31984 -+
43.31985 -+bfd_boolean bfd_set_section_contents
43.31986 -+   (bfd *abfd, asection *section, const void *data,
43.31987 -+    file_ptr offset, bfd_size_type count);
43.31988 -+
43.31989 -+bfd_boolean bfd_get_section_contents
43.31990 -+   (bfd *abfd, asection *section, void *location, file_ptr offset,
43.31991 -+    bfd_size_type count);
43.31992 -+
43.31993 -+bfd_boolean bfd_malloc_and_get_section
43.31994 -+   (bfd *abfd, asection *section, bfd_byte **buf);
43.31995 -+
43.31996 -+bfd_boolean bfd_copy_private_section_data
43.31997 -+   (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
43.31998 -+
43.31999 -+#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
43.32000 -+     BFD_SEND (obfd, _bfd_copy_private_section_data, \
43.32001 -+               (ibfd, isection, obfd, osection))
43.32002 -+bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
43.32003 -+
43.32004 -+bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
43.32005 -+
43.32006 -+/* Extracted from archures.c.  */
43.32007 -+enum bfd_architecture
43.32008 -+{
43.32009 -+  bfd_arch_unknown,   /* File arch not known.  */
43.32010 -+  bfd_arch_obscure,   /* Arch known, not one of these.  */
43.32011 -+  bfd_arch_m68k,      /* Motorola 68xxx */
43.32012 -+#define bfd_mach_m68000 1
43.32013 -+#define bfd_mach_m68008 2
43.32014 -+#define bfd_mach_m68010 3
43.32015 -+#define bfd_mach_m68020 4
43.32016 -+#define bfd_mach_m68030 5
43.32017 -+#define bfd_mach_m68040 6
43.32018 -+#define bfd_mach_m68060 7
43.32019 -+#define bfd_mach_cpu32  8
43.32020 -+#define bfd_mach_fido   9
43.32021 -+#define bfd_mach_mcf_isa_a_nodiv 10
43.32022 -+#define bfd_mach_mcf_isa_a 11
43.32023 -+#define bfd_mach_mcf_isa_a_mac 12
43.32024 -+#define bfd_mach_mcf_isa_a_emac 13
43.32025 -+#define bfd_mach_mcf_isa_aplus 14
43.32026 -+#define bfd_mach_mcf_isa_aplus_mac 15
43.32027 -+#define bfd_mach_mcf_isa_aplus_emac 16
43.32028 -+#define bfd_mach_mcf_isa_b_nousp 17
43.32029 -+#define bfd_mach_mcf_isa_b_nousp_mac 18
43.32030 -+#define bfd_mach_mcf_isa_b_nousp_emac 19
43.32031 -+#define bfd_mach_mcf_isa_b 20
43.32032 -+#define bfd_mach_mcf_isa_b_mac 21
43.32033 -+#define bfd_mach_mcf_isa_b_emac 22
43.32034 -+#define bfd_mach_mcf_isa_b_float 23
43.32035 -+#define bfd_mach_mcf_isa_b_float_mac 24
43.32036 -+#define bfd_mach_mcf_isa_b_float_emac 25
43.32037 -+#define bfd_mach_mcf_isa_c 26
43.32038 -+#define bfd_mach_mcf_isa_c_mac 27
43.32039 -+#define bfd_mach_mcf_isa_c_emac 28
43.32040 -+  bfd_arch_vax,       /* DEC Vax */
43.32041 -+  bfd_arch_i960,      /* Intel 960 */
43.32042 -+    /* The order of the following is important.
43.32043 -+       lower number indicates a machine type that
43.32044 -+       only accepts a subset of the instructions
43.32045 -+       available to machines with higher numbers.
43.32046 -+       The exception is the "ca", which is
43.32047 -+       incompatible with all other machines except
43.32048 -+       "core".  */
43.32049 -+
43.32050 -+#define bfd_mach_i960_core      1
43.32051 -+#define bfd_mach_i960_ka_sa     2
43.32052 -+#define bfd_mach_i960_kb_sb     3
43.32053 -+#define bfd_mach_i960_mc        4
43.32054 -+#define bfd_mach_i960_xa        5
43.32055 -+#define bfd_mach_i960_ca        6
43.32056 -+#define bfd_mach_i960_jx        7
43.32057 -+#define bfd_mach_i960_hx        8
43.32058 -+
43.32059 -+  bfd_arch_or32,      /* OpenRISC 32 */
43.32060 -+
43.32061 -+  bfd_arch_sparc,     /* SPARC */
43.32062 -+#define bfd_mach_sparc                 1
43.32063 -+/* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
43.32064 -+#define bfd_mach_sparc_sparclet        2
43.32065 -+#define bfd_mach_sparc_sparclite       3
43.32066 -+#define bfd_mach_sparc_v8plus          4
43.32067 -+#define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */
43.32068 -+#define bfd_mach_sparc_sparclite_le    6
43.32069 -+#define bfd_mach_sparc_v9              7
43.32070 -+#define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
43.32071 -+#define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
43.32072 -+#define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
43.32073 -+/* Nonzero if MACH has the v9 instruction set.  */
43.32074 -+#define bfd_mach_sparc_v9_p(mach) \
43.32075 -+  ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
43.32076 -+   && (mach) != bfd_mach_sparc_sparclite_le)
43.32077 -+/* Nonzero if MACH is a 64 bit sparc architecture.  */
43.32078 -+#define bfd_mach_sparc_64bit_p(mach) \
43.32079 -+  ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
43.32080 -+  bfd_arch_spu,       /* PowerPC SPU */
43.32081 -+#define bfd_mach_spu           256 
43.32082 -+  bfd_arch_mips,      /* MIPS Rxxxx */
43.32083 -+#define bfd_mach_mips3000              3000
43.32084 -+#define bfd_mach_mips3900              3900
43.32085 -+#define bfd_mach_mips4000              4000
43.32086 -+#define bfd_mach_mips4010              4010
43.32087 -+#define bfd_mach_mips4100              4100
43.32088 -+#define bfd_mach_mips4111              4111
43.32089 -+#define bfd_mach_mips4120              4120
43.32090 -+#define bfd_mach_mips4300              4300
43.32091 -+#define bfd_mach_mips4400              4400
43.32092 -+#define bfd_mach_mips4600              4600
43.32093 -+#define bfd_mach_mips4650              4650
43.32094 -+#define bfd_mach_mips5000              5000
43.32095 -+#define bfd_mach_mips5400              5400
43.32096 -+#define bfd_mach_mips5500              5500
43.32097 -+#define bfd_mach_mips6000              6000
43.32098 -+#define bfd_mach_mips7000              7000
43.32099 -+#define bfd_mach_mips8000              8000
43.32100 -+#define bfd_mach_mips9000              9000
43.32101 -+#define bfd_mach_mips10000             10000
43.32102 -+#define bfd_mach_mips12000             12000
43.32103 -+#define bfd_mach_mips16                16
43.32104 -+#define bfd_mach_mips5                 5
43.32105 -+#define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */
43.32106 -+#define bfd_mach_mipsisa32             32
43.32107 -+#define bfd_mach_mipsisa32r2           33
43.32108 -+#define bfd_mach_mipsisa64             64
43.32109 -+#define bfd_mach_mipsisa64r2           65
43.32110 -+  bfd_arch_i386,      /* Intel 386 */
43.32111 -+#define bfd_mach_i386_i386 1
43.32112 -+#define bfd_mach_i386_i8086 2
43.32113 -+#define bfd_mach_i386_i386_intel_syntax 3
43.32114 -+#define bfd_mach_x86_64 64
43.32115 -+#define bfd_mach_x86_64_intel_syntax 65
43.32116 -+  bfd_arch_we32k,     /* AT&T WE32xxx */
43.32117 -+  bfd_arch_tahoe,     /* CCI/Harris Tahoe */
43.32118 -+  bfd_arch_i860,      /* Intel 860 */
43.32119 -+  bfd_arch_i370,      /* IBM 360/370 Mainframes */
43.32120 -+  bfd_arch_romp,      /* IBM ROMP PC/RT */
43.32121 -+  bfd_arch_convex,    /* Convex */
43.32122 -+  bfd_arch_m88k,      /* Motorola 88xxx */
43.32123 -+  bfd_arch_m98k,      /* Motorola 98xxx */
43.32124 -+  bfd_arch_pyramid,   /* Pyramid Technology */
43.32125 -+  bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */
43.32126 -+#define bfd_mach_h8300    1
43.32127 -+#define bfd_mach_h8300h   2
43.32128 -+#define bfd_mach_h8300s   3
43.32129 -+#define bfd_mach_h8300hn  4
43.32130 -+#define bfd_mach_h8300sn  5
43.32131 -+#define bfd_mach_h8300sx  6
43.32132 -+#define bfd_mach_h8300sxn 7
43.32133 -+  bfd_arch_pdp11,     /* DEC PDP-11 */
43.32134 -+  bfd_arch_powerpc,   /* PowerPC */
43.32135 -+#define bfd_mach_ppc           32
43.32136 -+#define bfd_mach_ppc64         64
43.32137 -+#define bfd_mach_ppc_403       403
43.32138 -+#define bfd_mach_ppc_403gc     4030
43.32139 -+#define bfd_mach_ppc_505       505
43.32140 -+#define bfd_mach_ppc_601       601
43.32141 -+#define bfd_mach_ppc_602       602
43.32142 -+#define bfd_mach_ppc_603       603
43.32143 -+#define bfd_mach_ppc_ec603e    6031
43.32144 -+#define bfd_mach_ppc_604       604
43.32145 -+#define bfd_mach_ppc_620       620
43.32146 -+#define bfd_mach_ppc_630       630
43.32147 -+#define bfd_mach_ppc_750       750
43.32148 -+#define bfd_mach_ppc_860       860
43.32149 -+#define bfd_mach_ppc_a35       35
43.32150 -+#define bfd_mach_ppc_rs64ii    642
43.32151 -+#define bfd_mach_ppc_rs64iii   643
43.32152 -+#define bfd_mach_ppc_7400      7400
43.32153 -+#define bfd_mach_ppc_e500      500
43.32154 -+  bfd_arch_rs6000,    /* IBM RS/6000 */
43.32155 -+#define bfd_mach_rs6k          6000
43.32156 -+#define bfd_mach_rs6k_rs1      6001
43.32157 -+#define bfd_mach_rs6k_rsc      6003
43.32158 -+#define bfd_mach_rs6k_rs2      6002
43.32159 -+  bfd_arch_hppa,      /* HP PA RISC */
43.32160 -+#define bfd_mach_hppa10        10
43.32161 -+#define bfd_mach_hppa11        11
43.32162 -+#define bfd_mach_hppa20        20
43.32163 -+#define bfd_mach_hppa20w       25
43.32164 -+  bfd_arch_d10v,      /* Mitsubishi D10V */
43.32165 -+#define bfd_mach_d10v          1
43.32166 -+#define bfd_mach_d10v_ts2      2
43.32167 -+#define bfd_mach_d10v_ts3      3
43.32168 -+  bfd_arch_d30v,      /* Mitsubishi D30V */
43.32169 -+  bfd_arch_dlx,       /* DLX */
43.32170 -+  bfd_arch_m68hc11,   /* Motorola 68HC11 */
43.32171 -+  bfd_arch_m68hc12,   /* Motorola 68HC12 */
43.32172 -+#define bfd_mach_m6812_default 0
43.32173 -+#define bfd_mach_m6812         1
43.32174 -+#define bfd_mach_m6812s        2
43.32175 -+  bfd_arch_z8k,       /* Zilog Z8000 */
43.32176 -+#define bfd_mach_z8001         1
43.32177 -+#define bfd_mach_z8002         2
43.32178 -+  bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */
43.32179 -+  bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */
43.32180 -+#define bfd_mach_sh            1
43.32181 -+#define bfd_mach_sh2        0x20
43.32182 -+#define bfd_mach_sh_dsp     0x2d
43.32183 -+#define bfd_mach_sh2a       0x2a
43.32184 -+#define bfd_mach_sh2a_nofpu 0x2b
43.32185 -+#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
43.32186 -+#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
43.32187 -+#define bfd_mach_sh2a_or_sh4  0x2a3
43.32188 -+#define bfd_mach_sh2a_or_sh3e 0x2a4
43.32189 -+#define bfd_mach_sh2e       0x2e
43.32190 -+#define bfd_mach_sh3        0x30
43.32191 -+#define bfd_mach_sh3_nommu  0x31
43.32192 -+#define bfd_mach_sh3_dsp    0x3d
43.32193 -+#define bfd_mach_sh3e       0x3e
43.32194 -+#define bfd_mach_sh4        0x40
43.32195 -+#define bfd_mach_sh4_nofpu  0x41
43.32196 -+#define bfd_mach_sh4_nommu_nofpu  0x42
43.32197 -+#define bfd_mach_sh4a       0x4a
43.32198 -+#define bfd_mach_sh4a_nofpu 0x4b
43.32199 -+#define bfd_mach_sh4al_dsp  0x4d
43.32200 -+#define bfd_mach_sh5        0x50
43.32201 -+  bfd_arch_alpha,     /* Dec Alpha */
43.32202 -+#define bfd_mach_alpha_ev4  0x10
43.32203 -+#define bfd_mach_alpha_ev5  0x20
43.32204 -+#define bfd_mach_alpha_ev6  0x30
43.32205 -+  bfd_arch_arm,       /* Advanced Risc Machines ARM.  */
43.32206 -+#define bfd_mach_arm_unknown   0
43.32207 -+#define bfd_mach_arm_2         1
43.32208 -+#define bfd_mach_arm_2a        2
43.32209 -+#define bfd_mach_arm_3         3
43.32210 -+#define bfd_mach_arm_3M        4
43.32211 -+#define bfd_mach_arm_4         5
43.32212 -+#define bfd_mach_arm_4T        6
43.32213 -+#define bfd_mach_arm_5         7
43.32214 -+#define bfd_mach_arm_5T        8
43.32215 -+#define bfd_mach_arm_5TE       9
43.32216 -+#define bfd_mach_arm_XScale    10
43.32217 -+#define bfd_mach_arm_ep9312    11
43.32218 -+#define bfd_mach_arm_iWMMXt    12
43.32219 -+#define bfd_mach_arm_iWMMXt2   13
43.32220 -+  bfd_arch_ns32k,     /* National Semiconductors ns32000 */
43.32221 -+  bfd_arch_w65,       /* WDC 65816 */
43.32222 -+  bfd_arch_tic30,     /* Texas Instruments TMS320C30 */
43.32223 -+  bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */
43.32224 -+#define bfd_mach_tic3x         30
43.32225 -+#define bfd_mach_tic4x         40
43.32226 -+  bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */
43.32227 -+  bfd_arch_tic80,     /* TI TMS320c80 (MVP) */
43.32228 -+  bfd_arch_v850,      /* NEC V850 */
43.32229 -+#define bfd_mach_v850          1
43.32230 -+#define bfd_mach_v850e         'E'
43.32231 -+#define bfd_mach_v850e1        '1'
43.32232 -+  bfd_arch_arc,       /* ARC Cores */
43.32233 -+#define bfd_mach_arc_5         5
43.32234 -+#define bfd_mach_arc_6         6
43.32235 -+#define bfd_mach_arc_7         7
43.32236 -+#define bfd_mach_arc_8         8
43.32237 -+ bfd_arch_m32c,     /* Renesas M16C/M32C.  */
43.32238 -+#define bfd_mach_m16c        0x75
43.32239 -+#define bfd_mach_m32c        0x78
43.32240 -+  bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */
43.32241 -+#define bfd_mach_m32r          1 /* For backwards compatibility.  */
43.32242 -+#define bfd_mach_m32rx         'x'
43.32243 -+#define bfd_mach_m32r2         '2'
43.32244 -+  bfd_arch_mn10200,   /* Matsushita MN10200 */
43.32245 -+  bfd_arch_mn10300,   /* Matsushita MN10300 */
43.32246 -+#define bfd_mach_mn10300               300
43.32247 -+#define bfd_mach_am33          330
43.32248 -+#define bfd_mach_am33_2        332
43.32249 -+  bfd_arch_fr30,
43.32250 -+#define bfd_mach_fr30          0x46523330
43.32251 -+  bfd_arch_frv,
43.32252 -+#define bfd_mach_frv           1
43.32253 -+#define bfd_mach_frvsimple     2
43.32254 -+#define bfd_mach_fr300         300
43.32255 -+#define bfd_mach_fr400         400
43.32256 -+#define bfd_mach_fr450         450
43.32257 -+#define bfd_mach_frvtomcat     499     /* fr500 prototype */
43.32258 -+#define bfd_mach_fr500         500
43.32259 -+#define bfd_mach_fr550         550
43.32260 -+  bfd_arch_mcore,
43.32261 -+  bfd_arch_mep,
43.32262 -+#define bfd_mach_mep           1
43.32263 -+#define bfd_mach_mep_h1        0x6831
43.32264 -+  bfd_arch_ia64,      /* HP/Intel ia64 */
43.32265 -+#define bfd_mach_ia64_elf64    64
43.32266 -+#define bfd_mach_ia64_elf32    32
43.32267 -+  bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */
43.32268 -+#define bfd_mach_ip2022        1
43.32269 -+#define bfd_mach_ip2022ext     2
43.32270 -+ bfd_arch_iq2000,     /* Vitesse IQ2000.  */
43.32271 -+#define bfd_mach_iq2000        1
43.32272 -+#define bfd_mach_iq10          2
43.32273 -+  bfd_arch_mt,
43.32274 -+#define bfd_mach_ms1           1
43.32275 -+#define bfd_mach_mrisc2        2
43.32276 -+#define bfd_mach_ms2           3
43.32277 -+  bfd_arch_pj,
43.32278 -+  bfd_arch_avr,       /* Atmel AVR microcontrollers.  */
43.32279 -+#define bfd_mach_avr1          1
43.32280 -+#define bfd_mach_avr2          2
43.32281 -+#define bfd_mach_avr3          3
43.32282 -+#define bfd_mach_avr4          4
43.32283 -+#define bfd_mach_avr5          5
43.32284 -+#define bfd_mach_avr6          6
43.32285 -+  bfd_arch_bfin,        /* ADI Blackfin */
43.32286 -+#define bfd_mach_bfin          1
43.32287 -+  bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */
43.32288 -+#define bfd_mach_cr16          1
43.32289 -+  bfd_arch_cr16c,       /* National Semiconductor CompactRISC. */
43.32290 -+#define bfd_mach_cr16c         1
43.32291 -+  bfd_arch_crx,       /*  National Semiconductor CRX.  */
43.32292 -+#define bfd_mach_crx           1
43.32293 -+  bfd_arch_cris,      /* Axis CRIS */
43.32294 -+#define bfd_mach_cris_v0_v10   255
43.32295 -+#define bfd_mach_cris_v32      32
43.32296 -+#define bfd_mach_cris_v10_v32  1032
43.32297 -+  bfd_arch_s390,      /* IBM s390 */
43.32298 -+#define bfd_mach_s390_31       31
43.32299 -+#define bfd_mach_s390_64       64
43.32300 -+  bfd_arch_score,     /* Sunplus score */ 
43.32301 -+  bfd_arch_openrisc,  /* OpenRISC */
43.32302 -+  bfd_arch_mmix,      /* Donald Knuth's educational processor.  */
43.32303 -+  bfd_arch_xstormy16,
43.32304 -+#define bfd_mach_xstormy16     1
43.32305 -+  bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
43.32306 -+#define bfd_mach_msp11          11
43.32307 -+#define bfd_mach_msp110         110
43.32308 -+#define bfd_mach_msp12          12
43.32309 -+#define bfd_mach_msp13          13
43.32310 -+#define bfd_mach_msp14          14
43.32311 -+#define bfd_mach_msp15          15
43.32312 -+#define bfd_mach_msp16          16
43.32313 -+#define bfd_mach_msp21          21
43.32314 -+#define bfd_mach_msp31          31
43.32315 -+#define bfd_mach_msp32          32
43.32316 -+#define bfd_mach_msp33          33
43.32317 -+#define bfd_mach_msp41          41
43.32318 -+#define bfd_mach_msp42          42
43.32319 -+#define bfd_mach_msp43          43
43.32320 -+#define bfd_mach_msp44          44
43.32321 -+  bfd_arch_xc16x,     /* Infineon's XC16X Series.               */
43.32322 -+#define bfd_mach_xc16x         1
43.32323 -+#define bfd_mach_xc16xl        2
43.32324 -+#define bfd_mach_xc16xs         3
43.32325 -+  bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
43.32326 -+#define bfd_mach_xtensa        1
43.32327 -+   bfd_arch_maxq,     /* Dallas MAXQ 10/20 */
43.32328 -+#define bfd_mach_maxq10    10
43.32329 -+#define bfd_mach_maxq20    20
43.32330 -+  bfd_arch_z80,
43.32331 -+#define bfd_mach_z80strict      1 /* No undocumented opcodes.  */
43.32332 -+#define bfd_mach_z80            3 /* With ixl, ixh, iyl, and iyh.  */
43.32333 -+#define bfd_mach_z80full        7 /* All undocumented instructions.  */
43.32334 -+#define bfd_mach_r800           11 /* R800: successor with multiplication.  */
43.32335 -+  bfd_arch_last
43.32336 -+  };
43.32337 -+
43.32338 -+typedef struct bfd_arch_info
43.32339 -+{
43.32340 -+  int bits_per_word;
43.32341 -+  int bits_per_address;
43.32342 -+  int bits_per_byte;
43.32343 -+  enum bfd_architecture arch;
43.32344 -+  unsigned long mach;
43.32345 -+  const char *arch_name;
43.32346 -+  const char *printable_name;
43.32347 -+  unsigned int section_align_power;
43.32348 -+  /* TRUE if this is the default machine for the architecture.
43.32349 -+     The default arch should be the first entry for an arch so that
43.32350 -+     all the entries for that arch can be accessed via <<next>>.  */
43.32351 -+  bfd_boolean the_default;
43.32352 -+  const struct bfd_arch_info * (*compatible)
43.32353 -+    (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
43.32354 -+
43.32355 -+  bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
43.32356 -+
43.32357 -+  const struct bfd_arch_info *next;
43.32358 -+}
43.32359 -+bfd_arch_info_type;
43.32360 -+
43.32361 -+const char *bfd_printable_name (bfd *abfd);
43.32362 -+
43.32363 -+const bfd_arch_info_type *bfd_scan_arch (const char *string);
43.32364 -+
43.32365 -+const char **bfd_arch_list (void);
43.32366 -+
43.32367 -+const bfd_arch_info_type *bfd_arch_get_compatible
43.32368 -+   (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
43.32369 -+
43.32370 -+void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
43.32371 -+
43.32372 -+enum bfd_architecture bfd_get_arch (bfd *abfd);
43.32373 -+
43.32374 -+unsigned long bfd_get_mach (bfd *abfd);
43.32375 -+
43.32376 -+unsigned int bfd_arch_bits_per_byte (bfd *abfd);
43.32377 -+
43.32378 -+unsigned int bfd_arch_bits_per_address (bfd *abfd);
43.32379 -+
43.32380 -+const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
43.32381 -+
43.32382 -+const bfd_arch_info_type *bfd_lookup_arch
43.32383 -+   (enum bfd_architecture arch, unsigned long machine);
43.32384 -+
43.32385 -+const char *bfd_printable_arch_mach
43.32386 -+   (enum bfd_architecture arch, unsigned long machine);
43.32387 -+
43.32388 -+unsigned int bfd_octets_per_byte (bfd *abfd);
43.32389 -+
43.32390 -+unsigned int bfd_arch_mach_octets_per_byte
43.32391 -+   (enum bfd_architecture arch, unsigned long machine);
43.32392 -+
43.32393 -+/* Extracted from reloc.c.  */
43.32394 -+typedef enum bfd_reloc_status
43.32395 -+{
43.32396 -+  /* No errors detected.  */
43.32397 -+  bfd_reloc_ok,
43.32398 -+
43.32399 -+  /* The relocation was performed, but there was an overflow.  */
43.32400 -+  bfd_reloc_overflow,
43.32401 -+
43.32402 -+  /* The address to relocate was not within the section supplied.  */
43.32403 -+  bfd_reloc_outofrange,
43.32404 -+
43.32405 -+  /* Used by special functions.  */
43.32406 -+  bfd_reloc_continue,
43.32407 -+
43.32408 -+  /* Unsupported relocation size requested.  */
43.32409 -+  bfd_reloc_notsupported,
43.32410 -+
43.32411 -+  /* Unused.  */
43.32412 -+  bfd_reloc_other,
43.32413 -+
43.32414 -+  /* The symbol to relocate against was undefined.  */
43.32415 -+  bfd_reloc_undefined,
43.32416 -+
43.32417 -+  /* The relocation was performed, but may not be ok - presently
43.32418 -+     generated only when linking i960 coff files with i960 b.out
43.32419 -+     symbols.  If this type is returned, the error_message argument
43.32420 -+     to bfd_perform_relocation will be set.  */
43.32421 -+  bfd_reloc_dangerous
43.32422 -+ }
43.32423 -+ bfd_reloc_status_type;
43.32424 -+
43.32425 -+
43.32426 -+typedef struct reloc_cache_entry
43.32427 -+{
43.32428 -+  /* A pointer into the canonical table of pointers.  */
43.32429 -+  struct bfd_symbol **sym_ptr_ptr;
43.32430 -+
43.32431 -+  /* offset in section.  */
43.32432 -+  bfd_size_type address;
43.32433 -+
43.32434 -+  /* addend for relocation value.  */
43.32435 -+  bfd_vma addend;
43.32436 -+
43.32437 -+  /* Pointer to how to perform the required relocation.  */
43.32438 -+  reloc_howto_type *howto;
43.32439 -+
43.32440 -+}
43.32441 -+arelent;
43.32442 -+
43.32443 -+enum complain_overflow
43.32444 -+{
43.32445 -+  /* Do not complain on overflow.  */
43.32446 -+  complain_overflow_dont,
43.32447 -+
43.32448 -+  /* Complain if the value overflows when considered as a signed
43.32449 -+     number one bit larger than the field.  ie. A bitfield of N bits
43.32450 -+     is allowed to represent -2**n to 2**n-1.  */
43.32451 -+  complain_overflow_bitfield,
43.32452 -+
43.32453 -+  /* Complain if the value overflows when considered as a signed
43.32454 -+     number.  */
43.32455 -+  complain_overflow_signed,
43.32456 -+
43.32457 -+  /* Complain if the value overflows when considered as an
43.32458 -+     unsigned number.  */
43.32459 -+  complain_overflow_unsigned
43.32460 -+};
43.32461 -+
43.32462 -+struct reloc_howto_struct
43.32463 -+{
43.32464 -+  /*  The type field has mainly a documentary use - the back end can
43.32465 -+      do what it wants with it, though normally the back end's
43.32466 -+      external idea of what a reloc number is stored
43.32467 -+      in this field.  For example, a PC relative word relocation
43.32468 -+      in a coff environment has the type 023 - because that's
43.32469 -+      what the outside world calls a R_PCRWORD reloc.  */
43.32470 -+  unsigned int type;
43.32471 -+
43.32472 -+  /*  The value the final relocation is shifted right by.  This drops
43.32473 -+      unwanted data from the relocation.  */
43.32474 -+  unsigned int rightshift;
43.32475 -+
43.32476 -+  /*  The size of the item to be relocated.  This is *not* a
43.32477 -+      power-of-two measure.  To get the number of bytes operated
43.32478 -+      on by a type of relocation, use bfd_get_reloc_size.  */
43.32479 -+  int size;
43.32480 -+
43.32481 -+  /*  The number of bits in the item to be relocated.  This is used
43.32482 -+      when doing overflow checking.  */
43.32483 -+  unsigned int bitsize;
43.32484 -+
43.32485 -+  /*  Notes that the relocation is relative to the location in the
43.32486 -+      data section of the addend.  The relocation function will
43.32487 -+      subtract from the relocation value the address of the location
43.32488 -+      being relocated.  */
43.32489 -+  bfd_boolean pc_relative;
43.32490 -+
43.32491 -+  /*  The bit position of the reloc value in the destination.
43.32492 -+      The relocated value is left shifted by this amount.  */
43.32493 -+  unsigned int bitpos;
43.32494 -+
43.32495 -+  /* What type of overflow error should be checked for when
43.32496 -+     relocating.  */
43.32497 -+  enum complain_overflow complain_on_overflow;
43.32498 -+
43.32499 -+  /* If this field is non null, then the supplied function is
43.32500 -+     called rather than the normal function.  This allows really
43.32501 -+     strange relocation methods to be accommodated (e.g., i960 callj
43.32502 -+     instructions).  */
43.32503 -+  bfd_reloc_status_type (*special_function)
43.32504 -+    (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
43.32505 -+     bfd *, char **);
43.32506 -+
43.32507 -+  /* The textual name of the relocation type.  */
43.32508 -+  char *name;
43.32509 -+
43.32510 -+  /* Some formats record a relocation addend in the section contents
43.32511 -+     rather than with the relocation.  For ELF formats this is the
43.32512 -+     distinction between USE_REL and USE_RELA (though the code checks
43.32513 -+     for USE_REL == 1/0).  The value of this field is TRUE if the
43.32514 -+     addend is recorded with the section contents; when performing a
43.32515 -+     partial link (ld -r) the section contents (the data) will be
43.32516 -+     modified.  The value of this field is FALSE if addends are
43.32517 -+     recorded with the relocation (in arelent.addend); when performing
43.32518 -+     a partial link the relocation will be modified.
43.32519 -+     All relocations for all ELF USE_RELA targets should set this field
43.32520 -+     to FALSE (values of TRUE should be looked on with suspicion).
43.32521 -+     However, the converse is not true: not all relocations of all ELF
43.32522 -+     USE_REL targets set this field to TRUE.  Why this is so is peculiar
43.32523 -+     to each particular target.  For relocs that aren't used in partial
43.32524 -+     links (e.g. GOT stuff) it doesn't matter what this is set to.  */
43.32525 -+  bfd_boolean partial_inplace;
43.32526 -+
43.32527 -+  /* src_mask selects the part of the instruction (or data) to be used
43.32528 -+     in the relocation sum.  If the target relocations don't have an
43.32529 -+     addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
43.32530 -+     dst_mask to extract the addend from the section contents.  If
43.32531 -+     relocations do have an addend in the reloc, eg. ELF USE_RELA, this
43.32532 -+     field should be zero.  Non-zero values for ELF USE_RELA targets are
43.32533 -+     bogus as in those cases the value in the dst_mask part of the
43.32534 -+     section contents should be treated as garbage.  */
43.32535 -+  bfd_vma src_mask;
43.32536 -+
43.32537 -+  /* dst_mask selects which parts of the instruction (or data) are
43.32538 -+     replaced with a relocated value.  */
43.32539 -+  bfd_vma dst_mask;
43.32540 -+
43.32541 -+  /* When some formats create PC relative instructions, they leave
43.32542 -+     the value of the pc of the place being relocated in the offset
43.32543 -+     slot of the instruction, so that a PC relative relocation can
43.32544 -+     be made just by adding in an ordinary offset (e.g., sun3 a.out).
43.32545 -+     Some formats leave the displacement part of an instruction
43.32546 -+     empty (e.g., m88k bcs); this flag signals the fact.  */
43.32547 -+  bfd_boolean pcrel_offset;
43.32548 -+};
43.32549 -+
43.32550 -+#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
43.32551 -+  { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
43.32552 -+#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
43.32553 -+  HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
43.32554 -+         NAME, FALSE, 0, 0, IN)
43.32555 -+
43.32556 -+#define EMPTY_HOWTO(C) \
43.32557 -+  HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
43.32558 -+         NULL, FALSE, 0, 0, FALSE)
43.32559 -+
43.32560 -+#define HOWTO_PREPARE(relocation, symbol)               \
43.32561 -+  {                                                     \
43.32562 -+    if (symbol != NULL)                                 \
43.32563 -+      {                                                 \
43.32564 -+        if (bfd_is_com_section (symbol->section))       \
43.32565 -+          {                                             \
43.32566 -+            relocation = 0;                             \
43.32567 -+          }                                             \
43.32568 -+        else                                            \
43.32569 -+          {                                             \
43.32570 -+            relocation = symbol->value;                 \
43.32571 -+          }                                             \
43.32572 -+      }                                                 \
43.32573 -+  }
43.32574 -+
43.32575 -+unsigned int bfd_get_reloc_size (reloc_howto_type *);
43.32576 -+
43.32577 -+typedef struct relent_chain
43.32578 -+{
43.32579 -+  arelent relent;
43.32580 -+  struct relent_chain *next;
43.32581 -+}
43.32582 -+arelent_chain;
43.32583 -+
43.32584 -+bfd_reloc_status_type bfd_check_overflow
43.32585 -+   (enum complain_overflow how,
43.32586 -+    unsigned int bitsize,
43.32587 -+    unsigned int rightshift,
43.32588 -+    unsigned int addrsize,
43.32589 -+    bfd_vma relocation);
43.32590 -+
43.32591 -+bfd_reloc_status_type bfd_perform_relocation
43.32592 -+   (bfd *abfd,
43.32593 -+    arelent *reloc_entry,
43.32594 -+    void *data,
43.32595 -+    asection *input_section,
43.32596 -+    bfd *output_bfd,
43.32597 -+    char **error_message);
43.32598 -+
43.32599 -+bfd_reloc_status_type bfd_install_relocation
43.32600 -+   (bfd *abfd,
43.32601 -+    arelent *reloc_entry,
43.32602 -+    void *data, bfd_vma data_start,
43.32603 -+    asection *input_section,
43.32604 -+    char **error_message);
43.32605 -+
43.32606 -+enum bfd_reloc_code_real {
43.32607 -+  _dummy_first_bfd_reloc_code_real,
43.32608 -+
43.32609 -+
43.32610 -+/* Basic absolute relocations of N bits.  */
43.32611 -+  BFD_RELOC_64,
43.32612 -+  BFD_RELOC_32,
43.32613 -+  BFD_RELOC_26,
43.32614 -+  BFD_RELOC_24,
43.32615 -+  BFD_RELOC_16,
43.32616 -+  BFD_RELOC_14,
43.32617 -+  BFD_RELOC_8,
43.32618 -+
43.32619 -+/* PC-relative relocations.  Sometimes these are relative to the address
43.32620 -+of the relocation itself; sometimes they are relative to the start of
43.32621 -+the section containing the relocation.  It depends on the specific target.
43.32622 -+
43.32623 -+The 24-bit relocation is used in some Intel 960 configurations.  */
43.32624 -+  BFD_RELOC_64_PCREL,
43.32625 -+  BFD_RELOC_32_PCREL,
43.32626 -+  BFD_RELOC_24_PCREL,
43.32627 -+  BFD_RELOC_16_PCREL,
43.32628 -+  BFD_RELOC_12_PCREL,
43.32629 -+  BFD_RELOC_8_PCREL,
43.32630 -+
43.32631 -+/* Section relative relocations.  Some targets need this for DWARF2.  */
43.32632 -+  BFD_RELOC_32_SECREL,
43.32633 -+
43.32634 -+/* For ELF.  */
43.32635 -+  BFD_RELOC_32_GOT_PCREL,
43.32636 -+  BFD_RELOC_16_GOT_PCREL,
43.32637 -+  BFD_RELOC_8_GOT_PCREL,
43.32638 -+  BFD_RELOC_32_GOTOFF,
43.32639 -+  BFD_RELOC_16_GOTOFF,
43.32640 -+  BFD_RELOC_LO16_GOTOFF,
43.32641 -+  BFD_RELOC_HI16_GOTOFF,
43.32642 -+  BFD_RELOC_HI16_S_GOTOFF,
43.32643 -+  BFD_RELOC_8_GOTOFF,
43.32644 -+  BFD_RELOC_64_PLT_PCREL,
43.32645 -+  BFD_RELOC_32_PLT_PCREL,
43.32646 -+  BFD_RELOC_24_PLT_PCREL,
43.32647 -+  BFD_RELOC_16_PLT_PCREL,
43.32648 -+  BFD_RELOC_8_PLT_PCREL,
43.32649 -+  BFD_RELOC_64_PLTOFF,
43.32650 -+  BFD_RELOC_32_PLTOFF,
43.32651 -+  BFD_RELOC_16_PLTOFF,
43.32652 -+  BFD_RELOC_LO16_PLTOFF,
43.32653 -+  BFD_RELOC_HI16_PLTOFF,
43.32654 -+  BFD_RELOC_HI16_S_PLTOFF,
43.32655 -+  BFD_RELOC_8_PLTOFF,
43.32656 -+
43.32657 -+/* Relocations used by 68K ELF.  */
43.32658 -+  BFD_RELOC_68K_GLOB_DAT,
43.32659 -+  BFD_RELOC_68K_JMP_SLOT,
43.32660 -+  BFD_RELOC_68K_RELATIVE,
43.32661 -+
43.32662 -+/* Linkage-table relative.  */
43.32663 -+  BFD_RELOC_32_BASEREL,
43.32664 -+  BFD_RELOC_16_BASEREL,
43.32665 -+  BFD_RELOC_LO16_BASEREL,
43.32666 -+  BFD_RELOC_HI16_BASEREL,
43.32667 -+  BFD_RELOC_HI16_S_BASEREL,
43.32668 -+  BFD_RELOC_8_BASEREL,
43.32669 -+  BFD_RELOC_RVA,
43.32670 -+
43.32671 -+/* Absolute 8-bit relocation, but used to form an address like 0xFFnn.  */
43.32672 -+  BFD_RELOC_8_FFnn,
43.32673 -+
43.32674 -+/* These PC-relative relocations are stored as word displacements --
43.32675 -+i.e., byte displacements shifted right two bits.  The 30-bit word
43.32676 -+displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
43.32677 -+SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
43.32678 -+signed 16-bit displacement is used on the MIPS, and the 23-bit
43.32679 -+displacement is used on the Alpha.  */
43.32680 -+  BFD_RELOC_32_PCREL_S2,
43.32681 -+  BFD_RELOC_16_PCREL_S2,
43.32682 -+  BFD_RELOC_23_PCREL_S2,
43.32683 -+
43.32684 -+/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
43.32685 -+the target word.  These are used on the SPARC.  */
43.32686 -+  BFD_RELOC_HI22,
43.32687 -+  BFD_RELOC_LO10,
43.32688 -+
43.32689 -+/* For systems that allocate a Global Pointer register, these are
43.32690 -+displacements off that register.  These relocation types are
43.32691 -+handled specially, because the value the register will have is
43.32692 -+decided relatively late.  */
43.32693 -+  BFD_RELOC_GPREL16,
43.32694 -+  BFD_RELOC_GPREL32,
43.32695 -+
43.32696 -+/* Reloc types used for i960/b.out.  */
43.32697 -+  BFD_RELOC_I960_CALLJ,
43.32698 -+
43.32699 -+/* SPARC ELF relocations.  There is probably some overlap with other
43.32700 -+relocation types already defined.  */
43.32701 -+  BFD_RELOC_NONE,
43.32702 -+  BFD_RELOC_SPARC_WDISP22,
43.32703 -+  BFD_RELOC_SPARC22,
43.32704 -+  BFD_RELOC_SPARC13,
43.32705 -+  BFD_RELOC_SPARC_GOT10,
43.32706 -+  BFD_RELOC_SPARC_GOT13,
43.32707 -+  BFD_RELOC_SPARC_GOT22,
43.32708 -+  BFD_RELOC_SPARC_PC10,
43.32709 -+  BFD_RELOC_SPARC_PC22,
43.32710 -+  BFD_RELOC_SPARC_WPLT30,
43.32711 -+  BFD_RELOC_SPARC_COPY,
43.32712 -+  BFD_RELOC_SPARC_GLOB_DAT,
43.32713 -+  BFD_RELOC_SPARC_JMP_SLOT,
43.32714 -+  BFD_RELOC_SPARC_RELATIVE,
43.32715 -+  BFD_RELOC_SPARC_UA16,
43.32716 -+  BFD_RELOC_SPARC_UA32,
43.32717 -+  BFD_RELOC_SPARC_UA64,
43.32718 -+
43.32719 -+/* I think these are specific to SPARC a.out (e.g., Sun 4).  */
43.32720 -+  BFD_RELOC_SPARC_BASE13,
43.32721 -+  BFD_RELOC_SPARC_BASE22,
43.32722 -+
43.32723 -+/* SPARC64 relocations  */
43.32724 -+#define BFD_RELOC_SPARC_64 BFD_RELOC_64
43.32725 -+  BFD_RELOC_SPARC_10,
43.32726 -+  BFD_RELOC_SPARC_11,
43.32727 -+  BFD_RELOC_SPARC_OLO10,
43.32728 -+  BFD_RELOC_SPARC_HH22,
43.32729 -+  BFD_RELOC_SPARC_HM10,
43.32730 -+  BFD_RELOC_SPARC_LM22,
43.32731 -+  BFD_RELOC_SPARC_PC_HH22,
43.32732 -+  BFD_RELOC_SPARC_PC_HM10,
43.32733 -+  BFD_RELOC_SPARC_PC_LM22,
43.32734 -+  BFD_RELOC_SPARC_WDISP16,
43.32735 -+  BFD_RELOC_SPARC_WDISP19,
43.32736 -+  BFD_RELOC_SPARC_7,
43.32737 -+  BFD_RELOC_SPARC_6,
43.32738 -+  BFD_RELOC_SPARC_5,
43.32739 -+#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
43.32740 -+  BFD_RELOC_SPARC_PLT32,
43.32741 -+  BFD_RELOC_SPARC_PLT64,
43.32742 -+  BFD_RELOC_SPARC_HIX22,
43.32743 -+  BFD_RELOC_SPARC_LOX10,
43.32744 -+  BFD_RELOC_SPARC_H44,
43.32745 -+  BFD_RELOC_SPARC_M44,
43.32746 -+  BFD_RELOC_SPARC_L44,
43.32747 -+  BFD_RELOC_SPARC_REGISTER,
43.32748 -+
43.32749 -+/* SPARC little endian relocation  */
43.32750 -+  BFD_RELOC_SPARC_REV32,
43.32751 -+
43.32752 -+/* SPARC TLS relocations  */
43.32753 -+  BFD_RELOC_SPARC_TLS_GD_HI22,
43.32754 -+  BFD_RELOC_SPARC_TLS_GD_LO10,
43.32755 -+  BFD_RELOC_SPARC_TLS_GD_ADD,
43.32756 -+  BFD_RELOC_SPARC_TLS_GD_CALL,
43.32757 -+  BFD_RELOC_SPARC_TLS_LDM_HI22,
43.32758 -+  BFD_RELOC_SPARC_TLS_LDM_LO10,
43.32759 -+  BFD_RELOC_SPARC_TLS_LDM_ADD,
43.32760 -+  BFD_RELOC_SPARC_TLS_LDM_CALL,
43.32761 -+  BFD_RELOC_SPARC_TLS_LDO_HIX22,
43.32762 -+  BFD_RELOC_SPARC_TLS_LDO_LOX10,
43.32763 -+  BFD_RELOC_SPARC_TLS_LDO_ADD,
43.32764 -+  BFD_RELOC_SPARC_TLS_IE_HI22,
43.32765 -+  BFD_RELOC_SPARC_TLS_IE_LO10,
43.32766 -+  BFD_RELOC_SPARC_TLS_IE_LD,
43.32767 -+  BFD_RELOC_SPARC_TLS_IE_LDX,
43.32768 -+  BFD_RELOC_SPARC_TLS_IE_ADD,
43.32769 -+  BFD_RELOC_SPARC_TLS_LE_HIX22,
43.32770 -+  BFD_RELOC_SPARC_TLS_LE_LOX10,
43.32771 -+  BFD_RELOC_SPARC_TLS_DTPMOD32,
43.32772 -+  BFD_RELOC_SPARC_TLS_DTPMOD64,
43.32773 -+  BFD_RELOC_SPARC_TLS_DTPOFF32,
43.32774 -+  BFD_RELOC_SPARC_TLS_DTPOFF64,
43.32775 -+  BFD_RELOC_SPARC_TLS_TPOFF32,
43.32776 -+  BFD_RELOC_SPARC_TLS_TPOFF64,
43.32777 -+
43.32778 -+/* SPU Relocations.  */
43.32779 -+  BFD_RELOC_SPU_IMM7,
43.32780 -+  BFD_RELOC_SPU_IMM8,
43.32781 -+  BFD_RELOC_SPU_IMM10,
43.32782 -+  BFD_RELOC_SPU_IMM10W,
43.32783 -+  BFD_RELOC_SPU_IMM16,
43.32784 -+  BFD_RELOC_SPU_IMM16W,
43.32785 -+  BFD_RELOC_SPU_IMM18,
43.32786 -+  BFD_RELOC_SPU_PCREL9a,
43.32787 -+  BFD_RELOC_SPU_PCREL9b,
43.32788 -+  BFD_RELOC_SPU_PCREL16,
43.32789 -+  BFD_RELOC_SPU_LO16,
43.32790 -+  BFD_RELOC_SPU_HI16,
43.32791 -+  BFD_RELOC_SPU_PPU32,
43.32792 -+  BFD_RELOC_SPU_PPU64,
43.32793 -+
43.32794 -+/* Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
43.32795 -+"addend" in some special way.
43.32796 -+For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
43.32797 -+writing; when reading, it will be the absolute section symbol.  The
43.32798 -+addend is the displacement in bytes of the "lda" instruction from
43.32799 -+the "ldah" instruction (which is at the address of this reloc).  */
43.32800 -+  BFD_RELOC_ALPHA_GPDISP_HI16,
43.32801 -+
43.32802 -+/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
43.32803 -+with GPDISP_HI16 relocs.  The addend is ignored when writing the
43.32804 -+relocations out, and is filled in with the file's GP value on
43.32805 -+reading, for convenience.  */
43.32806 -+  BFD_RELOC_ALPHA_GPDISP_LO16,
43.32807 -+
43.32808 -+/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
43.32809 -+relocation except that there is no accompanying GPDISP_LO16
43.32810 -+relocation.  */
43.32811 -+  BFD_RELOC_ALPHA_GPDISP,
43.32812 -+
43.32813 -+/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
43.32814 -+the assembler turns it into a LDQ instruction to load the address of
43.32815 -+the symbol, and then fills in a register in the real instruction.
43.32816 -+
43.32817 -+The LITERAL reloc, at the LDQ instruction, refers to the .lita
43.32818 -+section symbol.  The addend is ignored when writing, but is filled
43.32819 -+in with the file's GP value on reading, for convenience, as with the
43.32820 -+GPDISP_LO16 reloc.
43.32821 -+
43.32822 -+The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
43.32823 -+It should refer to the symbol to be referenced, as with 16_GOTOFF,
43.32824 -+but it generates output not based on the position within the .got
43.32825 -+section, but relative to the GP value chosen for the file during the
43.32826 -+final link stage.
43.32827 -+
43.32828 -+The LITUSE reloc, on the instruction using the loaded address, gives
43.32829 -+information to the linker that it might be able to use to optimize
43.32830 -+away some literal section references.  The symbol is ignored (read
43.32831 -+as the absolute section symbol), and the "addend" indicates the type
43.32832 -+of instruction using the register:
43.32833 -+1 - "memory" fmt insn
43.32834 -+2 - byte-manipulation (byte offset reg)
43.32835 -+3 - jsr (target of branch)  */
43.32836 -+  BFD_RELOC_ALPHA_LITERAL,
43.32837 -+  BFD_RELOC_ALPHA_ELF_LITERAL,
43.32838 -+  BFD_RELOC_ALPHA_LITUSE,
43.32839 -+
43.32840 -+/* The HINT relocation indicates a value that should be filled into the
43.32841 -+"hint" field of a jmp/jsr/ret instruction, for possible branch-
43.32842 -+prediction logic which may be provided on some processors.  */
43.32843 -+  BFD_RELOC_ALPHA_HINT,
43.32844 -+
43.32845 -+/* The LINKAGE relocation outputs a linkage pair in the object file,
43.32846 -+which is filled by the linker.  */
43.32847 -+  BFD_RELOC_ALPHA_LINKAGE,
43.32848 -+
43.32849 -+/* The CODEADDR relocation outputs a STO_CA in the object file,
43.32850 -+which is filled by the linker.  */
43.32851 -+  BFD_RELOC_ALPHA_CODEADDR,
43.32852 -+
43.32853 -+/* The GPREL_HI/LO relocations together form a 32-bit offset from the
43.32854 -+GP register.  */
43.32855 -+  BFD_RELOC_ALPHA_GPREL_HI16,
43.32856 -+  BFD_RELOC_ALPHA_GPREL_LO16,
43.32857 -+
43.32858 -+/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
43.32859 -+share a common GP, and the target address is adjusted for
43.32860 -+STO_ALPHA_STD_GPLOAD.  */
43.32861 -+  BFD_RELOC_ALPHA_BRSGP,
43.32862 -+
43.32863 -+/* Alpha thread-local storage relocations.  */
43.32864 -+  BFD_RELOC_ALPHA_TLSGD,
43.32865 -+  BFD_RELOC_ALPHA_TLSLDM,
43.32866 -+  BFD_RELOC_ALPHA_DTPMOD64,
43.32867 -+  BFD_RELOC_ALPHA_GOTDTPREL16,
43.32868 -+  BFD_RELOC_ALPHA_DTPREL64,
43.32869 -+  BFD_RELOC_ALPHA_DTPREL_HI16,
43.32870 -+  BFD_RELOC_ALPHA_DTPREL_LO16,
43.32871 -+  BFD_RELOC_ALPHA_DTPREL16,
43.32872 -+  BFD_RELOC_ALPHA_GOTTPREL16,
43.32873 -+  BFD_RELOC_ALPHA_TPREL64,
43.32874 -+  BFD_RELOC_ALPHA_TPREL_HI16,
43.32875 -+  BFD_RELOC_ALPHA_TPREL_LO16,
43.32876 -+  BFD_RELOC_ALPHA_TPREL16,
43.32877 -+
43.32878 -+/* Bits 27..2 of the relocation address shifted right 2 bits;
43.32879 -+simple reloc otherwise.  */
43.32880 -+  BFD_RELOC_MIPS_JMP,
43.32881 -+
43.32882 -+/* The MIPS16 jump instruction.  */
43.32883 -+  BFD_RELOC_MIPS16_JMP,
43.32884 -+
43.32885 -+/* MIPS16 GP relative reloc.  */
43.32886 -+  BFD_RELOC_MIPS16_GPREL,
43.32887 -+
43.32888 -+/* High 16 bits of 32-bit value; simple reloc.  */
43.32889 -+  BFD_RELOC_HI16,
43.32890 -+
43.32891 -+/* High 16 bits of 32-bit value but the low 16 bits will be sign
43.32892 -+extended and added to form the final result.  If the low 16
43.32893 -+bits form a negative number, we need to add one to the high value
43.32894 -+to compensate for the borrow when the low bits are added.  */
43.32895 -+  BFD_RELOC_HI16_S,
43.32896 -+
43.32897 -+/* Low 16 bits.  */
43.32898 -+  BFD_RELOC_LO16,
43.32899 -+
43.32900 -+/* High 16 bits of 32-bit pc-relative value  */
43.32901 -+  BFD_RELOC_HI16_PCREL,
43.32902 -+
43.32903 -+/* High 16 bits of 32-bit pc-relative value, adjusted  */
43.32904 -+  BFD_RELOC_HI16_S_PCREL,
43.32905 -+
43.32906 -+/* Low 16 bits of pc-relative value  */
43.32907 -+  BFD_RELOC_LO16_PCREL,
43.32908 -+
43.32909 -+/* MIPS16 high 16 bits of 32-bit value.  */
43.32910 -+  BFD_RELOC_MIPS16_HI16,
43.32911 -+
43.32912 -+/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
43.32913 -+extended and added to form the final result.  If the low 16
43.32914 -+bits form a negative number, we need to add one to the high value
43.32915 -+to compensate for the borrow when the low bits are added.  */
43.32916 -+  BFD_RELOC_MIPS16_HI16_S,
43.32917 -+
43.32918 -+/* MIPS16 low 16 bits.  */
43.32919 -+  BFD_RELOC_MIPS16_LO16,
43.32920 -+
43.32921 -+/* Relocation against a MIPS literal section.  */
43.32922 -+  BFD_RELOC_MIPS_LITERAL,
43.32923 -+
43.32924 -+/* MIPS ELF relocations.  */
43.32925 -+  BFD_RELOC_MIPS_GOT16,
43.32926 -+  BFD_RELOC_MIPS_CALL16,
43.32927 -+  BFD_RELOC_MIPS_GOT_HI16,
43.32928 -+  BFD_RELOC_MIPS_GOT_LO16,
43.32929 -+  BFD_RELOC_MIPS_CALL_HI16,
43.32930 -+  BFD_RELOC_MIPS_CALL_LO16,
43.32931 -+  BFD_RELOC_MIPS_SUB,
43.32932 -+  BFD_RELOC_MIPS_GOT_PAGE,
43.32933 -+  BFD_RELOC_MIPS_GOT_OFST,
43.32934 -+  BFD_RELOC_MIPS_GOT_DISP,
43.32935 -+  BFD_RELOC_MIPS_SHIFT5,
43.32936 -+  BFD_RELOC_MIPS_SHIFT6,
43.32937 -+  BFD_RELOC_MIPS_INSERT_A,
43.32938 -+  BFD_RELOC_MIPS_INSERT_B,
43.32939 -+  BFD_RELOC_MIPS_DELETE,
43.32940 -+  BFD_RELOC_MIPS_HIGHEST,
43.32941 -+  BFD_RELOC_MIPS_HIGHER,
43.32942 -+  BFD_RELOC_MIPS_SCN_DISP,
43.32943 -+  BFD_RELOC_MIPS_REL16,
43.32944 -+  BFD_RELOC_MIPS_RELGOT,
43.32945 -+  BFD_RELOC_MIPS_JALR,
43.32946 -+  BFD_RELOC_MIPS_TLS_DTPMOD32,
43.32947 -+  BFD_RELOC_MIPS_TLS_DTPREL32,
43.32948 -+  BFD_RELOC_MIPS_TLS_DTPMOD64,
43.32949 -+  BFD_RELOC_MIPS_TLS_DTPREL64,
43.32950 -+  BFD_RELOC_MIPS_TLS_GD,
43.32951 -+  BFD_RELOC_MIPS_TLS_LDM,
43.32952 -+  BFD_RELOC_MIPS_TLS_DTPREL_HI16,
43.32953 -+  BFD_RELOC_MIPS_TLS_DTPREL_LO16,
43.32954 -+  BFD_RELOC_MIPS_TLS_GOTTPREL,
43.32955 -+  BFD_RELOC_MIPS_TLS_TPREL32,
43.32956 -+  BFD_RELOC_MIPS_TLS_TPREL64,
43.32957 -+  BFD_RELOC_MIPS_TLS_TPREL_HI16,
43.32958 -+  BFD_RELOC_MIPS_TLS_TPREL_LO16,
43.32959 -+
43.32960 -+
43.32961 -+/* MIPS ELF relocations (VxWorks extensions).  */
43.32962 -+  BFD_RELOC_MIPS_COPY,
43.32963 -+  BFD_RELOC_MIPS_JUMP_SLOT,
43.32964 -+
43.32965 -+
43.32966 -+/* Fujitsu Frv Relocations.  */
43.32967 -+  BFD_RELOC_FRV_LABEL16,
43.32968 -+  BFD_RELOC_FRV_LABEL24,
43.32969 -+  BFD_RELOC_FRV_LO16,
43.32970 -+  BFD_RELOC_FRV_HI16,
43.32971 -+  BFD_RELOC_FRV_GPREL12,
43.32972 -+  BFD_RELOC_FRV_GPRELU12,
43.32973 -+  BFD_RELOC_FRV_GPREL32,
43.32974 -+  BFD_RELOC_FRV_GPRELHI,
43.32975 -+  BFD_RELOC_FRV_GPRELLO,
43.32976 -+  BFD_RELOC_FRV_GOT12,
43.32977 -+  BFD_RELOC_FRV_GOTHI,
43.32978 -+  BFD_RELOC_FRV_GOTLO,
43.32979 -+  BFD_RELOC_FRV_FUNCDESC,
43.32980 -+  BFD_RELOC_FRV_FUNCDESC_GOT12,
43.32981 -+  BFD_RELOC_FRV_FUNCDESC_GOTHI,
43.32982 -+  BFD_RELOC_FRV_FUNCDESC_GOTLO,
43.32983 -+  BFD_RELOC_FRV_FUNCDESC_VALUE,
43.32984 -+  BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
43.32985 -+  BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
43.32986 -+  BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
43.32987 -+  BFD_RELOC_FRV_GOTOFF12,
43.32988 -+  BFD_RELOC_FRV_GOTOFFHI,
43.32989 -+  BFD_RELOC_FRV_GOTOFFLO,
43.32990 -+  BFD_RELOC_FRV_GETTLSOFF,
43.32991 -+  BFD_RELOC_FRV_TLSDESC_VALUE,
43.32992 -+  BFD_RELOC_FRV_GOTTLSDESC12,
43.32993 -+  BFD_RELOC_FRV_GOTTLSDESCHI,
43.32994 -+  BFD_RELOC_FRV_GOTTLSDESCLO,
43.32995 -+  BFD_RELOC_FRV_TLSMOFF12,
43.32996 -+  BFD_RELOC_FRV_TLSMOFFHI,
43.32997 -+  BFD_RELOC_FRV_TLSMOFFLO,
43.32998 -+  BFD_RELOC_FRV_GOTTLSOFF12,
43.32999 -+  BFD_RELOC_FRV_GOTTLSOFFHI,
43.33000 -+  BFD_RELOC_FRV_GOTTLSOFFLO,
43.33001 -+  BFD_RELOC_FRV_TLSOFF,
43.33002 -+  BFD_RELOC_FRV_TLSDESC_RELAX,
43.33003 -+  BFD_RELOC_FRV_GETTLSOFF_RELAX,
43.33004 -+  BFD_RELOC_FRV_TLSOFF_RELAX,
43.33005 -+  BFD_RELOC_FRV_TLSMOFF,
43.33006 -+
43.33007 -+
43.33008 -+/* This is a 24bit GOT-relative reloc for the mn10300.  */
43.33009 -+  BFD_RELOC_MN10300_GOTOFF24,
43.33010 -+
43.33011 -+/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
43.33012 -+in the instruction.  */
43.33013 -+  BFD_RELOC_MN10300_GOT32,
43.33014 -+
43.33015 -+/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
43.33016 -+in the instruction.  */
43.33017 -+  BFD_RELOC_MN10300_GOT24,
43.33018 -+
43.33019 -+/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
43.33020 -+in the instruction.  */
43.33021 -+  BFD_RELOC_MN10300_GOT16,
43.33022 -+
43.33023 -+/* Copy symbol at runtime.  */
43.33024 -+  BFD_RELOC_MN10300_COPY,
43.33025 -+
43.33026 -+/* Create GOT entry.  */
43.33027 -+  BFD_RELOC_MN10300_GLOB_DAT,
43.33028 -+
43.33029 -+/* Create PLT entry.  */
43.33030 -+  BFD_RELOC_MN10300_JMP_SLOT,
43.33031 -+
43.33032 -+/* Adjust by program base.  */
43.33033 -+  BFD_RELOC_MN10300_RELATIVE,
43.33034 -+
43.33035 -+
43.33036 -+/* i386/elf relocations  */
43.33037 -+  BFD_RELOC_386_GOT32,
43.33038 -+  BFD_RELOC_386_PLT32,
43.33039 -+  BFD_RELOC_386_COPY,
43.33040 -+  BFD_RELOC_386_GLOB_DAT,
43.33041 -+  BFD_RELOC_386_JUMP_SLOT,
43.33042 -+  BFD_RELOC_386_RELATIVE,
43.33043 -+  BFD_RELOC_386_GOTOFF,
43.33044 -+  BFD_RELOC_386_GOTPC,
43.33045 -+  BFD_RELOC_386_TLS_TPOFF,
43.33046 -+  BFD_RELOC_386_TLS_IE,
43.33047 -+  BFD_RELOC_386_TLS_GOTIE,
43.33048 -+  BFD_RELOC_386_TLS_LE,
43.33049 -+  BFD_RELOC_386_TLS_GD,
43.33050 -+  BFD_RELOC_386_TLS_LDM,
43.33051 -+  BFD_RELOC_386_TLS_LDO_32,
43.33052 -+  BFD_RELOC_386_TLS_IE_32,
43.33053 -+  BFD_RELOC_386_TLS_LE_32,
43.33054 -+  BFD_RELOC_386_TLS_DTPMOD32,
43.33055 -+  BFD_RELOC_386_TLS_DTPOFF32,
43.33056 -+  BFD_RELOC_386_TLS_TPOFF32,
43.33057 -+  BFD_RELOC_386_TLS_GOTDESC,
43.33058 -+  BFD_RELOC_386_TLS_DESC_CALL,
43.33059 -+  BFD_RELOC_386_TLS_DESC,
43.33060 -+
43.33061 -+/* x86-64/elf relocations  */
43.33062 -+  BFD_RELOC_X86_64_GOT32,
43.33063 -+  BFD_RELOC_X86_64_PLT32,
43.33064 -+  BFD_RELOC_X86_64_COPY,
43.33065 -+  BFD_RELOC_X86_64_GLOB_DAT,
43.33066 -+  BFD_RELOC_X86_64_JUMP_SLOT,
43.33067 -+  BFD_RELOC_X86_64_RELATIVE,
43.33068 -+  BFD_RELOC_X86_64_GOTPCREL,
43.33069 -+  BFD_RELOC_X86_64_32S,
43.33070 -+  BFD_RELOC_X86_64_DTPMOD64,
43.33071 -+  BFD_RELOC_X86_64_DTPOFF64,
43.33072 -+  BFD_RELOC_X86_64_TPOFF64,
43.33073 -+  BFD_RELOC_X86_64_TLSGD,
43.33074 -+  BFD_RELOC_X86_64_TLSLD,
43.33075 -+  BFD_RELOC_X86_64_DTPOFF32,
43.33076 -+  BFD_RELOC_X86_64_GOTTPOFF,
43.33077 -+  BFD_RELOC_X86_64_TPOFF32,
43.33078 -+  BFD_RELOC_X86_64_GOTOFF64,
43.33079 -+  BFD_RELOC_X86_64_GOTPC32,
43.33080 -+  BFD_RELOC_X86_64_GOT64,
43.33081 -+  BFD_RELOC_X86_64_GOTPCREL64,
43.33082 -+  BFD_RELOC_X86_64_GOTPC64,
43.33083 -+  BFD_RELOC_X86_64_GOTPLT64,
43.33084 -+  BFD_RELOC_X86_64_PLTOFF64,
43.33085 -+  BFD_RELOC_X86_64_GOTPC32_TLSDESC,
43.33086 -+  BFD_RELOC_X86_64_TLSDESC_CALL,
43.33087 -+  BFD_RELOC_X86_64_TLSDESC,
43.33088 -+
43.33089 -+/* ns32k relocations  */
43.33090 -+  BFD_RELOC_NS32K_IMM_8,
43.33091 -+  BFD_RELOC_NS32K_IMM_16,
43.33092 -+  BFD_RELOC_NS32K_IMM_32,
43.33093 -+  BFD_RELOC_NS32K_IMM_8_PCREL,
43.33094 -+  BFD_RELOC_NS32K_IMM_16_PCREL,
43.33095 -+  BFD_RELOC_NS32K_IMM_32_PCREL,
43.33096 -+  BFD_RELOC_NS32K_DISP_8,
43.33097 -+  BFD_RELOC_NS32K_DISP_16,
43.33098 -+  BFD_RELOC_NS32K_DISP_32,
43.33099 -+  BFD_RELOC_NS32K_DISP_8_PCREL,
43.33100 -+  BFD_RELOC_NS32K_DISP_16_PCREL,
43.33101 -+  BFD_RELOC_NS32K_DISP_32_PCREL,
43.33102 -+
43.33103 -+/* PDP11 relocations  */
43.33104 -+  BFD_RELOC_PDP11_DISP_8_PCREL,
43.33105 -+  BFD_RELOC_PDP11_DISP_6_PCREL,
43.33106 -+
43.33107 -+/* Picojava relocs.  Not all of these appear in object files.  */
43.33108 -+  BFD_RELOC_PJ_CODE_HI16,
43.33109 -+  BFD_RELOC_PJ_CODE_LO16,
43.33110 -+  BFD_RELOC_PJ_CODE_DIR16,
43.33111 -+  BFD_RELOC_PJ_CODE_DIR32,
43.33112 -+  BFD_RELOC_PJ_CODE_REL16,
43.33113 -+  BFD_RELOC_PJ_CODE_REL32,
43.33114 -+
43.33115 -+/* Power(rs6000) and PowerPC relocations.  */
43.33116 -+  BFD_RELOC_PPC_B26,
43.33117 -+  BFD_RELOC_PPC_BA26,
43.33118 -+  BFD_RELOC_PPC_TOC16,
43.33119 -+  BFD_RELOC_PPC_B16,
43.33120 -+  BFD_RELOC_PPC_B16_BRTAKEN,
43.33121 -+  BFD_RELOC_PPC_B16_BRNTAKEN,
43.33122 -+  BFD_RELOC_PPC_BA16,
43.33123 -+  BFD_RELOC_PPC_BA16_BRTAKEN,
43.33124 -+  BFD_RELOC_PPC_BA16_BRNTAKEN,
43.33125 -+  BFD_RELOC_PPC_COPY,
43.33126 -+  BFD_RELOC_PPC_GLOB_DAT,
43.33127 -+  BFD_RELOC_PPC_JMP_SLOT,
43.33128 -+  BFD_RELOC_PPC_RELATIVE,
43.33129 -+  BFD_RELOC_PPC_LOCAL24PC,
43.33130 -+  BFD_RELOC_PPC_EMB_NADDR32,
43.33131 -+  BFD_RELOC_PPC_EMB_NADDR16,
43.33132 -+  BFD_RELOC_PPC_EMB_NADDR16_LO,
43.33133 -+  BFD_RELOC_PPC_EMB_NADDR16_HI,
43.33134 -+  BFD_RELOC_PPC_EMB_NADDR16_HA,
43.33135 -+  BFD_RELOC_PPC_EMB_SDAI16,
43.33136 -+  BFD_RELOC_PPC_EMB_SDA2I16,
43.33137 -+  BFD_RELOC_PPC_EMB_SDA2REL,
43.33138 -+  BFD_RELOC_PPC_EMB_SDA21,
43.33139 -+  BFD_RELOC_PPC_EMB_MRKREF,
43.33140 -+  BFD_RELOC_PPC_EMB_RELSEC16,
43.33141 -+  BFD_RELOC_PPC_EMB_RELST_LO,
43.33142 -+  BFD_RELOC_PPC_EMB_RELST_HI,
43.33143 -+  BFD_RELOC_PPC_EMB_RELST_HA,
43.33144 -+  BFD_RELOC_PPC_EMB_BIT_FLD,
43.33145 -+  BFD_RELOC_PPC_EMB_RELSDA,
43.33146 -+  BFD_RELOC_PPC64_HIGHER,
43.33147 -+  BFD_RELOC_PPC64_HIGHER_S,
43.33148 -+  BFD_RELOC_PPC64_HIGHEST,
43.33149 -+  BFD_RELOC_PPC64_HIGHEST_S,
43.33150 -+  BFD_RELOC_PPC64_TOC16_LO,
43.33151 -+  BFD_RELOC_PPC64_TOC16_HI,
43.33152 -+  BFD_RELOC_PPC64_TOC16_HA,
43.33153 -+  BFD_RELOC_PPC64_TOC,
43.33154 -+  BFD_RELOC_PPC64_PLTGOT16,
43.33155 -+  BFD_RELOC_PPC64_PLTGOT16_LO,
43.33156 -+  BFD_RELOC_PPC64_PLTGOT16_HI,
43.33157 -+  BFD_RELOC_PPC64_PLTGOT16_HA,
43.33158 -+  BFD_RELOC_PPC64_ADDR16_DS,
43.33159 -+  BFD_RELOC_PPC64_ADDR16_LO_DS,
43.33160 -+  BFD_RELOC_PPC64_GOT16_DS,
43.33161 -+  BFD_RELOC_PPC64_GOT16_LO_DS,
43.33162 -+  BFD_RELOC_PPC64_PLT16_LO_DS,
43.33163 -+  BFD_RELOC_PPC64_SECTOFF_DS,
43.33164 -+  BFD_RELOC_PPC64_SECTOFF_LO_DS,
43.33165 -+  BFD_RELOC_PPC64_TOC16_DS,
43.33166 -+  BFD_RELOC_PPC64_TOC16_LO_DS,
43.33167 -+  BFD_RELOC_PPC64_PLTGOT16_DS,
43.33168 -+  BFD_RELOC_PPC64_PLTGOT16_LO_DS,
43.33169 -+
43.33170 -+/* PowerPC and PowerPC64 thread-local storage relocations.  */
43.33171 -+  BFD_RELOC_PPC_TLS,
43.33172 -+  BFD_RELOC_PPC_DTPMOD,
43.33173 -+  BFD_RELOC_PPC_TPREL16,
43.33174 -+  BFD_RELOC_PPC_TPREL16_LO,
43.33175 -+  BFD_RELOC_PPC_TPREL16_HI,
43.33176 -+  BFD_RELOC_PPC_TPREL16_HA,
43.33177 -+  BFD_RELOC_PPC_TPREL,
43.33178 -+  BFD_RELOC_PPC_DTPREL16,
43.33179 -+  BFD_RELOC_PPC_DTPREL16_LO,
43.33180 -+  BFD_RELOC_PPC_DTPREL16_HI,
43.33181 -+  BFD_RELOC_PPC_DTPREL16_HA,
43.33182 -+  BFD_RELOC_PPC_DTPREL,
43.33183 -+  BFD_RELOC_PPC_GOT_TLSGD16,
43.33184 -+  BFD_RELOC_PPC_GOT_TLSGD16_LO,
43.33185 -+  BFD_RELOC_PPC_GOT_TLSGD16_HI,
43.33186 -+  BFD_RELOC_PPC_GOT_TLSGD16_HA,
43.33187 -+  BFD_RELOC_PPC_GOT_TLSLD16,
43.33188 -+  BFD_RELOC_PPC_GOT_TLSLD16_LO,
43.33189 -+  BFD_RELOC_PPC_GOT_TLSLD16_HI,
43.33190 -+  BFD_RELOC_PPC_GOT_TLSLD16_HA,
43.33191 -+  BFD_RELOC_PPC_GOT_TPREL16,
43.33192 -+  BFD_RELOC_PPC_GOT_TPREL16_LO,
43.33193 -+  BFD_RELOC_PPC_GOT_TPREL16_HI,
43.33194 -+  BFD_RELOC_PPC_GOT_TPREL16_HA,
43.33195 -+  BFD_RELOC_PPC_GOT_DTPREL16,
43.33196 -+  BFD_RELOC_PPC_GOT_DTPREL16_LO,
43.33197 -+  BFD_RELOC_PPC_GOT_DTPREL16_HI,
43.33198 -+  BFD_RELOC_PPC_GOT_DTPREL16_HA,
43.33199 -+  BFD_RELOC_PPC64_TPREL16_DS,
43.33200 -+  BFD_RELOC_PPC64_TPREL16_LO_DS,
43.33201 -+  BFD_RELOC_PPC64_TPREL16_HIGHER,
43.33202 -+  BFD_RELOC_PPC64_TPREL16_HIGHERA,
43.33203 -+  BFD_RELOC_PPC64_TPREL16_HIGHEST,
43.33204 -+  BFD_RELOC_PPC64_TPREL16_HIGHESTA,
43.33205 -+  BFD_RELOC_PPC64_DTPREL16_DS,
43.33206 -+  BFD_RELOC_PPC64_DTPREL16_LO_DS,
43.33207 -+  BFD_RELOC_PPC64_DTPREL16_HIGHER,
43.33208 -+  BFD_RELOC_PPC64_DTPREL16_HIGHERA,
43.33209 -+  BFD_RELOC_PPC64_DTPREL16_HIGHEST,
43.33210 -+  BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
43.33211 -+
43.33212 -+/* IBM 370/390 relocations  */
43.33213 -+  BFD_RELOC_I370_D12,
43.33214 -+
43.33215 -+/* The type of reloc used to build a constructor table - at the moment
43.33216 -+probably a 32 bit wide absolute relocation, but the target can choose.
43.33217 -+It generally does map to one of the other relocation types.  */
43.33218 -+  BFD_RELOC_CTOR,
43.33219 -+
43.33220 -+/* ARM 26 bit pc-relative branch.  The lowest two bits must be zero and are
43.33221 -+not stored in the instruction.  */
43.33222 -+  BFD_RELOC_ARM_PCREL_BRANCH,
43.33223 -+
43.33224 -+/* ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
43.33225 -+not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
43.33226 -+field in the instruction.  */
43.33227 -+  BFD_RELOC_ARM_PCREL_BLX,
43.33228 -+
43.33229 -+/* Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
43.33230 -+not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
43.33231 -+field in the instruction.  */
43.33232 -+  BFD_RELOC_THUMB_PCREL_BLX,
43.33233 -+
43.33234 -+/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.  */
43.33235 -+  BFD_RELOC_ARM_PCREL_CALL,
43.33236 -+
43.33237 -+/* ARM 26-bit pc-relative branch for B or conditional BL instruction.  */
43.33238 -+  BFD_RELOC_ARM_PCREL_JUMP,
43.33239 -+
43.33240 -+/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
43.33241 -+The lowest bit must be zero and is not stored in the instruction.
43.33242 -+Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
43.33243 -+"nn" one smaller in all cases.  Note further that BRANCH23
43.33244 -+corresponds to R_ARM_THM_CALL.  */
43.33245 -+  BFD_RELOC_THUMB_PCREL_BRANCH7,
43.33246 -+  BFD_RELOC_THUMB_PCREL_BRANCH9,
43.33247 -+  BFD_RELOC_THUMB_PCREL_BRANCH12,
43.33248 -+  BFD_RELOC_THUMB_PCREL_BRANCH20,
43.33249 -+  BFD_RELOC_THUMB_PCREL_BRANCH23,
43.33250 -+  BFD_RELOC_THUMB_PCREL_BRANCH25,
43.33251 -+
43.33252 -+/* 12-bit immediate offset, used in ARM-format ldr and str instructions.  */
43.33253 -+  BFD_RELOC_ARM_OFFSET_IMM,
43.33254 -+
43.33255 -+/* 5-bit immediate offset, used in Thumb-format ldr and str instructions.  */
43.33256 -+  BFD_RELOC_ARM_THUMB_OFFSET,
43.33257 -+
43.33258 -+/* Pc-relative or absolute relocation depending on target.  Used for
43.33259 -+entries in .init_array sections.  */
43.33260 -+  BFD_RELOC_ARM_TARGET1,
43.33261 -+
43.33262 -+/* Read-only segment base relative address.  */
43.33263 -+  BFD_RELOC_ARM_ROSEGREL32,
43.33264 -+
43.33265 -+/* Data segment base relative address.  */
43.33266 -+  BFD_RELOC_ARM_SBREL32,
43.33267 -+
43.33268 -+/* This reloc is used for references to RTTI data from exception handling
43.33269 -+tables.  The actual definition depends on the target.  It may be a
43.33270 -+pc-relative or some form of GOT-indirect relocation.  */
43.33271 -+  BFD_RELOC_ARM_TARGET2,
43.33272 -+
43.33273 -+/* 31-bit PC relative address.  */
43.33274 -+  BFD_RELOC_ARM_PREL31,
43.33275 -+
43.33276 -+/* Low and High halfword relocations for MOVW and MOVT instructions.  */
43.33277 -+  BFD_RELOC_ARM_MOVW,
43.33278 -+  BFD_RELOC_ARM_MOVT,
43.33279 -+  BFD_RELOC_ARM_MOVW_PCREL,
43.33280 -+  BFD_RELOC_ARM_MOVT_PCREL,
43.33281 -+  BFD_RELOC_ARM_THUMB_MOVW,
43.33282 -+  BFD_RELOC_ARM_THUMB_MOVT,
43.33283 -+  BFD_RELOC_ARM_THUMB_MOVW_PCREL,
43.33284 -+  BFD_RELOC_ARM_THUMB_MOVT_PCREL,
43.33285 -+
43.33286 -+/* Relocations for setting up GOTs and PLTs for shared libraries.  */
43.33287 -+  BFD_RELOC_ARM_JUMP_SLOT,
43.33288 -+  BFD_RELOC_ARM_GLOB_DAT,
43.33289 -+  BFD_RELOC_ARM_GOT32,
43.33290 -+  BFD_RELOC_ARM_PLT32,
43.33291 -+  BFD_RELOC_ARM_RELATIVE,
43.33292 -+  BFD_RELOC_ARM_GOTOFF,
43.33293 -+  BFD_RELOC_ARM_GOTPC,
43.33294 -+
43.33295 -+/* ARM thread-local storage relocations.  */
43.33296 -+  BFD_RELOC_ARM_TLS_GD32,
43.33297 -+  BFD_RELOC_ARM_TLS_LDO32,
43.33298 -+  BFD_RELOC_ARM_TLS_LDM32,
43.33299 -+  BFD_RELOC_ARM_TLS_DTPOFF32,
43.33300 -+  BFD_RELOC_ARM_TLS_DTPMOD32,
43.33301 -+  BFD_RELOC_ARM_TLS_TPOFF32,
43.33302 -+  BFD_RELOC_ARM_TLS_IE32,
43.33303 -+  BFD_RELOC_ARM_TLS_LE32,
43.33304 -+
43.33305 -+/* ARM group relocations.  */
43.33306 -+  BFD_RELOC_ARM_ALU_PC_G0_NC,
43.33307 -+  BFD_RELOC_ARM_ALU_PC_G0,
43.33308 -+  BFD_RELOC_ARM_ALU_PC_G1_NC,
43.33309 -+  BFD_RELOC_ARM_ALU_PC_G1,
43.33310 -+  BFD_RELOC_ARM_ALU_PC_G2,
43.33311 -+  BFD_RELOC_ARM_LDR_PC_G0,
43.33312 -+  BFD_RELOC_ARM_LDR_PC_G1,
43.33313 -+  BFD_RELOC_ARM_LDR_PC_G2,
43.33314 -+  BFD_RELOC_ARM_LDRS_PC_G0,
43.33315 -+  BFD_RELOC_ARM_LDRS_PC_G1,
43.33316 -+  BFD_RELOC_ARM_LDRS_PC_G2,
43.33317 -+  BFD_RELOC_ARM_LDC_PC_G0,
43.33318 -+  BFD_RELOC_ARM_LDC_PC_G1,
43.33319 -+  BFD_RELOC_ARM_LDC_PC_G2,
43.33320 -+  BFD_RELOC_ARM_ALU_SB_G0_NC,
43.33321 -+  BFD_RELOC_ARM_ALU_SB_G0,
43.33322 -+  BFD_RELOC_ARM_ALU_SB_G1_NC,
43.33323 -+  BFD_RELOC_ARM_ALU_SB_G1,
43.33324 -+  BFD_RELOC_ARM_ALU_SB_G2,
43.33325 -+  BFD_RELOC_ARM_LDR_SB_G0,
43.33326 -+  BFD_RELOC_ARM_LDR_SB_G1,
43.33327 -+  BFD_RELOC_ARM_LDR_SB_G2,
43.33328 -+  BFD_RELOC_ARM_LDRS_SB_G0,
43.33329 -+  BFD_RELOC_ARM_LDRS_SB_G1,
43.33330 -+  BFD_RELOC_ARM_LDRS_SB_G2,
43.33331 -+  BFD_RELOC_ARM_LDC_SB_G0,
43.33332 -+  BFD_RELOC_ARM_LDC_SB_G1,
43.33333 -+  BFD_RELOC_ARM_LDC_SB_G2,
43.33334 -+
43.33335 -+/* These relocs are only used within the ARM assembler.  They are not
43.33336 -+(at present) written to any object files.  */
43.33337 -+  BFD_RELOC_ARM_IMMEDIATE,
43.33338 -+  BFD_RELOC_ARM_ADRL_IMMEDIATE,
43.33339 -+  BFD_RELOC_ARM_T32_IMMEDIATE,
43.33340 -+  BFD_RELOC_ARM_T32_ADD_IMM,
43.33341 -+  BFD_RELOC_ARM_T32_IMM12,
43.33342 -+  BFD_RELOC_ARM_T32_ADD_PC12,
43.33343 -+  BFD_RELOC_ARM_SHIFT_IMM,
43.33344 -+  BFD_RELOC_ARM_SMC,
43.33345 -+  BFD_RELOC_ARM_SWI,
43.33346 -+  BFD_RELOC_ARM_MULTI,
43.33347 -+  BFD_RELOC_ARM_CP_OFF_IMM,
43.33348 -+  BFD_RELOC_ARM_CP_OFF_IMM_S2,
43.33349 -+  BFD_RELOC_ARM_T32_CP_OFF_IMM,
43.33350 -+  BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
43.33351 -+  BFD_RELOC_ARM_ADR_IMM,
43.33352 -+  BFD_RELOC_ARM_LDR_IMM,
43.33353 -+  BFD_RELOC_ARM_LITERAL,
43.33354 -+  BFD_RELOC_ARM_IN_POOL,
43.33355 -+  BFD_RELOC_ARM_OFFSET_IMM8,
43.33356 -+  BFD_RELOC_ARM_T32_OFFSET_U8,
43.33357 -+  BFD_RELOC_ARM_T32_OFFSET_IMM,
43.33358 -+  BFD_RELOC_ARM_HWLITERAL,
43.33359 -+  BFD_RELOC_ARM_THUMB_ADD,
43.33360 -+  BFD_RELOC_ARM_THUMB_IMM,
43.33361 -+  BFD_RELOC_ARM_THUMB_SHIFT,
43.33362 -+
43.33363 -+/* Renesas / SuperH SH relocs.  Not all of these appear in object files.  */
43.33364 -+  BFD_RELOC_SH_PCDISP8BY2,
43.33365 -+  BFD_RELOC_SH_PCDISP12BY2,
43.33366 -+  BFD_RELOC_SH_IMM3,
43.33367 -+  BFD_RELOC_SH_IMM3U,
43.33368 -+  BFD_RELOC_SH_DISP12,
43.33369 -+  BFD_RELOC_SH_DISP12BY2,
43.33370 -+  BFD_RELOC_SH_DISP12BY4,
43.33371 -+  BFD_RELOC_SH_DISP12BY8,
43.33372 -+  BFD_RELOC_SH_DISP20,
43.33373 -+  BFD_RELOC_SH_DISP20BY8,
43.33374 -+  BFD_RELOC_SH_IMM4,
43.33375 -+  BFD_RELOC_SH_IMM4BY2,
43.33376 -+  BFD_RELOC_SH_IMM4BY4,
43.33377 -+  BFD_RELOC_SH_IMM8,
43.33378 -+  BFD_RELOC_SH_IMM8BY2,
43.33379 -+  BFD_RELOC_SH_IMM8BY4,
43.33380 -+  BFD_RELOC_SH_PCRELIMM8BY2,
43.33381 -+  BFD_RELOC_SH_PCRELIMM8BY4,
43.33382 -+  BFD_RELOC_SH_SWITCH16,
43.33383 -+  BFD_RELOC_SH_SWITCH32,
43.33384 -+  BFD_RELOC_SH_USES,
43.33385 -+  BFD_RELOC_SH_COUNT,
43.33386 -+  BFD_RELOC_SH_ALIGN,
43.33387 -+  BFD_RELOC_SH_CODE,
43.33388 -+  BFD_RELOC_SH_DATA,
43.33389 -+  BFD_RELOC_SH_LABEL,
43.33390 -+  BFD_RELOC_SH_LOOP_START,
43.33391 -+  BFD_RELOC_SH_LOOP_END,
43.33392 -+  BFD_RELOC_SH_COPY,
43.33393 -+  BFD_RELOC_SH_GLOB_DAT,
43.33394 -+  BFD_RELOC_SH_JMP_SLOT,
43.33395 -+  BFD_RELOC_SH_RELATIVE,
43.33396 -+  BFD_RELOC_SH_GOTPC,
43.33397 -+  BFD_RELOC_SH_GOT_LOW16,
43.33398 -+  BFD_RELOC_SH_GOT_MEDLOW16,
43.33399 -+  BFD_RELOC_SH_GOT_MEDHI16,
43.33400 -+  BFD_RELOC_SH_GOT_HI16,
43.33401 -+  BFD_RELOC_SH_GOTPLT_LOW16,
43.33402 -+  BFD_RELOC_SH_GOTPLT_MEDLOW16,
43.33403 -+  BFD_RELOC_SH_GOTPLT_MEDHI16,
43.33404 -+  BFD_RELOC_SH_GOTPLT_HI16,
43.33405 -+  BFD_RELOC_SH_PLT_LOW16,
43.33406 -+  BFD_RELOC_SH_PLT_MEDLOW16,
43.33407 -+  BFD_RELOC_SH_PLT_MEDHI16,
43.33408 -+  BFD_RELOC_SH_PLT_HI16,
43.33409 -+  BFD_RELOC_SH_GOTOFF_LOW16,
43.33410 -+  BFD_RELOC_SH_GOTOFF_MEDLOW16,
43.33411 -+  BFD_RELOC_SH_GOTOFF_MEDHI16,
43.33412 -+  BFD_RELOC_SH_GOTOFF_HI16,
43.33413 -+  BFD_RELOC_SH_GOTPC_LOW16,
43.33414 -+  BFD_RELOC_SH_GOTPC_MEDLOW16,
43.33415 -+  BFD_RELOC_SH_GOTPC_MEDHI16,
43.33416 -+  BFD_RELOC_SH_GOTPC_HI16,
43.33417 -+  BFD_RELOC_SH_COPY64,
43.33418 -+  BFD_RELOC_SH_GLOB_DAT64,
43.33419 -+  BFD_RELOC_SH_JMP_SLOT64,
43.33420 -+  BFD_RELOC_SH_RELATIVE64,
43.33421 -+  BFD_RELOC_SH_GOT10BY4,
43.33422 -+  BFD_RELOC_SH_GOT10BY8,
43.33423 -+  BFD_RELOC_SH_GOTPLT10BY4,
43.33424 -+  BFD_RELOC_SH_GOTPLT10BY8,
43.33425 -+  BFD_RELOC_SH_GOTPLT32,
43.33426 -+  BFD_RELOC_SH_SHMEDIA_CODE,
43.33427 -+  BFD_RELOC_SH_IMMU5,
43.33428 -+  BFD_RELOC_SH_IMMS6,
43.33429 -+  BFD_RELOC_SH_IMMS6BY32,
43.33430 -+  BFD_RELOC_SH_IMMU6,
43.33431 -+  BFD_RELOC_SH_IMMS10,
43.33432 -+  BFD_RELOC_SH_IMMS10BY2,
43.33433 -+  BFD_RELOC_SH_IMMS10BY4,
43.33434 -+  BFD_RELOC_SH_IMMS10BY8,
43.33435 -+  BFD_RELOC_SH_IMMS16,
43.33436 -+  BFD_RELOC_SH_IMMU16,
43.33437 -+  BFD_RELOC_SH_IMM_LOW16,
43.33438 -+  BFD_RELOC_SH_IMM_LOW16_PCREL,
43.33439 -+  BFD_RELOC_SH_IMM_MEDLOW16,
43.33440 -+  BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
43.33441 -+  BFD_RELOC_SH_IMM_MEDHI16,
43.33442 -+  BFD_RELOC_SH_IMM_MEDHI16_PCREL,
43.33443 -+  BFD_RELOC_SH_IMM_HI16,
43.33444 -+  BFD_RELOC_SH_IMM_HI16_PCREL,
43.33445 -+  BFD_RELOC_SH_PT_16,
43.33446 -+  BFD_RELOC_SH_TLS_GD_32,
43.33447 -+  BFD_RELOC_SH_TLS_LD_32,
43.33448 -+  BFD_RELOC_SH_TLS_LDO_32,
43.33449 -+  BFD_RELOC_SH_TLS_IE_32,
43.33450 -+  BFD_RELOC_SH_TLS_LE_32,
43.33451 -+  BFD_RELOC_SH_TLS_DTPMOD32,
43.33452 -+  BFD_RELOC_SH_TLS_DTPOFF32,
43.33453 -+  BFD_RELOC_SH_TLS_TPOFF32,
43.33454 -+
43.33455 -+/* ARC Cores relocs.
43.33456 -+ARC 22 bit pc-relative branch.  The lowest two bits must be zero and are
43.33457 -+not stored in the instruction.  The high 20 bits are installed in bits 26
43.33458 -+through 7 of the instruction.  */
43.33459 -+  BFD_RELOC_ARC_B22_PCREL,
43.33460 -+
43.33461 -+/* ARC 26 bit absolute branch.  The lowest two bits must be zero and are not
43.33462 -+stored in the instruction.  The high 24 bits are installed in bits 23
43.33463 -+through 0.  */
43.33464 -+  BFD_RELOC_ARC_B26,
43.33465 -+
43.33466 -+/* ADI Blackfin 16 bit immediate absolute reloc.  */
43.33467 -+  BFD_RELOC_BFIN_16_IMM,
43.33468 -+
43.33469 -+/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.  */
43.33470 -+  BFD_RELOC_BFIN_16_HIGH,
43.33471 -+
43.33472 -+/* ADI Blackfin 'a' part of LSETUP.  */
43.33473 -+  BFD_RELOC_BFIN_4_PCREL,
43.33474 -+
43.33475 -+/* ADI Blackfin.  */
43.33476 -+  BFD_RELOC_BFIN_5_PCREL,
43.33477 -+
43.33478 -+/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.  */
43.33479 -+  BFD_RELOC_BFIN_16_LOW,
43.33480 -+
43.33481 -+/* ADI Blackfin.  */
43.33482 -+  BFD_RELOC_BFIN_10_PCREL,
43.33483 -+
43.33484 -+/* ADI Blackfin 'b' part of LSETUP.  */
43.33485 -+  BFD_RELOC_BFIN_11_PCREL,
43.33486 -+
43.33487 -+/* ADI Blackfin.  */
43.33488 -+  BFD_RELOC_BFIN_12_PCREL_JUMP,
43.33489 -+
43.33490 -+/* ADI Blackfin Short jump, pcrel.  */
43.33491 -+  BFD_RELOC_BFIN_12_PCREL_JUMP_S,
43.33492 -+
43.33493 -+/* ADI Blackfin Call.x not implemented.  */
43.33494 -+  BFD_RELOC_BFIN_24_PCREL_CALL_X,
43.33495 -+
43.33496 -+/* ADI Blackfin Long Jump pcrel.  */
43.33497 -+  BFD_RELOC_BFIN_24_PCREL_JUMP_L,
43.33498 -+
43.33499 -+/* ADI Blackfin FD-PIC relocations.  */
43.33500 -+  BFD_RELOC_BFIN_GOT17M4,
43.33501 -+  BFD_RELOC_BFIN_GOTHI,
43.33502 -+  BFD_RELOC_BFIN_GOTLO,
43.33503 -+  BFD_RELOC_BFIN_FUNCDESC,
43.33504 -+  BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
43.33505 -+  BFD_RELOC_BFIN_FUNCDESC_GOTHI,
43.33506 -+  BFD_RELOC_BFIN_FUNCDESC_GOTLO,
43.33507 -+  BFD_RELOC_BFIN_FUNCDESC_VALUE,
43.33508 -+  BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
43.33509 -+  BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
43.33510 -+  BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
43.33511 -+  BFD_RELOC_BFIN_GOTOFF17M4,
43.33512 -+  BFD_RELOC_BFIN_GOTOFFHI,
43.33513 -+  BFD_RELOC_BFIN_GOTOFFLO,
43.33514 -+
43.33515 -+/* ADI Blackfin GOT relocation.  */
43.33516 -+  BFD_RELOC_BFIN_GOT,
43.33517 -+
43.33518 -+/* ADI Blackfin PLTPC relocation.  */
43.33519 -+  BFD_RELOC_BFIN_PLTPC,
43.33520 -+
43.33521 -+/* ADI Blackfin arithmetic relocation.  */
43.33522 -+  BFD_ARELOC_BFIN_PUSH,
43.33523 -+
43.33524 -+/* ADI Blackfin arithmetic relocation.  */
43.33525 -+  BFD_ARELOC_BFIN_CONST,
43.33526 -+
43.33527 -+/* ADI Blackfin arithmetic relocation.  */
43.33528 -+  BFD_ARELOC_BFIN_ADD,
43.33529 -+
43.33530 -+/* ADI Blackfin arithmetic relocation.  */
43.33531 -+  BFD_ARELOC_BFIN_SUB,
43.33532 -+
43.33533 -+/* ADI Blackfin arithmetic relocation.  */
43.33534 -+  BFD_ARELOC_BFIN_MULT,
43.33535 -+
43.33536 -+/* ADI Blackfin arithmetic relocation.  */
43.33537 -+  BFD_ARELOC_BFIN_DIV,
43.33538 -+
43.33539 -+/* ADI Blackfin arithmetic relocation.  */
43.33540 -+  BFD_ARELOC_BFIN_MOD,
43.33541 -+
43.33542 -+/* ADI Blackfin arithmetic relocation.  */
43.33543 -+  BFD_ARELOC_BFIN_LSHIFT,
43.33544 -+
43.33545 -+/* ADI Blackfin arithmetic relocation.  */
43.33546 -+  BFD_ARELOC_BFIN_RSHIFT,
43.33547 -+
43.33548 -+/* ADI Blackfin arithmetic relocation.  */
43.33549 -+  BFD_ARELOC_BFIN_AND,
43.33550 -+
43.33551 -+/* ADI Blackfin arithmetic relocation.  */
43.33552 -+  BFD_ARELOC_BFIN_OR,
43.33553 -+
43.33554 -+/* ADI Blackfin arithmetic relocation.  */
43.33555 -+  BFD_ARELOC_BFIN_XOR,
43.33556 -+
43.33557 -+/* ADI Blackfin arithmetic relocation.  */
43.33558 -+  BFD_ARELOC_BFIN_LAND,
43.33559 -+
43.33560 -+/* ADI Blackfin arithmetic relocation.  */
43.33561 -+  BFD_ARELOC_BFIN_LOR,
43.33562 -+
43.33563 -+/* ADI Blackfin arithmetic relocation.  */
43.33564 -+  BFD_ARELOC_BFIN_LEN,
43.33565 -+
43.33566 -+/* ADI Blackfin arithmetic relocation.  */
43.33567 -+  BFD_ARELOC_BFIN_NEG,
43.33568 -+
43.33569 -+/* ADI Blackfin arithmetic relocation.  */
43.33570 -+  BFD_ARELOC_BFIN_COMP,
43.33571 -+
43.33572 -+/* ADI Blackfin arithmetic relocation.  */
43.33573 -+  BFD_ARELOC_BFIN_PAGE,
43.33574 -+
43.33575 -+/* ADI Blackfin arithmetic relocation.  */
43.33576 -+  BFD_ARELOC_BFIN_HWPAGE,
43.33577 -+
43.33578 -+/* ADI Blackfin arithmetic relocation.  */
43.33579 -+  BFD_ARELOC_BFIN_ADDR,
43.33580 -+
43.33581 -+/* Mitsubishi D10V relocs.
43.33582 -+This is a 10-bit reloc with the right 2 bits
43.33583 -+assumed to be 0.  */
43.33584 -+  BFD_RELOC_D10V_10_PCREL_R,
43.33585 -+
43.33586 -+/* Mitsubishi D10V relocs.
43.33587 -+This is a 10-bit reloc with the right 2 bits
43.33588 -+assumed to be 0.  This is the same as the previous reloc
43.33589 -+except it is in the left container, i.e.,
43.33590 -+shifted left 15 bits.  */
43.33591 -+  BFD_RELOC_D10V_10_PCREL_L,
43.33592 -+
43.33593 -+/* This is an 18-bit reloc with the right 2 bits
43.33594 -+assumed to be 0.  */
43.33595 -+  BFD_RELOC_D10V_18,
43.33596 -+
43.33597 -+/* This is an 18-bit reloc with the right 2 bits
43.33598 -+assumed to be 0.  */
43.33599 -+  BFD_RELOC_D10V_18_PCREL,
43.33600 -+
43.33601 -+/* Mitsubishi D30V relocs.
43.33602 -+This is a 6-bit absolute reloc.  */
43.33603 -+  BFD_RELOC_D30V_6,
43.33604 -+
43.33605 -+/* This is a 6-bit pc-relative reloc with
43.33606 -+the right 3 bits assumed to be 0.  */
43.33607 -+  BFD_RELOC_D30V_9_PCREL,
43.33608 -+
43.33609 -+/* This is a 6-bit pc-relative reloc with
43.33610 -+the right 3 bits assumed to be 0. Same
43.33611 -+as the previous reloc but on the right side
43.33612 -+of the container.  */
43.33613 -+  BFD_RELOC_D30V_9_PCREL_R,
43.33614 -+
43.33615 -+/* This is a 12-bit absolute reloc with the
43.33616 -+right 3 bitsassumed to be 0.  */
43.33617 -+  BFD_RELOC_D30V_15,
43.33618 -+
43.33619 -+/* This is a 12-bit pc-relative reloc with
43.33620 -+the right 3 bits assumed to be 0.  */
43.33621 -+  BFD_RELOC_D30V_15_PCREL,
43.33622 -+
43.33623 -+/* This is a 12-bit pc-relative reloc with
43.33624 -+the right 3 bits assumed to be 0. Same
43.33625 -+as the previous reloc but on the right side
43.33626 -+of the container.  */
43.33627 -+  BFD_RELOC_D30V_15_PCREL_R,
43.33628 -+
43.33629 -+/* This is an 18-bit absolute reloc with
43.33630 -+the right 3 bits assumed to be 0.  */
43.33631 -+  BFD_RELOC_D30V_21,
43.33632 -+
43.33633 -+/* This is an 18-bit pc-relative reloc with
43.33634 -+the right 3 bits assumed to be 0.  */
43.33635 -+  BFD_RELOC_D30V_21_PCREL,
43.33636 -+
43.33637 -+/* This is an 18-bit pc-relative reloc with
43.33638 -+the right 3 bits assumed to be 0. Same
43.33639 -+as the previous reloc but on the right side
43.33640 -+of the container.  */
43.33641 -+  BFD_RELOC_D30V_21_PCREL_R,
43.33642 -+
43.33643 -+/* This is a 32-bit absolute reloc.  */
43.33644 -+  BFD_RELOC_D30V_32,
43.33645 -+
43.33646 -+/* This is a 32-bit pc-relative reloc.  */
43.33647 -+  BFD_RELOC_D30V_32_PCREL,
43.33648 -+
43.33649 -+/* DLX relocs  */
43.33650 -+  BFD_RELOC_DLX_HI16_S,
43.33651 -+
43.33652 -+/* DLX relocs  */
43.33653 -+  BFD_RELOC_DLX_LO16,
43.33654 -+
43.33655 -+/* DLX relocs  */
43.33656 -+  BFD_RELOC_DLX_JMP26,
43.33657 -+
43.33658 -+/* Renesas M16C/M32C Relocations.  */
43.33659 -+  BFD_RELOC_M32C_HI8,
43.33660 -+  BFD_RELOC_M32C_RL_JUMP,
43.33661 -+  BFD_RELOC_M32C_RL_1ADDR,
43.33662 -+  BFD_RELOC_M32C_RL_2ADDR,
43.33663 -+
43.33664 -+/* Renesas M32R (formerly Mitsubishi M32R) relocs.
43.33665 -+This is a 24 bit absolute address.  */
43.33666 -+  BFD_RELOC_M32R_24,
43.33667 -+
43.33668 -+/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.  */
43.33669 -+  BFD_RELOC_M32R_10_PCREL,
43.33670 -+
43.33671 -+/* This is an 18-bit reloc with the right 2 bits assumed to be 0.  */
43.33672 -+  BFD_RELOC_M32R_18_PCREL,
43.33673 -+
43.33674 -+/* This is a 26-bit reloc with the right 2 bits assumed to be 0.  */
43.33675 -+  BFD_RELOC_M32R_26_PCREL,
43.33676 -+
43.33677 -+/* This is a 16-bit reloc containing the high 16 bits of an address
43.33678 -+used when the lower 16 bits are treated as unsigned.  */
43.33679 -+  BFD_RELOC_M32R_HI16_ULO,
43.33680 -+
43.33681 -+/* This is a 16-bit reloc containing the high 16 bits of an address
43.33682 -+used when the lower 16 bits are treated as signed.  */
43.33683 -+  BFD_RELOC_M32R_HI16_SLO,
43.33684 -+
43.33685 -+/* This is a 16-bit reloc containing the lower 16 bits of an address.  */
43.33686 -+  BFD_RELOC_M32R_LO16,
43.33687 -+
43.33688 -+/* This is a 16-bit reloc containing the small data area offset for use in
43.33689 -+add3, load, and store instructions.  */
43.33690 -+  BFD_RELOC_M32R_SDA16,
43.33691 -+
43.33692 -+/* For PIC.  */
43.33693 -+  BFD_RELOC_M32R_GOT24,
43.33694 -+  BFD_RELOC_M32R_26_PLTREL,
43.33695 -+  BFD_RELOC_M32R_COPY,
43.33696 -+  BFD_RELOC_M32R_GLOB_DAT,
43.33697 -+  BFD_RELOC_M32R_JMP_SLOT,
43.33698 -+  BFD_RELOC_M32R_RELATIVE,
43.33699 -+  BFD_RELOC_M32R_GOTOFF,
43.33700 -+  BFD_RELOC_M32R_GOTOFF_HI_ULO,
43.33701 -+  BFD_RELOC_M32R_GOTOFF_HI_SLO,
43.33702 -+  BFD_RELOC_M32R_GOTOFF_LO,
43.33703 -+  BFD_RELOC_M32R_GOTPC24,
43.33704 -+  BFD_RELOC_M32R_GOT16_HI_ULO,
43.33705 -+  BFD_RELOC_M32R_GOT16_HI_SLO,
43.33706 -+  BFD_RELOC_M32R_GOT16_LO,
43.33707 -+  BFD_RELOC_M32R_GOTPC_HI_ULO,
43.33708 -+  BFD_RELOC_M32R_GOTPC_HI_SLO,
43.33709 -+  BFD_RELOC_M32R_GOTPC_LO,
43.33710 -+
43.33711 -+/* This is a 9-bit reloc  */
43.33712 -+  BFD_RELOC_V850_9_PCREL,
43.33713 -+
43.33714 -+/* This is a 22-bit reloc  */
43.33715 -+  BFD_RELOC_V850_22_PCREL,
43.33716 -+
43.33717 -+/* This is a 16 bit offset from the short data area pointer.  */
43.33718 -+  BFD_RELOC_V850_SDA_16_16_OFFSET,
43.33719 -+
43.33720 -+/* This is a 16 bit offset (of which only 15 bits are used) from the
43.33721 -+short data area pointer.  */
43.33722 -+  BFD_RELOC_V850_SDA_15_16_OFFSET,
43.33723 -+
43.33724 -+/* This is a 16 bit offset from the zero data area pointer.  */
43.33725 -+  BFD_RELOC_V850_ZDA_16_16_OFFSET,
43.33726 -+
43.33727 -+/* This is a 16 bit offset (of which only 15 bits are used) from the
43.33728 -+zero data area pointer.  */
43.33729 -+  BFD_RELOC_V850_ZDA_15_16_OFFSET,
43.33730 -+
43.33731 -+/* This is an 8 bit offset (of which only 6 bits are used) from the
43.33732 -+tiny data area pointer.  */
43.33733 -+  BFD_RELOC_V850_TDA_6_8_OFFSET,
43.33734 -+
43.33735 -+/* This is an 8bit offset (of which only 7 bits are used) from the tiny
43.33736 -+data area pointer.  */
43.33737 -+  BFD_RELOC_V850_TDA_7_8_OFFSET,
43.33738 -+
43.33739 -+/* This is a 7 bit offset from the tiny data area pointer.  */
43.33740 -+  BFD_RELOC_V850_TDA_7_7_OFFSET,
43.33741 -+
43.33742 -+/* This is a 16 bit offset from the tiny data area pointer.  */
43.33743 -+  BFD_RELOC_V850_TDA_16_16_OFFSET,
43.33744 -+
43.33745 -+/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
43.33746 -+data area pointer.  */
43.33747 -+  BFD_RELOC_V850_TDA_4_5_OFFSET,
43.33748 -+
43.33749 -+/* This is a 4 bit offset from the tiny data area pointer.  */
43.33750 -+  BFD_RELOC_V850_TDA_4_4_OFFSET,
43.33751 -+
43.33752 -+/* This is a 16 bit offset from the short data area pointer, with the
43.33753 -+bits placed non-contiguously in the instruction.  */
43.33754 -+  BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
43.33755 -+
43.33756 -+/* This is a 16 bit offset from the zero data area pointer, with the
43.33757 -+bits placed non-contiguously in the instruction.  */
43.33758 -+  BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
43.33759 -+
43.33760 -+/* This is a 6 bit offset from the call table base pointer.  */
43.33761 -+  BFD_RELOC_V850_CALLT_6_7_OFFSET,
43.33762 -+
43.33763 -+/* This is a 16 bit offset from the call table base pointer.  */
43.33764 -+  BFD_RELOC_V850_CALLT_16_16_OFFSET,
43.33765 -+
43.33766 -+/* Used for relaxing indirect function calls.  */
43.33767 -+  BFD_RELOC_V850_LONGCALL,
43.33768 -+
43.33769 -+/* Used for relaxing indirect jumps.  */
43.33770 -+  BFD_RELOC_V850_LONGJUMP,
43.33771 -+
43.33772 -+/* Used to maintain alignment whilst relaxing.  */
43.33773 -+  BFD_RELOC_V850_ALIGN,
43.33774 -+
43.33775 -+/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
43.33776 -+instructions.  */
43.33777 -+  BFD_RELOC_V850_LO16_SPLIT_OFFSET,
43.33778 -+
43.33779 -+/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
43.33780 -+instruction.  */
43.33781 -+  BFD_RELOC_MN10300_32_PCREL,
43.33782 -+
43.33783 -+/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
43.33784 -+instruction.  */
43.33785 -+  BFD_RELOC_MN10300_16_PCREL,
43.33786 -+
43.33787 -+/* This is a 8bit DP reloc for the tms320c30, where the most
43.33788 -+significant 8 bits of a 24 bit word are placed into the least
43.33789 -+significant 8 bits of the opcode.  */
43.33790 -+  BFD_RELOC_TIC30_LDP,
43.33791 -+
43.33792 -+/* This is a 7bit reloc for the tms320c54x, where the least
43.33793 -+significant 7 bits of a 16 bit word are placed into the least
43.33794 -+significant 7 bits of the opcode.  */
43.33795 -+  BFD_RELOC_TIC54X_PARTLS7,
43.33796 -+
43.33797 -+/* This is a 9bit DP reloc for the tms320c54x, where the most
43.33798 -+significant 9 bits of a 16 bit word are placed into the least
43.33799 -+significant 9 bits of the opcode.  */
43.33800 -+  BFD_RELOC_TIC54X_PARTMS9,
43.33801 -+
43.33802 -+/* This is an extended address 23-bit reloc for the tms320c54x.  */
43.33803 -+  BFD_RELOC_TIC54X_23,
43.33804 -+
43.33805 -+/* This is a 16-bit reloc for the tms320c54x, where the least
43.33806 -+significant 16 bits of a 23-bit extended address are placed into
43.33807 -+the opcode.  */
43.33808 -+  BFD_RELOC_TIC54X_16_OF_23,
43.33809 -+
43.33810 -+/* This is a reloc for the tms320c54x, where the most
43.33811 -+significant 7 bits of a 23-bit extended address are placed into
43.33812 -+the opcode.  */
43.33813 -+  BFD_RELOC_TIC54X_MS7_OF_23,
43.33814 -+
43.33815 -+/* This is a 48 bit reloc for the FR30 that stores 32 bits.  */
43.33816 -+  BFD_RELOC_FR30_48,
43.33817 -+
43.33818 -+/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
43.33819 -+two sections.  */
43.33820 -+  BFD_RELOC_FR30_20,
43.33821 -+
43.33822 -+/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
43.33823 -+4 bits.  */
43.33824 -+  BFD_RELOC_FR30_6_IN_4,
43.33825 -+
43.33826 -+/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
43.33827 -+into 8 bits.  */
43.33828 -+  BFD_RELOC_FR30_8_IN_8,
43.33829 -+
43.33830 -+/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
43.33831 -+into 8 bits.  */
43.33832 -+  BFD_RELOC_FR30_9_IN_8,
43.33833 -+
43.33834 -+/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
43.33835 -+into 8 bits.  */
43.33836 -+  BFD_RELOC_FR30_10_IN_8,
43.33837 -+
43.33838 -+/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
43.33839 -+short offset into 8 bits.  */
43.33840 -+  BFD_RELOC_FR30_9_PCREL,
43.33841 -+
43.33842 -+/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
43.33843 -+short offset into 11 bits.  */
43.33844 -+  BFD_RELOC_FR30_12_PCREL,
43.33845 -+
43.33846 -+/* Motorola Mcore relocations.  */
43.33847 -+  BFD_RELOC_MCORE_PCREL_IMM8BY4,
43.33848 -+  BFD_RELOC_MCORE_PCREL_IMM11BY2,
43.33849 -+  BFD_RELOC_MCORE_PCREL_IMM4BY2,
43.33850 -+  BFD_RELOC_MCORE_PCREL_32,
43.33851 -+  BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
43.33852 -+  BFD_RELOC_MCORE_RVA,
43.33853 -+
43.33854 -+/* Toshiba Media Processor Relocations.  */
43.33855 -+  BFD_RELOC_MEP_8,
43.33856 -+  BFD_RELOC_MEP_16,
43.33857 -+  BFD_RELOC_MEP_32,
43.33858 -+  BFD_RELOC_MEP_PCREL8A2,
43.33859 -+  BFD_RELOC_MEP_PCREL12A2,
43.33860 -+  BFD_RELOC_MEP_PCREL17A2,
43.33861 -+  BFD_RELOC_MEP_PCREL24A2,
43.33862 -+  BFD_RELOC_MEP_PCABS24A2,
43.33863 -+  BFD_RELOC_MEP_LOW16,
43.33864 -+  BFD_RELOC_MEP_HI16U,
43.33865 -+  BFD_RELOC_MEP_HI16S,
43.33866 -+  BFD_RELOC_MEP_GPREL,
43.33867 -+  BFD_RELOC_MEP_TPREL,
43.33868 -+  BFD_RELOC_MEP_TPREL7,
43.33869 -+  BFD_RELOC_MEP_TPREL7A2,
43.33870 -+  BFD_RELOC_MEP_TPREL7A4,
43.33871 -+  BFD_RELOC_MEP_UIMM24,
43.33872 -+  BFD_RELOC_MEP_ADDR24A4,
43.33873 -+  BFD_RELOC_MEP_GNU_VTINHERIT,
43.33874 -+  BFD_RELOC_MEP_GNU_VTENTRY,
43.33875 -+
43.33876 -+
43.33877 -+/* These are relocations for the GETA instruction.  */
43.33878 -+  BFD_RELOC_MMIX_GETA,
43.33879 -+  BFD_RELOC_MMIX_GETA_1,
43.33880 -+  BFD_RELOC_MMIX_GETA_2,
43.33881 -+  BFD_RELOC_MMIX_GETA_3,
43.33882 -+
43.33883 -+/* These are relocations for a conditional branch instruction.  */
43.33884 -+  BFD_RELOC_MMIX_CBRANCH,
43.33885 -+  BFD_RELOC_MMIX_CBRANCH_J,
43.33886 -+  BFD_RELOC_MMIX_CBRANCH_1,
43.33887 -+  BFD_RELOC_MMIX_CBRANCH_2,
43.33888 -+  BFD_RELOC_MMIX_CBRANCH_3,
43.33889 -+
43.33890 -+/* These are relocations for the PUSHJ instruction.  */
43.33891 -+  BFD_RELOC_MMIX_PUSHJ,
43.33892 -+  BFD_RELOC_MMIX_PUSHJ_1,
43.33893 -+  BFD_RELOC_MMIX_PUSHJ_2,
43.33894 -+  BFD_RELOC_MMIX_PUSHJ_3,
43.33895 -+  BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
43.33896 -+
43.33897 -+/* These are relocations for the JMP instruction.  */
43.33898 -+  BFD_RELOC_MMIX_JMP,
43.33899 -+  BFD_RELOC_MMIX_JMP_1,
43.33900 -+  BFD_RELOC_MMIX_JMP_2,
43.33901 -+  BFD_RELOC_MMIX_JMP_3,
43.33902 -+
43.33903 -+/* This is a relocation for a relative address as in a GETA instruction or
43.33904 -+a branch.  */
43.33905 -+  BFD_RELOC_MMIX_ADDR19,
43.33906 -+
43.33907 -+/* This is a relocation for a relative address as in a JMP instruction.  */
43.33908 -+  BFD_RELOC_MMIX_ADDR27,
43.33909 -+
43.33910 -+/* This is a relocation for an instruction field that may be a general
43.33911 -+register or a value 0..255.  */
43.33912 -+  BFD_RELOC_MMIX_REG_OR_BYTE,
43.33913 -+
43.33914 -+/* This is a relocation for an instruction field that may be a general
43.33915 -+register.  */
43.33916 -+  BFD_RELOC_MMIX_REG,
43.33917 -+
43.33918 -+/* This is a relocation for two instruction fields holding a register and
43.33919 -+an offset, the equivalent of the relocation.  */
43.33920 -+  BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
43.33921 -+
43.33922 -+/* This relocation is an assertion that the expression is not allocated as
43.33923 -+a global register.  It does not modify contents.  */
43.33924 -+  BFD_RELOC_MMIX_LOCAL,
43.33925 -+
43.33926 -+/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
43.33927 -+short offset into 7 bits.  */
43.33928 -+  BFD_RELOC_AVR_7_PCREL,
43.33929 -+
43.33930 -+/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
43.33931 -+short offset into 12 bits.  */
43.33932 -+  BFD_RELOC_AVR_13_PCREL,
43.33933 -+
43.33934 -+/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
43.33935 -+program memory address) into 16 bits.  */
43.33936 -+  BFD_RELOC_AVR_16_PM,
43.33937 -+
43.33938 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
43.33939 -+data memory address) into 8 bit immediate value of LDI insn.  */
43.33940 -+  BFD_RELOC_AVR_LO8_LDI,
43.33941 -+
43.33942 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
43.33943 -+of data memory address) into 8 bit immediate value of LDI insn.  */
43.33944 -+  BFD_RELOC_AVR_HI8_LDI,
43.33945 -+
43.33946 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
43.33947 -+of program memory address) into 8 bit immediate value of LDI insn.  */
43.33948 -+  BFD_RELOC_AVR_HH8_LDI,
43.33949 -+
43.33950 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
43.33951 -+of 32 bit value) into 8 bit immediate value of LDI insn.  */
43.33952 -+  BFD_RELOC_AVR_MS8_LDI,
43.33953 -+
43.33954 -+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
43.33955 -+(usually data memory address) into 8 bit immediate value of SUBI insn.  */
43.33956 -+  BFD_RELOC_AVR_LO8_LDI_NEG,
43.33957 -+
43.33958 -+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
43.33959 -+(high 8 bit of data memory address) into 8 bit immediate value of
43.33960 -+SUBI insn.  */
43.33961 -+  BFD_RELOC_AVR_HI8_LDI_NEG,
43.33962 -+
43.33963 -+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
43.33964 -+(most high 8 bit of program memory address) into 8 bit immediate value
43.33965 -+of LDI or SUBI insn.  */
43.33966 -+  BFD_RELOC_AVR_HH8_LDI_NEG,
43.33967 -+
43.33968 -+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
43.33969 -+of 32 bit value) into 8 bit immediate value of LDI insn.  */
43.33970 -+  BFD_RELOC_AVR_MS8_LDI_NEG,
43.33971 -+
43.33972 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
43.33973 -+command address) into 8 bit immediate value of LDI insn.  */
43.33974 -+  BFD_RELOC_AVR_LO8_LDI_PM,
43.33975 -+
43.33976 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value 
43.33977 -+(command address) into 8 bit immediate value of LDI insn. If the address
43.33978 -+is beyond the 128k boundary, the linker inserts a jump stub for this reloc
43.33979 -+in the lower 128k.  */
43.33980 -+  BFD_RELOC_AVR_LO8_LDI_GS,
43.33981 -+
43.33982 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
43.33983 -+of command address) into 8 bit immediate value of LDI insn.  */
43.33984 -+  BFD_RELOC_AVR_HI8_LDI_PM,
43.33985 -+
43.33986 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
43.33987 -+of command address) into 8 bit immediate value of LDI insn.  If the address
43.33988 -+is beyond the 128k boundary, the linker inserts a jump stub for this reloc
43.33989 -+below 128k.  */
43.33990 -+  BFD_RELOC_AVR_HI8_LDI_GS,
43.33991 -+
43.33992 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
43.33993 -+of command address) into 8 bit immediate value of LDI insn.  */
43.33994 -+  BFD_RELOC_AVR_HH8_LDI_PM,
43.33995 -+
43.33996 -+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
43.33997 -+(usually command address) into 8 bit immediate value of SUBI insn.  */
43.33998 -+  BFD_RELOC_AVR_LO8_LDI_PM_NEG,
43.33999 -+
43.34000 -+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
43.34001 -+(high 8 bit of 16 bit command address) into 8 bit immediate value
43.34002 -+of SUBI insn.  */
43.34003 -+  BFD_RELOC_AVR_HI8_LDI_PM_NEG,
43.34004 -+
43.34005 -+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
43.34006 -+(high 6 bit of 22 bit command address) into 8 bit immediate
43.34007 -+value of SUBI insn.  */
43.34008 -+  BFD_RELOC_AVR_HH8_LDI_PM_NEG,
43.34009 -+
43.34010 -+/* This is a 32 bit reloc for the AVR that stores 23 bit value
43.34011 -+into 22 bits.  */
43.34012 -+  BFD_RELOC_AVR_CALL,
43.34013 -+
43.34014 -+/* This is a 16 bit reloc for the AVR that stores all needed bits
43.34015 -+for absolute addressing with ldi with overflow check to linktime  */
43.34016 -+  BFD_RELOC_AVR_LDI,
43.34017 -+
43.34018 -+/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
43.34019 -+instructions  */
43.34020 -+  BFD_RELOC_AVR_6,
43.34021 -+
43.34022 -+/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
43.34023 -+instructions  */
43.34024 -+  BFD_RELOC_AVR_6_ADIW,
43.34025 -+
43.34026 -+/* Direct 12 bit.  */
43.34027 -+  BFD_RELOC_390_12,
43.34028 -+
43.34029 -+/* 12 bit GOT offset.  */
43.34030 -+  BFD_RELOC_390_GOT12,
43.34031 -+
43.34032 -+/* 32 bit PC relative PLT address.  */
43.34033 -+  BFD_RELOC_390_PLT32,
43.34034 -+
43.34035 -+/* Copy symbol at runtime.  */
43.34036 -+  BFD_RELOC_390_COPY,
43.34037 -+
43.34038 -+/* Create GOT entry.  */
43.34039 -+  BFD_RELOC_390_GLOB_DAT,
43.34040 -+
43.34041 -+/* Create PLT entry.  */
43.34042 -+  BFD_RELOC_390_JMP_SLOT,
43.34043 -+
43.34044 -+/* Adjust by program base.  */
43.34045 -+  BFD_RELOC_390_RELATIVE,
43.34046 -+
43.34047 -+/* 32 bit PC relative offset to GOT.  */
43.34048 -+  BFD_RELOC_390_GOTPC,
43.34049 -+
43.34050 -+/* 16 bit GOT offset.  */
43.34051 -+  BFD_RELOC_390_GOT16,
43.34052 -+
43.34053 -+/* PC relative 16 bit shifted by 1.  */
43.34054 -+  BFD_RELOC_390_PC16DBL,
43.34055 -+
43.34056 -+/* 16 bit PC rel. PLT shifted by 1.  */
43.34057 -+  BFD_RELOC_390_PLT16DBL,
43.34058 -+
43.34059 -+/* PC relative 32 bit shifted by 1.  */
43.34060 -+  BFD_RELOC_390_PC32DBL,
43.34061 -+
43.34062 -+/* 32 bit PC rel. PLT shifted by 1.  */
43.34063 -+  BFD_RELOC_390_PLT32DBL,
43.34064 -+
43.34065 -+/* 32 bit PC rel. GOT shifted by 1.  */
43.34066 -+  BFD_RELOC_390_GOTPCDBL,
43.34067 -+
43.34068 -+/* 64 bit GOT offset.  */
43.34069 -+  BFD_RELOC_390_GOT64,
43.34070 -+
43.34071 -+/* 64 bit PC relative PLT address.  */
43.34072 -+  BFD_RELOC_390_PLT64,
43.34073 -+
43.34074 -+/* 32 bit rel. offset to GOT entry.  */
43.34075 -+  BFD_RELOC_390_GOTENT,
43.34076 -+
43.34077 -+/* 64 bit offset to GOT.  */
43.34078 -+  BFD_RELOC_390_GOTOFF64,
43.34079 -+
43.34080 -+/* 12-bit offset to symbol-entry within GOT, with PLT handling.  */
43.34081 -+  BFD_RELOC_390_GOTPLT12,
43.34082 -+
43.34083 -+/* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
43.34084 -+  BFD_RELOC_390_GOTPLT16,
43.34085 -+
43.34086 -+/* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
43.34087 -+  BFD_RELOC_390_GOTPLT32,
43.34088 -+
43.34089 -+/* 64-bit offset to symbol-entry within GOT, with PLT handling.  */
43.34090 -+  BFD_RELOC_390_GOTPLT64,
43.34091 -+
43.34092 -+/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling.  */
43.34093 -+  BFD_RELOC_390_GOTPLTENT,
43.34094 -+
43.34095 -+/* 16-bit rel. offset from the GOT to a PLT entry.  */
43.34096 -+  BFD_RELOC_390_PLTOFF16,
43.34097 -+
43.34098 -+/* 32-bit rel. offset from the GOT to a PLT entry.  */
43.34099 -+  BFD_RELOC_390_PLTOFF32,
43.34100 -+
43.34101 -+/* 64-bit rel. offset from the GOT to a PLT entry.  */
43.34102 -+  BFD_RELOC_390_PLTOFF64,
43.34103 -+
43.34104 -+/* s390 tls relocations.  */
43.34105 -+  BFD_RELOC_390_TLS_LOAD,
43.34106 -+  BFD_RELOC_390_TLS_GDCALL,
43.34107 -+  BFD_RELOC_390_TLS_LDCALL,
43.34108 -+  BFD_RELOC_390_TLS_GD32,
43.34109 -+  BFD_RELOC_390_TLS_GD64,
43.34110 -+  BFD_RELOC_390_TLS_GOTIE12,
43.34111 -+  BFD_RELOC_390_TLS_GOTIE32,
43.34112 -+  BFD_RELOC_390_TLS_GOTIE64,
43.34113 -+  BFD_RELOC_390_TLS_LDM32,
43.34114 -+  BFD_RELOC_390_TLS_LDM64,
43.34115 -+  BFD_RELOC_390_TLS_IE32,
43.34116 -+  BFD_RELOC_390_TLS_IE64,
43.34117 -+  BFD_RELOC_390_TLS_IEENT,
43.34118 -+  BFD_RELOC_390_TLS_LE32,
43.34119 -+  BFD_RELOC_390_TLS_LE64,
43.34120 -+  BFD_RELOC_390_TLS_LDO32,
43.34121 -+  BFD_RELOC_390_TLS_LDO64,
43.34122 -+  BFD_RELOC_390_TLS_DTPMOD,
43.34123 -+  BFD_RELOC_390_TLS_DTPOFF,
43.34124 -+  BFD_RELOC_390_TLS_TPOFF,
43.34125 -+
43.34126 -+/* Long displacement extension.  */
43.34127 -+  BFD_RELOC_390_20,
43.34128 -+  BFD_RELOC_390_GOT20,
43.34129 -+  BFD_RELOC_390_GOTPLT20,
43.34130 -+  BFD_RELOC_390_TLS_GOTIE20,
43.34131 -+
43.34132 -+/* Score relocations  */
43.34133 -+  BFD_RELOC_SCORE_DUMMY1,
43.34134 -+
43.34135 -+/* Low 16 bit for load/store  */
43.34136 -+  BFD_RELOC_SCORE_GPREL15,
43.34137 -+
43.34138 -+/* This is a 24-bit reloc with the right 1 bit assumed to be 0  */
43.34139 -+  BFD_RELOC_SCORE_DUMMY2,
43.34140 -+  BFD_RELOC_SCORE_JMP,
43.34141 -+
43.34142 -+/* This is a 19-bit reloc with the right 1 bit assumed to be 0  */
43.34143 -+  BFD_RELOC_SCORE_BRANCH,
43.34144 -+
43.34145 -+/* This is a 11-bit reloc with the right 1 bit assumed to be 0  */
43.34146 -+  BFD_RELOC_SCORE16_JMP,
43.34147 -+
43.34148 -+/* This is a 8-bit reloc with the right 1 bit assumed to be 0  */
43.34149 -+  BFD_RELOC_SCORE16_BRANCH,
43.34150 -+
43.34151 -+/* Undocumented Score relocs  */
43.34152 -+  BFD_RELOC_SCORE_GOT15,
43.34153 -+  BFD_RELOC_SCORE_GOT_LO16,
43.34154 -+  BFD_RELOC_SCORE_CALL15,
43.34155 -+  BFD_RELOC_SCORE_DUMMY_HI16,
43.34156 -+
43.34157 -+/* Scenix IP2K - 9-bit register number / data address  */
43.34158 -+  BFD_RELOC_IP2K_FR9,
43.34159 -+
43.34160 -+/* Scenix IP2K - 4-bit register/data bank number  */
43.34161 -+  BFD_RELOC_IP2K_BANK,
43.34162 -+
43.34163 -+/* Scenix IP2K - low 13 bits of instruction word address  */
43.34164 -+  BFD_RELOC_IP2K_ADDR16CJP,
43.34165 -+
43.34166 -+/* Scenix IP2K - high 3 bits of instruction word address  */
43.34167 -+  BFD_RELOC_IP2K_PAGE3,
43.34168 -+
43.34169 -+/* Scenix IP2K - ext/low/high 8 bits of data address  */
43.34170 -+  BFD_RELOC_IP2K_LO8DATA,
43.34171 -+  BFD_RELOC_IP2K_HI8DATA,
43.34172 -+  BFD_RELOC_IP2K_EX8DATA,
43.34173 -+
43.34174 -+/* Scenix IP2K - low/high 8 bits of instruction word address  */
43.34175 -+  BFD_RELOC_IP2K_LO8INSN,
43.34176 -+  BFD_RELOC_IP2K_HI8INSN,
43.34177 -+
43.34178 -+/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0  */
43.34179 -+  BFD_RELOC_IP2K_PC_SKIP,
43.34180 -+
43.34181 -+/* Scenix IP2K - 16 bit word address in text section.  */
43.34182 -+  BFD_RELOC_IP2K_TEXT,
43.34183 -+
43.34184 -+/* Scenix IP2K - 7-bit sp or dp offset  */
43.34185 -+  BFD_RELOC_IP2K_FR_OFFSET,
43.34186 -+
43.34187 -+/* Scenix VPE4K coprocessor - data/insn-space addressing  */
43.34188 -+  BFD_RELOC_VPE4KMATH_DATA,
43.34189 -+  BFD_RELOC_VPE4KMATH_INSN,
43.34190 -+
43.34191 -+/* These two relocations are used by the linker to determine which of
43.34192 -+the entries in a C++ virtual function table are actually used.  When
43.34193 -+the --gc-sections option is given, the linker will zero out the entries
43.34194 -+that are not used, so that the code for those functions need not be
43.34195 -+included in the output.
43.34196 -+
43.34197 -+VTABLE_INHERIT is a zero-space relocation used to describe to the
43.34198 -+linker the inheritance tree of a C++ virtual function table.  The
43.34199 -+relocation's symbol should be the parent class' vtable, and the
43.34200 -+relocation should be located at the child vtable.
43.34201 -+
43.34202 -+VTABLE_ENTRY is a zero-space relocation that describes the use of a
43.34203 -+virtual function table entry.  The reloc's symbol should refer to the
43.34204 -+table of the class mentioned in the code.  Off of that base, an offset
43.34205 -+describes the entry that is being used.  For Rela hosts, this offset
43.34206 -+is stored in the reloc's addend.  For Rel hosts, we are forced to put
43.34207 -+this offset in the reloc's section offset.  */
43.34208 -+  BFD_RELOC_VTABLE_INHERIT,
43.34209 -+  BFD_RELOC_VTABLE_ENTRY,
43.34210 -+
43.34211 -+/* Intel IA64 Relocations.  */
43.34212 -+  BFD_RELOC_IA64_IMM14,
43.34213 -+  BFD_RELOC_IA64_IMM22,
43.34214 -+  BFD_RELOC_IA64_IMM64,
43.34215 -+  BFD_RELOC_IA64_DIR32MSB,
43.34216 -+  BFD_RELOC_IA64_DIR32LSB,
43.34217 -+  BFD_RELOC_IA64_DIR64MSB,
43.34218 -+  BFD_RELOC_IA64_DIR64LSB,
43.34219 -+  BFD_RELOC_IA64_GPREL22,
43.34220 -+  BFD_RELOC_IA64_GPREL64I,
43.34221 -+  BFD_RELOC_IA64_GPREL32MSB,
43.34222 -+  BFD_RELOC_IA64_GPREL32LSB,
43.34223 -+  BFD_RELOC_IA64_GPREL64MSB,
43.34224 -+  BFD_RELOC_IA64_GPREL64LSB,
43.34225 -+  BFD_RELOC_IA64_LTOFF22,
43.34226 -+  BFD_RELOC_IA64_LTOFF64I,
43.34227 -+  BFD_RELOC_IA64_PLTOFF22,
43.34228 -+  BFD_RELOC_IA64_PLTOFF64I,
43.34229 -+  BFD_RELOC_IA64_PLTOFF64MSB,
43.34230 -+  BFD_RELOC_IA64_PLTOFF64LSB,
43.34231 -+  BFD_RELOC_IA64_FPTR64I,
43.34232 -+  BFD_RELOC_IA64_FPTR32MSB,
43.34233 -+  BFD_RELOC_IA64_FPTR32LSB,
43.34234 -+  BFD_RELOC_IA64_FPTR64MSB,
43.34235 -+  BFD_RELOC_IA64_FPTR64LSB,
43.34236 -+  BFD_RELOC_IA64_PCREL21B,
43.34237 -+  BFD_RELOC_IA64_PCREL21BI,
43.34238 -+  BFD_RELOC_IA64_PCREL21M,
43.34239 -+  BFD_RELOC_IA64_PCREL21F,
43.34240 -+  BFD_RELOC_IA64_PCREL22,
43.34241 -+  BFD_RELOC_IA64_PCREL60B,
43.34242 -+  BFD_RELOC_IA64_PCREL64I,
43.34243 -+  BFD_RELOC_IA64_PCREL32MSB,
43.34244 -+  BFD_RELOC_IA64_PCREL32LSB,
43.34245 -+  BFD_RELOC_IA64_PCREL64MSB,
43.34246 -+  BFD_RELOC_IA64_PCREL64LSB,
43.34247 -+  BFD_RELOC_IA64_LTOFF_FPTR22,
43.34248 -+  BFD_RELOC_IA64_LTOFF_FPTR64I,
43.34249 -+  BFD_RELOC_IA64_LTOFF_FPTR32MSB,
43.34250 -+  BFD_RELOC_IA64_LTOFF_FPTR32LSB,
43.34251 -+  BFD_RELOC_IA64_LTOFF_FPTR64MSB,
43.34252 -+  BFD_RELOC_IA64_LTOFF_FPTR64LSB,
43.34253 -+  BFD_RELOC_IA64_SEGREL32MSB,
43.34254 -+  BFD_RELOC_IA64_SEGREL32LSB,
43.34255 -+  BFD_RELOC_IA64_SEGREL64MSB,
43.34256 -+  BFD_RELOC_IA64_SEGREL64LSB,
43.34257 -+  BFD_RELOC_IA64_SECREL32MSB,
43.34258 -+  BFD_RELOC_IA64_SECREL32LSB,
43.34259 -+  BFD_RELOC_IA64_SECREL64MSB,
43.34260 -+  BFD_RELOC_IA64_SECREL64LSB,
43.34261 -+  BFD_RELOC_IA64_REL32MSB,
43.34262 -+  BFD_RELOC_IA64_REL32LSB,
43.34263 -+  BFD_RELOC_IA64_REL64MSB,
43.34264 -+  BFD_RELOC_IA64_REL64LSB,
43.34265 -+  BFD_RELOC_IA64_LTV32MSB,
43.34266 -+  BFD_RELOC_IA64_LTV32LSB,
43.34267 -+  BFD_RELOC_IA64_LTV64MSB,
43.34268 -+  BFD_RELOC_IA64_LTV64LSB,
43.34269 -+  BFD_RELOC_IA64_IPLTMSB,
43.34270 -+  BFD_RELOC_IA64_IPLTLSB,
43.34271 -+  BFD_RELOC_IA64_COPY,
43.34272 -+  BFD_RELOC_IA64_LTOFF22X,
43.34273 -+  BFD_RELOC_IA64_LDXMOV,
43.34274 -+  BFD_RELOC_IA64_TPREL14,
43.34275 -+  BFD_RELOC_IA64_TPREL22,
43.34276 -+  BFD_RELOC_IA64_TPREL64I,
43.34277 -+  BFD_RELOC_IA64_TPREL64MSB,
43.34278 -+  BFD_RELOC_IA64_TPREL64LSB,
43.34279 -+  BFD_RELOC_IA64_LTOFF_TPREL22,
43.34280 -+  BFD_RELOC_IA64_DTPMOD64MSB,
43.34281 -+  BFD_RELOC_IA64_DTPMOD64LSB,
43.34282 -+  BFD_RELOC_IA64_LTOFF_DTPMOD22,
43.34283 -+  BFD_RELOC_IA64_DTPREL14,
43.34284 -+  BFD_RELOC_IA64_DTPREL22,
43.34285 -+  BFD_RELOC_IA64_DTPREL64I,
43.34286 -+  BFD_RELOC_IA64_DTPREL32MSB,
43.34287 -+  BFD_RELOC_IA64_DTPREL32LSB,
43.34288 -+  BFD_RELOC_IA64_DTPREL64MSB,
43.34289 -+  BFD_RELOC_IA64_DTPREL64LSB,
43.34290 -+  BFD_RELOC_IA64_LTOFF_DTPREL22,
43.34291 -+
43.34292 -+/* Motorola 68HC11 reloc.
43.34293 -+This is the 8 bit high part of an absolute address.  */
43.34294 -+  BFD_RELOC_M68HC11_HI8,
43.34295 -+
43.34296 -+/* Motorola 68HC11 reloc.
43.34297 -+This is the 8 bit low part of an absolute address.  */
43.34298 -+  BFD_RELOC_M68HC11_LO8,
43.34299 -+
43.34300 -+/* Motorola 68HC11 reloc.
43.34301 -+This is the 3 bit of a value.  */
43.34302 -+  BFD_RELOC_M68HC11_3B,
43.34303 -+
43.34304 -+/* Motorola 68HC11 reloc.
43.34305 -+This reloc marks the beginning of a jump/call instruction.
43.34306 -+It is used for linker relaxation to correctly identify beginning
43.34307 -+of instruction and change some branches to use PC-relative
43.34308 -+addressing mode.  */
43.34309 -+  BFD_RELOC_M68HC11_RL_JUMP,
43.34310 -+
43.34311 -+/* Motorola 68HC11 reloc.
43.34312 -+This reloc marks a group of several instructions that gcc generates
43.34313 -+and for which the linker relaxation pass can modify and/or remove
43.34314 -+some of them.  */
43.34315 -+  BFD_RELOC_M68HC11_RL_GROUP,
43.34316 -+
43.34317 -+/* Motorola 68HC11 reloc.
43.34318 -+This is the 16-bit lower part of an address.  It is used for 'call'
43.34319 -+instruction to specify the symbol address without any special
43.34320 -+transformation (due to memory bank window).  */
43.34321 -+  BFD_RELOC_M68HC11_LO16,
43.34322 -+
43.34323 -+/* Motorola 68HC11 reloc.
43.34324 -+This is a 8-bit reloc that specifies the page number of an address.
43.34325 -+It is used by 'call' instruction to specify the page number of
43.34326 -+the symbol.  */
43.34327 -+  BFD_RELOC_M68HC11_PAGE,
43.34328 -+
43.34329 -+/* Motorola 68HC11 reloc.
43.34330 -+This is a 24-bit reloc that represents the address with a 16-bit
43.34331 -+value and a 8-bit page number.  The symbol address is transformed
43.34332 -+to follow the 16K memory bank of 68HC12 (seen as mapped in the window).  */
43.34333 -+  BFD_RELOC_M68HC11_24,
43.34334 -+
43.34335 -+/* Motorola 68HC12 reloc.
43.34336 -+This is the 5 bits of a value.  */
43.34337 -+  BFD_RELOC_M68HC12_5B,
43.34338 -+
43.34339 -+/* NS CR16C Relocations.  */
43.34340 -+  BFD_RELOC_16C_NUM08,
43.34341 -+  BFD_RELOC_16C_NUM08_C,
43.34342 -+  BFD_RELOC_16C_NUM16,
43.34343 -+  BFD_RELOC_16C_NUM16_C,
43.34344 -+  BFD_RELOC_16C_NUM32,
43.34345 -+  BFD_RELOC_16C_NUM32_C,
43.34346 -+  BFD_RELOC_16C_DISP04,
43.34347 -+  BFD_RELOC_16C_DISP04_C,
43.34348 -+  BFD_RELOC_16C_DISP08,
43.34349 -+  BFD_RELOC_16C_DISP08_C,
43.34350 -+  BFD_RELOC_16C_DISP16,
43.34351 -+  BFD_RELOC_16C_DISP16_C,
43.34352 -+  BFD_RELOC_16C_DISP24,
43.34353 -+  BFD_RELOC_16C_DISP24_C,
43.34354 -+  BFD_RELOC_16C_DISP24a,
43.34355 -+  BFD_RELOC_16C_DISP24a_C,
43.34356 -+  BFD_RELOC_16C_REG04,
43.34357 -+  BFD_RELOC_16C_REG04_C,
43.34358 -+  BFD_RELOC_16C_REG04a,
43.34359 -+  BFD_RELOC_16C_REG04a_C,
43.34360 -+  BFD_RELOC_16C_REG14,
43.34361 -+  BFD_RELOC_16C_REG14_C,
43.34362 -+  BFD_RELOC_16C_REG16,
43.34363 -+  BFD_RELOC_16C_REG16_C,
43.34364 -+  BFD_RELOC_16C_REG20,
43.34365 -+  BFD_RELOC_16C_REG20_C,
43.34366 -+  BFD_RELOC_16C_ABS20,
43.34367 -+  BFD_RELOC_16C_ABS20_C,
43.34368 -+  BFD_RELOC_16C_ABS24,
43.34369 -+  BFD_RELOC_16C_ABS24_C,
43.34370 -+  BFD_RELOC_16C_IMM04,
43.34371 -+  BFD_RELOC_16C_IMM04_C,
43.34372 -+  BFD_RELOC_16C_IMM16,
43.34373 -+  BFD_RELOC_16C_IMM16_C,
43.34374 -+  BFD_RELOC_16C_IMM20,
43.34375 -+  BFD_RELOC_16C_IMM20_C,
43.34376 -+  BFD_RELOC_16C_IMM24,
43.34377 -+  BFD_RELOC_16C_IMM24_C,
43.34378 -+  BFD_RELOC_16C_IMM32,
43.34379 -+  BFD_RELOC_16C_IMM32_C,
43.34380 -+
43.34381 -+/* NS CR16 Relocations.  */
43.34382 -+  BFD_RELOC_CR16_NUM8,
43.34383 -+  BFD_RELOC_CR16_NUM16,
43.34384 -+  BFD_RELOC_CR16_NUM32,
43.34385 -+  BFD_RELOC_CR16_NUM32a,
43.34386 -+  BFD_RELOC_CR16_REGREL0,
43.34387 -+  BFD_RELOC_CR16_REGREL4,
43.34388 -+  BFD_RELOC_CR16_REGREL4a,
43.34389 -+  BFD_RELOC_CR16_REGREL14,
43.34390 -+  BFD_RELOC_CR16_REGREL14a,
43.34391 -+  BFD_RELOC_CR16_REGREL16,
43.34392 -+  BFD_RELOC_CR16_REGREL20,
43.34393 -+  BFD_RELOC_CR16_REGREL20a,
43.34394 -+  BFD_RELOC_CR16_ABS20,
43.34395 -+  BFD_RELOC_CR16_ABS24,
43.34396 -+  BFD_RELOC_CR16_IMM4,
43.34397 -+  BFD_RELOC_CR16_IMM8,
43.34398 -+  BFD_RELOC_CR16_IMM16,
43.34399 -+  BFD_RELOC_CR16_IMM20,
43.34400 -+  BFD_RELOC_CR16_IMM24,
43.34401 -+  BFD_RELOC_CR16_IMM32,
43.34402 -+  BFD_RELOC_CR16_IMM32a,
43.34403 -+  BFD_RELOC_CR16_DISP4,
43.34404 -+  BFD_RELOC_CR16_DISP8,
43.34405 -+  BFD_RELOC_CR16_DISP16,
43.34406 -+  BFD_RELOC_CR16_DISP20,
43.34407 -+  BFD_RELOC_CR16_DISP24,
43.34408 -+  BFD_RELOC_CR16_DISP24a,
43.34409 -+
43.34410 -+/* NS CRX Relocations.  */
43.34411 -+  BFD_RELOC_CRX_REL4,
43.34412 -+  BFD_RELOC_CRX_REL8,
43.34413 -+  BFD_RELOC_CRX_REL8_CMP,
43.34414 -+  BFD_RELOC_CRX_REL16,
43.34415 -+  BFD_RELOC_CRX_REL24,
43.34416 -+  BFD_RELOC_CRX_REL32,
43.34417 -+  BFD_RELOC_CRX_REGREL12,
43.34418 -+  BFD_RELOC_CRX_REGREL22,
43.34419 -+  BFD_RELOC_CRX_REGREL28,
43.34420 -+  BFD_RELOC_CRX_REGREL32,
43.34421 -+  BFD_RELOC_CRX_ABS16,
43.34422 -+  BFD_RELOC_CRX_ABS32,
43.34423 -+  BFD_RELOC_CRX_NUM8,
43.34424 -+  BFD_RELOC_CRX_NUM16,
43.34425 -+  BFD_RELOC_CRX_NUM32,
43.34426 -+  BFD_RELOC_CRX_IMM16,
43.34427 -+  BFD_RELOC_CRX_IMM32,
43.34428 -+  BFD_RELOC_CRX_SWITCH8,
43.34429 -+  BFD_RELOC_CRX_SWITCH16,
43.34430 -+  BFD_RELOC_CRX_SWITCH32,
43.34431 -+
43.34432 -+/* These relocs are only used within the CRIS assembler.  They are not
43.34433 -+(at present) written to any object files.  */
43.34434 -+  BFD_RELOC_CRIS_BDISP8,
43.34435 -+  BFD_RELOC_CRIS_UNSIGNED_5,
43.34436 -+  BFD_RELOC_CRIS_SIGNED_6,
43.34437 -+  BFD_RELOC_CRIS_UNSIGNED_6,
43.34438 -+  BFD_RELOC_CRIS_SIGNED_8,
43.34439 -+  BFD_RELOC_CRIS_UNSIGNED_8,
43.34440 -+  BFD_RELOC_CRIS_SIGNED_16,
43.34441 -+  BFD_RELOC_CRIS_UNSIGNED_16,
43.34442 -+  BFD_RELOC_CRIS_LAPCQ_OFFSET,
43.34443 -+  BFD_RELOC_CRIS_UNSIGNED_4,
43.34444 -+
43.34445 -+/* Relocs used in ELF shared libraries for CRIS.  */
43.34446 -+  BFD_RELOC_CRIS_COPY,
43.34447 -+  BFD_RELOC_CRIS_GLOB_DAT,
43.34448 -+  BFD_RELOC_CRIS_JUMP_SLOT,
43.34449 -+  BFD_RELOC_CRIS_RELATIVE,
43.34450 -+
43.34451 -+/* 32-bit offset to symbol-entry within GOT.  */
43.34452 -+  BFD_RELOC_CRIS_32_GOT,
43.34453 -+
43.34454 -+/* 16-bit offset to symbol-entry within GOT.  */
43.34455 -+  BFD_RELOC_CRIS_16_GOT,
43.34456 -+
43.34457 -+/* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
43.34458 -+  BFD_RELOC_CRIS_32_GOTPLT,
43.34459 -+
43.34460 -+/* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
43.34461 -+  BFD_RELOC_CRIS_16_GOTPLT,
43.34462 -+
43.34463 -+/* 32-bit offset to symbol, relative to GOT.  */
43.34464 -+  BFD_RELOC_CRIS_32_GOTREL,
43.34465 -+
43.34466 -+/* 32-bit offset to symbol with PLT entry, relative to GOT.  */
43.34467 -+  BFD_RELOC_CRIS_32_PLT_GOTREL,
43.34468 -+
43.34469 -+/* 32-bit offset to symbol with PLT entry, relative to this relocation.  */
43.34470 -+  BFD_RELOC_CRIS_32_PLT_PCREL,
43.34471 -+
43.34472 -+/* Intel i860 Relocations.  */
43.34473 -+  BFD_RELOC_860_COPY,
43.34474 -+  BFD_RELOC_860_GLOB_DAT,
43.34475 -+  BFD_RELOC_860_JUMP_SLOT,
43.34476 -+  BFD_RELOC_860_RELATIVE,
43.34477 -+  BFD_RELOC_860_PC26,
43.34478 -+  BFD_RELOC_860_PLT26,
43.34479 -+  BFD_RELOC_860_PC16,
43.34480 -+  BFD_RELOC_860_LOW0,
43.34481 -+  BFD_RELOC_860_SPLIT0,
43.34482 -+  BFD_RELOC_860_LOW1,
43.34483 -+  BFD_RELOC_860_SPLIT1,
43.34484 -+  BFD_RELOC_860_LOW2,
43.34485 -+  BFD_RELOC_860_SPLIT2,
43.34486 -+  BFD_RELOC_860_LOW3,
43.34487 -+  BFD_RELOC_860_LOGOT0,
43.34488 -+  BFD_RELOC_860_SPGOT0,
43.34489 -+  BFD_RELOC_860_LOGOT1,
43.34490 -+  BFD_RELOC_860_SPGOT1,
43.34491 -+  BFD_RELOC_860_LOGOTOFF0,
43.34492 -+  BFD_RELOC_860_SPGOTOFF0,
43.34493 -+  BFD_RELOC_860_LOGOTOFF1,
43.34494 -+  BFD_RELOC_860_SPGOTOFF1,
43.34495 -+  BFD_RELOC_860_LOGOTOFF2,
43.34496 -+  BFD_RELOC_860_LOGOTOFF3,
43.34497 -+  BFD_RELOC_860_LOPC,
43.34498 -+  BFD_RELOC_860_HIGHADJ,
43.34499 -+  BFD_RELOC_860_HAGOT,
43.34500 -+  BFD_RELOC_860_HAGOTOFF,
43.34501 -+  BFD_RELOC_860_HAPC,
43.34502 -+  BFD_RELOC_860_HIGH,
43.34503 -+  BFD_RELOC_860_HIGOT,
43.34504 -+  BFD_RELOC_860_HIGOTOFF,
43.34505 -+
43.34506 -+/* OpenRISC Relocations.  */
43.34507 -+  BFD_RELOC_OPENRISC_ABS_26,
43.34508 -+  BFD_RELOC_OPENRISC_REL_26,
43.34509 -+
43.34510 -+/* H8 elf Relocations.  */
43.34511 -+  BFD_RELOC_H8_DIR16A8,
43.34512 -+  BFD_RELOC_H8_DIR16R8,
43.34513 -+  BFD_RELOC_H8_DIR24A8,
43.34514 -+  BFD_RELOC_H8_DIR24R8,
43.34515 -+  BFD_RELOC_H8_DIR32A16,
43.34516 -+
43.34517 -+/* Sony Xstormy16 Relocations.  */
43.34518 -+  BFD_RELOC_XSTORMY16_REL_12,
43.34519 -+  BFD_RELOC_XSTORMY16_12,
43.34520 -+  BFD_RELOC_XSTORMY16_24,
43.34521 -+  BFD_RELOC_XSTORMY16_FPTR16,
43.34522 -+
43.34523 -+/* Self-describing complex relocations.  */
43.34524 -+  BFD_RELOC_RELC,
43.34525 -+
43.34526 -+
43.34527 -+/* Infineon Relocations.  */
43.34528 -+  BFD_RELOC_XC16X_PAG,
43.34529 -+  BFD_RELOC_XC16X_POF,
43.34530 -+  BFD_RELOC_XC16X_SEG,
43.34531 -+  BFD_RELOC_XC16X_SOF,
43.34532 -+
43.34533 -+/* Relocations used by VAX ELF.  */
43.34534 -+  BFD_RELOC_VAX_GLOB_DAT,
43.34535 -+  BFD_RELOC_VAX_JMP_SLOT,
43.34536 -+  BFD_RELOC_VAX_RELATIVE,
43.34537 -+
43.34538 -+/* Morpho MT - 16 bit immediate relocation.  */
43.34539 -+  BFD_RELOC_MT_PC16,
43.34540 -+
43.34541 -+/* Morpho MT - Hi 16 bits of an address.  */
43.34542 -+  BFD_RELOC_MT_HI16,
43.34543 -+
43.34544 -+/* Morpho MT - Low 16 bits of an address.  */
43.34545 -+  BFD_RELOC_MT_LO16,
43.34546 -+
43.34547 -+/* Morpho MT - Used to tell the linker which vtable entries are used.  */
43.34548 -+  BFD_RELOC_MT_GNU_VTINHERIT,
43.34549 -+
43.34550 -+/* Morpho MT - Used to tell the linker which vtable entries are used.  */
43.34551 -+  BFD_RELOC_MT_GNU_VTENTRY,
43.34552 -+
43.34553 -+/* Morpho MT - 8 bit immediate relocation.  */
43.34554 -+  BFD_RELOC_MT_PCINSN8,
43.34555 -+
43.34556 -+/* msp430 specific relocation codes  */
43.34557 -+  BFD_RELOC_MSP430_10_PCREL,
43.34558 -+  BFD_RELOC_MSP430_16_PCREL,
43.34559 -+  BFD_RELOC_MSP430_16,
43.34560 -+  BFD_RELOC_MSP430_16_PCREL_BYTE,
43.34561 -+  BFD_RELOC_MSP430_16_BYTE,
43.34562 -+  BFD_RELOC_MSP430_2X_PCREL,
43.34563 -+  BFD_RELOC_MSP430_RL_PCREL,
43.34564 -+
43.34565 -+/* IQ2000 Relocations.  */
43.34566 -+  BFD_RELOC_IQ2000_OFFSET_16,
43.34567 -+  BFD_RELOC_IQ2000_OFFSET_21,
43.34568 -+  BFD_RELOC_IQ2000_UHI16,
43.34569 -+
43.34570 -+/* Special Xtensa relocation used only by PLT entries in ELF shared
43.34571 -+objects to indicate that the runtime linker should set the value
43.34572 -+to one of its own internal functions or data structures.  */
43.34573 -+  BFD_RELOC_XTENSA_RTLD,
43.34574 -+
43.34575 -+/* Xtensa relocations for ELF shared objects.  */
43.34576 -+  BFD_RELOC_XTENSA_GLOB_DAT,
43.34577 -+  BFD_RELOC_XTENSA_JMP_SLOT,
43.34578 -+  BFD_RELOC_XTENSA_RELATIVE,
43.34579 -+
43.34580 -+/* Xtensa relocation used in ELF object files for symbols that may require
43.34581 -+PLT entries.  Otherwise, this is just a generic 32-bit relocation.  */
43.34582 -+  BFD_RELOC_XTENSA_PLT,
43.34583 -+
43.34584 -+/* Xtensa relocations to mark the difference of two local symbols.
43.34585 -+These are only needed to support linker relaxation and can be ignored
43.34586 -+when not relaxing.  The field is set to the value of the difference
43.34587 -+assuming no relaxation.  The relocation encodes the position of the
43.34588 -+first symbol so the linker can determine whether to adjust the field
43.34589 -+value.  */
43.34590 -+  BFD_RELOC_XTENSA_DIFF8,
43.34591 -+  BFD_RELOC_XTENSA_DIFF16,
43.34592 -+  BFD_RELOC_XTENSA_DIFF32,
43.34593 -+
43.34594 -+/* Generic Xtensa relocations for instruction operands.  Only the slot
43.34595 -+number is encoded in the relocation.  The relocation applies to the
43.34596 -+last PC-relative immediate operand, or if there are no PC-relative
43.34597 -+immediates, to the last immediate operand.  */
43.34598 -+  BFD_RELOC_XTENSA_SLOT0_OP,
43.34599 -+  BFD_RELOC_XTENSA_SLOT1_OP,
43.34600 -+  BFD_RELOC_XTENSA_SLOT2_OP,
43.34601 -+  BFD_RELOC_XTENSA_SLOT3_OP,
43.34602 -+  BFD_RELOC_XTENSA_SLOT4_OP,
43.34603 -+  BFD_RELOC_XTENSA_SLOT5_OP,
43.34604 -+  BFD_RELOC_XTENSA_SLOT6_OP,
43.34605 -+  BFD_RELOC_XTENSA_SLOT7_OP,
43.34606 -+  BFD_RELOC_XTENSA_SLOT8_OP,
43.34607 -+  BFD_RELOC_XTENSA_SLOT9_OP,
43.34608 -+  BFD_RELOC_XTENSA_SLOT10_OP,
43.34609 -+  BFD_RELOC_XTENSA_SLOT11_OP,
43.34610 -+  BFD_RELOC_XTENSA_SLOT12_OP,
43.34611 -+  BFD_RELOC_XTENSA_SLOT13_OP,
43.34612 -+  BFD_RELOC_XTENSA_SLOT14_OP,
43.34613 -+
43.34614 -+/* Alternate Xtensa relocations.  Only the slot is encoded in the
43.34615 -+relocation.  The meaning of these relocations is opcode-specific.  */
43.34616 -+  BFD_RELOC_XTENSA_SLOT0_ALT,
43.34617 -+  BFD_RELOC_XTENSA_SLOT1_ALT,
43.34618 -+  BFD_RELOC_XTENSA_SLOT2_ALT,
43.34619 -+  BFD_RELOC_XTENSA_SLOT3_ALT,
43.34620 -+  BFD_RELOC_XTENSA_SLOT4_ALT,
43.34621 -+  BFD_RELOC_XTENSA_SLOT5_ALT,
43.34622 -+  BFD_RELOC_XTENSA_SLOT6_ALT,
43.34623 -+  BFD_RELOC_XTENSA_SLOT7_ALT,
43.34624 -+  BFD_RELOC_XTENSA_SLOT8_ALT,
43.34625 -+  BFD_RELOC_XTENSA_SLOT9_ALT,
43.34626 -+  BFD_RELOC_XTENSA_SLOT10_ALT,
43.34627 -+  BFD_RELOC_XTENSA_SLOT11_ALT,
43.34628 -+  BFD_RELOC_XTENSA_SLOT12_ALT,
43.34629 -+  BFD_RELOC_XTENSA_SLOT13_ALT,
43.34630 -+  BFD_RELOC_XTENSA_SLOT14_ALT,
43.34631 -+
43.34632 -+/* Xtensa relocations for backward compatibility.  These have all been
43.34633 -+replaced by BFD_RELOC_XTENSA_SLOT0_OP.  */
43.34634 -+  BFD_RELOC_XTENSA_OP0,
43.34635 -+  BFD_RELOC_XTENSA_OP1,
43.34636 -+  BFD_RELOC_XTENSA_OP2,
43.34637 -+
43.34638 -+/* Xtensa relocation to mark that the assembler expanded the
43.34639 -+instructions from an original target.  The expansion size is
43.34640 -+encoded in the reloc size.  */
43.34641 -+  BFD_RELOC_XTENSA_ASM_EXPAND,
43.34642 -+
43.34643 -+/* Xtensa relocation to mark that the linker should simplify
43.34644 -+assembler-expanded instructions.  This is commonly used
43.34645 -+internally by the linker after analysis of a
43.34646 -+BFD_RELOC_XTENSA_ASM_EXPAND.  */
43.34647 -+  BFD_RELOC_XTENSA_ASM_SIMPLIFY,
43.34648 -+
43.34649 -+/* 8 bit signed offset in (ix+d) or (iy+d).  */
43.34650 -+  BFD_RELOC_Z80_DISP8,
43.34651 -+
43.34652 -+/* DJNZ offset.  */
43.34653 -+  BFD_RELOC_Z8K_DISP7,
43.34654 -+
43.34655 -+/* CALR offset.  */
43.34656 -+  BFD_RELOC_Z8K_CALLR,
43.34657 -+
43.34658 -+/* 4 bit value.  */
43.34659 -+  BFD_RELOC_Z8K_IMM4L,
43.34660 -+  BFD_RELOC_UNUSED };
43.34661 -+typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
43.34662 -+reloc_howto_type *bfd_reloc_type_lookup
43.34663 -+   (bfd *abfd, bfd_reloc_code_real_type code);
43.34664 -+reloc_howto_type *bfd_reloc_name_lookup
43.34665 -+   (bfd *abfd, const char *reloc_name);
43.34666 -+
43.34667 -+const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
43.34668 -+
43.34669 -+/* Extracted from syms.c.  */
43.34670 -+
43.34671 -+typedef struct bfd_symbol
43.34672 -+{
43.34673 -+  /* A pointer to the BFD which owns the symbol. This information
43.34674 -+     is necessary so that a back end can work out what additional
43.34675 -+     information (invisible to the application writer) is carried
43.34676 -+     with the symbol.
43.34677 -+
43.34678 -+     This field is *almost* redundant, since you can use section->owner
43.34679 -+     instead, except that some symbols point to the global sections
43.34680 -+     bfd_{abs,com,und}_section.  This could be fixed by making
43.34681 -+     these globals be per-bfd (or per-target-flavor).  FIXME.  */
43.34682 -+  struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */
43.34683 -+
43.34684 -+  /* The text of the symbol. The name is left alone, and not copied; the
43.34685 -+     application may not alter it.  */
43.34686 -+  const char *name;
43.34687 -+
43.34688 -+  /* The value of the symbol.  This really should be a union of a
43.34689 -+     numeric value with a pointer, since some flags indicate that
43.34690 -+     a pointer to another symbol is stored here.  */
43.34691 -+  symvalue value;
43.34692 -+
43.34693 -+  /* Attributes of a symbol.  */
43.34694 -+#define BSF_NO_FLAGS    0x00
43.34695 -+
43.34696 -+  /* The symbol has local scope; <<static>> in <<C>>. The value
43.34697 -+     is the offset into the section of the data.  */
43.34698 -+#define BSF_LOCAL      0x01
43.34699 -+
43.34700 -+  /* The symbol has global scope; initialized data in <<C>>. The
43.34701 -+     value is the offset into the section of the data.  */
43.34702 -+#define BSF_GLOBAL     0x02
43.34703 -+
43.34704 -+  /* The symbol has global scope and is exported. The value is
43.34705 -+     the offset into the section of the data.  */
43.34706 -+#define BSF_EXPORT     BSF_GLOBAL /* No real difference.  */
43.34707 -+
43.34708 -+  /* A normal C symbol would be one of:
43.34709 -+     <<BSF_LOCAL>>, <<BSF_FORT_COMM>>,  <<BSF_UNDEFINED>> or
43.34710 -+     <<BSF_GLOBAL>>.  */
43.34711 -+
43.34712 -+  /* The symbol is a debugging record. The value has an arbitrary
43.34713 -+     meaning, unless BSF_DEBUGGING_RELOC is also set.  */
43.34714 -+#define BSF_DEBUGGING  0x08
43.34715 -+
43.34716 -+  /* The symbol denotes a function entry point.  Used in ELF,
43.34717 -+     perhaps others someday.  */
43.34718 -+#define BSF_FUNCTION    0x10
43.34719 -+
43.34720 -+  /* Used by the linker.  */
43.34721 -+#define BSF_KEEP        0x20
43.34722 -+#define BSF_KEEP_G      0x40
43.34723 -+
43.34724 -+  /* A weak global symbol, overridable without warnings by
43.34725 -+     a regular global symbol of the same name.  */
43.34726 -+#define BSF_WEAK        0x80
43.34727 -+
43.34728 -+  /* This symbol was created to point to a section, e.g. ELF's
43.34729 -+     STT_SECTION symbols.  */
43.34730 -+#define BSF_SECTION_SYM 0x100
43.34731 -+
43.34732 -+  /* The symbol used to be a common symbol, but now it is
43.34733 -+     allocated.  */
43.34734 -+#define BSF_OLD_COMMON  0x200
43.34735 -+
43.34736 -+  /* The default value for common data.  */
43.34737 -+#define BFD_FORT_COMM_DEFAULT_VALUE 0
43.34738 -+
43.34739 -+  /* In some files the type of a symbol sometimes alters its
43.34740 -+     location in an output file - ie in coff a <<ISFCN>> symbol
43.34741 -+     which is also <<C_EXT>> symbol appears where it was
43.34742 -+     declared and not at the end of a section.  This bit is set
43.34743 -+     by the target BFD part to convey this information.  */
43.34744 -+#define BSF_NOT_AT_END    0x400
43.34745 -+
43.34746 -+  /* Signal that the symbol is the label of constructor section.  */
43.34747 -+#define BSF_CONSTRUCTOR   0x800
43.34748 -+
43.34749 -+  /* Signal that the symbol is a warning symbol.  The name is a
43.34750 -+     warning.  The name of the next symbol is the one to warn about;
43.34751 -+     if a reference is made to a symbol with the same name as the next
43.34752 -+     symbol, a warning is issued by the linker.  */
43.34753 -+#define BSF_WARNING       0x1000
43.34754 -+
43.34755 -+  /* Signal that the symbol is indirect.  This symbol is an indirect
43.34756 -+     pointer to the symbol with the same name as the next symbol.  */
43.34757 -+#define BSF_INDIRECT      0x2000
43.34758 -+
43.34759 -+  /* BSF_FILE marks symbols that contain a file name.  This is used
43.34760 -+     for ELF STT_FILE symbols.  */
43.34761 -+#define BSF_FILE          0x4000
43.34762 -+
43.34763 -+  /* Symbol is from dynamic linking information.  */
43.34764 -+#define BSF_DYNAMIC       0x8000
43.34765 -+
43.34766 -+  /* The symbol denotes a data object.  Used in ELF, and perhaps
43.34767 -+     others someday.  */
43.34768 -+#define BSF_OBJECT        0x10000
43.34769 -+
43.34770 -+  /* This symbol is a debugging symbol.  The value is the offset
43.34771 -+     into the section of the data.  BSF_DEBUGGING should be set
43.34772 -+     as well.  */
43.34773 -+#define BSF_DEBUGGING_RELOC 0x20000
43.34774 -+
43.34775 -+  /* This symbol is thread local.  Used in ELF.  */
43.34776 -+#define BSF_THREAD_LOCAL  0x40000
43.34777 -+
43.34778 -+  /* This symbol represents a complex relocation expression,
43.34779 -+     with the expression tree serialized in the symbol name.  */
43.34780 -+#define BSF_RELC 0x80000
43.34781 -+
43.34782 -+  /* This symbol represents a signed complex relocation expression,
43.34783 -+     with the expression tree serialized in the symbol name.  */
43.34784 -+#define BSF_SRELC 0x100000
43.34785 -+
43.34786 -+  flagword flags;
43.34787 -+
43.34788 -+  /* A pointer to the section to which this symbol is
43.34789 -+     relative.  This will always be non NULL, there are special
43.34790 -+     sections for undefined and absolute symbols.  */
43.34791 -+  struct bfd_section *section;
43.34792 -+
43.34793 -+  /* Back end special data.  */
43.34794 -+  union
43.34795 -+    {
43.34796 -+      void *p;
43.34797 -+      bfd_vma i;
43.34798 -+    }
43.34799 -+  udata;
43.34800 -+}
43.34801 -+asymbol;
43.34802 -+
43.34803 -+#define bfd_get_symtab_upper_bound(abfd) \
43.34804 -+     BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
43.34805 -+
43.34806 -+bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
43.34807 -+
43.34808 -+bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
43.34809 -+
43.34810 -+#define bfd_is_local_label_name(abfd, name) \
43.34811 -+  BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
43.34812 -+
43.34813 -+bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
43.34814 -+
43.34815 -+#define bfd_is_target_special_symbol(abfd, sym) \
43.34816 -+  BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
43.34817 -+
43.34818 -+#define bfd_canonicalize_symtab(abfd, location) \
43.34819 -+  BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
43.34820 -+
43.34821 -+bfd_boolean bfd_set_symtab
43.34822 -+   (bfd *abfd, asymbol **location, unsigned int count);
43.34823 -+
43.34824 -+void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
43.34825 -+
43.34826 -+#define bfd_make_empty_symbol(abfd) \
43.34827 -+  BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
43.34828 -+
43.34829 -+asymbol *_bfd_generic_make_empty_symbol (bfd *);
43.34830 -+
43.34831 -+#define bfd_make_debug_symbol(abfd,ptr,size) \
43.34832 -+  BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
43.34833 -+
43.34834 -+int bfd_decode_symclass (asymbol *symbol);
43.34835 -+
43.34836 -+bfd_boolean bfd_is_undefined_symclass (int symclass);
43.34837 -+
43.34838 -+void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
43.34839 -+
43.34840 -+bfd_boolean bfd_copy_private_symbol_data
43.34841 -+   (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
43.34842 -+
43.34843 -+#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
43.34844 -+  BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
43.34845 -+            (ibfd, isymbol, obfd, osymbol))
43.34846 -+
43.34847 -+/* Extracted from bfd.c.  */
43.34848 -+struct bfd
43.34849 -+{
43.34850 -+  /* A unique identifier of the BFD  */
43.34851 -+  unsigned int id;
43.34852 -+
43.34853 -+  /* The filename the application opened the BFD with.  */
43.34854 -+  const char *filename;
43.34855 -+
43.34856 -+  /* A pointer to the target jump table.  */
43.34857 -+  const struct bfd_target *xvec;
43.34858 -+
43.34859 -+  /* The IOSTREAM, and corresponding IO vector that provide access
43.34860 -+     to the file backing the BFD.  */
43.34861 -+  void *iostream;
43.34862 -+  const struct bfd_iovec *iovec;
43.34863 -+
43.34864 -+  /* Is the file descriptor being cached?  That is, can it be closed as
43.34865 -+     needed, and re-opened when accessed later?  */
43.34866 -+  bfd_boolean cacheable;
43.34867 -+
43.34868 -+  /* Marks whether there was a default target specified when the
43.34869 -+     BFD was opened. This is used to select which matching algorithm
43.34870 -+     to use to choose the back end.  */
43.34871 -+  bfd_boolean target_defaulted;
43.34872 -+
43.34873 -+  /* The caching routines use these to maintain a
43.34874 -+     least-recently-used list of BFDs.  */
43.34875 -+  struct bfd *lru_prev, *lru_next;
43.34876 -+
43.34877 -+  /* When a file is closed by the caching routines, BFD retains
43.34878 -+     state information on the file here...  */
43.34879 -+  ufile_ptr where;
43.34880 -+
43.34881 -+  /* ... and here: (``once'' means at least once).  */
43.34882 -+  bfd_boolean opened_once;
43.34883 -+
43.34884 -+  /* Set if we have a locally maintained mtime value, rather than
43.34885 -+     getting it from the file each time.  */
43.34886 -+  bfd_boolean mtime_set;
43.34887 -+
43.34888 -+  /* File modified time, if mtime_set is TRUE.  */
43.34889 -+  long mtime;
43.34890 -+
43.34891 -+  /* Reserved for an unimplemented file locking extension.  */
43.34892 -+  int ifd;
43.34893 -+
43.34894 -+  /* The format which belongs to the BFD. (object, core, etc.)  */
43.34895 -+  bfd_format format;
43.34896 -+
43.34897 -+  /* The direction with which the BFD was opened.  */
43.34898 -+  enum bfd_direction
43.34899 -+    {
43.34900 -+      no_direction = 0,
43.34901 -+      read_direction = 1,
43.34902 -+      write_direction = 2,
43.34903 -+      both_direction = 3
43.34904 -+    }
43.34905 -+  direction;
43.34906 -+
43.34907 -+  /* Format_specific flags.  */
43.34908 -+  flagword flags;
43.34909 -+
43.34910 -+  /* Currently my_archive is tested before adding origin to
43.34911 -+     anything. I believe that this can become always an add of
43.34912 -+     origin, with origin set to 0 for non archive files.  */
43.34913 -+  ufile_ptr origin;
43.34914 -+
43.34915 -+  /* Remember when output has begun, to stop strange things
43.34916 -+     from happening.  */
43.34917 -+  bfd_boolean output_has_begun;
43.34918 -+
43.34919 -+  /* A hash table for section names.  */
43.34920 -+  struct bfd_hash_table section_htab;
43.34921 -+
43.34922 -+  /* Pointer to linked list of sections.  */
43.34923 -+  struct bfd_section *sections;
43.34924 -+
43.34925 -+  /* The last section on the section list.  */
43.34926 -+  struct bfd_section *section_last;
43.34927 -+
43.34928 -+  /* The number of sections.  */
43.34929 -+  unsigned int section_count;
43.34930 -+
43.34931 -+  /* Stuff only useful for object files:
43.34932 -+     The start address.  */
43.34933 -+  bfd_vma start_address;
43.34934 -+
43.34935 -+  /* Used for input and output.  */
43.34936 -+  unsigned int symcount;
43.34937 -+
43.34938 -+  /* Symbol table for output BFD (with symcount entries).  */
43.34939 -+  struct bfd_symbol  **outsymbols;
43.34940 -+
43.34941 -+  /* Used for slurped dynamic symbol tables.  */
43.34942 -+  unsigned int dynsymcount;
43.34943 -+
43.34944 -+  /* Pointer to structure which contains architecture information.  */
43.34945 -+  const struct bfd_arch_info *arch_info;
43.34946 -+
43.34947 -+  /* Flag set if symbols from this BFD should not be exported.  */
43.34948 -+  bfd_boolean no_export;
43.34949 -+
43.34950 -+  /* Stuff only useful for archives.  */
43.34951 -+  void *arelt_data;
43.34952 -+  struct bfd *my_archive;      /* The containing archive BFD.  */
43.34953 -+  struct bfd *archive_next;    /* The next BFD in the archive.  */
43.34954 -+  struct bfd *archive_head;    /* The first BFD in the archive.  */
43.34955 -+  bfd_boolean has_armap;
43.34956 -+
43.34957 -+  /* A chain of BFD structures involved in a link.  */
43.34958 -+  struct bfd *link_next;
43.34959 -+
43.34960 -+  /* A field used by _bfd_generic_link_add_archive_symbols.  This will
43.34961 -+     be used only for archive elements.  */
43.34962 -+  int archive_pass;
43.34963 -+
43.34964 -+  /* Used by the back end to hold private data.  */
43.34965 -+  union
43.34966 -+    {
43.34967 -+      struct aout_data_struct *aout_data;
43.34968 -+      struct artdata *aout_ar_data;
43.34969 -+      struct _oasys_data *oasys_obj_data;
43.34970 -+      struct _oasys_ar_data *oasys_ar_data;
43.34971 -+      struct coff_tdata *coff_obj_data;
43.34972 -+      struct pe_tdata *pe_obj_data;
43.34973 -+      struct xcoff_tdata *xcoff_obj_data;
43.34974 -+      struct ecoff_tdata *ecoff_obj_data;
43.34975 -+      struct ieee_data_struct *ieee_data;
43.34976 -+      struct ieee_ar_data_struct *ieee_ar_data;
43.34977 -+      struct srec_data_struct *srec_data;
43.34978 -+      struct ihex_data_struct *ihex_data;
43.34979 -+      struct tekhex_data_struct *tekhex_data;
43.34980 -+      struct elf_obj_tdata *elf_obj_data;
43.34981 -+      struct nlm_obj_tdata *nlm_obj_data;
43.34982 -+      struct bout_data_struct *bout_data;
43.34983 -+      struct mmo_data_struct *mmo_data;
43.34984 -+      struct sun_core_struct *sun_core_data;
43.34985 -+      struct sco5_core_struct *sco5_core_data;
43.34986 -+      struct trad_core_struct *trad_core_data;
43.34987 -+      struct som_data_struct *som_data;
43.34988 -+      struct hpux_core_struct *hpux_core_data;
43.34989 -+      struct hppabsd_core_struct *hppabsd_core_data;
43.34990 -+      struct sgi_core_struct *sgi_core_data;
43.34991 -+      struct lynx_core_struct *lynx_core_data;
43.34992 -+      struct osf_core_struct *osf_core_data;
43.34993 -+      struct cisco_core_struct *cisco_core_data;
43.34994 -+      struct versados_data_struct *versados_data;
43.34995 -+      struct netbsd_core_struct *netbsd_core_data;
43.34996 -+      struct mach_o_data_struct *mach_o_data;
43.34997 -+      struct mach_o_fat_data_struct *mach_o_fat_data;
43.34998 -+      struct bfd_pef_data_struct *pef_data;
43.34999 -+      struct bfd_pef_xlib_data_struct *pef_xlib_data;
43.35000 -+      struct bfd_sym_data_struct *sym_data;
43.35001 -+      void *any;
43.35002 -+    }
43.35003 -+  tdata;
43.35004 -+
43.35005 -+  /* Used by the application to hold private data.  */
43.35006 -+  void *usrdata;
43.35007 -+
43.35008 -+  /* Where all the allocated stuff under this BFD goes.  This is a
43.35009 -+     struct objalloc *, but we use void * to avoid requiring the inclusion
43.35010 -+     of objalloc.h.  */
43.35011 -+  void *memory;
43.35012 -+};
43.35013 -+
43.35014 -+typedef enum bfd_error
43.35015 -+{
43.35016 -+  bfd_error_no_error = 0,
43.35017 -+  bfd_error_system_call,
43.35018 -+  bfd_error_invalid_target,
43.35019 -+  bfd_error_wrong_format,
43.35020 -+  bfd_error_wrong_object_format,
43.35021 -+  bfd_error_invalid_operation,
43.35022 -+  bfd_error_no_memory,
43.35023 -+  bfd_error_no_symbols,
43.35024 -+  bfd_error_no_armap,
43.35025 -+  bfd_error_no_more_archived_files,
43.35026 -+  bfd_error_malformed_archive,
43.35027 -+  bfd_error_file_not_recognized,
43.35028 -+  bfd_error_file_ambiguously_recognized,
43.35029 -+  bfd_error_no_contents,
43.35030 -+  bfd_error_nonrepresentable_section,
43.35031 -+  bfd_error_no_debug_section,
43.35032 -+  bfd_error_bad_value,
43.35033 -+  bfd_error_file_truncated,
43.35034 -+  bfd_error_file_too_big,
43.35035 -+  bfd_error_on_input,
43.35036 -+  bfd_error_invalid_error_code
43.35037 -+}
43.35038 -+bfd_error_type;
43.35039 -+
43.35040 -+bfd_error_type bfd_get_error (void);
43.35041 -+
43.35042 -+void bfd_set_error (bfd_error_type error_tag, ...);
43.35043 -+
43.35044 -+const char *bfd_errmsg (bfd_error_type error_tag);
43.35045 -+
43.35046 -+void bfd_perror (const char *message);
43.35047 -+
43.35048 -+typedef void (*bfd_error_handler_type) (const char *, ...);
43.35049 -+
43.35050 -+bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
43.35051 -+
43.35052 -+void bfd_set_error_program_name (const char *);
43.35053 -+
43.35054 -+bfd_error_handler_type bfd_get_error_handler (void);
43.35055 -+
43.35056 -+long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
43.35057 -+
43.35058 -+long bfd_canonicalize_reloc
43.35059 -+   (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
43.35060 -+
43.35061 -+void bfd_set_reloc
43.35062 -+   (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
43.35063 -+
43.35064 -+bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
43.35065 -+
43.35066 -+int bfd_get_arch_size (bfd *abfd);
43.35067 -+
43.35068 -+int bfd_get_sign_extend_vma (bfd *abfd);
43.35069 -+
43.35070 -+bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
43.35071 -+
43.35072 -+unsigned int bfd_get_gp_size (bfd *abfd);
43.35073 -+
43.35074 -+void bfd_set_gp_size (bfd *abfd, unsigned int i);
43.35075 -+
43.35076 -+bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
43.35077 -+
43.35078 -+bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
43.35079 -+
43.35080 -+#define bfd_copy_private_header_data(ibfd, obfd) \
43.35081 -+     BFD_SEND (obfd, _bfd_copy_private_header_data, \
43.35082 -+               (ibfd, obfd))
43.35083 -+bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
43.35084 -+
43.35085 -+#define bfd_copy_private_bfd_data(ibfd, obfd) \
43.35086 -+     BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
43.35087 -+               (ibfd, obfd))
43.35088 -+bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
43.35089 -+
43.35090 -+#define bfd_merge_private_bfd_data(ibfd, obfd) \
43.35091 -+     BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
43.35092 -+               (ibfd, obfd))
43.35093 -+bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
43.35094 -+
43.35095 -+#define bfd_set_private_flags(abfd, flags) \
43.35096 -+     BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
43.35097 -+#define bfd_sizeof_headers(abfd, info) \
43.35098 -+       BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
43.35099 -+
43.35100 -+#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
43.35101 -+       BFD_SEND (abfd, _bfd_find_nearest_line, \
43.35102 -+                 (abfd, sec, syms, off, file, func, line))
43.35103 -+
43.35104 -+#define bfd_find_line(abfd, syms, sym, file, line) \
43.35105 -+       BFD_SEND (abfd, _bfd_find_line, \
43.35106 -+                 (abfd, syms, sym, file, line))
43.35107 -+
43.35108 -+#define bfd_find_inliner_info(abfd, file, func, line) \
43.35109 -+       BFD_SEND (abfd, _bfd_find_inliner_info, \
43.35110 -+                 (abfd, file, func, line))
43.35111 -+
43.35112 -+#define bfd_debug_info_start(abfd) \
43.35113 -+       BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
43.35114 -+
43.35115 -+#define bfd_debug_info_end(abfd) \
43.35116 -+       BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
43.35117 -+
43.35118 -+#define bfd_debug_info_accumulate(abfd, section) \
43.35119 -+       BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
43.35120 -+
43.35121 -+#define bfd_stat_arch_elt(abfd, stat) \
43.35122 -+       BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
43.35123 -+
43.35124 -+#define bfd_update_armap_timestamp(abfd) \
43.35125 -+       BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
43.35126 -+
43.35127 -+#define bfd_set_arch_mach(abfd, arch, mach)\
43.35128 -+       BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
43.35129 -+
43.35130 -+#define bfd_relax_section(abfd, section, link_info, again) \
43.35131 -+       BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
43.35132 -+
43.35133 -+#define bfd_gc_sections(abfd, link_info) \
43.35134 -+       BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
43.35135 -+
43.35136 -+#define bfd_merge_sections(abfd, link_info) \
43.35137 -+       BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
43.35138 -+
43.35139 -+#define bfd_is_group_section(abfd, sec) \
43.35140 -+       BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
43.35141 -+
43.35142 -+#define bfd_discard_group(abfd, sec) \
43.35143 -+       BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
43.35144 -+
43.35145 -+#define bfd_link_hash_table_create(abfd) \
43.35146 -+       BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
43.35147 -+
43.35148 -+#define bfd_link_hash_table_free(abfd, hash) \
43.35149 -+       BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
43.35150 -+
43.35151 -+#define bfd_link_add_symbols(abfd, info) \
43.35152 -+       BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
43.35153 -+
43.35154 -+#define bfd_link_just_syms(abfd, sec, info) \
43.35155 -+       BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
43.35156 -+
43.35157 -+#define bfd_final_link(abfd, info) \
43.35158 -+       BFD_SEND (abfd, _bfd_final_link, (abfd, info))
43.35159 -+
43.35160 -+#define bfd_free_cached_info(abfd) \
43.35161 -+       BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
43.35162 -+
43.35163 -+#define bfd_get_dynamic_symtab_upper_bound(abfd) \
43.35164 -+       BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
43.35165 -+
43.35166 -+#define bfd_print_private_bfd_data(abfd, file)\
43.35167 -+       BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
43.35168 -+
43.35169 -+#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
43.35170 -+       BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
43.35171 -+
43.35172 -+#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
43.35173 -+       BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
43.35174 -+                                                   dyncount, dynsyms, ret))
43.35175 -+
43.35176 -+#define bfd_get_dynamic_reloc_upper_bound(abfd) \
43.35177 -+       BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
43.35178 -+
43.35179 -+#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
43.35180 -+       BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
43.35181 -+
43.35182 -+extern bfd_byte *bfd_get_relocated_section_contents
43.35183 -+  (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
43.35184 -+   bfd_boolean, asymbol **);
43.35185 -+
43.35186 -+bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
43.35187 -+
43.35188 -+struct bfd_preserve
43.35189 -+{
43.35190 -+  void *marker;
43.35191 -+  void *tdata;
43.35192 -+  flagword flags;
43.35193 -+  const struct bfd_arch_info *arch_info;
43.35194 -+  struct bfd_section *sections;
43.35195 -+  struct bfd_section *section_last;
43.35196 -+  unsigned int section_count;
43.35197 -+  struct bfd_hash_table section_htab;
43.35198 -+};
43.35199 -+
43.35200 -+bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
43.35201 -+
43.35202 -+void bfd_preserve_restore (bfd *, struct bfd_preserve *);
43.35203 -+
43.35204 -+void bfd_preserve_finish (bfd *, struct bfd_preserve *);
43.35205 -+
43.35206 -+bfd_vma bfd_emul_get_maxpagesize (const char *);
43.35207 -+
43.35208 -+void bfd_emul_set_maxpagesize (const char *, bfd_vma);
43.35209 -+
43.35210 -+bfd_vma bfd_emul_get_commonpagesize (const char *);
43.35211 -+
43.35212 -+void bfd_emul_set_commonpagesize (const char *, bfd_vma);
43.35213 -+
43.35214 -+char *bfd_demangle (bfd *, const char *, int);
43.35215 -+
43.35216 -+/* Extracted from archive.c.  */
43.35217 -+symindex bfd_get_next_mapent
43.35218 -+   (bfd *abfd, symindex previous, carsym **sym);
43.35219 -+
43.35220 -+bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
43.35221 -+
43.35222 -+bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
43.35223 -+
43.35224 -+/* Extracted from corefile.c.  */
43.35225 -+const char *bfd_core_file_failing_command (bfd *abfd);
43.35226 -+
43.35227 -+int bfd_core_file_failing_signal (bfd *abfd);
43.35228 -+
43.35229 -+bfd_boolean core_file_matches_executable_p
43.35230 -+   (bfd *core_bfd, bfd *exec_bfd);
43.35231 -+
43.35232 -+bfd_boolean generic_core_file_matches_executable_p
43.35233 -+   (bfd *core_bfd, bfd *exec_bfd);
43.35234 -+
43.35235 -+/* Extracted from targets.c.  */
43.35236 -+#define BFD_SEND(bfd, message, arglist) \
43.35237 -+  ((*((bfd)->xvec->message)) arglist)
43.35238 -+
43.35239 -+#ifdef DEBUG_BFD_SEND
43.35240 -+#undef BFD_SEND
43.35241 -+#define BFD_SEND(bfd, message, arglist) \
43.35242 -+  (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
43.35243 -+    ((*((bfd)->xvec->message)) arglist) : \
43.35244 -+    (bfd_assert (__FILE__,__LINE__), NULL))
43.35245 -+#endif
43.35246 -+#define BFD_SEND_FMT(bfd, message, arglist) \
43.35247 -+  (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
43.35248 -+
43.35249 -+#ifdef DEBUG_BFD_SEND
43.35250 -+#undef BFD_SEND_FMT
43.35251 -+#define BFD_SEND_FMT(bfd, message, arglist) \
43.35252 -+  (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
43.35253 -+   (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
43.35254 -+   (bfd_assert (__FILE__,__LINE__), NULL))
43.35255 -+#endif
43.35256 -+
43.35257 -+enum bfd_flavour
43.35258 -+{
43.35259 -+  bfd_target_unknown_flavour,
43.35260 -+  bfd_target_aout_flavour,
43.35261 -+  bfd_target_coff_flavour,
43.35262 -+  bfd_target_ecoff_flavour,
43.35263 -+  bfd_target_xcoff_flavour,
43.35264 -+  bfd_target_elf_flavour,
43.35265 -+  bfd_target_ieee_flavour,
43.35266 -+  bfd_target_nlm_flavour,
43.35267 -+  bfd_target_oasys_flavour,
43.35268 -+  bfd_target_tekhex_flavour,
43.35269 -+  bfd_target_srec_flavour,
43.35270 -+  bfd_target_ihex_flavour,
43.35271 -+  bfd_target_som_flavour,
43.35272 -+  bfd_target_os9k_flavour,
43.35273 -+  bfd_target_versados_flavour,
43.35274 -+  bfd_target_msdos_flavour,
43.35275 -+  bfd_target_ovax_flavour,
43.35276 -+  bfd_target_evax_flavour,
43.35277 -+  bfd_target_mmo_flavour,
43.35278 -+  bfd_target_mach_o_flavour,
43.35279 -+  bfd_target_pef_flavour,
43.35280 -+  bfd_target_pef_xlib_flavour,
43.35281 -+  bfd_target_sym_flavour
43.35282 -+};
43.35283 -+
43.35284 -+enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
43.35285 -+
43.35286 -+/* Forward declaration.  */
43.35287 -+typedef struct bfd_link_info _bfd_link_info;
43.35288 -+
43.35289 -+typedef struct bfd_target
43.35290 -+{
43.35291 -+  /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
43.35292 -+  char *name;
43.35293 -+
43.35294 -+ /* The "flavour" of a back end is a general indication about
43.35295 -+    the contents of a file.  */
43.35296 -+  enum bfd_flavour flavour;
43.35297 -+
43.35298 -+  /* The order of bytes within the data area of a file.  */
43.35299 -+  enum bfd_endian byteorder;
43.35300 -+
43.35301 -+ /* The order of bytes within the header parts of a file.  */
43.35302 -+  enum bfd_endian header_byteorder;
43.35303 -+
43.35304 -+  /* A mask of all the flags which an executable may have set -
43.35305 -+     from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>.  */
43.35306 -+  flagword object_flags;
43.35307 -+
43.35308 -+ /* A mask of all the flags which a section may have set - from
43.35309 -+    the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>.  */
43.35310 -+  flagword section_flags;
43.35311 -+
43.35312 -+ /* The character normally found at the front of a symbol.
43.35313 -+    (if any), perhaps `_'.  */
43.35314 -+  char symbol_leading_char;
43.35315 -+
43.35316 -+ /* The pad character for file names within an archive header.  */
43.35317 -+  char ar_pad_char;
43.35318 -+
43.35319 -+  /* The maximum number of characters in an archive header.  */
43.35320 -+  unsigned short ar_max_namelen;
43.35321 -+
43.35322 -+  /* Entries for byte swapping for data. These are different from the
43.35323 -+     other entry points, since they don't take a BFD as the first argument.
43.35324 -+     Certain other handlers could do the same.  */
43.35325 -+  bfd_uint64_t   (*bfd_getx64) (const void *);
43.35326 -+  bfd_int64_t    (*bfd_getx_signed_64) (const void *);
43.35327 -+  void           (*bfd_putx64) (bfd_uint64_t, void *);
43.35328 -+  bfd_vma        (*bfd_getx32) (const void *);
43.35329 -+  bfd_signed_vma (*bfd_getx_signed_32) (const void *);
43.35330 -+  void           (*bfd_putx32) (bfd_vma, void *);
43.35331 -+  bfd_vma        (*bfd_getx16) (const void *);
43.35332 -+  bfd_signed_vma (*bfd_getx_signed_16) (const void *);
43.35333 -+  void           (*bfd_putx16) (bfd_vma, void *);
43.35334 -+
43.35335 -+  /* Byte swapping for the headers.  */
43.35336 -+  bfd_uint64_t   (*bfd_h_getx64) (const void *);
43.35337 -+  bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
43.35338 -+  void           (*bfd_h_putx64) (bfd_uint64_t, void *);
43.35339 -+  bfd_vma        (*bfd_h_getx32) (const void *);
43.35340 -+  bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
43.35341 -+  void           (*bfd_h_putx32) (bfd_vma, void *);
43.35342 -+  bfd_vma        (*bfd_h_getx16) (const void *);
43.35343 -+  bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
43.35344 -+  void           (*bfd_h_putx16) (bfd_vma, void *);
43.35345 -+
43.35346 -+  /* Format dependent routines: these are vectors of entry points
43.35347 -+     within the target vector structure, one for each format to check.  */
43.35348 -+
43.35349 -+  /* Check the format of a file being read.  Return a <<bfd_target *>> or zero.  */
43.35350 -+  const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
43.35351 -+
43.35352 -+  /* Set the format of a file being written.  */
43.35353 -+  bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
43.35354 -+
43.35355 -+  /* Write cached information into a file being written, at <<bfd_close>>.  */
43.35356 -+  bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
43.35357 -+
43.35358 -+
43.35359 -+  /* Generic entry points.  */
43.35360 -+#define BFD_JUMP_TABLE_GENERIC(NAME) \
43.35361 -+  NAME##_close_and_cleanup, \
43.35362 -+  NAME##_bfd_free_cached_info, \
43.35363 -+  NAME##_new_section_hook, \
43.35364 -+  NAME##_get_section_contents, \
43.35365 -+  NAME##_get_section_contents_in_window
43.35366 -+
43.35367 -+  /* Called when the BFD is being closed to do any necessary cleanup.  */
43.35368 -+  bfd_boolean (*_close_and_cleanup) (bfd *);
43.35369 -+  /* Ask the BFD to free all cached information.  */
43.35370 -+  bfd_boolean (*_bfd_free_cached_info) (bfd *);
43.35371 -+  /* Called when a new section is created.  */
43.35372 -+  bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
43.35373 -+  /* Read the contents of a section.  */
43.35374 -+  bfd_boolean (*_bfd_get_section_contents)
43.35375 -+    (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
43.35376 -+  bfd_boolean (*_bfd_get_section_contents_in_window)
43.35377 -+    (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
43.35378 -+
43.35379 -+  /* Entry points to copy private data.  */
43.35380 -+#define BFD_JUMP_TABLE_COPY(NAME) \
43.35381 -+  NAME##_bfd_copy_private_bfd_data, \
43.35382 -+  NAME##_bfd_merge_private_bfd_data, \
43.35383 -+  _bfd_generic_init_private_section_data, \
43.35384 -+  NAME##_bfd_copy_private_section_data, \
43.35385 -+  NAME##_bfd_copy_private_symbol_data, \
43.35386 -+  NAME##_bfd_copy_private_header_data, \
43.35387 -+  NAME##_bfd_set_private_flags, \
43.35388 -+  NAME##_bfd_print_private_bfd_data
43.35389 -+
43.35390 -+  /* Called to copy BFD general private data from one object file
43.35391 -+     to another.  */
43.35392 -+  bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
43.35393 -+  /* Called to merge BFD general private data from one object file
43.35394 -+     to a common output file when linking.  */
43.35395 -+  bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
43.35396 -+  /* Called to initialize BFD private section data from one object file
43.35397 -+     to another.  */
43.35398 -+#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
43.35399 -+  BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
43.35400 -+  bfd_boolean (*_bfd_init_private_section_data)
43.35401 -+    (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
43.35402 -+  /* Called to copy BFD private section data from one object file
43.35403 -+     to another.  */
43.35404 -+  bfd_boolean (*_bfd_copy_private_section_data)
43.35405 -+    (bfd *, sec_ptr, bfd *, sec_ptr);
43.35406 -+  /* Called to copy BFD private symbol data from one symbol
43.35407 -+     to another.  */
43.35408 -+  bfd_boolean (*_bfd_copy_private_symbol_data)
43.35409 -+    (bfd *, asymbol *, bfd *, asymbol *);
43.35410 -+  /* Called to copy BFD private header data from one object file
43.35411 -+     to another.  */
43.35412 -+  bfd_boolean (*_bfd_copy_private_header_data)
43.35413 -+    (bfd *, bfd *);
43.35414 -+  /* Called to set private backend flags.  */
43.35415 -+  bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
43.35416 -+
43.35417 -+  /* Called to print private BFD data.  */
43.35418 -+  bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
43.35419 -+
43.35420 -+  /* Core file entry points.  */
43.35421 -+#define BFD_JUMP_TABLE_CORE(NAME) \
43.35422 -+  NAME##_core_file_failing_command, \
43.35423 -+  NAME##_core_file_failing_signal, \
43.35424 -+  NAME##_core_file_matches_executable_p
43.35425 -+
43.35426 -+  char *      (*_core_file_failing_command) (bfd *);
43.35427 -+  int         (*_core_file_failing_signal) (bfd *);
43.35428 -+  bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
43.35429 -+
43.35430 -+  /* Archive entry points.  */
43.35431 -+#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
43.35432 -+  NAME##_slurp_armap, \
43.35433 -+  NAME##_slurp_extended_name_table, \
43.35434 -+  NAME##_construct_extended_name_table, \
43.35435 -+  NAME##_truncate_arname, \
43.35436 -+  NAME##_write_armap, \
43.35437 -+  NAME##_read_ar_hdr, \
43.35438 -+  NAME##_openr_next_archived_file, \
43.35439 -+  NAME##_get_elt_at_index, \
43.35440 -+  NAME##_generic_stat_arch_elt, \
43.35441 -+  NAME##_update_armap_timestamp
43.35442 -+
43.35443 -+  bfd_boolean (*_bfd_slurp_armap) (bfd *);
43.35444 -+  bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
43.35445 -+  bfd_boolean (*_bfd_construct_extended_name_table)
43.35446 -+    (bfd *, char **, bfd_size_type *, const char **);
43.35447 -+  void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
43.35448 -+  bfd_boolean (*write_armap)
43.35449 -+    (bfd *, unsigned int, struct orl *, unsigned int, int);
43.35450 -+  void *      (*_bfd_read_ar_hdr_fn) (bfd *);
43.35451 -+  bfd *       (*openr_next_archived_file) (bfd *, bfd *);
43.35452 -+#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
43.35453 -+  bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
43.35454 -+  int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
43.35455 -+  bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
43.35456 -+
43.35457 -+  /* Entry points used for symbols.  */
43.35458 -+#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
43.35459 -+  NAME##_get_symtab_upper_bound, \
43.35460 -+  NAME##_canonicalize_symtab, \
43.35461 -+  NAME##_make_empty_symbol, \
43.35462 -+  NAME##_print_symbol, \
43.35463 -+  NAME##_get_symbol_info, \
43.35464 -+  NAME##_bfd_is_local_label_name, \
43.35465 -+  NAME##_bfd_is_target_special_symbol, \
43.35466 -+  NAME##_get_lineno, \
43.35467 -+  NAME##_find_nearest_line, \
43.35468 -+  _bfd_generic_find_line, \
43.35469 -+  NAME##_find_inliner_info, \
43.35470 -+  NAME##_bfd_make_debug_symbol, \
43.35471 -+  NAME##_read_minisymbols, \
43.35472 -+  NAME##_minisymbol_to_symbol
43.35473 -+
43.35474 -+  long        (*_bfd_get_symtab_upper_bound) (bfd *);
43.35475 -+  long        (*_bfd_canonicalize_symtab)
43.35476 -+    (bfd *, struct bfd_symbol **);
43.35477 -+  struct bfd_symbol *
43.35478 -+              (*_bfd_make_empty_symbol) (bfd *);
43.35479 -+  void        (*_bfd_print_symbol)
43.35480 -+    (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
43.35481 -+#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
43.35482 -+  void        (*_bfd_get_symbol_info)
43.35483 -+    (bfd *, struct bfd_symbol *, symbol_info *);
43.35484 -+#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
43.35485 -+  bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
43.35486 -+  bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
43.35487 -+  alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
43.35488 -+  bfd_boolean (*_bfd_find_nearest_line)
43.35489 -+    (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
43.35490 -+     const char **, const char **, unsigned int *);
43.35491 -+  bfd_boolean (*_bfd_find_line)
43.35492 -+    (bfd *, struct bfd_symbol **, struct bfd_symbol *,
43.35493 -+     const char **, unsigned int *);
43.35494 -+  bfd_boolean (*_bfd_find_inliner_info)
43.35495 -+    (bfd *, const char **, const char **, unsigned int *);
43.35496 -+ /* Back-door to allow format-aware applications to create debug symbols
43.35497 -+    while using BFD for everything else.  Currently used by the assembler
43.35498 -+    when creating COFF files.  */
43.35499 -+  asymbol *   (*_bfd_make_debug_symbol)
43.35500 -+    (bfd *, void *, unsigned long size);
43.35501 -+#define bfd_read_minisymbols(b, d, m, s) \
43.35502 -+  BFD_SEND (b, _read_minisymbols, (b, d, m, s))
43.35503 -+  long        (*_read_minisymbols)
43.35504 -+    (bfd *, bfd_boolean, void **, unsigned int *);
43.35505 -+#define bfd_minisymbol_to_symbol(b, d, m, f) \
43.35506 -+  BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
43.35507 -+  asymbol *   (*_minisymbol_to_symbol)
43.35508 -+    (bfd *, bfd_boolean, const void *, asymbol *);
43.35509 -+
43.35510 -+  /* Routines for relocs.  */
43.35511 -+#define BFD_JUMP_TABLE_RELOCS(NAME) \
43.35512 -+  NAME##_get_reloc_upper_bound, \
43.35513 -+  NAME##_canonicalize_reloc, \
43.35514 -+  NAME##_bfd_reloc_type_lookup, \
43.35515 -+  NAME##_bfd_reloc_name_lookup
43.35516 -+
43.35517 -+  long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
43.35518 -+  long        (*_bfd_canonicalize_reloc)
43.35519 -+    (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
43.35520 -+  /* See documentation on reloc types.  */
43.35521 -+  reloc_howto_type *
43.35522 -+              (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
43.35523 -+  reloc_howto_type *
43.35524 -+              (*reloc_name_lookup) (bfd *, const char *);
43.35525 -+
43.35526 -+
43.35527 -+  /* Routines used when writing an object file.  */
43.35528 -+#define BFD_JUMP_TABLE_WRITE(NAME) \
43.35529 -+  NAME##_set_arch_mach, \
43.35530 -+  NAME##_set_section_contents
43.35531 -+
43.35532 -+  bfd_boolean (*_bfd_set_arch_mach)
43.35533 -+    (bfd *, enum bfd_architecture, unsigned long);
43.35534 -+  bfd_boolean (*_bfd_set_section_contents)
43.35535 -+    (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
43.35536 -+
43.35537 -+  /* Routines used by the linker.  */
43.35538 -+#define BFD_JUMP_TABLE_LINK(NAME) \
43.35539 -+  NAME##_sizeof_headers, \
43.35540 -+  NAME##_bfd_get_relocated_section_contents, \
43.35541 -+  NAME##_bfd_relax_section, \
43.35542 -+  NAME##_bfd_link_hash_table_create, \
43.35543 -+  NAME##_bfd_link_hash_table_free, \
43.35544 -+  NAME##_bfd_link_add_symbols, \
43.35545 -+  NAME##_bfd_link_just_syms, \
43.35546 -+  NAME##_bfd_final_link, \
43.35547 -+  NAME##_bfd_link_split_section, \
43.35548 -+  NAME##_bfd_gc_sections, \
43.35549 -+  NAME##_bfd_merge_sections, \
43.35550 -+  NAME##_bfd_is_group_section, \
43.35551 -+  NAME##_bfd_discard_group, \
43.35552 -+  NAME##_section_already_linked \
43.35553 -+
43.35554 -+  int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
43.35555 -+  bfd_byte *  (*_bfd_get_relocated_section_contents)
43.35556 -+    (bfd *, struct bfd_link_info *, struct bfd_link_order *,
43.35557 -+     bfd_byte *, bfd_boolean, struct bfd_symbol **);
43.35558 -+
43.35559 -+  bfd_boolean (*_bfd_relax_section)
43.35560 -+    (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
43.35561 -+
43.35562 -+  /* Create a hash table for the linker.  Different backends store
43.35563 -+     different information in this table.  */
43.35564 -+  struct bfd_link_hash_table *
43.35565 -+              (*_bfd_link_hash_table_create) (bfd *);
43.35566 -+
43.35567 -+  /* Release the memory associated with the linker hash table.  */
43.35568 -+  void        (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
43.35569 -+
43.35570 -+  /* Add symbols from this object file into the hash table.  */
43.35571 -+  bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
43.35572 -+
43.35573 -+  /* Indicate that we are only retrieving symbol values from this section.  */
43.35574 -+  void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
43.35575 -+
43.35576 -+  /* Do a link based on the link_order structures attached to each
43.35577 -+     section of the BFD.  */
43.35578 -+  bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
43.35579 -+
43.35580 -+  /* Should this section be split up into smaller pieces during linking.  */
43.35581 -+  bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
43.35582 -+
43.35583 -+  /* Remove sections that are not referenced from the output.  */
43.35584 -+  bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
43.35585 -+
43.35586 -+  /* Attempt to merge SEC_MERGE sections.  */
43.35587 -+  bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
43.35588 -+
43.35589 -+  /* Is this section a member of a group?  */
43.35590 -+  bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
43.35591 -+
43.35592 -+  /* Discard members of a group.  */
43.35593 -+  bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
43.35594 -+
43.35595 -+  /* Check if SEC has been already linked during a reloceatable or
43.35596 -+     final link.  */
43.35597 -+  void (*_section_already_linked) (bfd *, struct bfd_section *,
43.35598 -+                                   struct bfd_link_info *);
43.35599 -+
43.35600 -+  /* Routines to handle dynamic symbols and relocs.  */
43.35601 -+#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
43.35602 -+  NAME##_get_dynamic_symtab_upper_bound, \
43.35603 -+  NAME##_canonicalize_dynamic_symtab, \
43.35604 -+  NAME##_get_synthetic_symtab, \
43.35605 -+  NAME##_get_dynamic_reloc_upper_bound, \
43.35606 -+  NAME##_canonicalize_dynamic_reloc
43.35607 -+
43.35608 -+  /* Get the amount of memory required to hold the dynamic symbols.  */
43.35609 -+  long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
43.35610 -+  /* Read in the dynamic symbols.  */
43.35611 -+  long        (*_bfd_canonicalize_dynamic_symtab)
43.35612 -+    (bfd *, struct bfd_symbol **);
43.35613 -+  /* Create synthetized symbols.  */
43.35614 -+  long        (*_bfd_get_synthetic_symtab)
43.35615 -+    (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
43.35616 -+     struct bfd_symbol **);
43.35617 -+  /* Get the amount of memory required to hold the dynamic relocs.  */
43.35618 -+  long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
43.35619 -+  /* Read in the dynamic relocs.  */
43.35620 -+  long        (*_bfd_canonicalize_dynamic_reloc)
43.35621 -+    (bfd *, arelent **, struct bfd_symbol **);
43.35622 -+
43.35623 -+  /* Opposite endian version of this target.  */
43.35624 -+  const struct bfd_target * alternative_target;
43.35625 -+
43.35626 -+  /* Data for use by back-end routines, which isn't
43.35627 -+     generic enough to belong in this structure.  */
43.35628 -+  const void *backend_data;
43.35629 -+
43.35630 -+} bfd_target;
43.35631 -+
43.35632 -+bfd_boolean bfd_set_default_target (const char *name);
43.35633 -+
43.35634 -+const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
43.35635 -+
43.35636 -+const char ** bfd_target_list (void);
43.35637 -+
43.35638 -+const bfd_target *bfd_search_for_target
43.35639 -+   (int (*search_func) (const bfd_target *, void *),
43.35640 -+    void *);
43.35641 -+
43.35642 -+/* Extracted from format.c.  */
43.35643 -+bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
43.35644 -+
43.35645 -+bfd_boolean bfd_check_format_matches
43.35646 -+   (bfd *abfd, bfd_format format, char ***matching);
43.35647 -+
43.35648 -+bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
43.35649 -+
43.35650 -+const char *bfd_format_string (bfd_format format);
43.35651 -+
43.35652 -+/* Extracted from linker.c.  */
43.35653 -+bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
43.35654 -+
43.35655 -+#define bfd_link_split_section(abfd, sec) \
43.35656 -+       BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
43.35657 -+
43.35658 -+void bfd_section_already_linked (bfd *abfd, asection *sec,
43.35659 -+    struct bfd_link_info *info);
43.35660 -+
43.35661 -+#define bfd_section_already_linked(abfd, sec, info) \
43.35662 -+       BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
43.35663 -+
43.35664 -+/* Extracted from simple.c.  */
43.35665 -+bfd_byte *bfd_simple_get_relocated_section_contents
43.35666 -+   (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
43.35667 -+
43.35668 -+#ifdef __cplusplus
43.35669 -+}
43.35670 -+#endif
43.35671 -+#endif
43.35672 ---- /dev/null
43.35673 -+++ b/bfd/bfd_stdint.h
43.35674 -@@ -0,0 +1,47 @@
43.35675 -+/* generated for  gcc (GCC) 4.2.4 (Ubuntu 4.2.4-3ubuntu4) */
43.35676 -+
43.35677 -+#ifndef GCC_GENERATED_STDINT_H
43.35678 -+#define GCC_GENERATED_STDINT_H 1
43.35679 -+
43.35680 -+#include <sys/types.h>
43.35681 -+#include <stdint.h>
43.35682 -+/* glibc uses these symbols as guards to prevent redefinitions.  */
43.35683 -+#ifdef __int8_t_defined
43.35684 -+#define _INT8_T
43.35685 -+#define _INT16_T
43.35686 -+#define _INT32_T
43.35687 -+#endif
43.35688 -+#ifdef __uint32_t_defined
43.35689 -+#define _UINT32_T
43.35690 -+#endif
43.35691 -+
43.35692 -+
43.35693 -+/* Some systems have guard macros to prevent redefinitions, define them.  */
43.35694 -+#ifndef _INT8_T
43.35695 -+#define _INT8_T
43.35696 -+#endif
43.35697 -+#ifndef _INT16_T
43.35698 -+#define _INT16_T
43.35699 -+#endif
43.35700 -+#ifndef _INT32_T
43.35701 -+#define _INT32_T
43.35702 -+#endif
43.35703 -+#ifndef _UINT8_T
43.35704 -+#define _UINT8_T
43.35705 -+#endif
43.35706 -+#ifndef _UINT16_T
43.35707 -+#define _UINT16_T
43.35708 -+#endif
43.35709 -+#ifndef _UINT32_T
43.35710 -+#define _UINT32_T
43.35711 -+#endif
43.35712 -+
43.35713 -+/* system headers have good uint64_t and int64_t */
43.35714 -+#ifndef _INT64_T
43.35715 -+#define _INT64_T
43.35716 -+#endif
43.35717 -+#ifndef _UINT64_T
43.35718 -+#define _UINT64_T
43.35719 -+#endif
43.35720 -+
43.35721 -+#endif /* GCC_GENERATED_STDINT_H */
43.35722 ---- a/bfd/configure
43.35723 -+++ b/bfd/configure
43.35724 -@@ -2994,7 +2994,7 @@ fi
43.35725 - 
43.35726 - # Define the identity of the package.
43.35727 -  PACKAGE=bfd
43.35728 -- VERSION=2.18
43.35729 -+ VERSION=2.18.atmel.1.0.1.avr32linux.1
43.35730 - 
43.35731 - 
43.35732 - cat >>confdefs.h <<_ACEOF
43.35733 -@@ -19041,6 +19041,7 @@ do
43.35734 -     bfd_efi_app_ia64_vec)	tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
43.35735 -     bfd_elf32_am33lin_vec)	tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
43.35736 -     bfd_elf32_avr_vec)		tb="$tb elf32-avr.lo elf32.lo $elf" ;;
43.35737 -+    bfd_elf32_avr32_vec)	tb="$tb elf32-avr32.lo elf32.lo $elf" ;;
43.35738 -     bfd_elf32_bfin_vec)		tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
43.35739 -     bfd_elf32_bfinfdpic_vec)	tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
43.35740 -     bfd_elf32_big_generic_vec) 	tb="$tb elf32-gen.lo elf32.lo $elf" ;;
43.35741 ---- /dev/null
43.35742 -+++ b/bfd/doc/bfd.h
43.35743 -@@ -0,0 +1,5493 @@
43.35744 -+/* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically 
43.35745 -+   generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c", 
43.35746 -+   "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c", 
43.35747 -+   "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c", 
43.35748 -+   "linker.c" and "simple.c".
43.35749 -+   Run "make headers" in your build bfd/ to regenerate.  */
43.35750 -+
43.35751 -+/* Main header file for the bfd library -- portable access to object files.
43.35752 -+
43.35753 -+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
43.35754 -+   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
43.35755 -+   Free Software Foundation, Inc.
43.35756 -+
43.35757 -+   Contributed by Cygnus Support.
43.35758 -+
43.35759 -+   This file is part of BFD, the Binary File Descriptor library.
43.35760 -+
43.35761 -+   This program is free software; you can redistribute it and/or modify
43.35762 -+   it under the terms of the GNU General Public License as published by
43.35763 -+   the Free Software Foundation; either version 3 of the License, or
43.35764 -+   (at your option) any later version.
43.35765 -+
43.35766 -+   This program is distributed in the hope that it will be useful,
43.35767 -+   but WITHOUT ANY WARRANTY; without even the implied warranty of
43.35768 -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
43.35769 -+   GNU General Public License for more details.
43.35770 -+
43.35771 -+   You should have received a copy of the GNU General Public License
43.35772 -+   along with this program; if not, write to the Free Software
43.35773 -+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
43.35774 -+
43.35775 -+#ifndef __BFD_H_SEEN__
43.35776 -+#define __BFD_H_SEEN__
43.35777 -+
43.35778 -+#ifdef __cplusplus
43.35779 -+extern "C" {
43.35780 -+#endif
43.35781 -+
43.35782 -+#include "ansidecl.h"
43.35783 -+#include "symcat.h"
43.35784 -+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
43.35785 -+#ifndef SABER
43.35786 -+/* This hack is to avoid a problem with some strict ANSI C preprocessors.
43.35787 -+   The problem is, "32_" is not a valid preprocessing token, and we don't
43.35788 -+   want extra underscores (e.g., "nlm_32_").  The XCONCAT2 macro will
43.35789 -+   cause the inner CONCAT2 macros to be evaluated first, producing
43.35790 -+   still-valid pp-tokens.  Then the final concatenation can be done.  */
43.35791 -+#undef CONCAT4
43.35792 -+#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
43.35793 -+#endif
43.35794 -+#endif
43.35795 -+
43.35796 -+/* This is a utility macro to handle the situation where the code
43.35797 -+   wants to place a constant string into the code, followed by a
43.35798 -+   comma and then the length of the string.  Doing this by hand
43.35799 -+   is error prone, so using this macro is safer.  The macro will
43.35800 -+   also safely handle the case where a NULL is passed as the arg.  */
43.35801 -+#define STRING_COMMA_LEN(STR) (STR), ((STR) ? sizeof (STR) - 1 : 0)
43.35802 -+/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
43.35803 -+   to create the arguments to another macro, since the preprocessor
43.35804 -+   will mis-count the number of arguments to the outer macro (by not
43.35805 -+   evaluating STRING_COMMA_LEN and so missing the comma).  This is a
43.35806 -+   problem for example when trying to use STRING_COMMA_LEN to build
43.35807 -+   the arguments to the strncmp() macro.  Hence this alternative
43.35808 -+   definition of strncmp is provided here.
43.35809 -+   
43.35810 -+   Note - these macros do NOT work if STR2 is not a constant string.  */
43.35811 -+#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
43.35812 -+  /* strcpy() can have a similar problem, but since we know we are
43.35813 -+     copying a constant string, we can use memcpy which will be faster
43.35814 -+     since there is no need to check for a NUL byte inside STR.  We
43.35815 -+     can also save time if we do not need to copy the terminating NUL.  */
43.35816 -+#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
43.35817 -+#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
43.35818 -+
43.35819 -+
43.35820 -+/* The word size used by BFD on the host.  This may be 64 with a 32
43.35821 -+   bit target if the host is 64 bit, or if other 64 bit targets have
43.35822 -+   been selected with --enable-targets, or if --enable-64-bit-bfd.  */
43.35823 -+#define BFD_ARCH_SIZE @wordsize@
43.35824 -+
43.35825 -+/* The word size of the default bfd target.  */
43.35826 -+#define BFD_DEFAULT_TARGET_SIZE @bfd_default_target_size@
43.35827 -+
43.35828 -+#define BFD_HOST_64BIT_LONG @BFD_HOST_64BIT_LONG@
43.35829 -+#define BFD_HOST_64BIT_LONG_LONG @BFD_HOST_64BIT_LONG_LONG@
43.35830 -+#define BFD_HOST_LONG_LONG @BFD_HOST_LONG_LONG@
43.35831 -+#if @BFD_HOST_64_BIT_DEFINED@
43.35832 -+#define BFD_HOST_64_BIT @BFD_HOST_64_BIT@
43.35833 -+#define BFD_HOST_U_64_BIT @BFD_HOST_U_64_BIT@
43.35834 -+typedef BFD_HOST_64_BIT bfd_int64_t;
43.35835 -+typedef BFD_HOST_U_64_BIT bfd_uint64_t;
43.35836 -+#endif
43.35837 -+
43.35838 -+#if BFD_ARCH_SIZE >= 64
43.35839 -+#define BFD64
43.35840 -+#endif
43.35841 -+
43.35842 -+#ifndef INLINE
43.35843 -+#if __GNUC__ >= 2
43.35844 -+#define INLINE __inline__
43.35845 -+#else
43.35846 -+#define INLINE
43.35847 -+#endif
43.35848 -+#endif
43.35849 -+
43.35850 -+/* Declaring a type wide enough to hold a host long and a host pointer.  */
43.35851 -+#define BFD_HOSTPTR_T	@BFD_HOSTPTR_T@
43.35852 -+typedef BFD_HOSTPTR_T bfd_hostptr_t;
43.35853 -+
43.35854 -+/* Forward declaration.  */
43.35855 -+typedef struct bfd bfd;
43.35856 -+
43.35857 -+/* Boolean type used in bfd.  Too many systems define their own
43.35858 -+   versions of "boolean" for us to safely typedef a "boolean" of
43.35859 -+   our own.  Using an enum for "bfd_boolean" has its own set of
43.35860 -+   problems, with strange looking casts required to avoid warnings
43.35861 -+   on some older compilers.  Thus we just use an int.
43.35862 -+
43.35863 -+   General rule: Functions which are bfd_boolean return TRUE on
43.35864 -+   success and FALSE on failure (unless they're a predicate).  */
43.35865 -+
43.35866 -+typedef int bfd_boolean;
43.35867 -+#undef FALSE
43.35868 -+#undef TRUE
43.35869 -+#define FALSE 0
43.35870 -+#define TRUE 1
43.35871 -+
43.35872 -+#ifdef BFD64
43.35873 -+
43.35874 -+#ifndef BFD_HOST_64_BIT
43.35875 -+ #error No 64 bit integer type available
43.35876 -+#endif /* ! defined (BFD_HOST_64_BIT) */
43.35877 -+
43.35878 -+typedef BFD_HOST_U_64_BIT bfd_vma;
43.35879 -+typedef BFD_HOST_64_BIT bfd_signed_vma;
43.35880 -+typedef BFD_HOST_U_64_BIT bfd_size_type;
43.35881 -+typedef BFD_HOST_U_64_BIT symvalue;
43.35882 -+
43.35883 -+#ifndef fprintf_vma
43.35884 -+#if BFD_HOST_64BIT_LONG
43.35885 -+#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
43.35886 -+#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
43.35887 -+#elif BFD_HOST_64BIT_LONG_LONG
43.35888 -+#define sprintf_vma(s,x) sprintf (s, "%016llx", x)
43.35889 -+#define fprintf_vma(f,x) fprintf (f, "%016llx", x)
43.35890 -+#else
43.35891 -+#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
43.35892 -+#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
43.35893 -+#define fprintf_vma(s,x) \
43.35894 -+  fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
43.35895 -+#define sprintf_vma(s,x) \
43.35896 -+  sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
43.35897 -+#endif
43.35898 -+#endif
43.35899 -+
43.35900 -+#else /* not BFD64  */
43.35901 -+
43.35902 -+/* Represent a target address.  Also used as a generic unsigned type
43.35903 -+   which is guaranteed to be big enough to hold any arithmetic types
43.35904 -+   we need to deal with.  */
43.35905 -+typedef unsigned long bfd_vma;
43.35906 -+
43.35907 -+/* A generic signed type which is guaranteed to be big enough to hold any
43.35908 -+   arithmetic types we need to deal with.  Can be assumed to be compatible
43.35909 -+   with bfd_vma in the same way that signed and unsigned ints are compatible
43.35910 -+   (as parameters, in assignment, etc).  */
43.35911 -+typedef long bfd_signed_vma;
43.35912 -+
43.35913 -+typedef unsigned long symvalue;
43.35914 -+typedef unsigned long bfd_size_type;
43.35915 -+
43.35916 -+/* Print a bfd_vma x on stream s.  */
43.35917 -+#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
43.35918 -+#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
43.35919 -+
43.35920 -+#endif /* not BFD64  */
43.35921 -+
43.35922 -+#define HALF_BFD_SIZE_TYPE \
43.35923 -+  (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
43.35924 -+
43.35925 -+#ifndef BFD_HOST_64_BIT
43.35926 -+/* Fall back on a 32 bit type.  The idea is to make these types always
43.35927 -+   available for function return types, but in the case that
43.35928 -+   BFD_HOST_64_BIT is undefined such a function should abort or
43.35929 -+   otherwise signal an error.  */
43.35930 -+typedef bfd_signed_vma bfd_int64_t;
43.35931 -+typedef bfd_vma bfd_uint64_t;
43.35932 -+#endif
43.35933 -+
43.35934 -+/* An offset into a file.  BFD always uses the largest possible offset
43.35935 -+   based on the build time availability of fseek, fseeko, or fseeko64.  */
43.35936 -+typedef @bfd_file_ptr@ file_ptr;
43.35937 -+typedef unsigned @bfd_file_ptr@ ufile_ptr;
43.35938 -+
43.35939 -+extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
43.35940 -+extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
43.35941 -+
43.35942 -+#define printf_vma(x) fprintf_vma(stdout,x)
43.35943 -+#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
43.35944 -+
43.35945 -+typedef unsigned int flagword;	/* 32 bits of flags */
43.35946 -+typedef unsigned char bfd_byte;
43.35947 -+
43.35948 -+/* File formats.  */
43.35949 -+
43.35950 -+typedef enum bfd_format
43.35951 -+{
43.35952 -+  bfd_unknown = 0,	/* File format is unknown.  */
43.35953 -+  bfd_object,		/* Linker/assembler/compiler output.  */
43.35954 -+  bfd_archive,		/* Object archive file.  */
43.35955 -+  bfd_core,		/* Core dump.  */
43.35956 -+  bfd_type_end		/* Marks the end; don't use it!  */
43.35957 -+}
43.35958 -+bfd_format;
43.35959 -+
43.35960 -+/* Values that may appear in the flags field of a BFD.  These also
43.35961 -+   appear in the object_flags field of the bfd_target structure, where
43.35962 -+   they indicate the set of flags used by that backend (not all flags
43.35963 -+   are meaningful for all object file formats) (FIXME: at the moment,
43.35964 -+   the object_flags values have mostly just been copied from backend
43.35965 -+   to another, and are not necessarily correct).  */
43.35966 -+
43.35967 -+/* No flags.  */
43.35968 -+#define BFD_NO_FLAGS   	0x00
43.35969 -+
43.35970 -+/* BFD contains relocation entries.  */
43.35971 -+#define HAS_RELOC   	0x01
43.35972 -+
43.35973 -+/* BFD is directly executable.  */
43.35974 -+#define EXEC_P      	0x02
43.35975 -+
43.35976 -+/* BFD has line number information (basically used for F_LNNO in a
43.35977 -+   COFF header).  */
43.35978 -+#define HAS_LINENO  	0x04
43.35979 -+
43.35980 -+/* BFD has debugging information.  */
43.35981 -+#define HAS_DEBUG   	0x08
43.35982 -+
43.35983 -+/* BFD has symbols.  */
43.35984 -+#define HAS_SYMS    	0x10
43.35985 -+
43.35986 -+/* BFD has local symbols (basically used for F_LSYMS in a COFF
43.35987 -+   header).  */
43.35988 -+#define HAS_LOCALS  	0x20
43.35989 -+
43.35990 -+/* BFD is a dynamic object.  */
43.35991 -+#define DYNAMIC     	0x40
43.35992 -+
43.35993 -+/* Text section is write protected (if D_PAGED is not set, this is
43.35994 -+   like an a.out NMAGIC file) (the linker sets this by default, but
43.35995 -+   clears it for -r or -N).  */
43.35996 -+#define WP_TEXT     	0x80
43.35997 -+
43.35998 -+/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
43.35999 -+   linker sets this by default, but clears it for -r or -n or -N).  */
43.36000 -+#define D_PAGED     	0x100
43.36001 -+
43.36002 -+/* BFD is relaxable (this means that bfd_relax_section may be able to
43.36003 -+   do something) (sometimes bfd_relax_section can do something even if
43.36004 -+   this is not set).  */
43.36005 -+#define BFD_IS_RELAXABLE 0x200
43.36006 -+
43.36007 -+/* This may be set before writing out a BFD to request using a
43.36008 -+   traditional format.  For example, this is used to request that when
43.36009 -+   writing out an a.out object the symbols not be hashed to eliminate
43.36010 -+   duplicates.  */
43.36011 -+#define BFD_TRADITIONAL_FORMAT 0x400
43.36012 -+
43.36013 -+/* This flag indicates that the BFD contents are actually cached in
43.36014 -+   memory.  If this is set, iostream points to a bfd_in_memory struct.  */
43.36015 -+#define BFD_IN_MEMORY 0x800
43.36016 -+
43.36017 -+/* The sections in this BFD specify a memory page.  */
43.36018 -+#define HAS_LOAD_PAGE 0x1000
43.36019 -+
43.36020 -+/* This BFD has been created by the linker and doesn't correspond
43.36021 -+   to any input file.  */
43.36022 -+#define BFD_LINKER_CREATED 0x2000
43.36023 -+
43.36024 -+/* Symbols and relocation.  */
43.36025 -+
43.36026 -+/* A count of carsyms (canonical archive symbols).  */
43.36027 -+typedef unsigned long symindex;
43.36028 -+
43.36029 -+/* How to perform a relocation.  */
43.36030 -+typedef const struct reloc_howto_struct reloc_howto_type;
43.36031 -+
43.36032 -+#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
43.36033 -+
43.36034 -+/* General purpose part of a symbol X;
43.36035 -+   target specific parts are in libcoff.h, libaout.h, etc.  */
43.36036 -+
43.36037 -+#define bfd_get_section(x) ((x)->section)
43.36038 -+#define bfd_get_output_section(x) ((x)->section->output_section)
43.36039 -+#define bfd_set_section(x,y) ((x)->section) = (y)
43.36040 -+#define bfd_asymbol_base(x) ((x)->section->vma)
43.36041 -+#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
43.36042 -+#define bfd_asymbol_name(x) ((x)->name)
43.36043 -+/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
43.36044 -+#define bfd_asymbol_bfd(x) ((x)->the_bfd)
43.36045 -+#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
43.36046 -+
43.36047 -+/* A canonical archive symbol.  */
43.36048 -+/* This is a type pun with struct ranlib on purpose!  */
43.36049 -+typedef struct carsym
43.36050 -+{
43.36051 -+  char *name;
43.36052 -+  file_ptr file_offset;	/* Look here to find the file.  */
43.36053 -+}
43.36054 -+carsym;			/* To make these you call a carsymogen.  */
43.36055 -+
43.36056 -+/* Used in generating armaps (archive tables of contents).
43.36057 -+   Perhaps just a forward definition would do?  */
43.36058 -+struct orl 			/* Output ranlib.  */
43.36059 -+{
43.36060 -+  char **name;		/* Symbol name.  */
43.36061 -+  union
43.36062 -+  {
43.36063 -+    file_ptr pos;
43.36064 -+    bfd *abfd;
43.36065 -+  } u;			/* bfd* or file position.  */
43.36066 -+  int namidx;		/* Index into string table.  */
43.36067 -+};
43.36068 -+
43.36069 -+/* Linenumber stuff.  */
43.36070 -+typedef struct lineno_cache_entry
43.36071 -+{
43.36072 -+  unsigned int line_number;	/* Linenumber from start of function.  */
43.36073 -+  union
43.36074 -+  {
43.36075 -+    struct bfd_symbol *sym;	/* Function name.  */
43.36076 -+    bfd_vma offset;	    		/* Offset into section.  */
43.36077 -+  } u;
43.36078 -+}
43.36079 -+alent;
43.36080 -+
43.36081 -+/* Object and core file sections.  */
43.36082 -+
43.36083 -+#define	align_power(addr, align)	\
43.36084 -+  (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
43.36085 -+
43.36086 -+typedef struct bfd_section *sec_ptr;
43.36087 -+
43.36088 -+#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
43.36089 -+#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
43.36090 -+#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
43.36091 -+#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
43.36092 -+#define bfd_section_name(bfd, ptr) ((ptr)->name)
43.36093 -+#define bfd_section_size(bfd, ptr) ((ptr)->size)
43.36094 -+#define bfd_get_section_size(ptr) ((ptr)->size)
43.36095 -+#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
43.36096 -+#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
43.36097 -+#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
43.36098 -+#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
43.36099 -+#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
43.36100 -+
43.36101 -+#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
43.36102 -+
43.36103 -+#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
43.36104 -+#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
43.36105 -+#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
43.36106 -+/* Find the address one past the end of SEC.  */
43.36107 -+#define bfd_get_section_limit(bfd, sec) \
43.36108 -+  (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
43.36109 -+   / bfd_octets_per_byte (bfd))
43.36110 -+
43.36111 -+/* Return TRUE if section has been discarded.  */
43.36112 -+#define elf_discarded_section(sec)				\
43.36113 -+  (!bfd_is_abs_section (sec)					\
43.36114 -+   && bfd_is_abs_section ((sec)->output_section)		\
43.36115 -+   && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE		\
43.36116 -+   && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
43.36117 -+
43.36118 -+/* Forward define.  */
43.36119 -+struct stat;
43.36120 -+
43.36121 -+typedef enum bfd_print_symbol
43.36122 -+{
43.36123 -+  bfd_print_symbol_name,
43.36124 -+  bfd_print_symbol_more,
43.36125 -+  bfd_print_symbol_all
43.36126 -+} bfd_print_symbol_type;
43.36127 -+
43.36128 -+/* Information about a symbol that nm needs.  */
43.36129 -+
43.36130 -+typedef struct _symbol_info
43.36131 -+{
43.36132 -+  symvalue value;
43.36133 -+  char type;
43.36134 -+  const char *name;            /* Symbol name.  */
43.36135 -+  unsigned char stab_type;     /* Stab type.  */
43.36136 -+  char stab_other;             /* Stab other.  */
43.36137 -+  short stab_desc;             /* Stab desc.  */
43.36138 -+  const char *stab_name;       /* String for stab type.  */
43.36139 -+} symbol_info;
43.36140 -+
43.36141 -+/* Get the name of a stabs type code.  */
43.36142 -+
43.36143 -+extern const char *bfd_get_stab_name (int);
43.36144 -+
43.36145 -+/* Hash table routines.  There is no way to free up a hash table.  */
43.36146 -+
43.36147 -+/* An element in the hash table.  Most uses will actually use a larger
43.36148 -+   structure, and an instance of this will be the first field.  */
43.36149 -+
43.36150 -+struct bfd_hash_entry
43.36151 -+{
43.36152 -+  /* Next entry for this hash code.  */
43.36153 -+  struct bfd_hash_entry *next;
43.36154 -+  /* String being hashed.  */
43.36155 -+  const char *string;
43.36156 -+  /* Hash code.  This is the full hash code, not the index into the
43.36157 -+     table.  */
43.36158 -+  unsigned long hash;
43.36159 -+};
43.36160 -+
43.36161 -+/* A hash table.  */
43.36162 -+
43.36163 -+struct bfd_hash_table
43.36164 -+{
43.36165 -+  /* The hash array.  */
43.36166 -+  struct bfd_hash_entry **table;
43.36167 -+  /* A function used to create new elements in the hash table.  The
43.36168 -+     first entry is itself a pointer to an element.  When this
43.36169 -+     function is first invoked, this pointer will be NULL.  However,
43.36170 -+     having the pointer permits a hierarchy of method functions to be
43.36171 -+     built each of which calls the function in the superclass.  Thus
43.36172 -+     each function should be written to allocate a new block of memory
43.36173 -+     only if the argument is NULL.  */
43.36174 -+  struct bfd_hash_entry *(*newfunc)
43.36175 -+    (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
43.36176 -+   /* An objalloc for this hash table.  This is a struct objalloc *,
43.36177 -+     but we use void * to avoid requiring the inclusion of objalloc.h.  */
43.36178 -+  void *memory;
43.36179 -+  /* The number of slots in the hash table.  */
43.36180 -+  unsigned int size;
43.36181 -+  /* The number of entries in the hash table.  */
43.36182 -+  unsigned int count;
43.36183 -+  /* The size of elements.  */
43.36184 -+  unsigned int entsize;
43.36185 -+  /* If non-zero, don't grow the hash table.  */
43.36186 -+  unsigned int frozen:1;
43.36187 -+};
43.36188 -+
43.36189 -+/* Initialize a hash table.  */
43.36190 -+extern bfd_boolean bfd_hash_table_init
43.36191 -+  (struct bfd_hash_table *,
43.36192 -+   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
43.36193 -+			       struct bfd_hash_table *,
43.36194 -+			       const char *),
43.36195 -+   unsigned int);
43.36196 -+
43.36197 -+/* Initialize a hash table specifying a size.  */
43.36198 -+extern bfd_boolean bfd_hash_table_init_n
43.36199 -+  (struct bfd_hash_table *,
43.36200 -+   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
43.36201 -+			       struct bfd_hash_table *,
43.36202 -+			       const char *),
43.36203 -+   unsigned int, unsigned int);
43.36204 -+
43.36205 -+/* Free up a hash table.  */
43.36206 -+extern void bfd_hash_table_free
43.36207 -+  (struct bfd_hash_table *);
43.36208 -+
43.36209 -+/* Look up a string in a hash table.  If CREATE is TRUE, a new entry
43.36210 -+   will be created for this string if one does not already exist.  The
43.36211 -+   COPY argument must be TRUE if this routine should copy the string
43.36212 -+   into newly allocated memory when adding an entry.  */
43.36213 -+extern struct bfd_hash_entry *bfd_hash_lookup
43.36214 -+  (struct bfd_hash_table *, const char *, bfd_boolean create,
43.36215 -+   bfd_boolean copy);
43.36216 -+
43.36217 -+/* Replace an entry in a hash table.  */
43.36218 -+extern void bfd_hash_replace
43.36219 -+  (struct bfd_hash_table *, struct bfd_hash_entry *old,
43.36220 -+   struct bfd_hash_entry *nw);
43.36221 -+
43.36222 -+/* Base method for creating a hash table entry.  */
43.36223 -+extern struct bfd_hash_entry *bfd_hash_newfunc
43.36224 -+  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
43.36225 -+
43.36226 -+/* Grab some space for a hash table entry.  */
43.36227 -+extern void *bfd_hash_allocate
43.36228 -+  (struct bfd_hash_table *, unsigned int);
43.36229 -+
43.36230 -+/* Traverse a hash table in a random order, calling a function on each
43.36231 -+   element.  If the function returns FALSE, the traversal stops.  The
43.36232 -+   INFO argument is passed to the function.  */
43.36233 -+extern void bfd_hash_traverse
43.36234 -+  (struct bfd_hash_table *,
43.36235 -+   bfd_boolean (*) (struct bfd_hash_entry *, void *),
43.36236 -+   void *info);
43.36237 -+
43.36238 -+/* Allows the default size of a hash table to be configured. New hash
43.36239 -+   tables allocated using bfd_hash_table_init will be created with
43.36240 -+   this size.  */
43.36241 -+extern void bfd_hash_set_default_size (bfd_size_type);
43.36242 -+
43.36243 -+/* This structure is used to keep track of stabs in sections
43.36244 -+   information while linking.  */
43.36245 -+
43.36246 -+struct stab_info
43.36247 -+{
43.36248 -+  /* A hash table used to hold stabs strings.  */
43.36249 -+  struct bfd_strtab_hash *strings;
43.36250 -+  /* The header file hash table.  */
43.36251 -+  struct bfd_hash_table includes;
43.36252 -+  /* The first .stabstr section.  */
43.36253 -+  struct bfd_section *stabstr;
43.36254 -+};
43.36255 -+
43.36256 -+#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
43.36257 -+
43.36258 -+/* User program access to BFD facilities.  */
43.36259 -+
43.36260 -+/* Direct I/O routines, for programs which know more about the object
43.36261 -+   file than BFD does.  Use higher level routines if possible.  */
43.36262 -+
43.36263 -+extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
43.36264 -+extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
43.36265 -+extern int bfd_seek (bfd *, file_ptr, int);
43.36266 -+extern file_ptr bfd_tell (bfd *);
43.36267 -+extern int bfd_flush (bfd *);
43.36268 -+extern int bfd_stat (bfd *, struct stat *);
43.36269 -+
43.36270 -+/* Deprecated old routines.  */
43.36271 -+#if __GNUC__
43.36272 -+#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
43.36273 -+  (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__),	\
43.36274 -+   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
43.36275 -+#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
43.36276 -+  (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__),	\
43.36277 -+   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
43.36278 -+#else
43.36279 -+#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
43.36280 -+  (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
43.36281 -+   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
43.36282 -+#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
43.36283 -+  (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
43.36284 -+   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
43.36285 -+#endif
43.36286 -+extern void warn_deprecated (const char *, const char *, int, const char *);
43.36287 -+
43.36288 -+/* Cast from const char * to char * so that caller can assign to
43.36289 -+   a char * without a warning.  */
43.36290 -+#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
43.36291 -+#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
43.36292 -+#define bfd_get_format(abfd) ((abfd)->format)
43.36293 -+#define bfd_get_target(abfd) ((abfd)->xvec->name)
43.36294 -+#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
43.36295 -+#define bfd_family_coff(abfd) \
43.36296 -+  (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
43.36297 -+   bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
43.36298 -+#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
43.36299 -+#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
43.36300 -+#define bfd_header_big_endian(abfd) \
43.36301 -+  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
43.36302 -+#define bfd_header_little_endian(abfd) \
43.36303 -+  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
43.36304 -+#define bfd_get_file_flags(abfd) ((abfd)->flags)
43.36305 -+#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
43.36306 -+#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
43.36307 -+#define bfd_my_archive(abfd) ((abfd)->my_archive)
43.36308 -+#define bfd_has_map(abfd) ((abfd)->has_armap)
43.36309 -+
43.36310 -+#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
43.36311 -+#define bfd_usrdata(abfd) ((abfd)->usrdata)
43.36312 -+
43.36313 -+#define bfd_get_start_address(abfd) ((abfd)->start_address)
43.36314 -+#define bfd_get_symcount(abfd) ((abfd)->symcount)
43.36315 -+#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
43.36316 -+#define bfd_count_sections(abfd) ((abfd)->section_count)
43.36317 -+
43.36318 -+#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
43.36319 -+
43.36320 -+#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
43.36321 -+
43.36322 -+#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
43.36323 -+
43.36324 -+extern bfd_boolean bfd_cache_close
43.36325 -+  (bfd *abfd);
43.36326 -+/* NB: This declaration should match the autogenerated one in libbfd.h.  */
43.36327 -+
43.36328 -+extern bfd_boolean bfd_cache_close_all (void);
43.36329 -+
43.36330 -+extern bfd_boolean bfd_record_phdr
43.36331 -+  (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
43.36332 -+   bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
43.36333 -+
43.36334 -+/* Byte swapping routines.  */
43.36335 -+
43.36336 -+bfd_uint64_t bfd_getb64 (const void *);
43.36337 -+bfd_uint64_t bfd_getl64 (const void *);
43.36338 -+bfd_int64_t bfd_getb_signed_64 (const void *);
43.36339 -+bfd_int64_t bfd_getl_signed_64 (const void *);
43.36340 -+bfd_vma bfd_getb32 (const void *);
43.36341 -+bfd_vma bfd_getl32 (const void *);
43.36342 -+bfd_signed_vma bfd_getb_signed_32 (const void *);
43.36343 -+bfd_signed_vma bfd_getl_signed_32 (const void *);
43.36344 -+bfd_vma bfd_getb16 (const void *);
43.36345 -+bfd_vma bfd_getl16 (const void *);
43.36346 -+bfd_signed_vma bfd_getb_signed_16 (const void *);
43.36347 -+bfd_signed_vma bfd_getl_signed_16 (const void *);
43.36348 -+void bfd_putb64 (bfd_uint64_t, void *);
43.36349 -+void bfd_putl64 (bfd_uint64_t, void *);
43.36350 -+void bfd_putb32 (bfd_vma, void *);
43.36351 -+void bfd_putl32 (bfd_vma, void *);
43.36352 -+void bfd_putb16 (bfd_vma, void *);
43.36353 -+void bfd_putl16 (bfd_vma, void *);
43.36354 -+
43.36355 -+/* Byte swapping routines which take size and endiannes as arguments.  */
43.36356 -+
43.36357 -+bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
43.36358 -+void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
43.36359 -+
43.36360 -+extern bfd_boolean bfd_section_already_linked_table_init (void);
43.36361 -+extern void bfd_section_already_linked_table_free (void);
43.36362 -+
43.36363 -+/* Externally visible ECOFF routines.  */
43.36364 -+
43.36365 -+#if defined(__STDC__) || defined(ALMOST_STDC)
43.36366 -+struct ecoff_debug_info;
43.36367 -+struct ecoff_debug_swap;
43.36368 -+struct ecoff_extr;
43.36369 -+struct bfd_symbol;
43.36370 -+struct bfd_link_info;
43.36371 -+struct bfd_link_hash_entry;
43.36372 -+struct bfd_elf_version_tree;
43.36373 -+#endif
43.36374 -+extern bfd_vma bfd_ecoff_get_gp_value
43.36375 -+  (bfd * abfd);
43.36376 -+extern bfd_boolean bfd_ecoff_set_gp_value
43.36377 -+  (bfd *abfd, bfd_vma gp_value);
43.36378 -+extern bfd_boolean bfd_ecoff_set_regmasks
43.36379 -+  (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
43.36380 -+   unsigned long *cprmask);
43.36381 -+extern void *bfd_ecoff_debug_init
43.36382 -+  (bfd *output_bfd, struct ecoff_debug_info *output_debug,
43.36383 -+   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
43.36384 -+extern void bfd_ecoff_debug_free
43.36385 -+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
43.36386 -+   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
43.36387 -+extern bfd_boolean bfd_ecoff_debug_accumulate
43.36388 -+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
43.36389 -+   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
43.36390 -+   struct ecoff_debug_info *input_debug,
43.36391 -+   const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
43.36392 -+extern bfd_boolean bfd_ecoff_debug_accumulate_other
43.36393 -+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
43.36394 -+   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
43.36395 -+   struct bfd_link_info *);
43.36396 -+extern bfd_boolean bfd_ecoff_debug_externals
43.36397 -+  (bfd *abfd, struct ecoff_debug_info *debug,
43.36398 -+   const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
43.36399 -+   bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
43.36400 -+   void (*set_index) (struct bfd_symbol *, bfd_size_type));
43.36401 -+extern bfd_boolean bfd_ecoff_debug_one_external
43.36402 -+  (bfd *abfd, struct ecoff_debug_info *debug,
43.36403 -+   const struct ecoff_debug_swap *swap, const char *name,
43.36404 -+   struct ecoff_extr *esym);
43.36405 -+extern bfd_size_type bfd_ecoff_debug_size
43.36406 -+  (bfd *abfd, struct ecoff_debug_info *debug,
43.36407 -+   const struct ecoff_debug_swap *swap);
43.36408 -+extern bfd_boolean bfd_ecoff_write_debug
43.36409 -+  (bfd *abfd, struct ecoff_debug_info *debug,
43.36410 -+   const struct ecoff_debug_swap *swap, file_ptr where);
43.36411 -+extern bfd_boolean bfd_ecoff_write_accumulated_debug
43.36412 -+  (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
43.36413 -+   const struct ecoff_debug_swap *swap,
43.36414 -+   struct bfd_link_info *info, file_ptr where);
43.36415 -+
43.36416 -+/* Externally visible ELF routines.  */
43.36417 -+
43.36418 -+struct bfd_link_needed_list
43.36419 -+{
43.36420 -+  struct bfd_link_needed_list *next;
43.36421 -+  bfd *by;
43.36422 -+  const char *name;
43.36423 -+};
43.36424 -+
43.36425 -+enum dynamic_lib_link_class {
43.36426 -+  DYN_NORMAL = 0,
43.36427 -+  DYN_AS_NEEDED = 1,
43.36428 -+  DYN_DT_NEEDED = 2,
43.36429 -+  DYN_NO_ADD_NEEDED = 4,
43.36430 -+  DYN_NO_NEEDED = 8
43.36431 -+};
43.36432 -+
43.36433 -+enum notice_asneeded_action {
43.36434 -+  notice_as_needed,
43.36435 -+  notice_not_needed,
43.36436 -+  notice_needed
43.36437 -+};
43.36438 -+
43.36439 -+extern bfd_boolean bfd_elf_record_link_assignment
43.36440 -+  (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
43.36441 -+   bfd_boolean);
43.36442 -+extern struct bfd_link_needed_list *bfd_elf_get_needed_list
43.36443 -+  (bfd *, struct bfd_link_info *);
43.36444 -+extern bfd_boolean bfd_elf_get_bfd_needed_list
43.36445 -+  (bfd *, struct bfd_link_needed_list **);
43.36446 -+extern bfd_boolean bfd_elf_size_dynamic_sections
43.36447 -+  (bfd *, const char *, const char *, const char *, const char * const *,
43.36448 -+   struct bfd_link_info *, struct bfd_section **,
43.36449 -+   struct bfd_elf_version_tree *);
43.36450 -+extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
43.36451 -+  (bfd *, struct bfd_link_info *);
43.36452 -+extern void bfd_elf_set_dt_needed_name
43.36453 -+  (bfd *, const char *);
43.36454 -+extern const char *bfd_elf_get_dt_soname
43.36455 -+  (bfd *);
43.36456 -+extern void bfd_elf_set_dyn_lib_class
43.36457 -+  (bfd *, enum dynamic_lib_link_class);
43.36458 -+extern int bfd_elf_get_dyn_lib_class
43.36459 -+  (bfd *);
43.36460 -+extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
43.36461 -+  (bfd *, struct bfd_link_info *);
43.36462 -+extern bfd_boolean bfd_elf_discard_info
43.36463 -+  (bfd *, struct bfd_link_info *);
43.36464 -+extern unsigned int _bfd_elf_default_action_discarded
43.36465 -+  (struct bfd_section *);
43.36466 -+
43.36467 -+/* Return an upper bound on the number of bytes required to store a
43.36468 -+   copy of ABFD's program header table entries.  Return -1 if an error
43.36469 -+   occurs; bfd_get_error will return an appropriate code.  */
43.36470 -+extern long bfd_get_elf_phdr_upper_bound
43.36471 -+  (bfd *abfd);
43.36472 -+
43.36473 -+/* Copy ABFD's program header table entries to *PHDRS.  The entries
43.36474 -+   will be stored as an array of Elf_Internal_Phdr structures, as
43.36475 -+   defined in include/elf/internal.h.  To find out how large the
43.36476 -+   buffer needs to be, call bfd_get_elf_phdr_upper_bound.
43.36477 -+
43.36478 -+   Return the number of program header table entries read, or -1 if an
43.36479 -+   error occurs; bfd_get_error will return an appropriate code.  */
43.36480 -+extern int bfd_get_elf_phdrs
43.36481 -+  (bfd *abfd, void *phdrs);
43.36482 -+
43.36483 -+/* Create a new BFD as if by bfd_openr.  Rather than opening a file,
43.36484 -+   reconstruct an ELF file by reading the segments out of remote memory
43.36485 -+   based on the ELF file header at EHDR_VMA and the ELF program headers it
43.36486 -+   points to.  If not null, *LOADBASEP is filled in with the difference
43.36487 -+   between the VMAs from which the segments were read, and the VMAs the
43.36488 -+   file headers (and hence BFD's idea of each section's VMA) put them at.
43.36489 -+
43.36490 -+   The function TARGET_READ_MEMORY is called to copy LEN bytes from the
43.36491 -+   remote memory at target address VMA into the local buffer at MYADDR; it
43.36492 -+   should return zero on success or an `errno' code on failure.  TEMPL must
43.36493 -+   be a BFD for an ELF target with the word size and byte order found in
43.36494 -+   the remote memory.  */
43.36495 -+extern bfd *bfd_elf_bfd_from_remote_memory
43.36496 -+  (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
43.36497 -+   int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
43.36498 -+
43.36499 -+/* Return the arch_size field of an elf bfd, or -1 if not elf.  */
43.36500 -+extern int bfd_get_arch_size
43.36501 -+  (bfd *);
43.36502 -+
43.36503 -+/* Return TRUE if address "naturally" sign extends, or -1 if not elf.  */
43.36504 -+extern int bfd_get_sign_extend_vma
43.36505 -+  (bfd *);
43.36506 -+
43.36507 -+extern struct bfd_section *_bfd_elf_tls_setup
43.36508 -+  (bfd *, struct bfd_link_info *);
43.36509 -+
43.36510 -+extern void _bfd_fix_excluded_sec_syms
43.36511 -+  (bfd *, struct bfd_link_info *);
43.36512 -+
43.36513 -+extern unsigned bfd_m68k_mach_to_features (int);
43.36514 -+
43.36515 -+extern int bfd_m68k_features_to_mach (unsigned);
43.36516 -+
43.36517 -+extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
43.36518 -+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
43.36519 -+   char **);
43.36520 -+
43.36521 -+extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
43.36522 -+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
43.36523 -+   char **);
43.36524 -+
43.36525 -+/* SunOS shared library support routines for the linker.  */
43.36526 -+
43.36527 -+extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
43.36528 -+  (bfd *, struct bfd_link_info *);
43.36529 -+extern bfd_boolean bfd_sunos_record_link_assignment
43.36530 -+  (bfd *, struct bfd_link_info *, const char *);
43.36531 -+extern bfd_boolean bfd_sunos_size_dynamic_sections
43.36532 -+  (bfd *, struct bfd_link_info *, struct bfd_section **,
43.36533 -+   struct bfd_section **, struct bfd_section **);
43.36534 -+
43.36535 -+/* Linux shared library support routines for the linker.  */
43.36536 -+
43.36537 -+extern bfd_boolean bfd_i386linux_size_dynamic_sections
43.36538 -+  (bfd *, struct bfd_link_info *);
43.36539 -+extern bfd_boolean bfd_m68klinux_size_dynamic_sections
43.36540 -+  (bfd *, struct bfd_link_info *);
43.36541 -+extern bfd_boolean bfd_sparclinux_size_dynamic_sections
43.36542 -+  (bfd *, struct bfd_link_info *);
43.36543 -+
43.36544 -+/* mmap hacks */
43.36545 -+
43.36546 -+struct _bfd_window_internal;
43.36547 -+typedef struct _bfd_window_internal bfd_window_internal;
43.36548 -+
43.36549 -+typedef struct _bfd_window
43.36550 -+{
43.36551 -+  /* What the user asked for.  */
43.36552 -+  void *data;
43.36553 -+  bfd_size_type size;
43.36554 -+  /* The actual window used by BFD.  Small user-requested read-only
43.36555 -+     regions sharing a page may share a single window into the object
43.36556 -+     file.  Read-write versions shouldn't until I've fixed things to
43.36557 -+     keep track of which portions have been claimed by the
43.36558 -+     application; don't want to give the same region back when the
43.36559 -+     application wants two writable copies!  */
43.36560 -+  struct _bfd_window_internal *i;
43.36561 -+}
43.36562 -+bfd_window;
43.36563 -+
43.36564 -+extern void bfd_init_window
43.36565 -+  (bfd_window *);
43.36566 -+extern void bfd_free_window
43.36567 -+  (bfd_window *);
43.36568 -+extern bfd_boolean bfd_get_file_window
43.36569 -+  (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
43.36570 -+
43.36571 -+/* XCOFF support routines for the linker.  */
43.36572 -+
43.36573 -+extern bfd_boolean bfd_xcoff_link_record_set
43.36574 -+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
43.36575 -+extern bfd_boolean bfd_xcoff_import_symbol
43.36576 -+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
43.36577 -+   const char *, const char *, const char *, unsigned int);
43.36578 -+extern bfd_boolean bfd_xcoff_export_symbol
43.36579 -+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
43.36580 -+extern bfd_boolean bfd_xcoff_link_count_reloc
43.36581 -+  (bfd *, struct bfd_link_info *, const char *);
43.36582 -+extern bfd_boolean bfd_xcoff_record_link_assignment
43.36583 -+  (bfd *, struct bfd_link_info *, const char *);
43.36584 -+extern bfd_boolean bfd_xcoff_size_dynamic_sections
43.36585 -+  (bfd *, struct bfd_link_info *, const char *, const char *,
43.36586 -+   unsigned long, unsigned long, unsigned long, bfd_boolean,
43.36587 -+   int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
43.36588 -+extern bfd_boolean bfd_xcoff_link_generate_rtinit
43.36589 -+  (bfd *, const char *, const char *, bfd_boolean);
43.36590 -+
43.36591 -+/* XCOFF support routines for ar.  */
43.36592 -+extern bfd_boolean bfd_xcoff_ar_archive_set_magic
43.36593 -+  (bfd *, char *);
43.36594 -+
43.36595 -+/* Externally visible COFF routines.  */
43.36596 -+
43.36597 -+#if defined(__STDC__) || defined(ALMOST_STDC)
43.36598 -+struct internal_syment;
43.36599 -+union internal_auxent;
43.36600 -+#endif
43.36601 -+
43.36602 -+extern bfd_boolean bfd_coff_get_syment
43.36603 -+  (bfd *, struct bfd_symbol *, struct internal_syment *);
43.36604 -+
43.36605 -+extern bfd_boolean bfd_coff_get_auxent
43.36606 -+  (bfd *, struct bfd_symbol *, int, union internal_auxent *);
43.36607 -+
43.36608 -+extern bfd_boolean bfd_coff_set_symbol_class
43.36609 -+  (bfd *, struct bfd_symbol *, unsigned int);
43.36610 -+
43.36611 -+extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
43.36612 -+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
43.36613 -+
43.36614 -+/* ARM VFP11 erratum workaround support.  */
43.36615 -+typedef enum
43.36616 -+{
43.36617 -+  BFD_ARM_VFP11_FIX_DEFAULT,
43.36618 -+  BFD_ARM_VFP11_FIX_NONE,
43.36619 -+  BFD_ARM_VFP11_FIX_SCALAR,
43.36620 -+  BFD_ARM_VFP11_FIX_VECTOR
43.36621 -+} bfd_arm_vfp11_fix;
43.36622 -+
43.36623 -+extern void bfd_elf32_arm_init_maps
43.36624 -+  (bfd *);
43.36625 -+
43.36626 -+extern void bfd_elf32_arm_set_vfp11_fix
43.36627 -+  (bfd *, struct bfd_link_info *);
43.36628 -+
43.36629 -+extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
43.36630 -+  (bfd *, struct bfd_link_info *);
43.36631 -+
43.36632 -+extern void bfd_elf32_arm_vfp11_fix_veneer_locations
43.36633 -+  (bfd *, struct bfd_link_info *);
43.36634 -+
43.36635 -+/* ARM Interworking support.  Called from linker.  */
43.36636 -+extern bfd_boolean bfd_arm_allocate_interworking_sections
43.36637 -+  (struct bfd_link_info *);
43.36638 -+
43.36639 -+extern bfd_boolean bfd_arm_process_before_allocation
43.36640 -+  (bfd *, struct bfd_link_info *, int);
43.36641 -+
43.36642 -+extern bfd_boolean bfd_arm_get_bfd_for_interworking
43.36643 -+  (bfd *, struct bfd_link_info *);
43.36644 -+
43.36645 -+/* PE ARM Interworking support.  Called from linker.  */
43.36646 -+extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
43.36647 -+  (struct bfd_link_info *);
43.36648 -+
43.36649 -+extern bfd_boolean bfd_arm_pe_process_before_allocation
43.36650 -+  (bfd *, struct bfd_link_info *, int);
43.36651 -+
43.36652 -+extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
43.36653 -+  (bfd *, struct bfd_link_info *);
43.36654 -+
43.36655 -+/* ELF ARM Interworking support.  Called from linker.  */
43.36656 -+extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
43.36657 -+  (struct bfd_link_info *);
43.36658 -+
43.36659 -+extern bfd_boolean bfd_elf32_arm_process_before_allocation
43.36660 -+  (bfd *, struct bfd_link_info *);
43.36661 -+
43.36662 -+void bfd_elf32_arm_set_target_relocs
43.36663 -+  (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
43.36664 -+   int, int);
43.36665 -+
43.36666 -+extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
43.36667 -+  (bfd *, struct bfd_link_info *);
43.36668 -+
43.36669 -+extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
43.36670 -+  (bfd *, struct bfd_link_info *);
43.36671 -+
43.36672 -+/* ELF ARM mapping symbol support */
43.36673 -+#define BFD_ARM_SPECIAL_SYM_TYPE_MAP	(1 << 0)
43.36674 -+#define BFD_ARM_SPECIAL_SYM_TYPE_TAG	(1 << 1)
43.36675 -+#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER  (1 << 2)
43.36676 -+#define BFD_ARM_SPECIAL_SYM_TYPE_ANY	(~0)
43.36677 -+extern bfd_boolean bfd_is_arm_special_symbol_name
43.36678 -+  (const char * name, int type);
43.36679 -+
43.36680 -+extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
43.36681 -+
43.36682 -+/* ARM Note section processing.  */
43.36683 -+extern bfd_boolean bfd_arm_merge_machines
43.36684 -+  (bfd *, bfd *);
43.36685 -+
43.36686 -+extern bfd_boolean bfd_arm_update_notes
43.36687 -+  (bfd *, const char *);
43.36688 -+
43.36689 -+extern unsigned int bfd_arm_get_mach_from_notes
43.36690 -+  (bfd *, const char *);
43.36691 -+
43.36692 -+/* TI COFF load page support.  */
43.36693 -+extern void bfd_ticoff_set_section_load_page
43.36694 -+  (struct bfd_section *, int);
43.36695 -+
43.36696 -+extern int bfd_ticoff_get_section_load_page
43.36697 -+  (struct bfd_section *);
43.36698 -+
43.36699 -+/* H8/300 functions.  */
43.36700 -+extern bfd_vma bfd_h8300_pad_address
43.36701 -+  (bfd *, bfd_vma);
43.36702 -+
43.36703 -+/* IA64 Itanium code generation.  Called from linker.  */
43.36704 -+extern void bfd_elf32_ia64_after_parse
43.36705 -+  (int);
43.36706 -+
43.36707 -+extern void bfd_elf64_ia64_after_parse
43.36708 -+  (int);
43.36709 -+
43.36710 -+/* This structure is used for a comdat section, as in PE.  A comdat
43.36711 -+   section is associated with a particular symbol.  When the linker
43.36712 -+   sees a comdat section, it keeps only one of the sections with a
43.36713 -+   given name and associated with a given symbol.  */
43.36714 -+
43.36715 -+struct coff_comdat_info
43.36716 -+{
43.36717 -+  /* The name of the symbol associated with a comdat section.  */
43.36718 -+  const char *name;
43.36719 -+
43.36720 -+  /* The local symbol table index of the symbol associated with a
43.36721 -+     comdat section.  This is only meaningful to the object file format
43.36722 -+     specific code; it is not an index into the list returned by
43.36723 -+     bfd_canonicalize_symtab.  */
43.36724 -+  long symbol;
43.36725 -+};
43.36726 -+
43.36727 -+extern struct coff_comdat_info *bfd_coff_get_comdat_section
43.36728 -+  (bfd *, struct bfd_section *);
43.36729 -+
43.36730 -+/* Extracted from init.c.  */
43.36731 -+void bfd_init (void);
43.36732 -+
43.36733 -+/* Extracted from opncls.c.  */
43.36734 -+bfd *bfd_fopen (const char *filename, const char *target,
43.36735 -+    const char *mode, int fd);
43.36736 -+
43.36737 -+bfd *bfd_openr (const char *filename, const char *target);
43.36738 -+
43.36739 -+bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
43.36740 -+
43.36741 -+bfd *bfd_openstreamr (const char *, const char *, void *);
43.36742 -+
43.36743 -+bfd *bfd_openr_iovec (const char *filename, const char *target,
43.36744 -+    void *(*open) (struct bfd *nbfd,
43.36745 -+    void *open_closure),
43.36746 -+    void *open_closure,
43.36747 -+    file_ptr (*pread) (struct bfd *nbfd,
43.36748 -+    void *stream,
43.36749 -+    void *buf,
43.36750 -+    file_ptr nbytes,
43.36751 -+    file_ptr offset),
43.36752 -+    int (*close) (struct bfd *nbfd,
43.36753 -+    void *stream),
43.36754 -+    int (*stat) (struct bfd *abfd,
43.36755 -+    void *stream,
43.36756 -+    struct stat *sb));
43.36757 -+
43.36758 -+bfd *bfd_openw (const char *filename, const char *target);
43.36759 -+
43.36760 -+bfd_boolean bfd_close (bfd *abfd);
43.36761 -+
43.36762 -+bfd_boolean bfd_close_all_done (bfd *);
43.36763 -+
43.36764 -+bfd *bfd_create (const char *filename, bfd *templ);
43.36765 -+
43.36766 -+bfd_boolean bfd_make_writable (bfd *abfd);
43.36767 -+
43.36768 -+bfd_boolean bfd_make_readable (bfd *abfd);
43.36769 -+
43.36770 -+unsigned long bfd_calc_gnu_debuglink_crc32
43.36771 -+   (unsigned long crc, const unsigned char *buf, bfd_size_type len);
43.36772 -+
43.36773 -+char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
43.36774 -+
43.36775 -+struct bfd_section *bfd_create_gnu_debuglink_section
43.36776 -+   (bfd *abfd, const char *filename);
43.36777 -+
43.36778 -+bfd_boolean bfd_fill_in_gnu_debuglink_section
43.36779 -+   (bfd *abfd, struct bfd_section *sect, const char *filename);
43.36780 -+
43.36781 -+/* Extracted from libbfd.c.  */
43.36782 -+
43.36783 -+/* Byte swapping macros for user section data.  */
43.36784 -+
43.36785 -+#define bfd_put_8(abfd, val, ptr) \
43.36786 -+  ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
43.36787 -+#define bfd_put_signed_8 \
43.36788 -+  bfd_put_8
43.36789 -+#define bfd_get_8(abfd, ptr) \
43.36790 -+  (*(unsigned char *) (ptr) & 0xff)
43.36791 -+#define bfd_get_signed_8(abfd, ptr) \
43.36792 -+  (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
43.36793 -+
43.36794 -+#define bfd_put_16(abfd, val, ptr) \
43.36795 -+  BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
43.36796 -+#define bfd_put_signed_16 \
43.36797 -+  bfd_put_16
43.36798 -+#define bfd_get_16(abfd, ptr) \
43.36799 -+  BFD_SEND (abfd, bfd_getx16, (ptr))
43.36800 -+#define bfd_get_signed_16(abfd, ptr) \
43.36801 -+  BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
43.36802 -+
43.36803 -+#define bfd_put_32(abfd, val, ptr) \
43.36804 -+  BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
43.36805 -+#define bfd_put_signed_32 \
43.36806 -+  bfd_put_32
43.36807 -+#define bfd_get_32(abfd, ptr) \
43.36808 -+  BFD_SEND (abfd, bfd_getx32, (ptr))
43.36809 -+#define bfd_get_signed_32(abfd, ptr) \
43.36810 -+  BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
43.36811 -+
43.36812 -+#define bfd_put_64(abfd, val, ptr) \
43.36813 -+  BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
43.36814 -+#define bfd_put_signed_64 \
43.36815 -+  bfd_put_64
43.36816 -+#define bfd_get_64(abfd, ptr) \
43.36817 -+  BFD_SEND (abfd, bfd_getx64, (ptr))
43.36818 -+#define bfd_get_signed_64(abfd, ptr) \
43.36819 -+  BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
43.36820 -+
43.36821 -+#define bfd_get(bits, abfd, ptr)                       \
43.36822 -+  ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
43.36823 -+   : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
43.36824 -+   : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
43.36825 -+   : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
43.36826 -+   : (abort (), (bfd_vma) - 1))
43.36827 -+
43.36828 -+#define bfd_put(bits, abfd, val, ptr)                  \
43.36829 -+  ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \
43.36830 -+   : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)                \
43.36831 -+   : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)                \
43.36832 -+   : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)                \
43.36833 -+   : (abort (), (void) 0))
43.36834 -+
43.36835 -+
43.36836 -+/* Byte swapping macros for file header data.  */
43.36837 -+
43.36838 -+#define bfd_h_put_8(abfd, val, ptr) \
43.36839 -+  bfd_put_8 (abfd, val, ptr)
43.36840 -+#define bfd_h_put_signed_8(abfd, val, ptr) \
43.36841 -+  bfd_put_8 (abfd, val, ptr)
43.36842 -+#define bfd_h_get_8(abfd, ptr) \
43.36843 -+  bfd_get_8 (abfd, ptr)
43.36844 -+#define bfd_h_get_signed_8(abfd, ptr) \
43.36845 -+  bfd_get_signed_8 (abfd, ptr)
43.36846 -+
43.36847 -+#define bfd_h_put_16(abfd, val, ptr) \
43.36848 -+  BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
43.36849 -+#define bfd_h_put_signed_16 \
43.36850 -+  bfd_h_put_16
43.36851 -+#define bfd_h_get_16(abfd, ptr) \
43.36852 -+  BFD_SEND (abfd, bfd_h_getx16, (ptr))
43.36853 -+#define bfd_h_get_signed_16(abfd, ptr) \
43.36854 -+  BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
43.36855 -+
43.36856 -+#define bfd_h_put_32(abfd, val, ptr) \
43.36857 -+  BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
43.36858 -+#define bfd_h_put_signed_32 \
43.36859 -+  bfd_h_put_32
43.36860 -+#define bfd_h_get_32(abfd, ptr) \
43.36861 -+  BFD_SEND (abfd, bfd_h_getx32, (ptr))
43.36862 -+#define bfd_h_get_signed_32(abfd, ptr) \
43.36863 -+  BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
43.36864 -+
43.36865 -+#define bfd_h_put_64(abfd, val, ptr) \
43.36866 -+  BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
43.36867 -+#define bfd_h_put_signed_64 \
43.36868 -+  bfd_h_put_64
43.36869 -+#define bfd_h_get_64(abfd, ptr) \
43.36870 -+  BFD_SEND (abfd, bfd_h_getx64, (ptr))
43.36871 -+#define bfd_h_get_signed_64(abfd, ptr) \
43.36872 -+  BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
43.36873 -+
43.36874 -+/* Aliases for the above, which should eventually go away.  */
43.36875 -+
43.36876 -+#define H_PUT_64  bfd_h_put_64
43.36877 -+#define H_PUT_32  bfd_h_put_32
43.36878 -+#define H_PUT_16  bfd_h_put_16
43.36879 -+#define H_PUT_8   bfd_h_put_8
43.36880 -+#define H_PUT_S64 bfd_h_put_signed_64
43.36881 -+#define H_PUT_S32 bfd_h_put_signed_32
43.36882 -+#define H_PUT_S16 bfd_h_put_signed_16
43.36883 -+#define H_PUT_S8  bfd_h_put_signed_8
43.36884 -+#define H_GET_64  bfd_h_get_64
43.36885 -+#define H_GET_32  bfd_h_get_32
43.36886 -+#define H_GET_16  bfd_h_get_16
43.36887 -+#define H_GET_8   bfd_h_get_8
43.36888 -+#define H_GET_S64 bfd_h_get_signed_64
43.36889 -+#define H_GET_S32 bfd_h_get_signed_32
43.36890 -+#define H_GET_S16 bfd_h_get_signed_16
43.36891 -+#define H_GET_S8  bfd_h_get_signed_8
43.36892 -+
43.36893 -+
43.36894 -+/* Extracted from bfdio.c.  */
43.36895 -+long bfd_get_mtime (bfd *abfd);
43.36896 -+
43.36897 -+file_ptr bfd_get_size (bfd *abfd);
43.36898 -+
43.36899 -+/* Extracted from bfdwin.c.  */
43.36900 -+/* Extracted from section.c.  */
43.36901 -+typedef struct bfd_section
43.36902 -+{
43.36903 -+  /* The name of the section; the name isn't a copy, the pointer is
43.36904 -+     the same as that passed to bfd_make_section.  */
43.36905 -+  const char *name;
43.36906 -+
43.36907 -+  /* A unique sequence number.  */
43.36908 -+  int id;
43.36909 -+
43.36910 -+  /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
43.36911 -+  int index;
43.36912 -+
43.36913 -+  /* The next section in the list belonging to the BFD, or NULL.  */
43.36914 -+  struct bfd_section *next;
43.36915 -+
43.36916 -+  /* The previous section in the list belonging to the BFD, or NULL.  */
43.36917 -+  struct bfd_section *prev;
43.36918 -+
43.36919 -+  /* The field flags contains attributes of the section. Some
43.36920 -+     flags are read in from the object file, and some are
43.36921 -+     synthesized from other information.  */
43.36922 -+  flagword flags;
43.36923 -+
43.36924 -+#define SEC_NO_FLAGS   0x000
43.36925 -+
43.36926 -+  /* Tells the OS to allocate space for this section when loading.
43.36927 -+     This is clear for a section containing debug information only.  */
43.36928 -+#define SEC_ALLOC      0x001
43.36929 -+
43.36930 -+  /* Tells the OS to load the section from the file when loading.
43.36931 -+     This is clear for a .bss section.  */
43.36932 -+#define SEC_LOAD       0x002
43.36933 -+
43.36934 -+  /* The section contains data still to be relocated, so there is
43.36935 -+     some relocation information too.  */
43.36936 -+#define SEC_RELOC      0x004
43.36937 -+
43.36938 -+  /* A signal to the OS that the section contains read only data.  */
43.36939 -+#define SEC_READONLY   0x008
43.36940 -+
43.36941 -+  /* The section contains code only.  */
43.36942 -+#define SEC_CODE       0x010
43.36943 -+
43.36944 -+  /* The section contains data only.  */
43.36945 -+#define SEC_DATA       0x020
43.36946 -+
43.36947 -+  /* The section will reside in ROM.  */
43.36948 -+#define SEC_ROM        0x040
43.36949 -+
43.36950 -+  /* The section contains constructor information. This section
43.36951 -+     type is used by the linker to create lists of constructors and
43.36952 -+     destructors used by <<g++>>. When a back end sees a symbol
43.36953 -+     which should be used in a constructor list, it creates a new
43.36954 -+     section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
43.36955 -+     the symbol to it, and builds a relocation. To build the lists
43.36956 -+     of constructors, all the linker has to do is catenate all the
43.36957 -+     sections called <<__CTOR_LIST__>> and relocate the data
43.36958 -+     contained within - exactly the operations it would peform on
43.36959 -+     standard data.  */
43.36960 -+#define SEC_CONSTRUCTOR 0x080
43.36961 -+
43.36962 -+  /* The section has contents - a data section could be
43.36963 -+     <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
43.36964 -+     <<SEC_HAS_CONTENTS>>  */
43.36965 -+#define SEC_HAS_CONTENTS 0x100
43.36966 -+
43.36967 -+  /* An instruction to the linker to not output the section
43.36968 -+     even if it has information which would normally be written.  */
43.36969 -+#define SEC_NEVER_LOAD 0x200
43.36970 -+
43.36971 -+  /* The section contains thread local data.  */
43.36972 -+#define SEC_THREAD_LOCAL 0x400
43.36973 -+
43.36974 -+  /* The section has GOT references.  This flag is only for the
43.36975 -+     linker, and is currently only used by the elf32-hppa back end.
43.36976 -+     It will be set if global offset table references were detected
43.36977 -+     in this section, which indicate to the linker that the section
43.36978 -+     contains PIC code, and must be handled specially when doing a
43.36979 -+     static link.  */
43.36980 -+#define SEC_HAS_GOT_REF 0x800
43.36981 -+
43.36982 -+  /* The section contains common symbols (symbols may be defined
43.36983 -+     multiple times, the value of a symbol is the amount of
43.36984 -+     space it requires, and the largest symbol value is the one
43.36985 -+     used).  Most targets have exactly one of these (which we
43.36986 -+     translate to bfd_com_section_ptr), but ECOFF has two.  */
43.36987 -+#define SEC_IS_COMMON 0x1000
43.36988 -+
43.36989 -+  /* The section contains only debugging information.  For
43.36990 -+     example, this is set for ELF .debug and .stab sections.
43.36991 -+     strip tests this flag to see if a section can be
43.36992 -+     discarded.  */
43.36993 -+#define SEC_DEBUGGING 0x2000
43.36994 -+
43.36995 -+  /* The contents of this section are held in memory pointed to
43.36996 -+     by the contents field.  This is checked by bfd_get_section_contents,
43.36997 -+     and the data is retrieved from memory if appropriate.  */
43.36998 -+#define SEC_IN_MEMORY 0x4000
43.36999 -+
43.37000 -+  /* The contents of this section are to be excluded by the
43.37001 -+     linker for executable and shared objects unless those
43.37002 -+     objects are to be further relocated.  */
43.37003 -+#define SEC_EXCLUDE 0x8000
43.37004 -+
43.37005 -+  /* The contents of this section are to be sorted based on the sum of
43.37006 -+     the symbol and addend values specified by the associated relocation
43.37007 -+     entries.  Entries without associated relocation entries will be
43.37008 -+     appended to the end of the section in an unspecified order.  */
43.37009 -+#define SEC_SORT_ENTRIES 0x10000
43.37010 -+
43.37011 -+  /* When linking, duplicate sections of the same name should be
43.37012 -+     discarded, rather than being combined into a single section as
43.37013 -+     is usually done.  This is similar to how common symbols are
43.37014 -+     handled.  See SEC_LINK_DUPLICATES below.  */
43.37015 -+#define SEC_LINK_ONCE 0x20000
43.37016 -+
43.37017 -+  /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
43.37018 -+     should handle duplicate sections.  */
43.37019 -+#define SEC_LINK_DUPLICATES 0x40000
43.37020 -+
43.37021 -+  /* This value for SEC_LINK_DUPLICATES means that duplicate
43.37022 -+     sections with the same name should simply be discarded.  */
43.37023 -+#define SEC_LINK_DUPLICATES_DISCARD 0x0
43.37024 -+
43.37025 -+  /* This value for SEC_LINK_DUPLICATES means that the linker
43.37026 -+     should warn if there are any duplicate sections, although
43.37027 -+     it should still only link one copy.  */
43.37028 -+#define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
43.37029 -+
43.37030 -+  /* This value for SEC_LINK_DUPLICATES means that the linker
43.37031 -+     should warn if any duplicate sections are a different size.  */
43.37032 -+#define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
43.37033 -+
43.37034 -+  /* This value for SEC_LINK_DUPLICATES means that the linker
43.37035 -+     should warn if any duplicate sections contain different
43.37036 -+     contents.  */
43.37037 -+#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
43.37038 -+  (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
43.37039 -+
43.37040 -+  /* This section was created by the linker as part of dynamic
43.37041 -+     relocation or other arcane processing.  It is skipped when
43.37042 -+     going through the first-pass output, trusting that someone
43.37043 -+     else up the line will take care of it later.  */
43.37044 -+#define SEC_LINKER_CREATED 0x200000
43.37045 -+
43.37046 -+  /* This section should not be subject to garbage collection.
43.37047 -+     Also set to inform the linker that this section should not be
43.37048 -+     listed in the link map as discarded.  */
43.37049 -+#define SEC_KEEP 0x400000
43.37050 -+
43.37051 -+  /* This section contains "short" data, and should be placed
43.37052 -+     "near" the GP.  */
43.37053 -+#define SEC_SMALL_DATA 0x800000
43.37054 -+
43.37055 -+  /* Attempt to merge identical entities in the section.
43.37056 -+     Entity size is given in the entsize field.  */
43.37057 -+#define SEC_MERGE 0x1000000
43.37058 -+
43.37059 -+  /* If given with SEC_MERGE, entities to merge are zero terminated
43.37060 -+     strings where entsize specifies character size instead of fixed
43.37061 -+     size entries.  */
43.37062 -+#define SEC_STRINGS 0x2000000
43.37063 -+
43.37064 -+  /* This section contains data about section groups.  */
43.37065 -+#define SEC_GROUP 0x4000000
43.37066 -+
43.37067 -+  /* The section is a COFF shared library section.  This flag is
43.37068 -+     only for the linker.  If this type of section appears in
43.37069 -+     the input file, the linker must copy it to the output file
43.37070 -+     without changing the vma or size.  FIXME: Although this
43.37071 -+     was originally intended to be general, it really is COFF
43.37072 -+     specific (and the flag was renamed to indicate this).  It
43.37073 -+     might be cleaner to have some more general mechanism to
43.37074 -+     allow the back end to control what the linker does with
43.37075 -+     sections.  */
43.37076 -+#define SEC_COFF_SHARED_LIBRARY 0x10000000
43.37077 -+
43.37078 -+  /* This section contains data which may be shared with other
43.37079 -+     executables or shared objects. This is for COFF only.  */
43.37080 -+#define SEC_COFF_SHARED 0x20000000
43.37081 -+
43.37082 -+  /* When a section with this flag is being linked, then if the size of
43.37083 -+     the input section is less than a page, it should not cross a page
43.37084 -+     boundary.  If the size of the input section is one page or more,
43.37085 -+     it should be aligned on a page boundary.  This is for TI
43.37086 -+     TMS320C54X only.  */
43.37087 -+#define SEC_TIC54X_BLOCK 0x40000000
43.37088 -+
43.37089 -+  /* Conditionally link this section; do not link if there are no
43.37090 -+     references found to any symbol in the section.  This is for TI
43.37091 -+     TMS320C54X only.  */
43.37092 -+#define SEC_TIC54X_CLINK 0x80000000
43.37093 -+
43.37094 -+  /*  End of section flags.  */
43.37095 -+
43.37096 -+  /* Some internal packed boolean fields.  */
43.37097 -+
43.37098 -+  /* See the vma field.  */
43.37099 -+  unsigned int user_set_vma : 1;
43.37100 -+
43.37101 -+  /* A mark flag used by some of the linker backends.  */
43.37102 -+  unsigned int linker_mark : 1;
43.37103 -+
43.37104 -+  /* Another mark flag used by some of the linker backends.  Set for
43.37105 -+     output sections that have an input section.  */
43.37106 -+  unsigned int linker_has_input : 1;
43.37107 -+
43.37108 -+  /* Mark flags used by some linker backends for garbage collection.  */
43.37109 -+  unsigned int gc_mark : 1;
43.37110 -+  unsigned int gc_mark_from_eh : 1;
43.37111 -+
43.37112 -+  /* The following flags are used by the ELF linker. */
43.37113 -+
43.37114 -+  /* Mark sections which have been allocated to segments.  */
43.37115 -+  unsigned int segment_mark : 1;
43.37116 -+
43.37117 -+  /* Type of sec_info information.  */
43.37118 -+  unsigned int sec_info_type:3;
43.37119 -+#define ELF_INFO_TYPE_NONE      0
43.37120 -+#define ELF_INFO_TYPE_STABS     1
43.37121 -+#define ELF_INFO_TYPE_MERGE     2
43.37122 -+#define ELF_INFO_TYPE_EH_FRAME  3
43.37123 -+#define ELF_INFO_TYPE_JUST_SYMS 4
43.37124 -+
43.37125 -+  /* Nonzero if this section uses RELA relocations, rather than REL.  */
43.37126 -+  unsigned int use_rela_p:1;
43.37127 -+
43.37128 -+  /* Bits used by various backends.  The generic code doesn't touch
43.37129 -+     these fields.  */
43.37130 -+
43.37131 -+  /* Nonzero if this section has TLS related relocations.  */
43.37132 -+  unsigned int has_tls_reloc:1;
43.37133 -+
43.37134 -+  /* Nonzero if this section has a gp reloc.  */
43.37135 -+  unsigned int has_gp_reloc:1;
43.37136 -+
43.37137 -+  /* Nonzero if this section needs the relax finalize pass.  */
43.37138 -+  unsigned int need_finalize_relax:1;
43.37139 -+
43.37140 -+  /* Whether relocations have been processed.  */
43.37141 -+  unsigned int reloc_done : 1;
43.37142 -+
43.37143 -+  /* End of internal packed boolean fields.  */
43.37144 -+
43.37145 -+  /*  The virtual memory address of the section - where it will be
43.37146 -+      at run time.  The symbols are relocated against this.  The
43.37147 -+      user_set_vma flag is maintained by bfd; if it's not set, the
43.37148 -+      backend can assign addresses (for example, in <<a.out>>, where
43.37149 -+      the default address for <<.data>> is dependent on the specific
43.37150 -+      target and various flags).  */
43.37151 -+  bfd_vma vma;
43.37152 -+
43.37153 -+  /*  The load address of the section - where it would be in a
43.37154 -+      rom image; really only used for writing section header
43.37155 -+      information.  */
43.37156 -+  bfd_vma lma;
43.37157 -+
43.37158 -+  /* The size of the section in octets, as it will be output.
43.37159 -+     Contains a value even if the section has no contents (e.g., the
43.37160 -+     size of <<.bss>>).  */
43.37161 -+  bfd_size_type size;
43.37162 -+
43.37163 -+  /* For input sections, the original size on disk of the section, in
43.37164 -+     octets.  This field is used by the linker relaxation code.  It is
43.37165 -+     currently only set for sections where the linker relaxation scheme
43.37166 -+     doesn't cache altered section and reloc contents (stabs, eh_frame,
43.37167 -+     SEC_MERGE, some coff relaxing targets), and thus the original size
43.37168 -+     needs to be kept to read the section multiple times.
43.37169 -+     For output sections, rawsize holds the section size calculated on
43.37170 -+     a previous linker relaxation pass.  */
43.37171 -+  bfd_size_type rawsize;
43.37172 -+
43.37173 -+  /* If this section is going to be output, then this value is the
43.37174 -+     offset in *bytes* into the output section of the first byte in the
43.37175 -+     input section (byte ==> smallest addressable unit on the
43.37176 -+     target).  In most cases, if this was going to start at the
43.37177 -+     100th octet (8-bit quantity) in the output section, this value
43.37178 -+     would be 100.  However, if the target byte size is 16 bits
43.37179 -+     (bfd_octets_per_byte is "2"), this value would be 50.  */
43.37180 -+  bfd_vma output_offset;
43.37181 -+
43.37182 -+  /* The output section through which to map on output.  */
43.37183 -+  struct bfd_section *output_section;
43.37184 -+
43.37185 -+  /* The alignment requirement of the section, as an exponent of 2 -
43.37186 -+     e.g., 3 aligns to 2^3 (or 8).  */
43.37187 -+  unsigned int alignment_power;
43.37188 -+
43.37189 -+  /* If an input section, a pointer to a vector of relocation
43.37190 -+     records for the data in this section.  */
43.37191 -+  struct reloc_cache_entry *relocation;
43.37192 -+
43.37193 -+  /* If an output section, a pointer to a vector of pointers to
43.37194 -+     relocation records for the data in this section.  */
43.37195 -+  struct reloc_cache_entry **orelocation;
43.37196 -+
43.37197 -+  /* The number of relocation records in one of the above.  */
43.37198 -+  unsigned reloc_count;
43.37199 -+
43.37200 -+  /* Information below is back end specific - and not always used
43.37201 -+     or updated.  */
43.37202 -+
43.37203 -+  /* File position of section data.  */
43.37204 -+  file_ptr filepos;
43.37205 -+
43.37206 -+  /* File position of relocation info.  */
43.37207 -+  file_ptr rel_filepos;
43.37208 -+
43.37209 -+  /* File position of line data.  */
43.37210 -+  file_ptr line_filepos;
43.37211 -+
43.37212 -+  /* Pointer to data for applications.  */
43.37213 -+  void *userdata;
43.37214 -+
43.37215 -+  /* If the SEC_IN_MEMORY flag is set, this points to the actual
43.37216 -+     contents.  */
43.37217 -+  unsigned char *contents;
43.37218 -+
43.37219 -+  /* Attached line number information.  */
43.37220 -+  alent *lineno;
43.37221 -+
43.37222 -+  /* Number of line number records.  */
43.37223 -+  unsigned int lineno_count;
43.37224 -+
43.37225 -+  /* Entity size for merging purposes.  */
43.37226 -+  unsigned int entsize;
43.37227 -+
43.37228 -+  /* Points to the kept section if this section is a link-once section,
43.37229 -+     and is discarded.  */
43.37230 -+  struct bfd_section *kept_section;
43.37231 -+
43.37232 -+  /* When a section is being output, this value changes as more
43.37233 -+     linenumbers are written out.  */
43.37234 -+  file_ptr moving_line_filepos;
43.37235 -+
43.37236 -+  /* What the section number is in the target world.  */
43.37237 -+  int target_index;
43.37238 -+
43.37239 -+  void *used_by_bfd;
43.37240 -+
43.37241 -+  /* If this is a constructor section then here is a list of the
43.37242 -+     relocations created to relocate items within it.  */
43.37243 -+  struct relent_chain *constructor_chain;
43.37244 -+
43.37245 -+  /* The BFD which owns the section.  */
43.37246 -+  bfd *owner;
43.37247 -+
43.37248 -+  /* A symbol which points at this section only.  */
43.37249 -+  struct bfd_symbol *symbol;
43.37250 -+  struct bfd_symbol **symbol_ptr_ptr;
43.37251 -+
43.37252 -+  /* Early in the link process, map_head and map_tail are used to build
43.37253 -+     a list of input sections attached to an output section.  Later,
43.37254 -+     output sections use these fields for a list of bfd_link_order
43.37255 -+     structs.  */
43.37256 -+  union {
43.37257 -+    struct bfd_link_order *link_order;
43.37258 -+    struct bfd_section *s;
43.37259 -+  } map_head, map_tail;
43.37260 -+} asection;
43.37261 -+
43.37262 -+/* These sections are global, and are managed by BFD.  The application
43.37263 -+   and target back end are not permitted to change the values in
43.37264 -+   these sections.  New code should use the section_ptr macros rather
43.37265 -+   than referring directly to the const sections.  The const sections
43.37266 -+   may eventually vanish.  */
43.37267 -+#define BFD_ABS_SECTION_NAME "*ABS*"
43.37268 -+#define BFD_UND_SECTION_NAME "*UND*"
43.37269 -+#define BFD_COM_SECTION_NAME "*COM*"
43.37270 -+#define BFD_IND_SECTION_NAME "*IND*"
43.37271 -+
43.37272 -+/* The absolute section.  */
43.37273 -+extern asection bfd_abs_section;
43.37274 -+#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
43.37275 -+#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
43.37276 -+/* Pointer to the undefined section.  */
43.37277 -+extern asection bfd_und_section;
43.37278 -+#define bfd_und_section_ptr ((asection *) &bfd_und_section)
43.37279 -+#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
43.37280 -+/* Pointer to the common section.  */
43.37281 -+extern asection bfd_com_section;
43.37282 -+#define bfd_com_section_ptr ((asection *) &bfd_com_section)
43.37283 -+/* Pointer to the indirect section.  */
43.37284 -+extern asection bfd_ind_section;
43.37285 -+#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
43.37286 -+#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
43.37287 -+
43.37288 -+#define bfd_is_const_section(SEC)              \
43.37289 -+ (   ((SEC) == bfd_abs_section_ptr)            \
43.37290 -+  || ((SEC) == bfd_und_section_ptr)            \
43.37291 -+  || ((SEC) == bfd_com_section_ptr)            \
43.37292 -+  || ((SEC) == bfd_ind_section_ptr))
43.37293 -+
43.37294 -+/* Macros to handle insertion and deletion of a bfd's sections.  These
43.37295 -+   only handle the list pointers, ie. do not adjust section_count,
43.37296 -+   target_index etc.  */
43.37297 -+#define bfd_section_list_remove(ABFD, S) \
43.37298 -+  do                                                   \
43.37299 -+    {                                                  \
43.37300 -+      asection *_s = S;                                \
43.37301 -+      asection *_next = _s->next;                      \
43.37302 -+      asection *_prev = _s->prev;                      \
43.37303 -+      if (_prev)                                       \
43.37304 -+        _prev->next = _next;                           \
43.37305 -+      else                                             \
43.37306 -+        (ABFD)->sections = _next;                      \
43.37307 -+      if (_next)                                       \
43.37308 -+        _next->prev = _prev;                           \
43.37309 -+      else                                             \
43.37310 -+        (ABFD)->section_last = _prev;                  \
43.37311 -+    }                                                  \
43.37312 -+  while (0)
43.37313 -+#define bfd_section_list_append(ABFD, S) \
43.37314 -+  do                                                   \
43.37315 -+    {                                                  \
43.37316 -+      asection *_s = S;                                \
43.37317 -+      bfd *_abfd = ABFD;                               \
43.37318 -+      _s->next = NULL;                                 \
43.37319 -+      if (_abfd->section_last)                         \
43.37320 -+        {                                              \
43.37321 -+          _s->prev = _abfd->section_last;              \
43.37322 -+          _abfd->section_last->next = _s;              \
43.37323 -+        }                                              \
43.37324 -+      else                                             \
43.37325 -+        {                                              \
43.37326 -+          _s->prev = NULL;                             \
43.37327 -+          _abfd->sections = _s;                        \
43.37328 -+        }                                              \
43.37329 -+      _abfd->section_last = _s;                        \
43.37330 -+    }                                                  \
43.37331 -+  while (0)
43.37332 -+#define bfd_section_list_prepend(ABFD, S) \
43.37333 -+  do                                                   \
43.37334 -+    {                                                  \
43.37335 -+      asection *_s = S;                                \
43.37336 -+      bfd *_abfd = ABFD;                               \
43.37337 -+      _s->prev = NULL;                                 \
43.37338 -+      if (_abfd->sections)                             \
43.37339 -+        {                                              \
43.37340 -+          _s->next = _abfd->sections;                  \
43.37341 -+          _abfd->sections->prev = _s;                  \
43.37342 -+        }                                              \
43.37343 -+      else                                             \
43.37344 -+        {                                              \
43.37345 -+          _s->next = NULL;                             \
43.37346 -+          _abfd->section_last = _s;                    \
43.37347 -+        }                                              \
43.37348 -+      _abfd->sections = _s;                            \
43.37349 -+    }                                                  \
43.37350 -+  while (0)
43.37351 -+#define bfd_section_list_insert_after(ABFD, A, S) \
43.37352 -+  do                                                   \
43.37353 -+    {                                                  \
43.37354 -+      asection *_a = A;                                \
43.37355 -+      asection *_s = S;                                \
43.37356 -+      asection *_next = _a->next;                      \
43.37357 -+      _s->next = _next;                                \
43.37358 -+      _s->prev = _a;                                   \
43.37359 -+      _a->next = _s;                                   \
43.37360 -+      if (_next)                                       \
43.37361 -+        _next->prev = _s;                              \
43.37362 -+      else                                             \
43.37363 -+        (ABFD)->section_last = _s;                     \
43.37364 -+    }                                                  \
43.37365 -+  while (0)
43.37366 -+#define bfd_section_list_insert_before(ABFD, B, S) \
43.37367 -+  do                                                   \
43.37368 -+    {                                                  \
43.37369 -+      asection *_b = B;                                \
43.37370 -+      asection *_s = S;                                \
43.37371 -+      asection *_prev = _b->prev;                      \
43.37372 -+      _s->prev = _prev;                                \
43.37373 -+      _s->next = _b;                                   \
43.37374 -+      _b->prev = _s;                                   \
43.37375 -+      if (_prev)                                       \
43.37376 -+        _prev->next = _s;                              \
43.37377 -+      else                                             \
43.37378 -+        (ABFD)->sections = _s;                         \
43.37379 -+    }                                                  \
43.37380 -+  while (0)
43.37381 -+#define bfd_section_removed_from_list(ABFD, S) \
43.37382 -+  ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
43.37383 -+
43.37384 -+#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX)                   \
43.37385 -+  /* name, id,  index, next, prev, flags, user_set_vma,            */  \
43.37386 -+  { NAME,  IDX, 0,     NULL, NULL, FLAGS, 0,                           \
43.37387 -+                                                                       \
43.37388 -+  /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh,      */  \
43.37389 -+     0,           0,                1,       0,                        \
43.37390 -+                                                                       \
43.37391 -+  /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc,       */  \
43.37392 -+     0,            0,             0,          0,                       \
43.37393 -+                                                                       \
43.37394 -+  /* has_gp_reloc, need_finalize_relax, reloc_done,                */  \
43.37395 -+     0,            0,                   0,                             \
43.37396 -+                                                                       \
43.37397 -+  /* vma, lma, size, rawsize                                       */  \
43.37398 -+     0,   0,   0,    0,                                                \
43.37399 -+                                                                       \
43.37400 -+  /* output_offset, output_section,              alignment_power,  */  \
43.37401 -+     0,             (struct bfd_section *) &SEC, 0,                    \
43.37402 -+                                                                       \
43.37403 -+  /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
43.37404 -+     NULL,       NULL,        0,           0,       0,                 \
43.37405 -+                                                                       \
43.37406 -+  /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
43.37407 -+     0,            NULL,     NULL,     NULL,   0,                      \
43.37408 -+                                                                       \
43.37409 -+  /* entsize, kept_section, moving_line_filepos,                    */ \
43.37410 -+     0,       NULL,          0,                                        \
43.37411 -+                                                                       \
43.37412 -+  /* target_index, used_by_bfd, constructor_chain, owner,          */  \
43.37413 -+     0,            NULL,        NULL,              NULL,               \
43.37414 -+                                                                       \
43.37415 -+  /* symbol,                    symbol_ptr_ptr,                    */  \
43.37416 -+     (struct bfd_symbol *) SYM, &SEC.symbol,                           \
43.37417 -+                                                                       \
43.37418 -+  /* map_head, map_tail                                            */  \
43.37419 -+     { NULL }, { NULL }                                                \
43.37420 -+    }
43.37421 -+
43.37422 -+void bfd_section_list_clear (bfd *);
43.37423 -+
43.37424 -+asection *bfd_get_section_by_name (bfd *abfd, const char *name);
43.37425 -+
43.37426 -+asection *bfd_get_section_by_name_if
43.37427 -+   (bfd *abfd,
43.37428 -+    const char *name,
43.37429 -+    bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
43.37430 -+    void *obj);
43.37431 -+
43.37432 -+char *bfd_get_unique_section_name
43.37433 -+   (bfd *abfd, const char *templat, int *count);
43.37434 -+
43.37435 -+asection *bfd_make_section_old_way (bfd *abfd, const char *name);
43.37436 -+
43.37437 -+asection *bfd_make_section_anyway_with_flags
43.37438 -+   (bfd *abfd, const char *name, flagword flags);
43.37439 -+
43.37440 -+asection *bfd_make_section_anyway (bfd *abfd, const char *name);
43.37441 -+
43.37442 -+asection *bfd_make_section_with_flags
43.37443 -+   (bfd *, const char *name, flagword flags);
43.37444 -+
43.37445 -+asection *bfd_make_section (bfd *, const char *name);
43.37446 -+
43.37447 -+bfd_boolean bfd_set_section_flags
43.37448 -+   (bfd *abfd, asection *sec, flagword flags);
43.37449 -+
43.37450 -+void bfd_map_over_sections
43.37451 -+   (bfd *abfd,
43.37452 -+    void (*func) (bfd *abfd, asection *sect, void *obj),
43.37453 -+    void *obj);
43.37454 -+
43.37455 -+asection *bfd_sections_find_if
43.37456 -+   (bfd *abfd,
43.37457 -+    bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
43.37458 -+    void *obj);
43.37459 -+
43.37460 -+bfd_boolean bfd_set_section_size
43.37461 -+   (bfd *abfd, asection *sec, bfd_size_type val);
43.37462 -+
43.37463 -+bfd_boolean bfd_set_section_contents
43.37464 -+   (bfd *abfd, asection *section, const void *data,
43.37465 -+    file_ptr offset, bfd_size_type count);
43.37466 -+
43.37467 -+bfd_boolean bfd_get_section_contents
43.37468 -+   (bfd *abfd, asection *section, void *location, file_ptr offset,
43.37469 -+    bfd_size_type count);
43.37470 -+
43.37471 -+bfd_boolean bfd_malloc_and_get_section
43.37472 -+   (bfd *abfd, asection *section, bfd_byte **buf);
43.37473 -+
43.37474 -+bfd_boolean bfd_copy_private_section_data
43.37475 -+   (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
43.37476 -+
43.37477 -+#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
43.37478 -+     BFD_SEND (obfd, _bfd_copy_private_section_data, \
43.37479 -+               (ibfd, isection, obfd, osection))
43.37480 -+bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
43.37481 -+
43.37482 -+bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
43.37483 -+
43.37484 -+/* Extracted from archures.c.  */
43.37485 -+enum bfd_architecture
43.37486 -+{
43.37487 -+  bfd_arch_unknown,   /* File arch not known.  */
43.37488 -+  bfd_arch_obscure,   /* Arch known, not one of these.  */
43.37489 -+  bfd_arch_m68k,      /* Motorola 68xxx */
43.37490 -+#define bfd_mach_m68000 1
43.37491 -+#define bfd_mach_m68008 2
43.37492 -+#define bfd_mach_m68010 3
43.37493 -+#define bfd_mach_m68020 4
43.37494 -+#define bfd_mach_m68030 5
43.37495 -+#define bfd_mach_m68040 6
43.37496 -+#define bfd_mach_m68060 7
43.37497 -+#define bfd_mach_cpu32  8
43.37498 -+#define bfd_mach_fido   9
43.37499 -+#define bfd_mach_mcf_isa_a_nodiv 10
43.37500 -+#define bfd_mach_mcf_isa_a 11
43.37501 -+#define bfd_mach_mcf_isa_a_mac 12
43.37502 -+#define bfd_mach_mcf_isa_a_emac 13
43.37503 -+#define bfd_mach_mcf_isa_aplus 14
43.37504 -+#define bfd_mach_mcf_isa_aplus_mac 15
43.37505 -+#define bfd_mach_mcf_isa_aplus_emac 16
43.37506 -+#define bfd_mach_mcf_isa_b_nousp 17
43.37507 -+#define bfd_mach_mcf_isa_b_nousp_mac 18
43.37508 -+#define bfd_mach_mcf_isa_b_nousp_emac 19
43.37509 -+#define bfd_mach_mcf_isa_b 20
43.37510 -+#define bfd_mach_mcf_isa_b_mac 21
43.37511 -+#define bfd_mach_mcf_isa_b_emac 22
43.37512 -+#define bfd_mach_mcf_isa_b_float 23
43.37513 -+#define bfd_mach_mcf_isa_b_float_mac 24
43.37514 -+#define bfd_mach_mcf_isa_b_float_emac 25
43.37515 -+#define bfd_mach_mcf_isa_c 26
43.37516 -+#define bfd_mach_mcf_isa_c_mac 27
43.37517 -+#define bfd_mach_mcf_isa_c_emac 28
43.37518 -+  bfd_arch_vax,       /* DEC Vax */
43.37519 -+  bfd_arch_i960,      /* Intel 960 */
43.37520 -+    /* The order of the following is important.
43.37521 -+       lower number indicates a machine type that
43.37522 -+       only accepts a subset of the instructions
43.37523 -+       available to machines with higher numbers.
43.37524 -+       The exception is the "ca", which is
43.37525 -+       incompatible with all other machines except
43.37526 -+       "core".  */
43.37527 -+
43.37528 -+#define bfd_mach_i960_core      1
43.37529 -+#define bfd_mach_i960_ka_sa     2
43.37530 -+#define bfd_mach_i960_kb_sb     3
43.37531 -+#define bfd_mach_i960_mc        4
43.37532 -+#define bfd_mach_i960_xa        5
43.37533 -+#define bfd_mach_i960_ca        6
43.37534 -+#define bfd_mach_i960_jx        7
43.37535 -+#define bfd_mach_i960_hx        8
43.37536 -+
43.37537 -+  bfd_arch_or32,      /* OpenRISC 32 */
43.37538 -+
43.37539 -+  bfd_arch_sparc,     /* SPARC */
43.37540 -+#define bfd_mach_sparc                 1
43.37541 -+/* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
43.37542 -+#define bfd_mach_sparc_sparclet        2
43.37543 -+#define bfd_mach_sparc_sparclite       3
43.37544 -+#define bfd_mach_sparc_v8plus          4
43.37545 -+#define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */
43.37546 -+#define bfd_mach_sparc_sparclite_le    6
43.37547 -+#define bfd_mach_sparc_v9              7
43.37548 -+#define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
43.37549 -+#define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
43.37550 -+#define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
43.37551 -+/* Nonzero if MACH has the v9 instruction set.  */
43.37552 -+#define bfd_mach_sparc_v9_p(mach) \
43.37553 -+  ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
43.37554 -+   && (mach) != bfd_mach_sparc_sparclite_le)
43.37555 -+/* Nonzero if MACH is a 64 bit sparc architecture.  */
43.37556 -+#define bfd_mach_sparc_64bit_p(mach) \
43.37557 -+  ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
43.37558 -+  bfd_arch_spu,       /* PowerPC SPU */
43.37559 -+#define bfd_mach_spu           256 
43.37560 -+  bfd_arch_mips,      /* MIPS Rxxxx */
43.37561 -+#define bfd_mach_mips3000              3000
43.37562 -+#define bfd_mach_mips3900              3900
43.37563 -+#define bfd_mach_mips4000              4000
43.37564 -+#define bfd_mach_mips4010              4010
43.37565 -+#define bfd_mach_mips4100              4100
43.37566 -+#define bfd_mach_mips4111              4111
43.37567 -+#define bfd_mach_mips4120              4120
43.37568 -+#define bfd_mach_mips4300              4300
43.37569 -+#define bfd_mach_mips4400              4400
43.37570 -+#define bfd_mach_mips4600              4600
43.37571 -+#define bfd_mach_mips4650              4650
43.37572 -+#define bfd_mach_mips5000              5000
43.37573 -+#define bfd_mach_mips5400              5400
43.37574 -+#define bfd_mach_mips5500              5500
43.37575 -+#define bfd_mach_mips6000              6000
43.37576 -+#define bfd_mach_mips7000              7000
43.37577 -+#define bfd_mach_mips8000              8000
43.37578 -+#define bfd_mach_mips9000              9000
43.37579 -+#define bfd_mach_mips10000             10000
43.37580 -+#define bfd_mach_mips12000             12000
43.37581 -+#define bfd_mach_mips16                16
43.37582 -+#define bfd_mach_mips5                 5
43.37583 -+#define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */
43.37584 -+#define bfd_mach_mipsisa32             32
43.37585 -+#define bfd_mach_mipsisa32r2           33
43.37586 -+#define bfd_mach_mipsisa64             64
43.37587 -+#define bfd_mach_mipsisa64r2           65
43.37588 -+  bfd_arch_i386,      /* Intel 386 */
43.37589 -+#define bfd_mach_i386_i386 1
43.37590 -+#define bfd_mach_i386_i8086 2
43.37591 -+#define bfd_mach_i386_i386_intel_syntax 3
43.37592 -+#define bfd_mach_x86_64 64
43.37593 -+#define bfd_mach_x86_64_intel_syntax 65
43.37594 -+  bfd_arch_we32k,     /* AT&T WE32xxx */
43.37595 -+  bfd_arch_tahoe,     /* CCI/Harris Tahoe */
43.37596 -+  bfd_arch_i860,      /* Intel 860 */
43.37597 -+  bfd_arch_i370,      /* IBM 360/370 Mainframes */
43.37598 -+  bfd_arch_romp,      /* IBM ROMP PC/RT */
43.37599 -+  bfd_arch_convex,    /* Convex */
43.37600 -+  bfd_arch_m88k,      /* Motorola 88xxx */
43.37601 -+  bfd_arch_m98k,      /* Motorola 98xxx */
43.37602 -+  bfd_arch_pyramid,   /* Pyramid Technology */
43.37603 -+  bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */
43.37604 -+#define bfd_mach_h8300    1
43.37605 -+#define bfd_mach_h8300h   2
43.37606 -+#define bfd_mach_h8300s   3
43.37607 -+#define bfd_mach_h8300hn  4
43.37608 -+#define bfd_mach_h8300sn  5
43.37609 -+#define bfd_mach_h8300sx  6
43.37610 -+#define bfd_mach_h8300sxn 7
43.37611 -+  bfd_arch_pdp11,     /* DEC PDP-11 */
43.37612 -+  bfd_arch_powerpc,   /* PowerPC */
43.37613 -+#define bfd_mach_ppc           32
43.37614 -+#define bfd_mach_ppc64         64
43.37615 -+#define bfd_mach_ppc_403       403
43.37616 -+#define bfd_mach_ppc_403gc     4030
43.37617 -+#define bfd_mach_ppc_505       505
43.37618 -+#define bfd_mach_ppc_601       601
43.37619 -+#define bfd_mach_ppc_602       602
43.37620 -+#define bfd_mach_ppc_603       603
43.37621 -+#define bfd_mach_ppc_ec603e    6031
43.37622 -+#define bfd_mach_ppc_604       604
43.37623 -+#define bfd_mach_ppc_620       620
43.37624 -+#define bfd_mach_ppc_630       630
43.37625 -+#define bfd_mach_ppc_750       750
43.37626 -+#define bfd_mach_ppc_860       860
43.37627 -+#define bfd_mach_ppc_a35       35
43.37628 -+#define bfd_mach_ppc_rs64ii    642
43.37629 -+#define bfd_mach_ppc_rs64iii   643
43.37630 -+#define bfd_mach_ppc_7400      7400
43.37631 -+#define bfd_mach_ppc_e500      500
43.37632 -+  bfd_arch_rs6000,    /* IBM RS/6000 */
43.37633 -+#define bfd_mach_rs6k          6000
43.37634 -+#define bfd_mach_rs6k_rs1      6001
43.37635 -+#define bfd_mach_rs6k_rsc      6003
43.37636 -+#define bfd_mach_rs6k_rs2      6002
43.37637 -+  bfd_arch_hppa,      /* HP PA RISC */
43.37638 -+#define bfd_mach_hppa10        10
43.37639 -+#define bfd_mach_hppa11        11
43.37640 -+#define bfd_mach_hppa20        20
43.37641 -+#define bfd_mach_hppa20w       25
43.37642 -+  bfd_arch_d10v,      /* Mitsubishi D10V */
43.37643 -+#define bfd_mach_d10v          1
43.37644 -+#define bfd_mach_d10v_ts2      2
43.37645 -+#define bfd_mach_d10v_ts3      3
43.37646 -+  bfd_arch_d30v,      /* Mitsubishi D30V */
43.37647 -+  bfd_arch_dlx,       /* DLX */
43.37648 -+  bfd_arch_m68hc11,   /* Motorola 68HC11 */
43.37649 -+  bfd_arch_m68hc12,   /* Motorola 68HC12 */
43.37650 -+#define bfd_mach_m6812_default 0
43.37651 -+#define bfd_mach_m6812         1
43.37652 -+#define bfd_mach_m6812s        2
43.37653 -+  bfd_arch_z8k,       /* Zilog Z8000 */
43.37654 -+#define bfd_mach_z8001         1
43.37655 -+#define bfd_mach_z8002         2
43.37656 -+  bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */
43.37657 -+  bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */
43.37658 -+#define bfd_mach_sh            1
43.37659 -+#define bfd_mach_sh2        0x20
43.37660 -+#define bfd_mach_sh_dsp     0x2d
43.37661 -+#define bfd_mach_sh2a       0x2a
43.37662 -+#define bfd_mach_sh2a_nofpu 0x2b
43.37663 -+#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
43.37664 -+#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
43.37665 -+#define bfd_mach_sh2a_or_sh4  0x2a3
43.37666 -+#define bfd_mach_sh2a_or_sh3e 0x2a4
43.37667 -+#define bfd_mach_sh2e       0x2e
43.37668 -+#define bfd_mach_sh3        0x30
43.37669 -+#define bfd_mach_sh3_nommu  0x31
43.37670 -+#define bfd_mach_sh3_dsp    0x3d
43.37671 -+#define bfd_mach_sh3e       0x3e
43.37672 -+#define bfd_mach_sh4        0x40
43.37673 -+#define bfd_mach_sh4_nofpu  0x41
43.37674 -+#define bfd_mach_sh4_nommu_nofpu  0x42
43.37675 -+#define bfd_mach_sh4a       0x4a
43.37676 -+#define bfd_mach_sh4a_nofpu 0x4b
43.37677 -+#define bfd_mach_sh4al_dsp  0x4d
43.37678 -+#define bfd_mach_sh5        0x50
43.37679 -+  bfd_arch_alpha,     /* Dec Alpha */
43.37680 -+#define bfd_mach_alpha_ev4  0x10
43.37681 -+#define bfd_mach_alpha_ev5  0x20
43.37682 -+#define bfd_mach_alpha_ev6  0x30
43.37683 -+  bfd_arch_arm,       /* Advanced Risc Machines ARM.  */
43.37684 -+#define bfd_mach_arm_unknown   0
43.37685 -+#define bfd_mach_arm_2         1
43.37686 -+#define bfd_mach_arm_2a        2
43.37687 -+#define bfd_mach_arm_3         3
43.37688 -+#define bfd_mach_arm_3M        4
43.37689 -+#define bfd_mach_arm_4         5
43.37690 -+#define bfd_mach_arm_4T        6
43.37691 -+#define bfd_mach_arm_5         7
43.37692 -+#define bfd_mach_arm_5T        8
43.37693 -+#define bfd_mach_arm_5TE       9
43.37694 -+#define bfd_mach_arm_XScale    10
43.37695 -+#define bfd_mach_arm_ep9312    11
43.37696 -+#define bfd_mach_arm_iWMMXt    12
43.37697 -+#define bfd_mach_arm_iWMMXt2   13
43.37698 -+  bfd_arch_ns32k,     /* National Semiconductors ns32000 */
43.37699 -+  bfd_arch_w65,       /* WDC 65816 */
43.37700 -+  bfd_arch_tic30,     /* Texas Instruments TMS320C30 */
43.37701 -+  bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */
43.37702 -+#define bfd_mach_tic3x         30
43.37703 -+#define bfd_mach_tic4x         40
43.37704 -+  bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */
43.37705 -+  bfd_arch_tic80,     /* TI TMS320c80 (MVP) */
43.37706 -+  bfd_arch_v850,      /* NEC V850 */
43.37707 -+#define bfd_mach_v850          1
43.37708 -+#define bfd_mach_v850e         'E'
43.37709 -+#define bfd_mach_v850e1        '1'
43.37710 -+  bfd_arch_arc,       /* ARC Cores */
43.37711 -+#define bfd_mach_arc_5         5
43.37712 -+#define bfd_mach_arc_6         6
43.37713 -+#define bfd_mach_arc_7         7
43.37714 -+#define bfd_mach_arc_8         8
43.37715 -+ bfd_arch_m32c,     /* Renesas M16C/M32C.  */
43.37716 -+#define bfd_mach_m16c        0x75
43.37717 -+#define bfd_mach_m32c        0x78
43.37718 -+  bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */
43.37719 -+#define bfd_mach_m32r          1 /* For backwards compatibility.  */
43.37720 -+#define bfd_mach_m32rx         'x'
43.37721 -+#define bfd_mach_m32r2         '2'
43.37722 -+  bfd_arch_mn10200,   /* Matsushita MN10200 */
43.37723 -+  bfd_arch_mn10300,   /* Matsushita MN10300 */
43.37724 -+#define bfd_mach_mn10300               300
43.37725 -+#define bfd_mach_am33          330
43.37726 -+#define bfd_mach_am33_2        332
43.37727 -+  bfd_arch_fr30,
43.37728 -+#define bfd_mach_fr30          0x46523330
43.37729 -+  bfd_arch_frv,
43.37730 -+#define bfd_mach_frv           1
43.37731 -+#define bfd_mach_frvsimple     2
43.37732 -+#define bfd_mach_fr300         300
43.37733 -+#define bfd_mach_fr400         400
43.37734 -+#define bfd_mach_fr450         450
43.37735 -+#define bfd_mach_frvtomcat     499     /* fr500 prototype */
43.37736 -+#define bfd_mach_fr500         500
43.37737 -+#define bfd_mach_fr550         550
43.37738 -+  bfd_arch_mcore,
43.37739 -+  bfd_arch_mep,
43.37740 -+#define bfd_mach_mep           1
43.37741 -+#define bfd_mach_mep_h1        0x6831
43.37742 -+  bfd_arch_ia64,      /* HP/Intel ia64 */
43.37743 -+#define bfd_mach_ia64_elf64    64
43.37744 -+#define bfd_mach_ia64_elf32    32
43.37745 -+  bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */
43.37746 -+#define bfd_mach_ip2022        1
43.37747 -+#define bfd_mach_ip2022ext     2
43.37748 -+ bfd_arch_iq2000,     /* Vitesse IQ2000.  */
43.37749 -+#define bfd_mach_iq2000        1
43.37750 -+#define bfd_mach_iq10          2
43.37751 -+  bfd_arch_mt,
43.37752 -+#define bfd_mach_ms1           1
43.37753 -+#define bfd_mach_mrisc2        2
43.37754 -+#define bfd_mach_ms2           3
43.37755 -+  bfd_arch_pj,
43.37756 -+  bfd_arch_avr,       /* Atmel AVR microcontrollers.  */
43.37757 -+#define bfd_mach_avr1          1
43.37758 -+#define bfd_mach_avr2          2
43.37759 -+#define bfd_mach_avr3          3
43.37760 -+#define bfd_mach_avr4          4
43.37761 -+#define bfd_mach_avr5          5
43.37762 -+#define bfd_mach_avr6          6
43.37763 -+  bfd_arch_avr32,     /* Atmel AVR32 */
43.37764 -+#define bfd_mach_avr32_ap      7000
43.37765 -+#define bfd_mach_avr32_uc      3000
43.37766 -+#define bfd_mach_avr32_ucr1    3001
43.37767 -+#define bfd_mach_avr32_ucr2    3002
43.37768 -+  bfd_arch_bfin,        /* ADI Blackfin */
43.37769 -+#define bfd_mach_bfin          1
43.37770 -+  bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */
43.37771 -+#define bfd_mach_cr16          1
43.37772 -+  bfd_arch_cr16c,       /* National Semiconductor CompactRISC. */
43.37773 -+#define bfd_mach_cr16c         1
43.37774 -+  bfd_arch_crx,       /*  National Semiconductor CRX.  */
43.37775 -+#define bfd_mach_crx           1
43.37776 -+  bfd_arch_cris,      /* Axis CRIS */
43.37777 -+#define bfd_mach_cris_v0_v10   255
43.37778 -+#define bfd_mach_cris_v32      32
43.37779 -+#define bfd_mach_cris_v10_v32  1032
43.37780 -+  bfd_arch_s390,      /* IBM s390 */
43.37781 -+#define bfd_mach_s390_31       31
43.37782 -+#define bfd_mach_s390_64       64
43.37783 -+  bfd_arch_score,     /* Sunplus score */ 
43.37784 -+  bfd_arch_openrisc,  /* OpenRISC */
43.37785 -+  bfd_arch_mmix,      /* Donald Knuth's educational processor.  */
43.37786 -+  bfd_arch_xstormy16,
43.37787 -+#define bfd_mach_xstormy16     1
43.37788 -+  bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
43.37789 -+#define bfd_mach_msp11          11
43.37790 -+#define bfd_mach_msp110         110
43.37791 -+#define bfd_mach_msp12          12
43.37792 -+#define bfd_mach_msp13          13
43.37793 -+#define bfd_mach_msp14          14
43.37794 -+#define bfd_mach_msp15          15
43.37795 -+#define bfd_mach_msp16          16
43.37796 -+#define bfd_mach_msp21          21
43.37797 -+#define bfd_mach_msp31          31
43.37798 -+#define bfd_mach_msp32          32
43.37799 -+#define bfd_mach_msp33          33
43.37800 -+#define bfd_mach_msp41          41
43.37801 -+#define bfd_mach_msp42          42
43.37802 -+#define bfd_mach_msp43          43
43.37803 -+#define bfd_mach_msp44          44
43.37804 -+  bfd_arch_xc16x,     /* Infineon's XC16X Series.               */
43.37805 -+#define bfd_mach_xc16x         1
43.37806 -+#define bfd_mach_xc16xl        2
43.37807 -+#define bfd_mach_xc16xs         3
43.37808 -+  bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
43.37809 -+#define bfd_mach_xtensa        1
43.37810 -+   bfd_arch_maxq,     /* Dallas MAXQ 10/20 */
43.37811 -+#define bfd_mach_maxq10    10
43.37812 -+#define bfd_mach_maxq20    20
43.37813 -+  bfd_arch_z80,
43.37814 -+#define bfd_mach_z80strict      1 /* No undocumented opcodes.  */
43.37815 -+#define bfd_mach_z80            3 /* With ixl, ixh, iyl, and iyh.  */
43.37816 -+#define bfd_mach_z80full        7 /* All undocumented instructions.  */
43.37817 -+#define bfd_mach_r800           11 /* R800: successor with multiplication.  */
43.37818 -+  bfd_arch_last
43.37819 -+  };
43.37820 -+
43.37821 -+typedef struct bfd_arch_info
43.37822 -+{
43.37823 -+  int bits_per_word;
43.37824 -+  int bits_per_address;
43.37825 -+  int bits_per_byte;
43.37826 -+  enum bfd_architecture arch;
43.37827 -+  unsigned long mach;
43.37828 -+  const char *arch_name;
43.37829 -+  const char *printable_name;
43.37830 -+  unsigned int section_align_power;
43.37831 -+  /* TRUE if this is the default machine for the architecture.
43.37832 -+     The default arch should be the first entry for an arch so that
43.37833 -+     all the entries for that arch can be accessed via <<next>>.  */
43.37834 -+  bfd_boolean the_default;
43.37835 -+  const struct bfd_arch_info * (*compatible)
43.37836 -+    (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
43.37837 -+
43.37838 -+  bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
43.37839 -+
43.37840 -+  const struct bfd_arch_info *next;
43.37841 -+}
43.37842 -+bfd_arch_info_type;
43.37843 -+
43.37844 -+const char *bfd_printable_name (bfd *abfd);
43.37845 -+
43.37846 -+const bfd_arch_info_type *bfd_scan_arch (const char *string);
43.37847 -+
43.37848 -+const char **bfd_arch_list (void);
43.37849 -+
43.37850 -+const bfd_arch_info_type *bfd_arch_get_compatible
43.37851 -+   (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
43.37852 -+
43.37853 -+void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
43.37854 -+
43.37855 -+enum bfd_architecture bfd_get_arch (bfd *abfd);
43.37856 -+
43.37857 -+unsigned long bfd_get_mach (bfd *abfd);
43.37858 -+
43.37859 -+unsigned int bfd_arch_bits_per_byte (bfd *abfd);
43.37860 -+
43.37861 -+unsigned int bfd_arch_bits_per_address (bfd *abfd);
43.37862 -+
43.37863 -+const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
43.37864 -+
43.37865 -+const bfd_arch_info_type *bfd_lookup_arch
43.37866 -+   (enum bfd_architecture arch, unsigned long machine);
43.37867 -+
43.37868 -+const char *bfd_printable_arch_mach
43.37869 -+   (enum bfd_architecture arch, unsigned long machine);
43.37870 -+
43.37871 -+unsigned int bfd_octets_per_byte (bfd *abfd);
43.37872 -+
43.37873 -+unsigned int bfd_arch_mach_octets_per_byte
43.37874 -+   (enum bfd_architecture arch, unsigned long machine);
43.37875 -+
43.37876 -+/* Extracted from reloc.c.  */
43.37877 -+typedef enum bfd_reloc_status
43.37878 -+{
43.37879 -+  /* No errors detected.  */
43.37880 -+  bfd_reloc_ok,
43.37881 -+
43.37882 -+  /* The relocation was performed, but there was an overflow.  */
43.37883 -+  bfd_reloc_overflow,
43.37884 -+
43.37885 -+  /* The address to relocate was not within the section supplied.  */
43.37886 -+  bfd_reloc_outofrange,
43.37887 -+
43.37888 -+  /* Used by special functions.  */
43.37889 -+  bfd_reloc_continue,
43.37890 -+
43.37891 -+  /* Unsupported relocation size requested.  */
43.37892 -+  bfd_reloc_notsupported,
43.37893 -+
43.37894 -+  /* Unused.  */
43.37895 -+  bfd_reloc_other,
43.37896 -+
43.37897 -+  /* The symbol to relocate against was undefined.  */
43.37898 -+  bfd_reloc_undefined,
43.37899 -+
43.37900 -+  /* The relocation was performed, but may not be ok - presently
43.37901 -+     generated only when linking i960 coff files with i960 b.out
43.37902 -+     symbols.  If this type is returned, the error_message argument
43.37903 -+     to bfd_perform_relocation will be set.  */
43.37904 -+  bfd_reloc_dangerous
43.37905 -+ }
43.37906 -+ bfd_reloc_status_type;
43.37907 -+
43.37908 -+
43.37909 -+typedef struct reloc_cache_entry
43.37910 -+{
43.37911 -+  /* A pointer into the canonical table of pointers.  */
43.37912 -+  struct bfd_symbol **sym_ptr_ptr;
43.37913 -+
43.37914 -+  /* offset in section.  */
43.37915 -+  bfd_size_type address;
43.37916 -+
43.37917 -+  /* addend for relocation value.  */
43.37918 -+  bfd_vma addend;
43.37919 -+
43.37920 -+  /* Pointer to how to perform the required relocation.  */
43.37921 -+  reloc_howto_type *howto;
43.37922 -+
43.37923 -+}
43.37924 -+arelent;
43.37925 -+
43.37926 -+enum complain_overflow
43.37927 -+{
43.37928 -+  /* Do not complain on overflow.  */
43.37929 -+  complain_overflow_dont,
43.37930 -+
43.37931 -+  /* Complain if the value overflows when considered as a signed
43.37932 -+     number one bit larger than the field.  ie. A bitfield of N bits
43.37933 -+     is allowed to represent -2**n to 2**n-1.  */
43.37934 -+  complain_overflow_bitfield,
43.37935 -+
43.37936 -+  /* Complain if the value overflows when considered as a signed
43.37937 -+     number.  */
43.37938 -+  complain_overflow_signed,
43.37939 -+
43.37940 -+  /* Complain if the value overflows when considered as an
43.37941 -+     unsigned number.  */
43.37942 -+  complain_overflow_unsigned
43.37943 -+};
43.37944 -+
43.37945 -+struct reloc_howto_struct
43.37946 -+{
43.37947 -+  /*  The type field has mainly a documentary use - the back end can
43.37948 -+      do what it wants with it, though normally the back end's
43.37949 -+      external idea of what a reloc number is stored
43.37950 -+      in this field.  For example, a PC relative word relocation
43.37951 -+      in a coff environment has the type 023 - because that's
43.37952 -+      what the outside world calls a R_PCRWORD reloc.  */
43.37953 -+  unsigned int type;
43.37954 -+
43.37955 -+  /*  The value the final relocation is shifted right by.  This drops
43.37956 -+      unwanted data from the relocation.  */
43.37957 -+  unsigned int rightshift;
43.37958 -+
43.37959 -+  /*  The size of the item to be relocated.  This is *not* a
43.37960 -+      power-of-two measure.  To get the number of bytes operated
43.37961 -+      on by a type of relocation, use bfd_get_reloc_size.  */
43.37962 -+  int size;
43.37963 -+
43.37964 -+  /*  The number of bits in the item to be relocated.  This is used
43.37965 -+      when doing overflow checking.  */
43.37966 -+  unsigned int bitsize;
43.37967 -+
43.37968 -+  /*  Notes that the relocation is relative to the location in the
43.37969 -+      data section of the addend.  The relocation function will
43.37970 -+      subtract from the relocation value the address of the location
43.37971 -+      being relocated.  */
43.37972 -+  bfd_boolean pc_relative;
43.37973 -+
43.37974 -+  /*  The bit position of the reloc value in the destination.
43.37975 -+      The relocated value is left shifted by this amount.  */
43.37976 -+  unsigned int bitpos;
43.37977 -+
43.37978 -+  /* What type of overflow error should be checked for when
43.37979 -+     relocating.  */
43.37980 -+  enum complain_overflow complain_on_overflow;
43.37981 -+
43.37982 -+  /* If this field is non null, then the supplied function is
43.37983 -+     called rather than the normal function.  This allows really
43.37984 -+     strange relocation methods to be accommodated (e.g., i960 callj
43.37985 -+     instructions).  */
43.37986 -+  bfd_reloc_status_type (*special_function)
43.37987 -+    (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
43.37988 -+     bfd *, char **);
43.37989 -+
43.37990 -+  /* The textual name of the relocation type.  */
43.37991 -+  char *name;
43.37992 -+
43.37993 -+  /* Some formats record a relocation addend in the section contents
43.37994 -+     rather than with the relocation.  For ELF formats this is the
43.37995 -+     distinction between USE_REL and USE_RELA (though the code checks
43.37996 -+     for USE_REL == 1/0).  The value of this field is TRUE if the
43.37997 -+     addend is recorded with the section contents; when performing a
43.37998 -+     partial link (ld -r) the section contents (the data) will be
43.37999 -+     modified.  The value of this field is FALSE if addends are
43.38000 -+     recorded with the relocation (in arelent.addend); when performing
43.38001 -+     a partial link the relocation will be modified.
43.38002 -+     All relocations for all ELF USE_RELA targets should set this field
43.38003 -+     to FALSE (values of TRUE should be looked on with suspicion).
43.38004 -+     However, the converse is not true: not all relocations of all ELF
43.38005 -+     USE_REL targets set this field to TRUE.  Why this is so is peculiar
43.38006 -+     to each particular target.  For relocs that aren't used in partial
43.38007 -+     links (e.g. GOT stuff) it doesn't matter what this is set to.  */
43.38008 -+  bfd_boolean partial_inplace;
43.38009 -+
43.38010 -+  /* src_mask selects the part of the instruction (or data) to be used
43.38011 -+     in the relocation sum.  If the target relocations don't have an
43.38012 -+     addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
43.38013 -+     dst_mask to extract the addend from the section contents.  If
43.38014 -+     relocations do have an addend in the reloc, eg. ELF USE_RELA, this
43.38015 -+     field should be zero.  Non-zero values for ELF USE_RELA targets are
43.38016 -+     bogus as in those cases the value in the dst_mask part of the
43.38017 -+     section contents should be treated as garbage.  */
43.38018 -+  bfd_vma src_mask;
43.38019 -+
43.38020 -+  /* dst_mask selects which parts of the instruction (or data) are
43.38021 -+     replaced with a relocated value.  */
43.38022 -+  bfd_vma dst_mask;
43.38023 -+
43.38024 -+  /* When some formats create PC relative instructions, they leave
43.38025 -+     the value of the pc of the place being relocated in the offset
43.38026 -+     slot of the instruction, so that a PC relative relocation can
43.38027 -+     be made just by adding in an ordinary offset (e.g., sun3 a.out).
43.38028 -+     Some formats leave the displacement part of an instruction
43.38029 -+     empty (e.g., m88k bcs); this flag signals the fact.  */
43.38030 -+  bfd_boolean pcrel_offset;
43.38031 -+};
43.38032 -+
43.38033 -+#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
43.38034 -+  { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
43.38035 -+#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
43.38036 -+  HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
43.38037 -+         NAME, FALSE, 0, 0, IN)
43.38038 -+
43.38039 -+#define EMPTY_HOWTO(C) \
43.38040 -+  HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
43.38041 -+         NULL, FALSE, 0, 0, FALSE)
43.38042 -+
43.38043 -+#define HOWTO_PREPARE(relocation, symbol)               \
43.38044 -+  {                                                     \
43.38045 -+    if (symbol != NULL)                                 \
43.38046 -+      {                                                 \
43.38047 -+        if (bfd_is_com_section (symbol->section))       \
43.38048 -+          {                                             \
43.38049 -+            relocation = 0;                             \
43.38050 -+          }                                             \
43.38051 -+        else                                            \
43.38052 -+          {                                             \
43.38053 -+            relocation = symbol->value;                 \
43.38054 -+          }                                             \
43.38055 -+      }                                                 \
43.38056 -+  }
43.38057 -+
43.38058 -+unsigned int bfd_get_reloc_size (reloc_howto_type *);
43.38059 -+
43.38060 -+typedef struct relent_chain
43.38061 -+{
43.38062 -+  arelent relent;
43.38063 -+  struct relent_chain *next;
43.38064 -+}
43.38065 -+arelent_chain;
43.38066 -+
43.38067 -+bfd_reloc_status_type bfd_check_overflow
43.38068 -+   (enum complain_overflow how,
43.38069 -+    unsigned int bitsize,
43.38070 -+    unsigned int rightshift,
43.38071 -+    unsigned int addrsize,
43.38072 -+    bfd_vma relocation);
43.38073 -+
43.38074 -+bfd_reloc_status_type bfd_perform_relocation
43.38075 -+   (bfd *abfd,
43.38076 -+    arelent *reloc_entry,
43.38077 -+    void *data,
43.38078 -+    asection *input_section,
43.38079 -+    bfd *output_bfd,
43.38080 -+    char **error_message);
43.38081 -+
43.38082 -+bfd_reloc_status_type bfd_install_relocation
43.38083 -+   (bfd *abfd,
43.38084 -+    arelent *reloc_entry,
43.38085 -+    void *data, bfd_vma data_start,
43.38086 -+    asection *input_section,
43.38087 -+    char **error_message);
43.38088 -+
43.38089 -+enum bfd_reloc_code_real {
43.38090 -+  _dummy_first_bfd_reloc_code_real,
43.38091 -+
43.38092 -+
43.38093 -+/* Basic absolute relocations of N bits.  */
43.38094 -+  BFD_RELOC_64,
43.38095 -+  BFD_RELOC_32,
43.38096 -+  BFD_RELOC_26,
43.38097 -+  BFD_RELOC_24,
43.38098 -+  BFD_RELOC_16,
43.38099 -+  BFD_RELOC_14,
43.38100 -+  BFD_RELOC_8,
43.38101 -+
43.38102 -+/* PC-relative relocations.  Sometimes these are relative to the address
43.38103 -+of the relocation itself; sometimes they are relative to the start of
43.38104 -+the section containing the relocation.  It depends on the specific target.
43.38105 -+
43.38106 -+The 24-bit relocation is used in some Intel 960 configurations.  */
43.38107 -+  BFD_RELOC_64_PCREL,
43.38108 -+  BFD_RELOC_32_PCREL,
43.38109 -+  BFD_RELOC_24_PCREL,
43.38110 -+  BFD_RELOC_16_PCREL,
43.38111 -+  BFD_RELOC_12_PCREL,
43.38112 -+  BFD_RELOC_8_PCREL,
43.38113 -+
43.38114 -+/* Section relative relocations.  Some targets need this for DWARF2.  */
43.38115 -+  BFD_RELOC_32_SECREL,
43.38116 -+
43.38117 -+/* For ELF.  */
43.38118 -+  BFD_RELOC_32_GOT_PCREL,
43.38119 -+  BFD_RELOC_16_GOT_PCREL,
43.38120 -+  BFD_RELOC_8_GOT_PCREL,
43.38121 -+  BFD_RELOC_32_GOTOFF,
43.38122 -+  BFD_RELOC_16_GOTOFF,
43.38123 -+  BFD_RELOC_LO16_GOTOFF,
43.38124 -+  BFD_RELOC_HI16_GOTOFF,
43.38125 -+  BFD_RELOC_HI16_S_GOTOFF,
43.38126 -+  BFD_RELOC_8_GOTOFF,
43.38127 -+  BFD_RELOC_64_PLT_PCREL,
43.38128 -+  BFD_RELOC_32_PLT_PCREL,
43.38129 -+  BFD_RELOC_24_PLT_PCREL,
43.38130 -+  BFD_RELOC_16_PLT_PCREL,
43.38131 -+  BFD_RELOC_8_PLT_PCREL,
43.38132 -+  BFD_RELOC_64_PLTOFF,
43.38133 -+  BFD_RELOC_32_PLTOFF,
43.38134 -+  BFD_RELOC_16_PLTOFF,
43.38135 -+  BFD_RELOC_LO16_PLTOFF,
43.38136 -+  BFD_RELOC_HI16_PLTOFF,
43.38137 -+  BFD_RELOC_HI16_S_PLTOFF,
43.38138 -+  BFD_RELOC_8_PLTOFF,
43.38139 -+
43.38140 -+/* Relocations used by 68K ELF.  */
43.38141 -+  BFD_RELOC_68K_GLOB_DAT,
43.38142 -+  BFD_RELOC_68K_JMP_SLOT,
43.38143 -+  BFD_RELOC_68K_RELATIVE,
43.38144 -+
43.38145 -+/* Linkage-table relative.  */
43.38146 -+  BFD_RELOC_32_BASEREL,
43.38147 -+  BFD_RELOC_16_BASEREL,
43.38148 -+  BFD_RELOC_LO16_BASEREL,
43.38149 -+  BFD_RELOC_HI16_BASEREL,
43.38150 -+  BFD_RELOC_HI16_S_BASEREL,
43.38151 -+  BFD_RELOC_8_BASEREL,
43.38152 -+  BFD_RELOC_RVA,
43.38153 -+
43.38154 -+/* Absolute 8-bit relocation, but used to form an address like 0xFFnn.  */
43.38155 -+  BFD_RELOC_8_FFnn,
43.38156 -+
43.38157 -+/* These PC-relative relocations are stored as word displacements --
43.38158 -+i.e., byte displacements shifted right two bits.  The 30-bit word
43.38159 -+displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
43.38160 -+SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
43.38161 -+signed 16-bit displacement is used on the MIPS, and the 23-bit
43.38162 -+displacement is used on the Alpha.  */
43.38163 -+  BFD_RELOC_32_PCREL_S2,
43.38164 -+  BFD_RELOC_16_PCREL_S2,
43.38165 -+  BFD_RELOC_23_PCREL_S2,
43.38166 -+
43.38167 -+/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
43.38168 -+the target word.  These are used on the SPARC.  */
43.38169 -+  BFD_RELOC_HI22,
43.38170 -+  BFD_RELOC_LO10,
43.38171 -+
43.38172 -+/* For systems that allocate a Global Pointer register, these are
43.38173 -+displacements off that register.  These relocation types are
43.38174 -+handled specially, because the value the register will have is
43.38175 -+decided relatively late.  */
43.38176 -+  BFD_RELOC_GPREL16,
43.38177 -+  BFD_RELOC_GPREL32,
43.38178 -+
43.38179 -+/* Reloc types used for i960/b.out.  */
43.38180 -+  BFD_RELOC_I960_CALLJ,
43.38181 -+
43.38182 -+/* SPARC ELF relocations.  There is probably some overlap with other
43.38183 -+relocation types already defined.  */
43.38184 -+  BFD_RELOC_NONE,
43.38185 -+  BFD_RELOC_SPARC_WDISP22,
43.38186 -+  BFD_RELOC_SPARC22,
43.38187 -+  BFD_RELOC_SPARC13,
43.38188 -+  BFD_RELOC_SPARC_GOT10,
43.38189 -+  BFD_RELOC_SPARC_GOT13,
43.38190 -+  BFD_RELOC_SPARC_GOT22,
43.38191 -+  BFD_RELOC_SPARC_PC10,
43.38192 -+  BFD_RELOC_SPARC_PC22,
43.38193 -+  BFD_RELOC_SPARC_WPLT30,
43.38194 -+  BFD_RELOC_SPARC_COPY,
43.38195 -+  BFD_RELOC_SPARC_GLOB_DAT,
43.38196 -+  BFD_RELOC_SPARC_JMP_SLOT,
43.38197 -+  BFD_RELOC_SPARC_RELATIVE,
43.38198 -+  BFD_RELOC_SPARC_UA16,
43.38199 -+  BFD_RELOC_SPARC_UA32,
43.38200 -+  BFD_RELOC_SPARC_UA64,
43.38201 -+
43.38202 -+/* I think these are specific to SPARC a.out (e.g., Sun 4).  */
43.38203 -+  BFD_RELOC_SPARC_BASE13,
43.38204 -+  BFD_RELOC_SPARC_BASE22,
43.38205 -+
43.38206 -+/* SPARC64 relocations  */
43.38207 -+#define BFD_RELOC_SPARC_64 BFD_RELOC_64
43.38208 -+  BFD_RELOC_SPARC_10,
43.38209 -+  BFD_RELOC_SPARC_11,
43.38210 -+  BFD_RELOC_SPARC_OLO10,
43.38211 -+  BFD_RELOC_SPARC_HH22,
43.38212 -+  BFD_RELOC_SPARC_HM10,
43.38213 -+  BFD_RELOC_SPARC_LM22,
43.38214 -+  BFD_RELOC_SPARC_PC_HH22,
43.38215 -+  BFD_RELOC_SPARC_PC_HM10,
43.38216 -+  BFD_RELOC_SPARC_PC_LM22,
43.38217 -+  BFD_RELOC_SPARC_WDISP16,
43.38218 -+  BFD_RELOC_SPARC_WDISP19,
43.38219 -+  BFD_RELOC_SPARC_7,
43.38220 -+  BFD_RELOC_SPARC_6,
43.38221 -+  BFD_RELOC_SPARC_5,
43.38222 -+#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
43.38223 -+  BFD_RELOC_SPARC_PLT32,
43.38224 -+  BFD_RELOC_SPARC_PLT64,
43.38225 -+  BFD_RELOC_SPARC_HIX22,
43.38226 -+  BFD_RELOC_SPARC_LOX10,
43.38227 -+  BFD_RELOC_SPARC_H44,
43.38228 -+  BFD_RELOC_SPARC_M44,
43.38229 -+  BFD_RELOC_SPARC_L44,
43.38230 -+  BFD_RELOC_SPARC_REGISTER,
43.38231 -+
43.38232 -+/* SPARC little endian relocation  */
43.38233 -+  BFD_RELOC_SPARC_REV32,
43.38234 -+
43.38235 -+/* SPARC TLS relocations  */
43.38236 -+  BFD_RELOC_SPARC_TLS_GD_HI22,
43.38237 -+  BFD_RELOC_SPARC_TLS_GD_LO10,
43.38238 -+  BFD_RELOC_SPARC_TLS_GD_ADD,
43.38239 -+  BFD_RELOC_SPARC_TLS_GD_CALL,
43.38240 -+  BFD_RELOC_SPARC_TLS_LDM_HI22,
43.38241 -+  BFD_RELOC_SPARC_TLS_LDM_LO10,
43.38242 -+  BFD_RELOC_SPARC_TLS_LDM_ADD,
43.38243 -+  BFD_RELOC_SPARC_TLS_LDM_CALL,
43.38244 -+  BFD_RELOC_SPARC_TLS_LDO_HIX22,
43.38245 -+  BFD_RELOC_SPARC_TLS_LDO_LOX10,
43.38246 -+  BFD_RELOC_SPARC_TLS_LDO_ADD,
43.38247 -+  BFD_RELOC_SPARC_TLS_IE_HI22,
43.38248 -+  BFD_RELOC_SPARC_TLS_IE_LO10,
43.38249 -+  BFD_RELOC_SPARC_TLS_IE_LD,
43.38250 -+  BFD_RELOC_SPARC_TLS_IE_LDX,
43.38251 -+  BFD_RELOC_SPARC_TLS_IE_ADD,
43.38252 -+  BFD_RELOC_SPARC_TLS_LE_HIX22,
43.38253 -+  BFD_RELOC_SPARC_TLS_LE_LOX10,
43.38254 -+  BFD_RELOC_SPARC_TLS_DTPMOD32,
43.38255 -+  BFD_RELOC_SPARC_TLS_DTPMOD64,
43.38256 -+  BFD_RELOC_SPARC_TLS_DTPOFF32,
43.38257 -+  BFD_RELOC_SPARC_TLS_DTPOFF64,
43.38258 -+  BFD_RELOC_SPARC_TLS_TPOFF32,
43.38259 -+  BFD_RELOC_SPARC_TLS_TPOFF64,
43.38260 -+
43.38261 -+/* SPU Relocations.  */
43.38262 -+  BFD_RELOC_SPU_IMM7,
43.38263 -+  BFD_RELOC_SPU_IMM8,
43.38264 -+  BFD_RELOC_SPU_IMM10,
43.38265 -+  BFD_RELOC_SPU_IMM10W,
43.38266 -+  BFD_RELOC_SPU_IMM16,
43.38267 -+  BFD_RELOC_SPU_IMM16W,
43.38268 -+  BFD_RELOC_SPU_IMM18,
43.38269 -+  BFD_RELOC_SPU_PCREL9a,
43.38270 -+  BFD_RELOC_SPU_PCREL9b,
43.38271 -+  BFD_RELOC_SPU_PCREL16,
43.38272 -+  BFD_RELOC_SPU_LO16,
43.38273 -+  BFD_RELOC_SPU_HI16,
43.38274 -+  BFD_RELOC_SPU_PPU32,
43.38275 -+  BFD_RELOC_SPU_PPU64,
43.38276 -+
43.38277 -+/* Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
43.38278 -+"addend" in some special way.
43.38279 -+For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
43.38280 -+writing; when reading, it will be the absolute section symbol.  The
43.38281 -+addend is the displacement in bytes of the "lda" instruction from
43.38282 -+the "ldah" instruction (which is at the address of this reloc).  */
43.38283 -+  BFD_RELOC_ALPHA_GPDISP_HI16,
43.38284 -+
43.38285 -+/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
43.38286 -+with GPDISP_HI16 relocs.  The addend is ignored when writing the
43.38287 -+relocations out, and is filled in with the file's GP value on
43.38288 -+reading, for convenience.  */
43.38289 -+  BFD_RELOC_ALPHA_GPDISP_LO16,
43.38290 -+
43.38291 -+/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
43.38292 -+relocation except that there is no accompanying GPDISP_LO16
43.38293 -+relocation.  */
43.38294 -+  BFD_RELOC_ALPHA_GPDISP,
43.38295 -+
43.38296 -+/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
43.38297 -+the assembler turns it into a LDQ instruction to load the address of
43.38298 -+the symbol, and then fills in a register in the real instruction.
43.38299 -+
43.38300 -+The LITERAL reloc, at the LDQ instruction, refers to the .lita
43.38301 -+section symbol.  The addend is ignored when writing, but is filled
43.38302 -+in with the file's GP value on reading, for convenience, as with the
43.38303 -+GPDISP_LO16 reloc.
43.38304 -+
43.38305 -+The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
43.38306 -+It should refer to the symbol to be referenced, as with 16_GOTOFF,
43.38307 -+but it generates output not based on the position within the .got
43.38308 -+section, but relative to the GP value chosen for the file during the
43.38309 -+final link stage.
43.38310 -+
43.38311 -+The LITUSE reloc, on the instruction using the loaded address, gives
43.38312 -+information to the linker that it might be able to use to optimize
43.38313 -+away some literal section references.  The symbol is ignored (read
43.38314 -+as the absolute section symbol), and the "addend" indicates the type
43.38315 -+of instruction using the register:
43.38316 -+1 - "memory" fmt insn
43.38317 -+2 - byte-manipulation (byte offset reg)
43.38318 -+3 - jsr (target of branch)  */
43.38319 -+  BFD_RELOC_ALPHA_LITERAL,
43.38320 -+  BFD_RELOC_ALPHA_ELF_LITERAL,
43.38321 -+  BFD_RELOC_ALPHA_LITUSE,
43.38322 -+
43.38323 -+/* The HINT relocation indicates a value that should be filled into the
43.38324 -+"hint" field of a jmp/jsr/ret instruction, for possible branch-
43.38325 -+prediction logic which may be provided on some processors.  */
43.38326 -+  BFD_RELOC_ALPHA_HINT,
43.38327 -+
43.38328 -+/* The LINKAGE relocation outputs a linkage pair in the object file,
43.38329 -+which is filled by the linker.  */
43.38330 -+  BFD_RELOC_ALPHA_LINKAGE,
43.38331 -+
43.38332 -+/* The CODEADDR relocation outputs a STO_CA in the object file,
43.38333 -+which is filled by the linker.  */
43.38334 -+  BFD_RELOC_ALPHA_CODEADDR,
43.38335 -+
43.38336 -+/* The GPREL_HI/LO relocations together form a 32-bit offset from the
43.38337 -+GP register.  */
43.38338 -+  BFD_RELOC_ALPHA_GPREL_HI16,
43.38339 -+  BFD_RELOC_ALPHA_GPREL_LO16,
43.38340 -+
43.38341 -+/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
43.38342 -+share a common GP, and the target address is adjusted for
43.38343 -+STO_ALPHA_STD_GPLOAD.  */
43.38344 -+  BFD_RELOC_ALPHA_BRSGP,
43.38345 -+
43.38346 -+/* Alpha thread-local storage relocations.  */
43.38347 -+  BFD_RELOC_ALPHA_TLSGD,
43.38348 -+  BFD_RELOC_ALPHA_TLSLDM,
43.38349 -+  BFD_RELOC_ALPHA_DTPMOD64,
43.38350 -+  BFD_RELOC_ALPHA_GOTDTPREL16,
43.38351 -+  BFD_RELOC_ALPHA_DTPREL64,
43.38352 -+  BFD_RELOC_ALPHA_DTPREL_HI16,
43.38353 -+  BFD_RELOC_ALPHA_DTPREL_LO16,
43.38354 -+  BFD_RELOC_ALPHA_DTPREL16,
43.38355 -+  BFD_RELOC_ALPHA_GOTTPREL16,
43.38356 -+  BFD_RELOC_ALPHA_TPREL64,
43.38357 -+  BFD_RELOC_ALPHA_TPREL_HI16,
43.38358 -+  BFD_RELOC_ALPHA_TPREL_LO16,
43.38359 -+  BFD_RELOC_ALPHA_TPREL16,
43.38360 -+
43.38361 -+/* Bits 27..2 of the relocation address shifted right 2 bits;
43.38362 -+simple reloc otherwise.  */
43.38363 -+  BFD_RELOC_MIPS_JMP,
43.38364 -+
43.38365 -+/* The MIPS16 jump instruction.  */
43.38366 -+  BFD_RELOC_MIPS16_JMP,
43.38367 -+
43.38368 -+/* MIPS16 GP relative reloc.  */
43.38369 -+  BFD_RELOC_MIPS16_GPREL,
43.38370 -+
43.38371 -+/* High 16 bits of 32-bit value; simple reloc.  */
43.38372 -+  BFD_RELOC_HI16,
43.38373 -+
43.38374 -+/* High 16 bits of 32-bit value but the low 16 bits will be sign
43.38375 -+extended and added to form the final result.  If the low 16
43.38376 -+bits form a negative number, we need to add one to the high value
43.38377 -+to compensate for the borrow when the low bits are added.  */
43.38378 -+  BFD_RELOC_HI16_S,
43.38379 -+
43.38380 -+/* Low 16 bits.  */
43.38381 -+  BFD_RELOC_LO16,
43.38382 -+
43.38383 -+/* High 16 bits of 32-bit pc-relative value  */
43.38384 -+  BFD_RELOC_HI16_PCREL,
43.38385 -+
43.38386 -+/* High 16 bits of 32-bit pc-relative value, adjusted  */
43.38387 -+  BFD_RELOC_HI16_S_PCREL,
43.38388 -+
43.38389 -+/* Low 16 bits of pc-relative value  */
43.38390 -+  BFD_RELOC_LO16_PCREL,
43.38391 -+
43.38392 -+/* MIPS16 high 16 bits of 32-bit value.  */
43.38393 -+  BFD_RELOC_MIPS16_HI16,
43.38394 -+
43.38395 -+/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
43.38396 -+extended and added to form the final result.  If the low 16
43.38397 -+bits form a negative number, we need to add one to the high value
43.38398 -+to compensate for the borrow when the low bits are added.  */
43.38399 -+  BFD_RELOC_MIPS16_HI16_S,
43.38400 -+
43.38401 -+/* MIPS16 low 16 bits.  */
43.38402 -+  BFD_RELOC_MIPS16_LO16,
43.38403 -+
43.38404 -+/* Relocation against a MIPS literal section.  */
43.38405 -+  BFD_RELOC_MIPS_LITERAL,
43.38406 -+
43.38407 -+/* MIPS ELF relocations.  */
43.38408 -+  BFD_RELOC_MIPS_GOT16,
43.38409 -+  BFD_RELOC_MIPS_CALL16,
43.38410 -+  BFD_RELOC_MIPS_GOT_HI16,
43.38411 -+  BFD_RELOC_MIPS_GOT_LO16,
43.38412 -+  BFD_RELOC_MIPS_CALL_HI16,
43.38413 -+  BFD_RELOC_MIPS_CALL_LO16,
43.38414 -+  BFD_RELOC_MIPS_SUB,
43.38415 -+  BFD_RELOC_MIPS_GOT_PAGE,
43.38416 -+  BFD_RELOC_MIPS_GOT_OFST,
43.38417 -+  BFD_RELOC_MIPS_GOT_DISP,
43.38418 -+  BFD_RELOC_MIPS_SHIFT5,
43.38419 -+  BFD_RELOC_MIPS_SHIFT6,
43.38420 -+  BFD_RELOC_MIPS_INSERT_A,
43.38421 -+  BFD_RELOC_MIPS_INSERT_B,
43.38422 -+  BFD_RELOC_MIPS_DELETE,
43.38423 -+  BFD_RELOC_MIPS_HIGHEST,
43.38424 -+  BFD_RELOC_MIPS_HIGHER,
43.38425 -+  BFD_RELOC_MIPS_SCN_DISP,
43.38426 -+  BFD_RELOC_MIPS_REL16,
43.38427 -+  BFD_RELOC_MIPS_RELGOT,
43.38428 -+  BFD_RELOC_MIPS_JALR,
43.38429 -+  BFD_RELOC_MIPS_TLS_DTPMOD32,
43.38430 -+  BFD_RELOC_MIPS_TLS_DTPREL32,
43.38431 -+  BFD_RELOC_MIPS_TLS_DTPMOD64,
43.38432 -+  BFD_RELOC_MIPS_TLS_DTPREL64,
43.38433 -+  BFD_RELOC_MIPS_TLS_GD,
43.38434 -+  BFD_RELOC_MIPS_TLS_LDM,
43.38435 -+  BFD_RELOC_MIPS_TLS_DTPREL_HI16,
43.38436 -+  BFD_RELOC_MIPS_TLS_DTPREL_LO16,
43.38437 -+  BFD_RELOC_MIPS_TLS_GOTTPREL,
43.38438 -+  BFD_RELOC_MIPS_TLS_TPREL32,
43.38439 -+  BFD_RELOC_MIPS_TLS_TPREL64,
43.38440 -+  BFD_RELOC_MIPS_TLS_TPREL_HI16,
43.38441 -+  BFD_RELOC_MIPS_TLS_TPREL_LO16,
43.38442 -+
43.38443 -+
43.38444 -+/* MIPS ELF relocations (VxWorks extensions).  */
43.38445 -+  BFD_RELOC_MIPS_COPY,
43.38446 -+  BFD_RELOC_MIPS_JUMP_SLOT,
43.38447 -+
43.38448 -+
43.38449 -+/* Fujitsu Frv Relocations.  */
43.38450 -+  BFD_RELOC_FRV_LABEL16,
43.38451 -+  BFD_RELOC_FRV_LABEL24,
43.38452 -+  BFD_RELOC_FRV_LO16,
43.38453 -+  BFD_RELOC_FRV_HI16,
43.38454 -+  BFD_RELOC_FRV_GPREL12,
43.38455 -+  BFD_RELOC_FRV_GPRELU12,
43.38456 -+  BFD_RELOC_FRV_GPREL32,
43.38457 -+  BFD_RELOC_FRV_GPRELHI,
43.38458 -+  BFD_RELOC_FRV_GPRELLO,
43.38459 -+  BFD_RELOC_FRV_GOT12,
43.38460 -+  BFD_RELOC_FRV_GOTHI,
43.38461 -+  BFD_RELOC_FRV_GOTLO,
43.38462 -+  BFD_RELOC_FRV_FUNCDESC,
43.38463 -+  BFD_RELOC_FRV_FUNCDESC_GOT12,
43.38464 -+  BFD_RELOC_FRV_FUNCDESC_GOTHI,
43.38465 -+  BFD_RELOC_FRV_FUNCDESC_GOTLO,
43.38466 -+  BFD_RELOC_FRV_FUNCDESC_VALUE,
43.38467 -+  BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
43.38468 -+  BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
43.38469 -+  BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
43.38470 -+  BFD_RELOC_FRV_GOTOFF12,
43.38471 -+  BFD_RELOC_FRV_GOTOFFHI,
43.38472 -+  BFD_RELOC_FRV_GOTOFFLO,
43.38473 -+  BFD_RELOC_FRV_GETTLSOFF,
43.38474 -+  BFD_RELOC_FRV_TLSDESC_VALUE,
43.38475 -+  BFD_RELOC_FRV_GOTTLSDESC12,
43.38476 -+  BFD_RELOC_FRV_GOTTLSDESCHI,
43.38477 -+  BFD_RELOC_FRV_GOTTLSDESCLO,
43.38478 -+  BFD_RELOC_FRV_TLSMOFF12,
43.38479 -+  BFD_RELOC_FRV_TLSMOFFHI,
43.38480 -+  BFD_RELOC_FRV_TLSMOFFLO,
43.38481 -+  BFD_RELOC_FRV_GOTTLSOFF12,
43.38482 -+  BFD_RELOC_FRV_GOTTLSOFFHI,
43.38483 -+  BFD_RELOC_FRV_GOTTLSOFFLO,
43.38484 -+  BFD_RELOC_FRV_TLSOFF,
43.38485 -+  BFD_RELOC_FRV_TLSDESC_RELAX,
43.38486 -+  BFD_RELOC_FRV_GETTLSOFF_RELAX,
43.38487 -+  BFD_RELOC_FRV_TLSOFF_RELAX,
43.38488 -+  BFD_RELOC_FRV_TLSMOFF,
43.38489 -+
43.38490 -+
43.38491 -+/* This is a 24bit GOT-relative reloc for the mn10300.  */
43.38492 -+  BFD_RELOC_MN10300_GOTOFF24,
43.38493 -+
43.38494 -+/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
43.38495 -+in the instruction.  */
43.38496 -+  BFD_RELOC_MN10300_GOT32,
43.38497 -+
43.38498 -+/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
43.38499 -+in the instruction.  */
43.38500 -+  BFD_RELOC_MN10300_GOT24,
43.38501 -+
43.38502 -+/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
43.38503 -+in the instruction.  */
43.38504 -+  BFD_RELOC_MN10300_GOT16,
43.38505 -+
43.38506 -+/* Copy symbol at runtime.  */
43.38507 -+  BFD_RELOC_MN10300_COPY,
43.38508 -+
43.38509 -+/* Create GOT entry.  */
43.38510 -+  BFD_RELOC_MN10300_GLOB_DAT,
43.38511 -+
43.38512 -+/* Create PLT entry.  */
43.38513 -+  BFD_RELOC_MN10300_JMP_SLOT,
43.38514 -+
43.38515 -+/* Adjust by program base.  */
43.38516 -+  BFD_RELOC_MN10300_RELATIVE,
43.38517 -+
43.38518 -+
43.38519 -+/* i386/elf relocations  */
43.38520 -+  BFD_RELOC_386_GOT32,
43.38521 -+  BFD_RELOC_386_PLT32,
43.38522 -+  BFD_RELOC_386_COPY,
43.38523 -+  BFD_RELOC_386_GLOB_DAT,
43.38524 -+  BFD_RELOC_386_JUMP_SLOT,
43.38525 -+  BFD_RELOC_386_RELATIVE,
43.38526 -+  BFD_RELOC_386_GOTOFF,
43.38527 -+  BFD_RELOC_386_GOTPC,
43.38528 -+  BFD_RELOC_386_TLS_TPOFF,
43.38529 -+  BFD_RELOC_386_TLS_IE,
43.38530 -+  BFD_RELOC_386_TLS_GOTIE,
43.38531 -+  BFD_RELOC_386_TLS_LE,
43.38532 -+  BFD_RELOC_386_TLS_GD,
43.38533 -+  BFD_RELOC_386_TLS_LDM,
43.38534 -+  BFD_RELOC_386_TLS_LDO_32,
43.38535 -+  BFD_RELOC_386_TLS_IE_32,
43.38536 -+  BFD_RELOC_386_TLS_LE_32,
43.38537 -+  BFD_RELOC_386_TLS_DTPMOD32,
43.38538 -+  BFD_RELOC_386_TLS_DTPOFF32,
43.38539 -+  BFD_RELOC_386_TLS_TPOFF32,
43.38540 -+  BFD_RELOC_386_TLS_GOTDESC,
43.38541 -+  BFD_RELOC_386_TLS_DESC_CALL,
43.38542 -+  BFD_RELOC_386_TLS_DESC,
43.38543 -+
43.38544 -+/* x86-64/elf relocations  */
43.38545 -+  BFD_RELOC_X86_64_GOT32,
43.38546 -+  BFD_RELOC_X86_64_PLT32,
43.38547 -+  BFD_RELOC_X86_64_COPY,
43.38548 -+  BFD_RELOC_X86_64_GLOB_DAT,
43.38549 -+  BFD_RELOC_X86_64_JUMP_SLOT,
43.38550 -+  BFD_RELOC_X86_64_RELATIVE,
43.38551 -+  BFD_RELOC_X86_64_GOTPCREL,
43.38552 -+  BFD_RELOC_X86_64_32S,
43.38553 -+  BFD_RELOC_X86_64_DTPMOD64,
43.38554 -+  BFD_RELOC_X86_64_DTPOFF64,
43.38555 -+  BFD_RELOC_X86_64_TPOFF64,
43.38556 -+  BFD_RELOC_X86_64_TLSGD,
43.38557 -+  BFD_RELOC_X86_64_TLSLD,
43.38558 -+  BFD_RELOC_X86_64_DTPOFF32,
43.38559 -+  BFD_RELOC_X86_64_GOTTPOFF,
43.38560 -+  BFD_RELOC_X86_64_TPOFF32,
43.38561 -+  BFD_RELOC_X86_64_GOTOFF64,
43.38562 -+  BFD_RELOC_X86_64_GOTPC32,
43.38563 -+  BFD_RELOC_X86_64_GOT64,
43.38564 -+  BFD_RELOC_X86_64_GOTPCREL64,
43.38565 -+  BFD_RELOC_X86_64_GOTPC64,
43.38566 -+  BFD_RELOC_X86_64_GOTPLT64,
43.38567 -+  BFD_RELOC_X86_64_PLTOFF64,
43.38568 -+  BFD_RELOC_X86_64_GOTPC32_TLSDESC,
43.38569 -+  BFD_RELOC_X86_64_TLSDESC_CALL,
43.38570 -+  BFD_RELOC_X86_64_TLSDESC,
43.38571 -+
43.38572 -+/* ns32k relocations  */
43.38573 -+  BFD_RELOC_NS32K_IMM_8,
43.38574 -+  BFD_RELOC_NS32K_IMM_16,
43.38575 -+  BFD_RELOC_NS32K_IMM_32,
43.38576 -+  BFD_RELOC_NS32K_IMM_8_PCREL,
43.38577 -+  BFD_RELOC_NS32K_IMM_16_PCREL,
43.38578 -+  BFD_RELOC_NS32K_IMM_32_PCREL,
43.38579 -+  BFD_RELOC_NS32K_DISP_8,
43.38580 -+  BFD_RELOC_NS32K_DISP_16,
43.38581 -+  BFD_RELOC_NS32K_DISP_32,
43.38582 -+  BFD_RELOC_NS32K_DISP_8_PCREL,
43.38583 -+  BFD_RELOC_NS32K_DISP_16_PCREL,
43.38584 -+  BFD_RELOC_NS32K_DISP_32_PCREL,
43.38585 -+
43.38586 -+/* PDP11 relocations  */
43.38587 -+  BFD_RELOC_PDP11_DISP_8_PCREL,
43.38588 -+  BFD_RELOC_PDP11_DISP_6_PCREL,
43.38589 -+
43.38590 -+/* Picojava relocs.  Not all of these appear in object files.  */
43.38591 -+  BFD_RELOC_PJ_CODE_HI16,
43.38592 -+  BFD_RELOC_PJ_CODE_LO16,
43.38593 -+  BFD_RELOC_PJ_CODE_DIR16,
43.38594 -+  BFD_RELOC_PJ_CODE_DIR32,
43.38595 -+  BFD_RELOC_PJ_CODE_REL16,
43.38596 -+  BFD_RELOC_PJ_CODE_REL32,
43.38597 -+
43.38598 -+/* Power(rs6000) and PowerPC relocations.  */
43.38599 -+  BFD_RELOC_PPC_B26,
43.38600 -+  BFD_RELOC_PPC_BA26,
43.38601 -+  BFD_RELOC_PPC_TOC16,
43.38602 -+  BFD_RELOC_PPC_B16,
43.38603 -+  BFD_RELOC_PPC_B16_BRTAKEN,
43.38604 -+  BFD_RELOC_PPC_B16_BRNTAKEN,
43.38605 -+  BFD_RELOC_PPC_BA16,
43.38606 -+  BFD_RELOC_PPC_BA16_BRTAKEN,
43.38607 -+  BFD_RELOC_PPC_BA16_BRNTAKEN,
43.38608 -+  BFD_RELOC_PPC_COPY,
43.38609 -+  BFD_RELOC_PPC_GLOB_DAT,
43.38610 -+  BFD_RELOC_PPC_JMP_SLOT,
43.38611 -+  BFD_RELOC_PPC_RELATIVE,
43.38612 -+  BFD_RELOC_PPC_LOCAL24PC,
43.38613 -+  BFD_RELOC_PPC_EMB_NADDR32,
43.38614 -+  BFD_RELOC_PPC_EMB_NADDR16,
43.38615 -+  BFD_RELOC_PPC_EMB_NADDR16_LO,
43.38616 -+  BFD_RELOC_PPC_EMB_NADDR16_HI,
43.38617 -+  BFD_RELOC_PPC_EMB_NADDR16_HA,
43.38618 -+  BFD_RELOC_PPC_EMB_SDAI16,
43.38619 -+  BFD_RELOC_PPC_EMB_SDA2I16,
43.38620 -+  BFD_RELOC_PPC_EMB_SDA2REL,
43.38621 -+  BFD_RELOC_PPC_EMB_SDA21,
43.38622 -+  BFD_RELOC_PPC_EMB_MRKREF,
43.38623 -+  BFD_RELOC_PPC_EMB_RELSEC16,
43.38624 -+  BFD_RELOC_PPC_EMB_RELST_LO,
43.38625 -+  BFD_RELOC_PPC_EMB_RELST_HI,
43.38626 -+  BFD_RELOC_PPC_EMB_RELST_HA,
43.38627 -+  BFD_RELOC_PPC_EMB_BIT_FLD,
43.38628 -+  BFD_RELOC_PPC_EMB_RELSDA,
43.38629 -+  BFD_RELOC_PPC64_HIGHER,
43.38630 -+  BFD_RELOC_PPC64_HIGHER_S,
43.38631 -+  BFD_RELOC_PPC64_HIGHEST,
43.38632 -+  BFD_RELOC_PPC64_HIGHEST_S,
43.38633 -+  BFD_RELOC_PPC64_TOC16_LO,
43.38634 -+  BFD_RELOC_PPC64_TOC16_HI,
43.38635 -+  BFD_RELOC_PPC64_TOC16_HA,
43.38636 -+  BFD_RELOC_PPC64_TOC,
43.38637 -+  BFD_RELOC_PPC64_PLTGOT16,
43.38638 -+  BFD_RELOC_PPC64_PLTGOT16_LO,
43.38639 -+  BFD_RELOC_PPC64_PLTGOT16_HI,
43.38640 -+  BFD_RELOC_PPC64_PLTGOT16_HA,
43.38641 -+  BFD_RELOC_PPC64_ADDR16_DS,
43.38642 -+  BFD_RELOC_PPC64_ADDR16_LO_DS,
43.38643 -+  BFD_RELOC_PPC64_GOT16_DS,
43.38644 -+  BFD_RELOC_PPC64_GOT16_LO_DS,
43.38645 -+  BFD_RELOC_PPC64_PLT16_LO_DS,
43.38646 -+  BFD_RELOC_PPC64_SECTOFF_DS,
43.38647 -+  BFD_RELOC_PPC64_SECTOFF_LO_DS,
43.38648 -+  BFD_RELOC_PPC64_TOC16_DS,
43.38649 -+  BFD_RELOC_PPC64_TOC16_LO_DS,
43.38650 -+  BFD_RELOC_PPC64_PLTGOT16_DS,
43.38651 -+  BFD_RELOC_PPC64_PLTGOT16_LO_DS,
43.38652 -+
43.38653 -+/* PowerPC and PowerPC64 thread-local storage relocations.  */
43.38654 -+  BFD_RELOC_PPC_TLS,
43.38655 -+  BFD_RELOC_PPC_DTPMOD,
43.38656 -+  BFD_RELOC_PPC_TPREL16,
43.38657 -+  BFD_RELOC_PPC_TPREL16_LO,
43.38658 -+  BFD_RELOC_PPC_TPREL16_HI,
43.38659 -+  BFD_RELOC_PPC_TPREL16_HA,
43.38660 -+  BFD_RELOC_PPC_TPREL,
43.38661 -+  BFD_RELOC_PPC_DTPREL16,
43.38662 -+  BFD_RELOC_PPC_DTPREL16_LO,
43.38663 -+  BFD_RELOC_PPC_DTPREL16_HI,
43.38664 -+  BFD_RELOC_PPC_DTPREL16_HA,
43.38665 -+  BFD_RELOC_PPC_DTPREL,
43.38666 -+  BFD_RELOC_PPC_GOT_TLSGD16,
43.38667 -+  BFD_RELOC_PPC_GOT_TLSGD16_LO,
43.38668 -+  BFD_RELOC_PPC_GOT_TLSGD16_HI,
43.38669 -+  BFD_RELOC_PPC_GOT_TLSGD16_HA,
43.38670 -+  BFD_RELOC_PPC_GOT_TLSLD16,
43.38671 -+  BFD_RELOC_PPC_GOT_TLSLD16_LO,
43.38672 -+  BFD_RELOC_PPC_GOT_TLSLD16_HI,
43.38673 -+  BFD_RELOC_PPC_GOT_TLSLD16_HA,
43.38674 -+  BFD_RELOC_PPC_GOT_TPREL16,
43.38675 -+  BFD_RELOC_PPC_GOT_TPREL16_LO,
43.38676 -+  BFD_RELOC_PPC_GOT_TPREL16_HI,
43.38677 -+  BFD_RELOC_PPC_GOT_TPREL16_HA,
43.38678 -+  BFD_RELOC_PPC_GOT_DTPREL16,
43.38679 -+  BFD_RELOC_PPC_GOT_DTPREL16_LO,
43.38680 -+  BFD_RELOC_PPC_GOT_DTPREL16_HI,
43.38681 -+  BFD_RELOC_PPC_GOT_DTPREL16_HA,
43.38682 -+  BFD_RELOC_PPC64_TPREL16_DS,
43.38683 -+  BFD_RELOC_PPC64_TPREL16_LO_DS,
43.38684 -+  BFD_RELOC_PPC64_TPREL16_HIGHER,
43.38685 -+  BFD_RELOC_PPC64_TPREL16_HIGHERA,
43.38686 -+  BFD_RELOC_PPC64_TPREL16_HIGHEST,
43.38687 -+  BFD_RELOC_PPC64_TPREL16_HIGHESTA,
43.38688 -+  BFD_RELOC_PPC64_DTPREL16_DS,
43.38689 -+  BFD_RELOC_PPC64_DTPREL16_LO_DS,
43.38690 -+  BFD_RELOC_PPC64_DTPREL16_HIGHER,
43.38691 -+  BFD_RELOC_PPC64_DTPREL16_HIGHERA,
43.38692 -+  BFD_RELOC_PPC64_DTPREL16_HIGHEST,
43.38693 -+  BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
43.38694 -+
43.38695 -+/* IBM 370/390 relocations  */
43.38696 -+  BFD_RELOC_I370_D12,
43.38697 -+
43.38698 -+/* The type of reloc used to build a constructor table - at the moment
43.38699 -+probably a 32 bit wide absolute relocation, but the target can choose.
43.38700 -+It generally does map to one of the other relocation types.  */
43.38701 -+  BFD_RELOC_CTOR,
43.38702 -+
43.38703 -+/* ARM 26 bit pc-relative branch.  The lowest two bits must be zero and are
43.38704 -+not stored in the instruction.  */
43.38705 -+  BFD_RELOC_ARM_PCREL_BRANCH,
43.38706 -+
43.38707 -+/* ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
43.38708 -+not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
43.38709 -+field in the instruction.  */
43.38710 -+  BFD_RELOC_ARM_PCREL_BLX,
43.38711 -+
43.38712 -+/* Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
43.38713 -+not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
43.38714 -+field in the instruction.  */
43.38715 -+  BFD_RELOC_THUMB_PCREL_BLX,
43.38716 -+
43.38717 -+/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.  */
43.38718 -+  BFD_RELOC_ARM_PCREL_CALL,
43.38719 -+
43.38720 -+/* ARM 26-bit pc-relative branch for B or conditional BL instruction.  */
43.38721 -+  BFD_RELOC_ARM_PCREL_JUMP,
43.38722 -+
43.38723 -+/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
43.38724 -+The lowest bit must be zero and is not stored in the instruction.
43.38725 -+Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
43.38726 -+"nn" one smaller in all cases.  Note further that BRANCH23
43.38727 -+corresponds to R_ARM_THM_CALL.  */
43.38728 -+  BFD_RELOC_THUMB_PCREL_BRANCH7,
43.38729 -+  BFD_RELOC_THUMB_PCREL_BRANCH9,
43.38730 -+  BFD_RELOC_THUMB_PCREL_BRANCH12,
43.38731 -+  BFD_RELOC_THUMB_PCREL_BRANCH20,
43.38732 -+  BFD_RELOC_THUMB_PCREL_BRANCH23,
43.38733 -+  BFD_RELOC_THUMB_PCREL_BRANCH25,
43.38734 -+
43.38735 -+/* 12-bit immediate offset, used in ARM-format ldr and str instructions.  */
43.38736 -+  BFD_RELOC_ARM_OFFSET_IMM,
43.38737 -+
43.38738 -+/* 5-bit immediate offset, used in Thumb-format ldr and str instructions.  */
43.38739 -+  BFD_RELOC_ARM_THUMB_OFFSET,
43.38740 -+
43.38741 -+/* Pc-relative or absolute relocation depending on target.  Used for
43.38742 -+entries in .init_array sections.  */
43.38743 -+  BFD_RELOC_ARM_TARGET1,
43.38744 -+
43.38745 -+/* Read-only segment base relative address.  */
43.38746 -+  BFD_RELOC_ARM_ROSEGREL32,
43.38747 -+
43.38748 -+/* Data segment base relative address.  */
43.38749 -+  BFD_RELOC_ARM_SBREL32,
43.38750 -+
43.38751 -+/* This reloc is used for references to RTTI data from exception handling
43.38752 -+tables.  The actual definition depends on the target.  It may be a
43.38753 -+pc-relative or some form of GOT-indirect relocation.  */
43.38754 -+  BFD_RELOC_ARM_TARGET2,
43.38755 -+
43.38756 -+/* 31-bit PC relative address.  */
43.38757 -+  BFD_RELOC_ARM_PREL31,
43.38758 -+
43.38759 -+/* Low and High halfword relocations for MOVW and MOVT instructions.  */
43.38760 -+  BFD_RELOC_ARM_MOVW,
43.38761 -+  BFD_RELOC_ARM_MOVT,
43.38762 -+  BFD_RELOC_ARM_MOVW_PCREL,
43.38763 -+  BFD_RELOC_ARM_MOVT_PCREL,
43.38764 -+  BFD_RELOC_ARM_THUMB_MOVW,
43.38765 -+  BFD_RELOC_ARM_THUMB_MOVT,
43.38766 -+  BFD_RELOC_ARM_THUMB_MOVW_PCREL,
43.38767 -+  BFD_RELOC_ARM_THUMB_MOVT_PCREL,
43.38768 -+
43.38769 -+/* Relocations for setting up GOTs and PLTs for shared libraries.  */
43.38770 -+  BFD_RELOC_ARM_JUMP_SLOT,
43.38771 -+  BFD_RELOC_ARM_GLOB_DAT,
43.38772 -+  BFD_RELOC_ARM_GOT32,
43.38773 -+  BFD_RELOC_ARM_PLT32,
43.38774 -+  BFD_RELOC_ARM_RELATIVE,
43.38775 -+  BFD_RELOC_ARM_GOTOFF,
43.38776 -+  BFD_RELOC_ARM_GOTPC,
43.38777 -+
43.38778 -+/* ARM thread-local storage relocations.  */
43.38779 -+  BFD_RELOC_ARM_TLS_GD32,
43.38780 -+  BFD_RELOC_ARM_TLS_LDO32,
43.38781 -+  BFD_RELOC_ARM_TLS_LDM32,
43.38782 -+  BFD_RELOC_ARM_TLS_DTPOFF32,
43.38783 -+  BFD_RELOC_ARM_TLS_DTPMOD32,
43.38784 -+  BFD_RELOC_ARM_TLS_TPOFF32,
43.38785 -+  BFD_RELOC_ARM_TLS_IE32,
43.38786 -+  BFD_RELOC_ARM_TLS_LE32,
43.38787 -+
43.38788 -+/* ARM group relocations.  */
43.38789 -+  BFD_RELOC_ARM_ALU_PC_G0_NC,
43.38790 -+  BFD_RELOC_ARM_ALU_PC_G0,
43.38791 -+  BFD_RELOC_ARM_ALU_PC_G1_NC,
43.38792 -+  BFD_RELOC_ARM_ALU_PC_G1,
43.38793 -+  BFD_RELOC_ARM_ALU_PC_G2,
43.38794 -+  BFD_RELOC_ARM_LDR_PC_G0,
43.38795 -+  BFD_RELOC_ARM_LDR_PC_G1,
43.38796 -+  BFD_RELOC_ARM_LDR_PC_G2,
43.38797 -+  BFD_RELOC_ARM_LDRS_PC_G0,
43.38798 -+  BFD_RELOC_ARM_LDRS_PC_G1,
43.38799 -+  BFD_RELOC_ARM_LDRS_PC_G2,
43.38800 -+  BFD_RELOC_ARM_LDC_PC_G0,
43.38801 -+  BFD_RELOC_ARM_LDC_PC_G1,
43.38802 -+  BFD_RELOC_ARM_LDC_PC_G2,
43.38803 -+  BFD_RELOC_ARM_ALU_SB_G0_NC,
43.38804 -+  BFD_RELOC_ARM_ALU_SB_G0,
43.38805 -+  BFD_RELOC_ARM_ALU_SB_G1_NC,
43.38806 -+  BFD_RELOC_ARM_ALU_SB_G1,
43.38807 -+  BFD_RELOC_ARM_ALU_SB_G2,
43.38808 -+  BFD_RELOC_ARM_LDR_SB_G0,
43.38809 -+  BFD_RELOC_ARM_LDR_SB_G1,
43.38810 -+  BFD_RELOC_ARM_LDR_SB_G2,
43.38811 -+  BFD_RELOC_ARM_LDRS_SB_G0,
43.38812 -+  BFD_RELOC_ARM_LDRS_SB_G1,
43.38813 -+  BFD_RELOC_ARM_LDRS_SB_G2,
43.38814 -+  BFD_RELOC_ARM_LDC_SB_G0,
43.38815 -+  BFD_RELOC_ARM_LDC_SB_G1,
43.38816 -+  BFD_RELOC_ARM_LDC_SB_G2,
43.38817 -+
43.38818 -+/* These relocs are only used within the ARM assembler.  They are not
43.38819 -+(at present) written to any object files.  */
43.38820 -+  BFD_RELOC_ARM_IMMEDIATE,
43.38821 -+  BFD_RELOC_ARM_ADRL_IMMEDIATE,
43.38822 -+  BFD_RELOC_ARM_T32_IMMEDIATE,
43.38823 -+  BFD_RELOC_ARM_T32_ADD_IMM,
43.38824 -+  BFD_RELOC_ARM_T32_IMM12,
43.38825 -+  BFD_RELOC_ARM_T32_ADD_PC12,
43.38826 -+  BFD_RELOC_ARM_SHIFT_IMM,
43.38827 -+  BFD_RELOC_ARM_SMC,
43.38828 -+  BFD_RELOC_ARM_SWI,
43.38829 -+  BFD_RELOC_ARM_MULTI,
43.38830 -+  BFD_RELOC_ARM_CP_OFF_IMM,
43.38831 -+  BFD_RELOC_ARM_CP_OFF_IMM_S2,
43.38832 -+  BFD_RELOC_ARM_T32_CP_OFF_IMM,
43.38833 -+  BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
43.38834 -+  BFD_RELOC_ARM_ADR_IMM,
43.38835 -+  BFD_RELOC_ARM_LDR_IMM,
43.38836 -+  BFD_RELOC_ARM_LITERAL,
43.38837 -+  BFD_RELOC_ARM_IN_POOL,
43.38838 -+  BFD_RELOC_ARM_OFFSET_IMM8,
43.38839 -+  BFD_RELOC_ARM_T32_OFFSET_U8,
43.38840 -+  BFD_RELOC_ARM_T32_OFFSET_IMM,
43.38841 -+  BFD_RELOC_ARM_HWLITERAL,
43.38842 -+  BFD_RELOC_ARM_THUMB_ADD,
43.38843 -+  BFD_RELOC_ARM_THUMB_IMM,
43.38844 -+  BFD_RELOC_ARM_THUMB_SHIFT,
43.38845 -+
43.38846 -+/* Renesas / SuperH SH relocs.  Not all of these appear in object files.  */
43.38847 -+  BFD_RELOC_SH_PCDISP8BY2,
43.38848 -+  BFD_RELOC_SH_PCDISP12BY2,
43.38849 -+  BFD_RELOC_SH_IMM3,
43.38850 -+  BFD_RELOC_SH_IMM3U,
43.38851 -+  BFD_RELOC_SH_DISP12,
43.38852 -+  BFD_RELOC_SH_DISP12BY2,
43.38853 -+  BFD_RELOC_SH_DISP12BY4,
43.38854 -+  BFD_RELOC_SH_DISP12BY8,
43.38855 -+  BFD_RELOC_SH_DISP20,
43.38856 -+  BFD_RELOC_SH_DISP20BY8,
43.38857 -+  BFD_RELOC_SH_IMM4,
43.38858 -+  BFD_RELOC_SH_IMM4BY2,
43.38859 -+  BFD_RELOC_SH_IMM4BY4,
43.38860 -+  BFD_RELOC_SH_IMM8,
43.38861 -+  BFD_RELOC_SH_IMM8BY2,
43.38862 -+  BFD_RELOC_SH_IMM8BY4,
43.38863 -+  BFD_RELOC_SH_PCRELIMM8BY2,
43.38864 -+  BFD_RELOC_SH_PCRELIMM8BY4,
43.38865 -+  BFD_RELOC_SH_SWITCH16,
43.38866 -+  BFD_RELOC_SH_SWITCH32,
43.38867 -+  BFD_RELOC_SH_USES,
43.38868 -+  BFD_RELOC_SH_COUNT,
43.38869 -+  BFD_RELOC_SH_ALIGN,
43.38870 -+  BFD_RELOC_SH_CODE,
43.38871 -+  BFD_RELOC_SH_DATA,
43.38872 -+  BFD_RELOC_SH_LABEL,
43.38873 -+  BFD_RELOC_SH_LOOP_START,
43.38874 -+  BFD_RELOC_SH_LOOP_END,
43.38875 -+  BFD_RELOC_SH_COPY,
43.38876 -+  BFD_RELOC_SH_GLOB_DAT,
43.38877 -+  BFD_RELOC_SH_JMP_SLOT,
43.38878 -+  BFD_RELOC_SH_RELATIVE,
43.38879 -+  BFD_RELOC_SH_GOTPC,
43.38880 -+  BFD_RELOC_SH_GOT_LOW16,
43.38881 -+  BFD_RELOC_SH_GOT_MEDLOW16,
43.38882 -+  BFD_RELOC_SH_GOT_MEDHI16,
43.38883 -+  BFD_RELOC_SH_GOT_HI16,
43.38884 -+  BFD_RELOC_SH_GOTPLT_LOW16,
43.38885 -+  BFD_RELOC_SH_GOTPLT_MEDLOW16,
43.38886 -+  BFD_RELOC_SH_GOTPLT_MEDHI16,
43.38887 -+  BFD_RELOC_SH_GOTPLT_HI16,
43.38888 -+  BFD_RELOC_SH_PLT_LOW16,
43.38889 -+  BFD_RELOC_SH_PLT_MEDLOW16,
43.38890 -+  BFD_RELOC_SH_PLT_MEDHI16,
43.38891 -+  BFD_RELOC_SH_PLT_HI16,
43.38892 -+  BFD_RELOC_SH_GOTOFF_LOW16,
43.38893 -+  BFD_RELOC_SH_GOTOFF_MEDLOW16,
43.38894 -+  BFD_RELOC_SH_GOTOFF_MEDHI16,
43.38895 -+  BFD_RELOC_SH_GOTOFF_HI16,
43.38896 -+  BFD_RELOC_SH_GOTPC_LOW16,
43.38897 -+  BFD_RELOC_SH_GOTPC_MEDLOW16,
43.38898 -+  BFD_RELOC_SH_GOTPC_MEDHI16,
43.38899 -+  BFD_RELOC_SH_GOTPC_HI16,
43.38900 -+  BFD_RELOC_SH_COPY64,
43.38901 -+  BFD_RELOC_SH_GLOB_DAT64,
43.38902 -+  BFD_RELOC_SH_JMP_SLOT64,
43.38903 -+  BFD_RELOC_SH_RELATIVE64,
43.38904 -+  BFD_RELOC_SH_GOT10BY4,
43.38905 -+  BFD_RELOC_SH_GOT10BY8,
43.38906 -+  BFD_RELOC_SH_GOTPLT10BY4,
43.38907 -+  BFD_RELOC_SH_GOTPLT10BY8,
43.38908 -+  BFD_RELOC_SH_GOTPLT32,
43.38909 -+  BFD_RELOC_SH_SHMEDIA_CODE,
43.38910 -+  BFD_RELOC_SH_IMMU5,
43.38911 -+  BFD_RELOC_SH_IMMS6,
43.38912 -+  BFD_RELOC_SH_IMMS6BY32,
43.38913 -+  BFD_RELOC_SH_IMMU6,
43.38914 -+  BFD_RELOC_SH_IMMS10,
43.38915 -+  BFD_RELOC_SH_IMMS10BY2,
43.38916 -+  BFD_RELOC_SH_IMMS10BY4,
43.38917 -+  BFD_RELOC_SH_IMMS10BY8,
43.38918 -+  BFD_RELOC_SH_IMMS16,
43.38919 -+  BFD_RELOC_SH_IMMU16,
43.38920 -+  BFD_RELOC_SH_IMM_LOW16,
43.38921 -+  BFD_RELOC_SH_IMM_LOW16_PCREL,
43.38922 -+  BFD_RELOC_SH_IMM_MEDLOW16,
43.38923 -+  BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
43.38924 -+  BFD_RELOC_SH_IMM_MEDHI16,
43.38925 -+  BFD_RELOC_SH_IMM_MEDHI16_PCREL,
43.38926 -+  BFD_RELOC_SH_IMM_HI16,
43.38927 -+  BFD_RELOC_SH_IMM_HI16_PCREL,
43.38928 -+  BFD_RELOC_SH_PT_16,
43.38929 -+  BFD_RELOC_SH_TLS_GD_32,
43.38930 -+  BFD_RELOC_SH_TLS_LD_32,
43.38931 -+  BFD_RELOC_SH_TLS_LDO_32,
43.38932 -+  BFD_RELOC_SH_TLS_IE_32,
43.38933 -+  BFD_RELOC_SH_TLS_LE_32,
43.38934 -+  BFD_RELOC_SH_TLS_DTPMOD32,
43.38935 -+  BFD_RELOC_SH_TLS_DTPOFF32,
43.38936 -+  BFD_RELOC_SH_TLS_TPOFF32,
43.38937 -+
43.38938 -+/* ARC Cores relocs.
43.38939 -+ARC 22 bit pc-relative branch.  The lowest two bits must be zero and are
43.38940 -+not stored in the instruction.  The high 20 bits are installed in bits 26
43.38941 -+through 7 of the instruction.  */
43.38942 -+  BFD_RELOC_ARC_B22_PCREL,
43.38943 -+
43.38944 -+/* ARC 26 bit absolute branch.  The lowest two bits must be zero and are not
43.38945 -+stored in the instruction.  The high 24 bits are installed in bits 23
43.38946 -+through 0.  */
43.38947 -+  BFD_RELOC_ARC_B26,
43.38948 -+
43.38949 -+/* ADI Blackfin 16 bit immediate absolute reloc.  */
43.38950 -+  BFD_RELOC_BFIN_16_IMM,
43.38951 -+
43.38952 -+/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.  */
43.38953 -+  BFD_RELOC_BFIN_16_HIGH,
43.38954 -+
43.38955 -+/* ADI Blackfin 'a' part of LSETUP.  */
43.38956 -+  BFD_RELOC_BFIN_4_PCREL,
43.38957 -+
43.38958 -+/* ADI Blackfin.  */
43.38959 -+  BFD_RELOC_BFIN_5_PCREL,
43.38960 -+
43.38961 -+/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.  */
43.38962 -+  BFD_RELOC_BFIN_16_LOW,
43.38963 -+
43.38964 -+/* ADI Blackfin.  */
43.38965 -+  BFD_RELOC_BFIN_10_PCREL,
43.38966 -+
43.38967 -+/* ADI Blackfin 'b' part of LSETUP.  */
43.38968 -+  BFD_RELOC_BFIN_11_PCREL,
43.38969 -+
43.38970 -+/* ADI Blackfin.  */
43.38971 -+  BFD_RELOC_BFIN_12_PCREL_JUMP,
43.38972 -+
43.38973 -+/* ADI Blackfin Short jump, pcrel.  */
43.38974 -+  BFD_RELOC_BFIN_12_PCREL_JUMP_S,
43.38975 -+
43.38976 -+/* ADI Blackfin Call.x not implemented.  */
43.38977 -+  BFD_RELOC_BFIN_24_PCREL_CALL_X,
43.38978 -+
43.38979 -+/* ADI Blackfin Long Jump pcrel.  */
43.38980 -+  BFD_RELOC_BFIN_24_PCREL_JUMP_L,
43.38981 -+
43.38982 -+/* ADI Blackfin FD-PIC relocations.  */
43.38983 -+  BFD_RELOC_BFIN_GOT17M4,
43.38984 -+  BFD_RELOC_BFIN_GOTHI,
43.38985 -+  BFD_RELOC_BFIN_GOTLO,
43.38986 -+  BFD_RELOC_BFIN_FUNCDESC,
43.38987 -+  BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
43.38988 -+  BFD_RELOC_BFIN_FUNCDESC_GOTHI,
43.38989 -+  BFD_RELOC_BFIN_FUNCDESC_GOTLO,
43.38990 -+  BFD_RELOC_BFIN_FUNCDESC_VALUE,
43.38991 -+  BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
43.38992 -+  BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
43.38993 -+  BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
43.38994 -+  BFD_RELOC_BFIN_GOTOFF17M4,
43.38995 -+  BFD_RELOC_BFIN_GOTOFFHI,
43.38996 -+  BFD_RELOC_BFIN_GOTOFFLO,
43.38997 -+
43.38998 -+/* ADI Blackfin GOT relocation.  */
43.38999 -+  BFD_RELOC_BFIN_GOT,
43.39000 -+
43.39001 -+/* ADI Blackfin PLTPC relocation.  */
43.39002 -+  BFD_RELOC_BFIN_PLTPC,
43.39003 -+
43.39004 -+/* ADI Blackfin arithmetic relocation.  */
43.39005 -+  BFD_ARELOC_BFIN_PUSH,
43.39006 -+
43.39007 -+/* ADI Blackfin arithmetic relocation.  */
43.39008 -+  BFD_ARELOC_BFIN_CONST,
43.39009 -+
43.39010 -+/* ADI Blackfin arithmetic relocation.  */
43.39011 -+  BFD_ARELOC_BFIN_ADD,
43.39012 -+
43.39013 -+/* ADI Blackfin arithmetic relocation.  */
43.39014 -+  BFD_ARELOC_BFIN_SUB,
43.39015 -+
43.39016 -+/* ADI Blackfin arithmetic relocation.  */
43.39017 -+  BFD_ARELOC_BFIN_MULT,
43.39018 -+
43.39019 -+/* ADI Blackfin arithmetic relocation.  */
43.39020 -+  BFD_ARELOC_BFIN_DIV,
43.39021 -+
43.39022 -+/* ADI Blackfin arithmetic relocation.  */
43.39023 -+  BFD_ARELOC_BFIN_MOD,
43.39024 -+
43.39025 -+/* ADI Blackfin arithmetic relocation.  */
43.39026 -+  BFD_ARELOC_BFIN_LSHIFT,
43.39027 -+
43.39028 -+/* ADI Blackfin arithmetic relocation.  */
43.39029 -+  BFD_ARELOC_BFIN_RSHIFT,
43.39030 -+
43.39031 -+/* ADI Blackfin arithmetic relocation.  */
43.39032 -+  BFD_ARELOC_BFIN_AND,
43.39033 -+
43.39034 -+/* ADI Blackfin arithmetic relocation.  */
43.39035 -+  BFD_ARELOC_BFIN_OR,
43.39036 -+
43.39037 -+/* ADI Blackfin arithmetic relocation.  */
43.39038 -+  BFD_ARELOC_BFIN_XOR,
43.39039 -+
43.39040 -+/* ADI Blackfin arithmetic relocation.  */
43.39041 -+  BFD_ARELOC_BFIN_LAND,
43.39042 -+
43.39043 -+/* ADI Blackfin arithmetic relocation.  */
43.39044 -+  BFD_ARELOC_BFIN_LOR,
43.39045 -+
43.39046 -+/* ADI Blackfin arithmetic relocation.  */
43.39047 -+  BFD_ARELOC_BFIN_LEN,
43.39048 -+
43.39049 -+/* ADI Blackfin arithmetic relocation.  */
43.39050 -+  BFD_ARELOC_BFIN_NEG,
43.39051 -+
43.39052 -+/* ADI Blackfin arithmetic relocation.  */
43.39053 -+  BFD_ARELOC_BFIN_COMP,
43.39054 -+
43.39055 -+/* ADI Blackfin arithmetic relocation.  */
43.39056 -+  BFD_ARELOC_BFIN_PAGE,
43.39057 -+
43.39058 -+/* ADI Blackfin arithmetic relocation.  */
43.39059 -+  BFD_ARELOC_BFIN_HWPAGE,
43.39060 -+
43.39061 -+/* ADI Blackfin arithmetic relocation.  */
43.39062 -+  BFD_ARELOC_BFIN_ADDR,
43.39063 -+
43.39064 -+/* Mitsubishi D10V relocs.
43.39065 -+This is a 10-bit reloc with the right 2 bits
43.39066 -+assumed to be 0.  */
43.39067 -+  BFD_RELOC_D10V_10_PCREL_R,
43.39068 -+
43.39069 -+/* Mitsubishi D10V relocs.
43.39070 -+This is a 10-bit reloc with the right 2 bits
43.39071 -+assumed to be 0.  This is the same as the previous reloc
43.39072 -+except it is in the left container, i.e.,
43.39073 -+shifted left 15 bits.  */
43.39074 -+  BFD_RELOC_D10V_10_PCREL_L,
43.39075 -+
43.39076 -+/* This is an 18-bit reloc with the right 2 bits
43.39077 -+assumed to be 0.  */
43.39078 -+  BFD_RELOC_D10V_18,
43.39079 -+
43.39080 -+/* This is an 18-bit reloc with the right 2 bits
43.39081 -+assumed to be 0.  */
43.39082 -+  BFD_RELOC_D10V_18_PCREL,
43.39083 -+
43.39084 -+/* Mitsubishi D30V relocs.
43.39085 -+This is a 6-bit absolute reloc.  */
43.39086 -+  BFD_RELOC_D30V_6,
43.39087 -+
43.39088 -+/* This is a 6-bit pc-relative reloc with
43.39089 -+the right 3 bits assumed to be 0.  */
43.39090 -+  BFD_RELOC_D30V_9_PCREL,
43.39091 -+
43.39092 -+/* This is a 6-bit pc-relative reloc with
43.39093 -+the right 3 bits assumed to be 0. Same
43.39094 -+as the previous reloc but on the right side
43.39095 -+of the container.  */
43.39096 -+  BFD_RELOC_D30V_9_PCREL_R,
43.39097 -+
43.39098 -+/* This is a 12-bit absolute reloc with the
43.39099 -+right 3 bitsassumed to be 0.  */
43.39100 -+  BFD_RELOC_D30V_15,
43.39101 -+
43.39102 -+/* This is a 12-bit pc-relative reloc with
43.39103 -+the right 3 bits assumed to be 0.  */
43.39104 -+  BFD_RELOC_D30V_15_PCREL,
43.39105 -+
43.39106 -+/* This is a 12-bit pc-relative reloc with
43.39107 -+the right 3 bits assumed to be 0. Same
43.39108 -+as the previous reloc but on the right side
43.39109 -+of the container.  */
43.39110 -+  BFD_RELOC_D30V_15_PCREL_R,
43.39111 -+
43.39112 -+/* This is an 18-bit absolute reloc with
43.39113 -+the right 3 bits assumed to be 0.  */
43.39114 -+  BFD_RELOC_D30V_21,
43.39115 -+
43.39116 -+/* This is an 18-bit pc-relative reloc with
43.39117 -+the right 3 bits assumed to be 0.  */
43.39118 -+  BFD_RELOC_D30V_21_PCREL,
43.39119 -+
43.39120 -+/* This is an 18-bit pc-relative reloc with
43.39121 -+the right 3 bits assumed to be 0. Same
43.39122 -+as the previous reloc but on the right side
43.39123 -+of the container.  */
43.39124 -+  BFD_RELOC_D30V_21_PCREL_R,
43.39125 -+
43.39126 -+/* This is a 32-bit absolute reloc.  */
43.39127 -+  BFD_RELOC_D30V_32,
43.39128 -+
43.39129 -+/* This is a 32-bit pc-relative reloc.  */
43.39130 -+  BFD_RELOC_D30V_32_PCREL,
43.39131 -+
43.39132 -+/* DLX relocs  */
43.39133 -+  BFD_RELOC_DLX_HI16_S,
43.39134 -+
43.39135 -+/* DLX relocs  */
43.39136 -+  BFD_RELOC_DLX_LO16,
43.39137 -+
43.39138 -+/* DLX relocs  */
43.39139 -+  BFD_RELOC_DLX_JMP26,
43.39140 -+
43.39141 -+/* Renesas M16C/M32C Relocations.  */
43.39142 -+  BFD_RELOC_M32C_HI8,
43.39143 -+  BFD_RELOC_M32C_RL_JUMP,
43.39144 -+  BFD_RELOC_M32C_RL_1ADDR,
43.39145 -+  BFD_RELOC_M32C_RL_2ADDR,
43.39146 -+
43.39147 -+/* Renesas M32R (formerly Mitsubishi M32R) relocs.
43.39148 -+This is a 24 bit absolute address.  */
43.39149 -+  BFD_RELOC_M32R_24,
43.39150 -+
43.39151 -+/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.  */
43.39152 -+  BFD_RELOC_M32R_10_PCREL,
43.39153 -+
43.39154 -+/* This is an 18-bit reloc with the right 2 bits assumed to be 0.  */
43.39155 -+  BFD_RELOC_M32R_18_PCREL,
43.39156 -+
43.39157 -+/* This is a 26-bit reloc with the right 2 bits assumed to be 0.  */
43.39158 -+  BFD_RELOC_M32R_26_PCREL,
43.39159 -+
43.39160 -+/* This is a 16-bit reloc containing the high 16 bits of an address
43.39161 -+used when the lower 16 bits are treated as unsigned.  */
43.39162 -+  BFD_RELOC_M32R_HI16_ULO,
43.39163 -+
43.39164 -+/* This is a 16-bit reloc containing the high 16 bits of an address
43.39165 -+used when the lower 16 bits are treated as signed.  */
43.39166 -+  BFD_RELOC_M32R_HI16_SLO,
43.39167 -+
43.39168 -+/* This is a 16-bit reloc containing the lower 16 bits of an address.  */
43.39169 -+  BFD_RELOC_M32R_LO16,
43.39170 -+
43.39171 -+/* This is a 16-bit reloc containing the small data area offset for use in
43.39172 -+add3, load, and store instructions.  */
43.39173 -+  BFD_RELOC_M32R_SDA16,
43.39174 -+
43.39175 -+/* For PIC.  */
43.39176 -+  BFD_RELOC_M32R_GOT24,
43.39177 -+  BFD_RELOC_M32R_26_PLTREL,
43.39178 -+  BFD_RELOC_M32R_COPY,
43.39179 -+  BFD_RELOC_M32R_GLOB_DAT,
43.39180 -+  BFD_RELOC_M32R_JMP_SLOT,
43.39181 -+  BFD_RELOC_M32R_RELATIVE,
43.39182 -+  BFD_RELOC_M32R_GOTOFF,
43.39183 -+  BFD_RELOC_M32R_GOTOFF_HI_ULO,
43.39184 -+  BFD_RELOC_M32R_GOTOFF_HI_SLO,
43.39185 -+  BFD_RELOC_M32R_GOTOFF_LO,
43.39186 -+  BFD_RELOC_M32R_GOTPC24,
43.39187 -+  BFD_RELOC_M32R_GOT16_HI_ULO,
43.39188 -+  BFD_RELOC_M32R_GOT16_HI_SLO,
43.39189 -+  BFD_RELOC_M32R_GOT16_LO,
43.39190 -+  BFD_RELOC_M32R_GOTPC_HI_ULO,
43.39191 -+  BFD_RELOC_M32R_GOTPC_HI_SLO,
43.39192 -+  BFD_RELOC_M32R_GOTPC_LO,
43.39193 -+
43.39194 -+/* This is a 9-bit reloc  */
43.39195 -+  BFD_RELOC_V850_9_PCREL,
43.39196 -+
43.39197 -+/* This is a 22-bit reloc  */
43.39198 -+  BFD_RELOC_V850_22_PCREL,
43.39199 -+
43.39200 -+/* This is a 16 bit offset from the short data area pointer.  */
43.39201 -+  BFD_RELOC_V850_SDA_16_16_OFFSET,
43.39202 -+
43.39203 -+/* This is a 16 bit offset (of which only 15 bits are used) from the
43.39204 -+short data area pointer.  */
43.39205 -+  BFD_RELOC_V850_SDA_15_16_OFFSET,
43.39206 -+
43.39207 -+/* This is a 16 bit offset from the zero data area pointer.  */
43.39208 -+  BFD_RELOC_V850_ZDA_16_16_OFFSET,
43.39209 -+
43.39210 -+/* This is a 16 bit offset (of which only 15 bits are used) from the
43.39211 -+zero data area pointer.  */
43.39212 -+  BFD_RELOC_V850_ZDA_15_16_OFFSET,
43.39213 -+
43.39214 -+/* This is an 8 bit offset (of which only 6 bits are used) from the
43.39215 -+tiny data area pointer.  */
43.39216 -+  BFD_RELOC_V850_TDA_6_8_OFFSET,
43.39217 -+
43.39218 -+/* This is an 8bit offset (of which only 7 bits are used) from the tiny
43.39219 -+data area pointer.  */
43.39220 -+  BFD_RELOC_V850_TDA_7_8_OFFSET,
43.39221 -+
43.39222 -+/* This is a 7 bit offset from the tiny data area pointer.  */
43.39223 -+  BFD_RELOC_V850_TDA_7_7_OFFSET,
43.39224 -+
43.39225 -+/* This is a 16 bit offset from the tiny data area pointer.  */
43.39226 -+  BFD_RELOC_V850_TDA_16_16_OFFSET,
43.39227 -+
43.39228 -+/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
43.39229 -+data area pointer.  */
43.39230 -+  BFD_RELOC_V850_TDA_4_5_OFFSET,
43.39231 -+
43.39232 -+/* This is a 4 bit offset from the tiny data area pointer.  */
43.39233 -+  BFD_RELOC_V850_TDA_4_4_OFFSET,
43.39234 -+
43.39235 -+/* This is a 16 bit offset from the short data area pointer, with the
43.39236 -+bits placed non-contiguously in the instruction.  */
43.39237 -+  BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
43.39238 -+
43.39239 -+/* This is a 16 bit offset from the zero data area pointer, with the
43.39240 -+bits placed non-contiguously in the instruction.  */
43.39241 -+  BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
43.39242 -+
43.39243 -+/* This is a 6 bit offset from the call table base pointer.  */
43.39244 -+  BFD_RELOC_V850_CALLT_6_7_OFFSET,
43.39245 -+
43.39246 -+/* This is a 16 bit offset from the call table base pointer.  */
43.39247 -+  BFD_RELOC_V850_CALLT_16_16_OFFSET,
43.39248 -+
43.39249 -+/* Used for relaxing indirect function calls.  */
43.39250 -+  BFD_RELOC_V850_LONGCALL,
43.39251 -+
43.39252 -+/* Used for relaxing indirect jumps.  */
43.39253 -+  BFD_RELOC_V850_LONGJUMP,
43.39254 -+
43.39255 -+/* Used to maintain alignment whilst relaxing.  */
43.39256 -+  BFD_RELOC_V850_ALIGN,
43.39257 -+
43.39258 -+/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
43.39259 -+instructions.  */
43.39260 -+  BFD_RELOC_V850_LO16_SPLIT_OFFSET,
43.39261 -+
43.39262 -+/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
43.39263 -+instruction.  */
43.39264 -+  BFD_RELOC_MN10300_32_PCREL,
43.39265 -+
43.39266 -+/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
43.39267 -+instruction.  */
43.39268 -+  BFD_RELOC_MN10300_16_PCREL,
43.39269 -+
43.39270 -+/* This is a 8bit DP reloc for the tms320c30, where the most
43.39271 -+significant 8 bits of a 24 bit word are placed into the least
43.39272 -+significant 8 bits of the opcode.  */
43.39273 -+  BFD_RELOC_TIC30_LDP,
43.39274 -+
43.39275 -+/* This is a 7bit reloc for the tms320c54x, where the least
43.39276 -+significant 7 bits of a 16 bit word are placed into the least
43.39277 -+significant 7 bits of the opcode.  */
43.39278 -+  BFD_RELOC_TIC54X_PARTLS7,
43.39279 -+
43.39280 -+/* This is a 9bit DP reloc for the tms320c54x, where the most
43.39281 -+significant 9 bits of a 16 bit word are placed into the least
43.39282 -+significant 9 bits of the opcode.  */
43.39283 -+  BFD_RELOC_TIC54X_PARTMS9,
43.39284 -+
43.39285 -+/* This is an extended address 23-bit reloc for the tms320c54x.  */
43.39286 -+  BFD_RELOC_TIC54X_23,
43.39287 -+
43.39288 -+/* This is a 16-bit reloc for the tms320c54x, where the least
43.39289 -+significant 16 bits of a 23-bit extended address are placed into
43.39290 -+the opcode.  */
43.39291 -+  BFD_RELOC_TIC54X_16_OF_23,
43.39292 -+
43.39293 -+/* This is a reloc for the tms320c54x, where the most
43.39294 -+significant 7 bits of a 23-bit extended address are placed into
43.39295 -+the opcode.  */
43.39296 -+  BFD_RELOC_TIC54X_MS7_OF_23,
43.39297 -+
43.39298 -+/* This is a 48 bit reloc for the FR30 that stores 32 bits.  */
43.39299 -+  BFD_RELOC_FR30_48,
43.39300 -+
43.39301 -+/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
43.39302 -+two sections.  */
43.39303 -+  BFD_RELOC_FR30_20,
43.39304 -+
43.39305 -+/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
43.39306 -+4 bits.  */
43.39307 -+  BFD_RELOC_FR30_6_IN_4,
43.39308 -+
43.39309 -+/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
43.39310 -+into 8 bits.  */
43.39311 -+  BFD_RELOC_FR30_8_IN_8,
43.39312 -+
43.39313 -+/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
43.39314 -+into 8 bits.  */
43.39315 -+  BFD_RELOC_FR30_9_IN_8,
43.39316 -+
43.39317 -+/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
43.39318 -+into 8 bits.  */
43.39319 -+  BFD_RELOC_FR30_10_IN_8,
43.39320 -+
43.39321 -+/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
43.39322 -+short offset into 8 bits.  */
43.39323 -+  BFD_RELOC_FR30_9_PCREL,
43.39324 -+
43.39325 -+/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
43.39326 -+short offset into 11 bits.  */
43.39327 -+  BFD_RELOC_FR30_12_PCREL,
43.39328 -+
43.39329 -+/* Motorola Mcore relocations.  */
43.39330 -+  BFD_RELOC_MCORE_PCREL_IMM8BY4,
43.39331 -+  BFD_RELOC_MCORE_PCREL_IMM11BY2,
43.39332 -+  BFD_RELOC_MCORE_PCREL_IMM4BY2,
43.39333 -+  BFD_RELOC_MCORE_PCREL_32,
43.39334 -+  BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
43.39335 -+  BFD_RELOC_MCORE_RVA,
43.39336 -+
43.39337 -+/* Toshiba Media Processor Relocations.  */
43.39338 -+  BFD_RELOC_MEP_8,
43.39339 -+  BFD_RELOC_MEP_16,
43.39340 -+  BFD_RELOC_MEP_32,
43.39341 -+  BFD_RELOC_MEP_PCREL8A2,
43.39342 -+  BFD_RELOC_MEP_PCREL12A2,
43.39343 -+  BFD_RELOC_MEP_PCREL17A2,
43.39344 -+  BFD_RELOC_MEP_PCREL24A2,
43.39345 -+  BFD_RELOC_MEP_PCABS24A2,
43.39346 -+  BFD_RELOC_MEP_LOW16,
43.39347 -+  BFD_RELOC_MEP_HI16U,
43.39348 -+  BFD_RELOC_MEP_HI16S,
43.39349 -+  BFD_RELOC_MEP_GPREL,
43.39350 -+  BFD_RELOC_MEP_TPREL,
43.39351 -+  BFD_RELOC_MEP_TPREL7,
43.39352 -+  BFD_RELOC_MEP_TPREL7A2,
43.39353 -+  BFD_RELOC_MEP_TPREL7A4,
43.39354 -+  BFD_RELOC_MEP_UIMM24,
43.39355 -+  BFD_RELOC_MEP_ADDR24A4,
43.39356 -+  BFD_RELOC_MEP_GNU_VTINHERIT,
43.39357 -+  BFD_RELOC_MEP_GNU_VTENTRY,
43.39358 -+
43.39359 -+
43.39360 -+/* These are relocations for the GETA instruction.  */
43.39361 -+  BFD_RELOC_MMIX_GETA,
43.39362 -+  BFD_RELOC_MMIX_GETA_1,
43.39363 -+  BFD_RELOC_MMIX_GETA_2,
43.39364 -+  BFD_RELOC_MMIX_GETA_3,
43.39365 -+
43.39366 -+/* These are relocations for a conditional branch instruction.  */
43.39367 -+  BFD_RELOC_MMIX_CBRANCH,
43.39368 -+  BFD_RELOC_MMIX_CBRANCH_J,
43.39369 -+  BFD_RELOC_MMIX_CBRANCH_1,
43.39370 -+  BFD_RELOC_MMIX_CBRANCH_2,
43.39371 -+  BFD_RELOC_MMIX_CBRANCH_3,
43.39372 -+
43.39373 -+/* These are relocations for the PUSHJ instruction.  */
43.39374 -+  BFD_RELOC_MMIX_PUSHJ,
43.39375 -+  BFD_RELOC_MMIX_PUSHJ_1,
43.39376 -+  BFD_RELOC_MMIX_PUSHJ_2,
43.39377 -+  BFD_RELOC_MMIX_PUSHJ_3,
43.39378 -+  BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
43.39379 -+
43.39380 -+/* These are relocations for the JMP instruction.  */
43.39381 -+  BFD_RELOC_MMIX_JMP,
43.39382 -+  BFD_RELOC_MMIX_JMP_1,
43.39383 -+  BFD_RELOC_MMIX_JMP_2,
43.39384 -+  BFD_RELOC_MMIX_JMP_3,
43.39385 -+
43.39386 -+/* This is a relocation for a relative address as in a GETA instruction or
43.39387 -+a branch.  */
43.39388 -+  BFD_RELOC_MMIX_ADDR19,
43.39389 -+
43.39390 -+/* This is a relocation for a relative address as in a JMP instruction.  */
43.39391 -+  BFD_RELOC_MMIX_ADDR27,
43.39392 -+
43.39393 -+/* This is a relocation for an instruction field that may be a general
43.39394 -+register or a value 0..255.  */
43.39395 -+  BFD_RELOC_MMIX_REG_OR_BYTE,
43.39396 -+
43.39397 -+/* This is a relocation for an instruction field that may be a general
43.39398 -+register.  */
43.39399 -+  BFD_RELOC_MMIX_REG,
43.39400 -+
43.39401 -+/* This is a relocation for two instruction fields holding a register and
43.39402 -+an offset, the equivalent of the relocation.  */
43.39403 -+  BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
43.39404 -+
43.39405 -+/* This relocation is an assertion that the expression is not allocated as
43.39406 -+a global register.  It does not modify contents.  */
43.39407 -+  BFD_RELOC_MMIX_LOCAL,
43.39408 -+
43.39409 -+/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
43.39410 -+short offset into 7 bits.  */
43.39411 -+  BFD_RELOC_AVR_7_PCREL,
43.39412 -+
43.39413 -+/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
43.39414 -+short offset into 12 bits.  */
43.39415 -+  BFD_RELOC_AVR_13_PCREL,
43.39416 -+
43.39417 -+/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
43.39418 -+program memory address) into 16 bits.  */
43.39419 -+  BFD_RELOC_AVR_16_PM,
43.39420 -+
43.39421 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
43.39422 -+data memory address) into 8 bit immediate value of LDI insn.  */
43.39423 -+  BFD_RELOC_AVR_LO8_LDI,
43.39424 -+
43.39425 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
43.39426 -+of data memory address) into 8 bit immediate value of LDI insn.  */
43.39427 -+  BFD_RELOC_AVR_HI8_LDI,
43.39428 -+
43.39429 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
43.39430 -+of program memory address) into 8 bit immediate value of LDI insn.  */
43.39431 -+  BFD_RELOC_AVR_HH8_LDI,
43.39432 -+
43.39433 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
43.39434 -+of 32 bit value) into 8 bit immediate value of LDI insn.  */
43.39435 -+  BFD_RELOC_AVR_MS8_LDI,
43.39436 -+
43.39437 -+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
43.39438 -+(usually data memory address) into 8 bit immediate value of SUBI insn.  */
43.39439 -+  BFD_RELOC_AVR_LO8_LDI_NEG,
43.39440 -+
43.39441 -+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
43.39442 -+(high 8 bit of data memory address) into 8 bit immediate value of
43.39443 -+SUBI insn.  */
43.39444 -+  BFD_RELOC_AVR_HI8_LDI_NEG,
43.39445 -+
43.39446 -+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
43.39447 -+(most high 8 bit of program memory address) into 8 bit immediate value
43.39448 -+of LDI or SUBI insn.  */
43.39449 -+  BFD_RELOC_AVR_HH8_LDI_NEG,
43.39450 -+
43.39451 -+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
43.39452 -+of 32 bit value) into 8 bit immediate value of LDI insn.  */
43.39453 -+  BFD_RELOC_AVR_MS8_LDI_NEG,
43.39454 -+
43.39455 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
43.39456 -+command address) into 8 bit immediate value of LDI insn.  */
43.39457 -+  BFD_RELOC_AVR_LO8_LDI_PM,
43.39458 -+
43.39459 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value 
43.39460 -+(command address) into 8 bit immediate value of LDI insn. If the address
43.39461 -+is beyond the 128k boundary, the linker inserts a jump stub for this reloc
43.39462 -+in the lower 128k.  */
43.39463 -+  BFD_RELOC_AVR_LO8_LDI_GS,
43.39464 -+
43.39465 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
43.39466 -+of command address) into 8 bit immediate value of LDI insn.  */
43.39467 -+  BFD_RELOC_AVR_HI8_LDI_PM,
43.39468 -+
43.39469 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
43.39470 -+of command address) into 8 bit immediate value of LDI insn.  If the address
43.39471 -+is beyond the 128k boundary, the linker inserts a jump stub for this reloc
43.39472 -+below 128k.  */
43.39473 -+  BFD_RELOC_AVR_HI8_LDI_GS,
43.39474 -+
43.39475 -+/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
43.39476 -+of command address) into 8 bit immediate value of LDI insn.  */
43.39477 -+  BFD_RELOC_AVR_HH8_LDI_PM,
43.39478 -+
43.39479 -+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
43.39480 -+(usually command address) into 8 bit immediate value of SUBI insn.  */
43.39481 -+  BFD_RELOC_AVR_LO8_LDI_PM_NEG,
43.39482 -+
43.39483 -+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
43.39484 -+(high 8 bit of 16 bit command address) into 8 bit immediate value
43.39485 -+of SUBI insn.  */
43.39486 -+  BFD_RELOC_AVR_HI8_LDI_PM_NEG,
43.39487 -+
43.39488 -+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
43.39489 -+(high 6 bit of 22 bit command address) into 8 bit immediate
43.39490 -+value of SUBI insn.  */
43.39491 -+  BFD_RELOC_AVR_HH8_LDI_PM_NEG,
43.39492 -+
43.39493 -+/* This is a 32 bit reloc for the AVR that stores 23 bit value
43.39494 -+into 22 bits.  */
43.39495 -+  BFD_RELOC_AVR_CALL,
43.39496 -+
43.39497 -+/* This is a 16 bit reloc for the AVR that stores all needed bits
43.39498 -+for absolute addressing with ldi with overflow check to linktime  */
43.39499 -+  BFD_RELOC_AVR_LDI,
43.39500 -+
43.39501 -+/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
43.39502 -+instructions  */
43.39503 -+  BFD_RELOC_AVR_6,
43.39504 -+
43.39505 -+/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
43.39506 -+instructions  */
43.39507 -+  BFD_RELOC_AVR_6_ADIW,
43.39508 -+
43.39509 -+/* Difference between two labels: L2 - L1. The value of L1 is encoded
43.39510 -+as sym + addend, while the initial difference after assembly is
43.39511 -+inserted into the object file by the assembler.  */
43.39512 -+  BFD_RELOC_AVR32_DIFF32,
43.39513 -+  BFD_RELOC_AVR32_DIFF16,
43.39514 -+  BFD_RELOC_AVR32_DIFF8,
43.39515 -+
43.39516 -+/* Reference to a symbol through the Global Offset Table. The linker
43.39517 -+will allocate an entry for symbol in the GOT and insert the offset
43.39518 -+of this entry as the relocation value.  */
43.39519 -+  BFD_RELOC_AVR32_GOT32,
43.39520 -+  BFD_RELOC_AVR32_GOT16,
43.39521 -+  BFD_RELOC_AVR32_GOT8,
43.39522 -+
43.39523 -+/* Normal (non-pc-relative) code relocations. Alignment and signedness
43.39524 -+is indicated by the suffixes. S means signed, U means unsigned. W
43.39525 -+means word-aligned, H means halfword-aligned, neither means
43.39526 -+byte-aligned (no alignment.) SUB5 is the same relocation as 16S.  */
43.39527 -+  BFD_RELOC_AVR32_21S,
43.39528 -+  BFD_RELOC_AVR32_16U,
43.39529 -+  BFD_RELOC_AVR32_16S,
43.39530 -+  BFD_RELOC_AVR32_SUB5,
43.39531 -+  BFD_RELOC_AVR32_8S_EXT,
43.39532 -+  BFD_RELOC_AVR32_8S,
43.39533 -+  BFD_RELOC_AVR32_15S,
43.39534 -+
43.39535 -+/* PC-relative relocations are signed if neither 'U' nor 'S' is
43.39536 -+specified. However, we explicitly tack on a 'B' to indicate no
43.39537 -+alignment, to avoid confusion with data relocs. All of these resolve
43.39538 -+to sym + addend - offset, except the one with 'N' (negated) suffix.
43.39539 -+This particular one resolves to offset - sym - addend.  */
43.39540 -+  BFD_RELOC_AVR32_22H_PCREL,
43.39541 -+  BFD_RELOC_AVR32_18W_PCREL,
43.39542 -+  BFD_RELOC_AVR32_16B_PCREL,
43.39543 -+  BFD_RELOC_AVR32_16N_PCREL,
43.39544 -+  BFD_RELOC_AVR32_14UW_PCREL,
43.39545 -+  BFD_RELOC_AVR32_11H_PCREL,
43.39546 -+  BFD_RELOC_AVR32_10UW_PCREL,
43.39547 -+  BFD_RELOC_AVR32_9H_PCREL,
43.39548 -+  BFD_RELOC_AVR32_9UW_PCREL,
43.39549 -+
43.39550 -+/* Subtract the link-time address of the GOT from (symbol + addend)
43.39551 -+and insert the result.  */
43.39552 -+  BFD_RELOC_AVR32_GOTPC,
43.39553 -+
43.39554 -+/* Reference to a symbol through the GOT. The linker will allocate an
43.39555 -+entry for symbol in the GOT and insert the offset of this entry as
43.39556 -+the relocation value. addend must be zero. As usual, 'S' means
43.39557 -+signed, 'W' means word-aligned, etc.  */
43.39558 -+  BFD_RELOC_AVR32_GOTCALL,
43.39559 -+  BFD_RELOC_AVR32_LDA_GOT,
43.39560 -+  BFD_RELOC_AVR32_GOT21S,
43.39561 -+  BFD_RELOC_AVR32_GOT18SW,
43.39562 -+  BFD_RELOC_AVR32_GOT16S,
43.39563 -+
43.39564 -+/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make
43.39565 -+a whole lot of sense.  */
43.39566 -+  BFD_RELOC_AVR32_32_CPENT,
43.39567 -+
43.39568 -+/* Constant pool references. Some of these relocations are signed,
43.39569 -+others are unsigned. It doesn't really matter, since the constant
43.39570 -+pool always comes after the code that references it.  */
43.39571 -+  BFD_RELOC_AVR32_CPCALL,
43.39572 -+  BFD_RELOC_AVR32_16_CP,
43.39573 -+  BFD_RELOC_AVR32_9W_CP,
43.39574 -+
43.39575 -+/* sym must be the absolute symbol. The addend specifies the alignment
43.39576 -+order, e.g. if addend is 2, the linker must add padding so that the
43.39577 -+next address is aligned to a 4-byte boundary.  */
43.39578 -+  BFD_RELOC_AVR32_ALIGN,
43.39579 -+
43.39580 -+/* Code relocations that will never make it to the output file.  */
43.39581 -+  BFD_RELOC_AVR32_14UW,
43.39582 -+  BFD_RELOC_AVR32_10UW,
43.39583 -+  BFD_RELOC_AVR32_10SW,
43.39584 -+  BFD_RELOC_AVR32_STHH_W,
43.39585 -+  BFD_RELOC_AVR32_7UW,
43.39586 -+  BFD_RELOC_AVR32_6S,
43.39587 -+  BFD_RELOC_AVR32_6UW,
43.39588 -+  BFD_RELOC_AVR32_4UH,
43.39589 -+  BFD_RELOC_AVR32_3U,
43.39590 -+
43.39591 -+/* Direct 12 bit.  */
43.39592 -+  BFD_RELOC_390_12,
43.39593 -+
43.39594 -+/* 12 bit GOT offset.  */
43.39595 -+  BFD_RELOC_390_GOT12,
43.39596 -+
43.39597 -+/* 32 bit PC relative PLT address.  */
43.39598 -+  BFD_RELOC_390_PLT32,
43.39599 -+
43.39600 -+/* Copy symbol at runtime.  */
43.39601 -+  BFD_RELOC_390_COPY,
43.39602 -+
43.39603 -+/* Create GOT entry.  */
43.39604 -+  BFD_RELOC_390_GLOB_DAT,
43.39605 -+
43.39606 -+/* Create PLT entry.  */
43.39607 -+  BFD_RELOC_390_JMP_SLOT,
43.39608 -+
43.39609 -+/* Adjust by program base.  */
43.39610 -+  BFD_RELOC_390_RELATIVE,
43.39611 -+
43.39612 -+/* 32 bit PC relative offset to GOT.  */
43.39613 -+  BFD_RELOC_390_GOTPC,
43.39614 -+
43.39615 -+/* 16 bit GOT offset.  */
43.39616 -+  BFD_RELOC_390_GOT16,
43.39617 -+
43.39618 -+/* PC relative 16 bit shifted by 1.  */
43.39619 -+  BFD_RELOC_390_PC16DBL,
43.39620 -+
43.39621 -+/* 16 bit PC rel. PLT shifted by 1.  */
43.39622 -+  BFD_RELOC_390_PLT16DBL,
43.39623 -+
43.39624 -+/* PC relative 32 bit shifted by 1.  */
43.39625 -+  BFD_RELOC_390_PC32DBL,
43.39626 -+
43.39627 -+/* 32 bit PC rel. PLT shifted by 1.  */
43.39628 -+  BFD_RELOC_390_PLT32DBL,
43.39629 -+
43.39630 -+/* 32 bit PC rel. GOT shifted by 1.  */
43.39631 -+  BFD_RELOC_390_GOTPCDBL,
43.39632 -+
43.39633 -+/* 64 bit GOT offset.  */
43.39634 -+  BFD_RELOC_390_GOT64,
43.39635 -+
43.39636 -+/* 64 bit PC relative PLT address.  */
43.39637 -+  BFD_RELOC_390_PLT64,
43.39638 -+
43.39639 -+/* 32 bit rel. offset to GOT entry.  */
43.39640 -+  BFD_RELOC_390_GOTENT,
43.39641 -+
43.39642 -+/* 64 bit offset to GOT.  */
43.39643 -+  BFD_RELOC_390_GOTOFF64,
43.39644 -+
43.39645 -+/* 12-bit offset to symbol-entry within GOT, with PLT handling.  */
43.39646 -+  BFD_RELOC_390_GOTPLT12,
43.39647 -+
43.39648 -+/* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
43.39649 -+  BFD_RELOC_390_GOTPLT16,
43.39650 -+
43.39651 -+/* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
43.39652 -+  BFD_RELOC_390_GOTPLT32,
43.39653 -+
43.39654 -+/* 64-bit offset to symbol-entry within GOT, with PLT handling.  */
43.39655 -+  BFD_RELOC_390_GOTPLT64,
43.39656 -+
43.39657 -+/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling.  */
43.39658 -+  BFD_RELOC_390_GOTPLTENT,
43.39659 -+
43.39660 -+/* 16-bit rel. offset from the GOT to a PLT entry.  */
43.39661 -+  BFD_RELOC_390_PLTOFF16,
43.39662 -+
43.39663 -+/* 32-bit rel. offset from the GOT to a PLT entry.  */
43.39664 -+  BFD_RELOC_390_PLTOFF32,
43.39665 -+
43.39666 -+/* 64-bit rel. offset from the GOT to a PLT entry.  */
43.39667 -+  BFD_RELOC_390_PLTOFF64,
43.39668 -+
43.39669 -+/* s390 tls relocations.  */
43.39670 -+  BFD_RELOC_390_TLS_LOAD,
43.39671 -+  BFD_RELOC_390_TLS_GDCALL,
43.39672 -+  BFD_RELOC_390_TLS_LDCALL,
43.39673 -+  BFD_RELOC_390_TLS_GD32,
43.39674 -+  BFD_RELOC_390_TLS_GD64,
43.39675 -+  BFD_RELOC_390_TLS_GOTIE12,
43.39676 -+  BFD_RELOC_390_TLS_GOTIE32,
43.39677 -+  BFD_RELOC_390_TLS_GOTIE64,
43.39678 -+  BFD_RELOC_390_TLS_LDM32,
43.39679 -+  BFD_RELOC_390_TLS_LDM64,
43.39680 -+  BFD_RELOC_390_TLS_IE32,
43.39681 -+  BFD_RELOC_390_TLS_IE64,
43.39682 -+  BFD_RELOC_390_TLS_IEENT,
43.39683 -+  BFD_RELOC_390_TLS_LE32,
43.39684 -+  BFD_RELOC_390_TLS_LE64,
43.39685 -+  BFD_RELOC_390_TLS_LDO32,
43.39686 -+  BFD_RELOC_390_TLS_LDO64,
43.39687 -+  BFD_RELOC_390_TLS_DTPMOD,
43.39688 -+  BFD_RELOC_390_TLS_DTPOFF,
43.39689 -+  BFD_RELOC_390_TLS_TPOFF,
43.39690 -+
43.39691 -+/* Long displacement extension.  */
43.39692 -+  BFD_RELOC_390_20,
43.39693 -+  BFD_RELOC_390_GOT20,
43.39694 -+  BFD_RELOC_390_GOTPLT20,
43.39695 -+  BFD_RELOC_390_TLS_GOTIE20,
43.39696 -+
43.39697 -+/* Score relocations  */
43.39698 -+  BFD_RELOC_SCORE_DUMMY1,
43.39699 -+
43.39700 -+/* Low 16 bit for load/store  */
43.39701 -+  BFD_RELOC_SCORE_GPREL15,
43.39702 -+
43.39703 -+/* This is a 24-bit reloc with the right 1 bit assumed to be 0  */
43.39704 -+  BFD_RELOC_SCORE_DUMMY2,
43.39705 -+  BFD_RELOC_SCORE_JMP,
43.39706 -+
43.39707 -+/* This is a 19-bit reloc with the right 1 bit assumed to be 0  */
43.39708 -+  BFD_RELOC_SCORE_BRANCH,
43.39709 -+
43.39710 -+/* This is a 11-bit reloc with the right 1 bit assumed to be 0  */
43.39711 -+  BFD_RELOC_SCORE16_JMP,
43.39712 -+
43.39713 -+/* This is a 8-bit reloc with the right 1 bit assumed to be 0  */
43.39714 -+  BFD_RELOC_SCORE16_BRANCH,
43.39715 -+
43.39716 -+/* Undocumented Score relocs  */
43.39717 -+  BFD_RELOC_SCORE_GOT15,
43.39718 -+  BFD_RELOC_SCORE_GOT_LO16,
43.39719 -+  BFD_RELOC_SCORE_CALL15,
43.39720 -+  BFD_RELOC_SCORE_DUMMY_HI16,
43.39721 -+
43.39722 -+/* Scenix IP2K - 9-bit register number / data address  */
43.39723 -+  BFD_RELOC_IP2K_FR9,
43.39724 -+
43.39725 -+/* Scenix IP2K - 4-bit register/data bank number  */
43.39726 -+  BFD_RELOC_IP2K_BANK,
43.39727 -+
43.39728 -+/* Scenix IP2K - low 13 bits of instruction word address  */
43.39729 -+  BFD_RELOC_IP2K_ADDR16CJP,
43.39730 -+
43.39731 -+/* Scenix IP2K - high 3 bits of instruction word address  */
43.39732 -+  BFD_RELOC_IP2K_PAGE3,
43.39733 -+
43.39734 -+/* Scenix IP2K - ext/low/high 8 bits of data address  */
43.39735 -+  BFD_RELOC_IP2K_LO8DATA,
43.39736 -+  BFD_RELOC_IP2K_HI8DATA,
43.39737 -+  BFD_RELOC_IP2K_EX8DATA,
43.39738 -+
43.39739 -+/* Scenix IP2K - low/high 8 bits of instruction word address  */
43.39740 -+  BFD_RELOC_IP2K_LO8INSN,
43.39741 -+  BFD_RELOC_IP2K_HI8INSN,
43.39742 -+
43.39743 -+/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0  */
43.39744 -+  BFD_RELOC_IP2K_PC_SKIP,
43.39745 -+
43.39746 -+/* Scenix IP2K - 16 bit word address in text section.  */
43.39747 -+  BFD_RELOC_IP2K_TEXT,
43.39748 -+
43.39749 -+/* Scenix IP2K - 7-bit sp or dp offset  */
43.39750 -+  BFD_RELOC_IP2K_FR_OFFSET,
43.39751 -+
43.39752 -+/* Scenix VPE4K coprocessor - data/insn-space addressing  */
43.39753 -+  BFD_RELOC_VPE4KMATH_DATA,
43.39754 -+  BFD_RELOC_VPE4KMATH_INSN,
43.39755 -+
43.39756 -+/* These two relocations are used by the linker to determine which of
43.39757 -+the entries in a C++ virtual function table are actually used.  When
43.39758 -+the --gc-sections option is given, the linker will zero out the entries
43.39759 -+that are not used, so that the code for those functions need not be
43.39760 -+included in the output.
43.39761 -+
43.39762 -+VTABLE_INHERIT is a zero-space relocation used to describe to the
43.39763 -+linker the inheritance tree of a C++ virtual function table.  The
43.39764 -+relocation's symbol should be the parent class' vtable, and the
43.39765 -+relocation should be located at the child vtable.
43.39766 -+
43.39767 -+VTABLE_ENTRY is a zero-space relocation that describes the use of a
43.39768 -+virtual function table entry.  The reloc's symbol should refer to the
43.39769 -+table of the class mentioned in the code.  Off of that base, an offset
43.39770 -+describes the entry that is being used.  For Rela hosts, this offset
43.39771 -+is stored in the reloc's addend.  For Rel hosts, we are forced to put
43.39772 -+this offset in the reloc's section offset.  */
43.39773 -+  BFD_RELOC_VTABLE_INHERIT,
43.39774 -+  BFD_RELOC_VTABLE_ENTRY,
43.39775 -+
43.39776 -+/* Intel IA64 Relocations.  */
43.39777 -+  BFD_RELOC_IA64_IMM14,
43.39778 -+  BFD_RELOC_IA64_IMM22,
43.39779 -+  BFD_RELOC_IA64_IMM64,
43.39780 -+  BFD_RELOC_IA64_DIR32MSB,
43.39781 -+  BFD_RELOC_IA64_DIR32LSB,
43.39782 -+  BFD_RELOC_IA64_DIR64MSB,
43.39783 -+  BFD_RELOC_IA64_DIR64LSB,
43.39784 -+  BFD_RELOC_IA64_GPREL22,
43.39785 -+  BFD_RELOC_IA64_GPREL64I,
43.39786 -+  BFD_RELOC_IA64_GPREL32MSB,
43.39787 -+  BFD_RELOC_IA64_GPREL32LSB,
43.39788 -+  BFD_RELOC_IA64_GPREL64MSB,
43.39789 -+  BFD_RELOC_IA64_GPREL64LSB,
43.39790 -+  BFD_RELOC_IA64_LTOFF22,
43.39791 -+  BFD_RELOC_IA64_LTOFF64I,
43.39792 -+  BFD_RELOC_IA64_PLTOFF22,
43.39793 -+  BFD_RELOC_IA64_PLTOFF64I,
43.39794 -+  BFD_RELOC_IA64_PLTOFF64MSB,
43.39795 -+  BFD_RELOC_IA64_PLTOFF64LSB,
43.39796 -+  BFD_RELOC_IA64_FPTR64I,
43.39797 -+  BFD_RELOC_IA64_FPTR32MSB,
43.39798 -+  BFD_RELOC_IA64_FPTR32LSB,
43.39799 -+  BFD_RELOC_IA64_FPTR64MSB,
43.39800 -+  BFD_RELOC_IA64_FPTR64LSB,
43.39801 -+  BFD_RELOC_IA64_PCREL21B,
43.39802 -+  BFD_RELOC_IA64_PCREL21BI,
43.39803 -+  BFD_RELOC_IA64_PCREL21M,
43.39804 -+  BFD_RELOC_IA64_PCREL21F,
43.39805 -+  BFD_RELOC_IA64_PCREL22,
43.39806 -+  BFD_RELOC_IA64_PCREL60B,
43.39807 -+  BFD_RELOC_IA64_PCREL64I,
43.39808 -+  BFD_RELOC_IA64_PCREL32MSB,
43.39809 -+  BFD_RELOC_IA64_PCREL32LSB,
43.39810 -+  BFD_RELOC_IA64_PCREL64MSB,
43.39811 -+  BFD_RELOC_IA64_PCREL64LSB,
43.39812 -+  BFD_RELOC_IA64_LTOFF_FPTR22,
43.39813 -+  BFD_RELOC_IA64_LTOFF_FPTR64I,
43.39814 -+  BFD_RELOC_IA64_LTOFF_FPTR32MSB,
43.39815 -+  BFD_RELOC_IA64_LTOFF_FPTR32LSB,
43.39816 -+  BFD_RELOC_IA64_LTOFF_FPTR64MSB,
43.39817 -+  BFD_RELOC_IA64_LTOFF_FPTR64LSB,
43.39818 -+  BFD_RELOC_IA64_SEGREL32MSB,
43.39819 -+  BFD_RELOC_IA64_SEGREL32LSB,
43.39820 -+  BFD_RELOC_IA64_SEGREL64MSB,
43.39821 -+  BFD_RELOC_IA64_SEGREL64LSB,
43.39822 -+  BFD_RELOC_IA64_SECREL32MSB,
43.39823 -+  BFD_RELOC_IA64_SECREL32LSB,
43.39824 -+  BFD_RELOC_IA64_SECREL64MSB,
43.39825 -+  BFD_RELOC_IA64_SECREL64LSB,
43.39826 -+  BFD_RELOC_IA64_REL32MSB,
43.39827 -+  BFD_RELOC_IA64_REL32LSB,
43.39828 -+  BFD_RELOC_IA64_REL64MSB,
43.39829 -+  BFD_RELOC_IA64_REL64LSB,
43.39830 -+  BFD_RELOC_IA64_LTV32MSB,
43.39831 -+  BFD_RELOC_IA64_LTV32LSB,
43.39832 -+  BFD_RELOC_IA64_LTV64MSB,
43.39833 -+  BFD_RELOC_IA64_LTV64LSB,
43.39834 -+  BFD_RELOC_IA64_IPLTMSB,
43.39835 -+  BFD_RELOC_IA64_IPLTLSB,
43.39836 -+  BFD_RELOC_IA64_COPY,
43.39837 -+  BFD_RELOC_IA64_LTOFF22X,
43.39838 -+  BFD_RELOC_IA64_LDXMOV,
43.39839 -+  BFD_RELOC_IA64_TPREL14,
43.39840 -+  BFD_RELOC_IA64_TPREL22,
43.39841 -+  BFD_RELOC_IA64_TPREL64I,
43.39842 -+  BFD_RELOC_IA64_TPREL64MSB,
43.39843 -+  BFD_RELOC_IA64_TPREL64LSB,
43.39844 -+  BFD_RELOC_IA64_LTOFF_TPREL22,
43.39845 -+  BFD_RELOC_IA64_DTPMOD64MSB,
43.39846 -+  BFD_RELOC_IA64_DTPMOD64LSB,
43.39847 -+  BFD_RELOC_IA64_LTOFF_DTPMOD22,
43.39848 -+  BFD_RELOC_IA64_DTPREL14,
43.39849 -+  BFD_RELOC_IA64_DTPREL22,
43.39850 -+  BFD_RELOC_IA64_DTPREL64I,
43.39851 -+  BFD_RELOC_IA64_DTPREL32MSB,
43.39852 -+  BFD_RELOC_IA64_DTPREL32LSB,
43.39853 -+  BFD_RELOC_IA64_DTPREL64MSB,
43.39854 -+  BFD_RELOC_IA64_DTPREL64LSB,
43.39855 -+  BFD_RELOC_IA64_LTOFF_DTPREL22,
43.39856 -+
43.39857 -+/* Motorola 68HC11 reloc.
43.39858 -+This is the 8 bit high part of an absolute address.  */
43.39859 -+  BFD_RELOC_M68HC11_HI8,
43.39860 -+
43.39861 -+/* Motorola 68HC11 reloc.
43.39862 -+This is the 8 bit low part of an absolute address.  */
43.39863 -+  BFD_RELOC_M68HC11_LO8,
43.39864 -+
43.39865 -+/* Motorola 68HC11 reloc.
43.39866 -+This is the 3 bit of a value.  */
43.39867 -+  BFD_RELOC_M68HC11_3B,
43.39868 -+
43.39869 -+/* Motorola 68HC11 reloc.
43.39870 -+This reloc marks the beginning of a jump/call instruction.
43.39871 -+It is used for linker relaxation to correctly identify beginning
43.39872 -+of instruction and change some branches to use PC-relative
43.39873 -+addressing mode.  */
43.39874 -+  BFD_RELOC_M68HC11_RL_JUMP,
43.39875 -+
43.39876 -+/* Motorola 68HC11 reloc.
43.39877 -+This reloc marks a group of several instructions that gcc generates
43.39878 -+and for which the linker relaxation pass can modify and/or remove
43.39879 -+some of them.  */
43.39880 -+  BFD_RELOC_M68HC11_RL_GROUP,
43.39881 -+
43.39882 -+/* Motorola 68HC11 reloc.
43.39883 -+This is the 16-bit lower part of an address.  It is used for 'call'
43.39884 -+instruction to specify the symbol address without any special
43.39885 -+transformation (due to memory bank window).  */
43.39886 -+  BFD_RELOC_M68HC11_LO16,
43.39887 -+
43.39888 -+/* Motorola 68HC11 reloc.
43.39889 -+This is a 8-bit reloc that specifies the page number of an address.
43.39890 -+It is used by 'call' instruction to specify the page number of
43.39891 -+the symbol.  */
43.39892 -+  BFD_RELOC_M68HC11_PAGE,
43.39893 -+
43.39894 -+/* Motorola 68HC11 reloc.
43.39895 -+This is a 24-bit reloc that represents the address with a 16-bit
43.39896 -+value and a 8-bit page number.  The symbol address is transformed
43.39897 -+to follow the 16K memory bank of 68HC12 (seen as mapped in the window).  */
43.39898 -+  BFD_RELOC_M68HC11_24,
43.39899 -+
43.39900 -+/* Motorola 68HC12 reloc.
43.39901 -+This is the 5 bits of a value.  */
43.39902 -+  BFD_RELOC_M68HC12_5B,
43.39903 -+
43.39904 -+/* NS CR16C Relocations.  */
43.39905 -+  BFD_RELOC_16C_NUM08,
43.39906 -+  BFD_RELOC_16C_NUM08_C,
43.39907 -+  BFD_RELOC_16C_NUM16,
43.39908 -+  BFD_RELOC_16C_NUM16_C,
43.39909 -+  BFD_RELOC_16C_NUM32,
43.39910 -+  BFD_RELOC_16C_NUM32_C,
43.39911 -+  BFD_RELOC_16C_DISP04,
43.39912 -+  BFD_RELOC_16C_DISP04_C,
43.39913 -+  BFD_RELOC_16C_DISP08,
43.39914 -+  BFD_RELOC_16C_DISP08_C,
43.39915 -+  BFD_RELOC_16C_DISP16,
43.39916 -+  BFD_RELOC_16C_DISP16_C,
43.39917 -+  BFD_RELOC_16C_DISP24,
43.39918 -+  BFD_RELOC_16C_DISP24_C,
43.39919 -+  BFD_RELOC_16C_DISP24a,
43.39920 -+  BFD_RELOC_16C_DISP24a_C,
43.39921 -+  BFD_RELOC_16C_REG04,
43.39922 -+  BFD_RELOC_16C_REG04_C,
43.39923 -+  BFD_RELOC_16C_REG04a,
43.39924 -+  BFD_RELOC_16C_REG04a_C,
43.39925 -+  BFD_RELOC_16C_REG14,
43.39926 -+  BFD_RELOC_16C_REG14_C,
43.39927 -+  BFD_RELOC_16C_REG16,
43.39928 -+  BFD_RELOC_16C_REG16_C,
43.39929 -+  BFD_RELOC_16C_REG20,
43.39930 -+  BFD_RELOC_16C_REG20_C,
43.39931 -+  BFD_RELOC_16C_ABS20,
43.39932 -+  BFD_RELOC_16C_ABS20_C,
43.39933 -+  BFD_RELOC_16C_ABS24,
43.39934 -+  BFD_RELOC_16C_ABS24_C,
43.39935 -+  BFD_RELOC_16C_IMM04,
43.39936 -+  BFD_RELOC_16C_IMM04_C,
43.39937 -+  BFD_RELOC_16C_IMM16,
43.39938 -+  BFD_RELOC_16C_IMM16_C,
43.39939 -+  BFD_RELOC_16C_IMM20,
43.39940 -+  BFD_RELOC_16C_IMM20_C,
43.39941 -+  BFD_RELOC_16C_IMM24,
43.39942 -+  BFD_RELOC_16C_IMM24_C,
43.39943 -+  BFD_RELOC_16C_IMM32,
43.39944 -+  BFD_RELOC_16C_IMM32_C,
43.39945 -+
43.39946 -+/* NS CR16 Relocations.  */
43.39947 -+  BFD_RELOC_CR16_NUM8,
43.39948 -+  BFD_RELOC_CR16_NUM16,
43.39949 -+  BFD_RELOC_CR16_NUM32,
43.39950 -+  BFD_RELOC_CR16_NUM32a,
43.39951 -+  BFD_RELOC_CR16_REGREL0,
43.39952 -+  BFD_RELOC_CR16_REGREL4,
43.39953 -+  BFD_RELOC_CR16_REGREL4a,
43.39954 -+  BFD_RELOC_CR16_REGREL14,
43.39955 -+  BFD_RELOC_CR16_REGREL14a,
43.39956 -+  BFD_RELOC_CR16_REGREL16,
43.39957 -+  BFD_RELOC_CR16_REGREL20,
43.39958 -+  BFD_RELOC_CR16_REGREL20a,
43.39959 -+  BFD_RELOC_CR16_ABS20,
43.39960 -+  BFD_RELOC_CR16_ABS24,
43.39961 -+  BFD_RELOC_CR16_IMM4,
43.39962 -+  BFD_RELOC_CR16_IMM8,
43.39963 -+  BFD_RELOC_CR16_IMM16,
43.39964 -+  BFD_RELOC_CR16_IMM20,
43.39965 -+  BFD_RELOC_CR16_IMM24,
43.39966 -+  BFD_RELOC_CR16_IMM32,
43.39967 -+  BFD_RELOC_CR16_IMM32a,
43.39968 -+  BFD_RELOC_CR16_DISP4,
43.39969 -+  BFD_RELOC_CR16_DISP8,
43.39970 -+  BFD_RELOC_CR16_DISP16,
43.39971 -+  BFD_RELOC_CR16_DISP20,
43.39972 -+  BFD_RELOC_CR16_DISP24,
43.39973 -+  BFD_RELOC_CR16_DISP24a,
43.39974 -+
43.39975 -+/* NS CRX Relocations.  */
43.39976 -+  BFD_RELOC_CRX_REL4,
43.39977 -+  BFD_RELOC_CRX_REL8,
43.39978 -+  BFD_RELOC_CRX_REL8_CMP,
43.39979 -+  BFD_RELOC_CRX_REL16,
43.39980 -+  BFD_RELOC_CRX_REL24,
43.39981 -+  BFD_RELOC_CRX_REL32,
43.39982 -+  BFD_RELOC_CRX_REGREL12,
43.39983 -+  BFD_RELOC_CRX_REGREL22,
43.39984 -+  BFD_RELOC_CRX_REGREL28,
43.39985 -+  BFD_RELOC_CRX_REGREL32,
43.39986 -+  BFD_RELOC_CRX_ABS16,
43.39987 -+  BFD_RELOC_CRX_ABS32,
43.39988 -+  BFD_RELOC_CRX_NUM8,
43.39989 -+  BFD_RELOC_CRX_NUM16,
43.39990 -+  BFD_RELOC_CRX_NUM32,
43.39991 -+  BFD_RELOC_CRX_IMM16,
43.39992 -+  BFD_RELOC_CRX_IMM32,
43.39993 -+  BFD_RELOC_CRX_SWITCH8,
43.39994 -+  BFD_RELOC_CRX_SWITCH16,
43.39995 -+  BFD_RELOC_CRX_SWITCH32,
43.39996 -+
43.39997 -+/* These relocs are only used within the CRIS assembler.  They are not
43.39998 -+(at present) written to any object files.  */
43.39999 -+  BFD_RELOC_CRIS_BDISP8,
43.40000 -+  BFD_RELOC_CRIS_UNSIGNED_5,
43.40001 -+  BFD_RELOC_CRIS_SIGNED_6,
43.40002 -+  BFD_RELOC_CRIS_UNSIGNED_6,
43.40003 -+  BFD_RELOC_CRIS_SIGNED_8,
43.40004 -+  BFD_RELOC_CRIS_UNSIGNED_8,
43.40005 -+  BFD_RELOC_CRIS_SIGNED_16,
43.40006 -+  BFD_RELOC_CRIS_UNSIGNED_16,
43.40007 -+  BFD_RELOC_CRIS_LAPCQ_OFFSET,
43.40008 -+  BFD_RELOC_CRIS_UNSIGNED_4,
43.40009 -+
43.40010 -+/* Relocs used in ELF shared libraries for CRIS.  */
43.40011 -+  BFD_RELOC_CRIS_COPY,
43.40012 -+  BFD_RELOC_CRIS_GLOB_DAT,
43.40013 -+  BFD_RELOC_CRIS_JUMP_SLOT,
43.40014 -+  BFD_RELOC_CRIS_RELATIVE,
43.40015 -+
43.40016 -+/* 32-bit offset to symbol-entry within GOT.  */
43.40017 -+  BFD_RELOC_CRIS_32_GOT,
43.40018 -+
43.40019 -+/* 16-bit offset to symbol-entry within GOT.  */
43.40020 -+  BFD_RELOC_CRIS_16_GOT,
43.40021 -+
43.40022 -+/* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
43.40023 -+  BFD_RELOC_CRIS_32_GOTPLT,
43.40024 -+
43.40025 -+/* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
43.40026 -+  BFD_RELOC_CRIS_16_GOTPLT,
43.40027 -+
43.40028 -+/* 32-bit offset to symbol, relative to GOT.  */
43.40029 -+  BFD_RELOC_CRIS_32_GOTREL,
43.40030 -+
43.40031 -+/* 32-bit offset to symbol with PLT entry, relative to GOT.  */
43.40032 -+  BFD_RELOC_CRIS_32_PLT_GOTREL,
43.40033 -+
43.40034 -+/* 32-bit offset to symbol with PLT entry, relative to this relocation.  */
43.40035 -+  BFD_RELOC_CRIS_32_PLT_PCREL,
43.40036 -+
43.40037 -+/* Intel i860 Relocations.  */
43.40038 -+  BFD_RELOC_860_COPY,
43.40039 -+  BFD_RELOC_860_GLOB_DAT,
43.40040 -+  BFD_RELOC_860_JUMP_SLOT,
43.40041 -+  BFD_RELOC_860_RELATIVE,
43.40042 -+  BFD_RELOC_860_PC26,
43.40043 -+  BFD_RELOC_860_PLT26,
43.40044 -+  BFD_RELOC_860_PC16,
43.40045 -+  BFD_RELOC_860_LOW0,
43.40046 -+  BFD_RELOC_860_SPLIT0,
43.40047 -+  BFD_RELOC_860_LOW1,
43.40048 -+  BFD_RELOC_860_SPLIT1,
43.40049 -+  BFD_RELOC_860_LOW2,
43.40050 -+  BFD_RELOC_860_SPLIT2,
43.40051 -+  BFD_RELOC_860_LOW3,
43.40052 -+  BFD_RELOC_860_LOGOT0,
43.40053 -+  BFD_RELOC_860_SPGOT0,
43.40054 -+  BFD_RELOC_860_LOGOT1,
43.40055 -+  BFD_RELOC_860_SPGOT1,
43.40056 -+  BFD_RELOC_860_LOGOTOFF0,
43.40057 -+  BFD_RELOC_860_SPGOTOFF0,
43.40058 -+  BFD_RELOC_860_LOGOTOFF1,
43.40059 -+  BFD_RELOC_860_SPGOTOFF1,
43.40060 -+  BFD_RELOC_860_LOGOTOFF2,
43.40061 -+  BFD_RELOC_860_LOGOTOFF3,
43.40062 -+  BFD_RELOC_860_LOPC,
43.40063 -+  BFD_RELOC_860_HIGHADJ,
43.40064 -+  BFD_RELOC_860_HAGOT,
43.40065 -+  BFD_RELOC_860_HAGOTOFF,
43.40066 -+  BFD_RELOC_860_HAPC,
43.40067 -+  BFD_RELOC_860_HIGH,
43.40068 -+  BFD_RELOC_860_HIGOT,
43.40069 -+  BFD_RELOC_860_HIGOTOFF,
43.40070 -+
43.40071 -+/* OpenRISC Relocations.  */
43.40072 -+  BFD_RELOC_OPENRISC_ABS_26,
43.40073 -+  BFD_RELOC_OPENRISC_REL_26,
43.40074 -+
43.40075 -+/* H8 elf Relocations.  */
43.40076 -+  BFD_RELOC_H8_DIR16A8,
43.40077 -+  BFD_RELOC_H8_DIR16R8,
43.40078 -+  BFD_RELOC_H8_DIR24A8,
43.40079 -+  BFD_RELOC_H8_DIR24R8,
43.40080 -+  BFD_RELOC_H8_DIR32A16,
43.40081 -+
43.40082 -+/* Sony Xstormy16 Relocations.  */
43.40083 -+  BFD_RELOC_XSTORMY16_REL_12,
43.40084 -+  BFD_RELOC_XSTORMY16_12,
43.40085 -+  BFD_RELOC_XSTORMY16_24,
43.40086 -+  BFD_RELOC_XSTORMY16_FPTR16,
43.40087 -+
43.40088 -+/* Self-describing complex relocations.  */
43.40089 -+  BFD_RELOC_RELC,
43.40090 -+
43.40091 -+
43.40092 -+/* Infineon Relocations.  */
43.40093 -+  BFD_RELOC_XC16X_PAG,
43.40094 -+  BFD_RELOC_XC16X_POF,
43.40095 -+  BFD_RELOC_XC16X_SEG,
43.40096 -+  BFD_RELOC_XC16X_SOF,
43.40097 -+
43.40098 -+/* Relocations used by VAX ELF.  */
43.40099 -+  BFD_RELOC_VAX_GLOB_DAT,
43.40100 -+  BFD_RELOC_VAX_JMP_SLOT,
43.40101 -+  BFD_RELOC_VAX_RELATIVE,
43.40102 -+
43.40103 -+/* Morpho MT - 16 bit immediate relocation.  */
43.40104 -+  BFD_RELOC_MT_PC16,
43.40105 -+
43.40106 -+/* Morpho MT - Hi 16 bits of an address.  */
43.40107 -+  BFD_RELOC_MT_HI16,
43.40108 -+
43.40109 -+/* Morpho MT - Low 16 bits of an address.  */
43.40110 -+  BFD_RELOC_MT_LO16,
43.40111 -+
43.40112 -+/* Morpho MT - Used to tell the linker which vtable entries are used.  */
43.40113 -+  BFD_RELOC_MT_GNU_VTINHERIT,
43.40114 -+
43.40115 -+/* Morpho MT - Used to tell the linker which vtable entries are used.  */
43.40116 -+  BFD_RELOC_MT_GNU_VTENTRY,
43.40117 -+
43.40118 -+/* Morpho MT - 8 bit immediate relocation.  */
43.40119 -+  BFD_RELOC_MT_PCINSN8,
43.40120 -+
43.40121 -+/* msp430 specific relocation codes  */
43.40122 -+  BFD_RELOC_MSP430_10_PCREL,
43.40123 -+  BFD_RELOC_MSP430_16_PCREL,
43.40124 -+  BFD_RELOC_MSP430_16,
43.40125 -+  BFD_RELOC_MSP430_16_PCREL_BYTE,
43.40126 -+  BFD_RELOC_MSP430_16_BYTE,
43.40127 -+  BFD_RELOC_MSP430_2X_PCREL,
43.40128 -+  BFD_RELOC_MSP430_RL_PCREL,
43.40129 -+
43.40130 -+/* IQ2000 Relocations.  */
43.40131 -+  BFD_RELOC_IQ2000_OFFSET_16,
43.40132 -+  BFD_RELOC_IQ2000_OFFSET_21,
43.40133 -+  BFD_RELOC_IQ2000_UHI16,
43.40134 -+
43.40135 -+/* Special Xtensa relocation used only by PLT entries in ELF shared
43.40136 -+objects to indicate that the runtime linker should set the value
43.40137 -+to one of its own internal functions or data structures.  */
43.40138 -+  BFD_RELOC_XTENSA_RTLD,
43.40139 -+
43.40140 -+/* Xtensa relocations for ELF shared objects.  */
43.40141 -+  BFD_RELOC_XTENSA_GLOB_DAT,
43.40142 -+  BFD_RELOC_XTENSA_JMP_SLOT,
43.40143 -+  BFD_RELOC_XTENSA_RELATIVE,
43.40144 -+
43.40145 -+/* Xtensa relocation used in ELF object files for symbols that may require
43.40146 -+PLT entries.  Otherwise, this is just a generic 32-bit relocation.  */
43.40147 -+  BFD_RELOC_XTENSA_PLT,
43.40148 -+
43.40149 -+/* Xtensa relocations to mark the difference of two local symbols.
43.40150 -+These are only needed to support linker relaxation and can be ignored
43.40151 -+when not relaxing.  The field is set to the value of the difference
43.40152 -+assuming no relaxation.  The relocation encodes the position of the
43.40153 -+first symbol so the linker can determine whether to adjust the field
43.40154 -+value.  */
43.40155 -+  BFD_RELOC_XTENSA_DIFF8,
43.40156 -+  BFD_RELOC_XTENSA_DIFF16,
43.40157 -+  BFD_RELOC_XTENSA_DIFF32,
43.40158 -+
43.40159 -+/* Generic Xtensa relocations for instruction operands.  Only the slot
43.40160 -+number is encoded in the relocation.  The relocation applies to the
43.40161 -+last PC-relative immediate operand, or if there are no PC-relative
43.40162 -+immediates, to the last immediate operand.  */
43.40163 -+  BFD_RELOC_XTENSA_SLOT0_OP,
43.40164 -+  BFD_RELOC_XTENSA_SLOT1_OP,
43.40165 -+  BFD_RELOC_XTENSA_SLOT2_OP,
43.40166 -+  BFD_RELOC_XTENSA_SLOT3_OP,
43.40167 -+  BFD_RELOC_XTENSA_SLOT4_OP,
43.40168 -+  BFD_RELOC_XTENSA_SLOT5_OP,
43.40169 -+  BFD_RELOC_XTENSA_SLOT6_OP,
43.40170 -+  BFD_RELOC_XTENSA_SLOT7_OP,
43.40171 -+  BFD_RELOC_XTENSA_SLOT8_OP,
43.40172 -+  BFD_RELOC_XTENSA_SLOT9_OP,
43.40173 -+  BFD_RELOC_XTENSA_SLOT10_OP,
43.40174 -+  BFD_RELOC_XTENSA_SLOT11_OP,
43.40175 -+  BFD_RELOC_XTENSA_SLOT12_OP,
43.40176 -+  BFD_RELOC_XTENSA_SLOT13_OP,
43.40177 -+  BFD_RELOC_XTENSA_SLOT14_OP,
43.40178 -+
43.40179 -+/* Alternate Xtensa relocations.  Only the slot is encoded in the
43.40180 -+relocation.  The meaning of these relocations is opcode-specific.  */
43.40181 -+  BFD_RELOC_XTENSA_SLOT0_ALT,
43.40182 -+  BFD_RELOC_XTENSA_SLOT1_ALT,
43.40183 -+  BFD_RELOC_XTENSA_SLOT2_ALT,
43.40184 -+  BFD_RELOC_XTENSA_SLOT3_ALT,
43.40185 -+  BFD_RELOC_XTENSA_SLOT4_ALT,
43.40186 -+  BFD_RELOC_XTENSA_SLOT5_ALT,
43.40187 -+  BFD_RELOC_XTENSA_SLOT6_ALT,
43.40188 -+  BFD_RELOC_XTENSA_SLOT7_ALT,
43.40189 -+  BFD_RELOC_XTENSA_SLOT8_ALT,
43.40190 -+  BFD_RELOC_XTENSA_SLOT9_ALT,
43.40191 -+  BFD_RELOC_XTENSA_SLOT10_ALT,
43.40192 -+  BFD_RELOC_XTENSA_SLOT11_ALT,
43.40193 -+  BFD_RELOC_XTENSA_SLOT12_ALT,
43.40194 -+  BFD_RELOC_XTENSA_SLOT13_ALT,
43.40195 -+  BFD_RELOC_XTENSA_SLOT14_ALT,
43.40196 -+
43.40197 -+/* Xtensa relocations for backward compatibility.  These have all been
43.40198 -+replaced by BFD_RELOC_XTENSA_SLOT0_OP.  */
43.40199 -+  BFD_RELOC_XTENSA_OP0,
43.40200 -+  BFD_RELOC_XTENSA_OP1,
43.40201 -+  BFD_RELOC_XTENSA_OP2,
43.40202 -+
43.40203 -+/* Xtensa relocation to mark that the assembler expanded the
43.40204 -+instructions from an original target.  The expansion size is
43.40205 -+encoded in the reloc size.  */
43.40206 -+  BFD_RELOC_XTENSA_ASM_EXPAND,
43.40207 -+
43.40208 -+/* Xtensa relocation to mark that the linker should simplify
43.40209 -+assembler-expanded instructions.  This is commonly used
43.40210 -+internally by the linker after analysis of a
43.40211 -+BFD_RELOC_XTENSA_ASM_EXPAND.  */
43.40212 -+  BFD_RELOC_XTENSA_ASM_SIMPLIFY,
43.40213 -+
43.40214 -+/* 8 bit signed offset in (ix+d) or (iy+d).  */
43.40215 -+  BFD_RELOC_Z80_DISP8,
43.40216 -+
43.40217 -+/* DJNZ offset.  */
43.40218 -+  BFD_RELOC_Z8K_DISP7,
43.40219 -+
43.40220 -+/* CALR offset.  */
43.40221 -+  BFD_RELOC_Z8K_CALLR,
43.40222 -+
43.40223 -+/* 4 bit value.  */
43.40224 -+  BFD_RELOC_Z8K_IMM4L,
43.40225 -+  BFD_RELOC_UNUSED };
43.40226 -+typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
43.40227 -+reloc_howto_type *bfd_reloc_type_lookup
43.40228 -+   (bfd *abfd, bfd_reloc_code_real_type code);
43.40229 -+reloc_howto_type *bfd_reloc_name_lookup
43.40230 -+   (bfd *abfd, const char *reloc_name);
43.40231 -+
43.40232 -+const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
43.40233 -+
43.40234 -+/* Extracted from syms.c.  */
43.40235 -+
43.40236 -+typedef struct bfd_symbol
43.40237 -+{
43.40238 -+  /* A pointer to the BFD which owns the symbol. This information
43.40239 -+     is necessary so that a back end can work out what additional
43.40240 -+     information (invisible to the application writer) is carried
43.40241 -+     with the symbol.
43.40242 -+
43.40243 -+     This field is *almost* redundant, since you can use section->owner
43.40244 -+     instead, except that some symbols point to the global sections
43.40245 -+     bfd_{abs,com,und}_section.  This could be fixed by making
43.40246 -+     these globals be per-bfd (or per-target-flavor).  FIXME.  */
43.40247 -+  struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */
43.40248 -+
43.40249 -+  /* The text of the symbol. The name is left alone, and not copied; the
43.40250 -+     application may not alter it.  */
43.40251 -+  const char *name;
43.40252 -+
43.40253 -+  /* The value of the symbol.  This really should be a union of a
43.40254 -+     numeric value with a pointer, since some flags indicate that
43.40255 -+     a pointer to another symbol is stored here.  */
43.40256 -+  symvalue value;
43.40257 -+
43.40258 -+  /* Attributes of a symbol.  */
43.40259 -+#define BSF_NO_FLAGS    0x00
43.40260 -+
43.40261 -+  /* The symbol has local scope; <<static>> in <<C>>. The value
43.40262 -+     is the offset into the section of the data.  */
43.40263 -+#define BSF_LOCAL      0x01
43.40264 -+
43.40265 -+  /* The symbol has global scope; initialized data in <<C>>. The
43.40266 -+     value is the offset into the section of the data.  */
43.40267 -+#define BSF_GLOBAL     0x02
43.40268 -+
43.40269 -+  /* The symbol has global scope and is exported. The value is
43.40270 -+     the offset into the section of the data.  */
43.40271 -+#define BSF_EXPORT     BSF_GLOBAL /* No real difference.  */
43.40272 -+
43.40273 -+  /* A normal C symbol would be one of:
43.40274 -+     <<BSF_LOCAL>>, <<BSF_FORT_COMM>>,  <<BSF_UNDEFINED>> or
43.40275 -+     <<BSF_GLOBAL>>.  */
43.40276 -+
43.40277 -+  /* The symbol is a debugging record. The value has an arbitrary
43.40278 -+     meaning, unless BSF_DEBUGGING_RELOC is also set.  */
43.40279 -+#define BSF_DEBUGGING  0x08
43.40280 -+
43.40281 -+  /* The symbol denotes a function entry point.  Used in ELF,
43.40282 -+     perhaps others someday.  */
43.40283 -+#define BSF_FUNCTION    0x10
43.40284 -+
43.40285 -+  /* Used by the linker.  */
43.40286 -+#define BSF_KEEP        0x20
43.40287 -+#define BSF_KEEP_G      0x40
43.40288 -+
43.40289 -+  /* A weak global symbol, overridable without warnings by
43.40290 -+     a regular global symbol of the same name.  */
43.40291 -+#define BSF_WEAK        0x80
43.40292 -+
43.40293 -+  /* This symbol was created to point to a section, e.g. ELF's
43.40294 -+     STT_SECTION symbols.  */
43.40295 -+#define BSF_SECTION_SYM 0x100
43.40296 -+
43.40297 -+  /* The symbol used to be a common symbol, but now it is
43.40298 -+     allocated.  */
43.40299 -+#define BSF_OLD_COMMON  0x200
43.40300 -+
43.40301 -+  /* The default value for common data.  */
43.40302 -+#define BFD_FORT_COMM_DEFAULT_VALUE 0
43.40303 -+
43.40304 -+  /* In some files the type of a symbol sometimes alters its
43.40305 -+     location in an output file - ie in coff a <<ISFCN>> symbol
43.40306 -+     which is also <<C_EXT>> symbol appears where it was
43.40307 -+     declared and not at the end of a section.  This bit is set
43.40308 -+     by the target BFD part to convey this information.  */
43.40309 -+#define BSF_NOT_AT_END    0x400
43.40310 -+
43.40311 -+  /* Signal that the symbol is the label of constructor section.  */
43.40312 -+#define BSF_CONSTRUCTOR   0x800
43.40313 -+
43.40314 -+  /* Signal that the symbol is a warning symbol.  The name is a
43.40315 -+     warning.  The name of the next symbol is the one to warn about;
43.40316 -+     if a reference is made to a symbol with the same name as the next
43.40317 -+     symbol, a warning is issued by the linker.  */
43.40318 -+#define BSF_WARNING       0x1000
43.40319 -+
43.40320 -+  /* Signal that the symbol is indirect.  This symbol is an indirect
43.40321 -+     pointer to the symbol with the same name as the next symbol.  */
43.40322 -+#define BSF_INDIRECT      0x2000
43.40323 -+
43.40324 -+  /* BSF_FILE marks symbols that contain a file name.  This is used
43.40325 -+     for ELF STT_FILE symbols.  */
43.40326 -+#define BSF_FILE          0x4000
43.40327 -+
43.40328 -+  /* Symbol is from dynamic linking information.  */
43.40329 -+#define BSF_DYNAMIC       0x8000
43.40330 -+
43.40331 -+  /* The symbol denotes a data object.  Used in ELF, and perhaps
43.40332 -+     others someday.  */
43.40333 -+#define BSF_OBJECT        0x10000
43.40334 -+
43.40335 -+  /* This symbol is a debugging symbol.  The value is the offset
43.40336 -+     into the section of the data.  BSF_DEBUGGING should be set
43.40337 -+     as well.  */
43.40338 -+#define BSF_DEBUGGING_RELOC 0x20000
43.40339 -+
43.40340 -+  /* This symbol is thread local.  Used in ELF.  */
43.40341 -+#define BSF_THREAD_LOCAL  0x40000
43.40342 -+
43.40343 -+  /* This symbol represents a complex relocation expression,
43.40344 -+     with the expression tree serialized in the symbol name.  */
43.40345 -+#define BSF_RELC 0x80000
43.40346 -+
43.40347 -+  /* This symbol represents a signed complex relocation expression,
43.40348 -+     with the expression tree serialized in the symbol name.  */
43.40349 -+#define BSF_SRELC 0x100000
43.40350 -+
43.40351 -+  flagword flags;
43.40352 -+
43.40353 -+  /* A pointer to the section to which this symbol is
43.40354 -+     relative.  This will always be non NULL, there are special
43.40355 -+     sections for undefined and absolute symbols.  */
43.40356 -+  struct bfd_section *section;
43.40357 -+
43.40358 -+  /* Back end special data.  */
43.40359 -+  union
43.40360 -+    {
43.40361 -+      void *p;
43.40362 -+      bfd_vma i;
43.40363 -+    }
43.40364 -+  udata;
43.40365 -+}
43.40366 -+asymbol;
43.40367 -+
43.40368 -+#define bfd_get_symtab_upper_bound(abfd) \
43.40369 -+     BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
43.40370 -+
43.40371 -+bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
43.40372 -+
43.40373 -+bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
43.40374 -+
43.40375 -+#define bfd_is_local_label_name(abfd, name) \
43.40376 -+  BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
43.40377 -+
43.40378 -+bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
43.40379 -+
43.40380 -+#define bfd_is_target_special_symbol(abfd, sym) \
43.40381 -+  BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
43.40382 -+
43.40383 -+#define bfd_canonicalize_symtab(abfd, location) \
43.40384 -+  BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
43.40385 -+
43.40386 -+bfd_boolean bfd_set_symtab
43.40387 -+   (bfd *abfd, asymbol **location, unsigned int count);
43.40388 -+
43.40389 -+void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
43.40390 -+
43.40391 -+#define bfd_make_empty_symbol(abfd) \
43.40392 -+  BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
43.40393 -+
43.40394 -+asymbol *_bfd_generic_make_empty_symbol (bfd *);
43.40395 -+
43.40396 -+#define bfd_make_debug_symbol(abfd,ptr,size) \
43.40397 -+  BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
43.40398 -+
43.40399 -+int bfd_decode_symclass (asymbol *symbol);
43.40400 -+
43.40401 -+bfd_boolean bfd_is_undefined_symclass (int symclass);
43.40402 -+
43.40403 -+void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
43.40404 -+
43.40405 -+bfd_boolean bfd_copy_private_symbol_data
43.40406 -+   (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
43.40407 -+
43.40408 -+#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
43.40409 -+  BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
43.40410 -+            (ibfd, isymbol, obfd, osymbol))
43.40411 -+
43.40412 -+/* Extracted from bfd.c.  */
43.40413 -+struct bfd
43.40414 -+{
43.40415 -+  /* A unique identifier of the BFD  */
43.40416 -+  unsigned int id;
43.40417 -+
43.40418 -+  /* The filename the application opened the BFD with.  */
43.40419 -+  const char *filename;
43.40420 -+
43.40421 -+  /* A pointer to the target jump table.  */
43.40422 -+  const struct bfd_target *xvec;
43.40423 -+
43.40424 -+  /* The IOSTREAM, and corresponding IO vector that provide access
43.40425 -+     to the file backing the BFD.  */
43.40426 -+  void *iostream;
43.40427 -+  const struct bfd_iovec *iovec;
43.40428 -+
43.40429 -+  /* Is the file descriptor being cached?  That is, can it be closed as
43.40430 -+     needed, and re-opened when accessed later?  */
43.40431 -+  bfd_boolean cacheable;
43.40432 -+
43.40433 -+  /* Marks whether there was a default target specified when the
43.40434 -+     BFD was opened. This is used to select which matching algorithm
43.40435 -+     to use to choose the back end.  */
43.40436 -+  bfd_boolean target_defaulted;
43.40437 -+
43.40438 -+  /* The caching routines use these to maintain a
43.40439 -+     least-recently-used list of BFDs.  */
43.40440 -+  struct bfd *lru_prev, *lru_next;
43.40441 -+
43.40442 -+  /* When a file is closed by the caching routines, BFD retains
43.40443 -+     state information on the file here...  */
43.40444 -+  ufile_ptr where;
43.40445 -+
43.40446 -+  /* ... and here: (``once'' means at least once).  */
43.40447 -+  bfd_boolean opened_once;
43.40448 -+
43.40449 -+  /* Set if we have a locally maintained mtime value, rather than
43.40450 -+     getting it from the file each time.  */
43.40451 -+  bfd_boolean mtime_set;
43.40452 -+
43.40453 -+  /* File modified time, if mtime_set is TRUE.  */
43.40454 -+  long mtime;
43.40455 -+
43.40456 -+  /* Reserved for an unimplemented file locking extension.  */
43.40457 -+  int ifd;
43.40458 -+
43.40459 -+  /* The format which belongs to the BFD. (object, core, etc.)  */
43.40460 -+  bfd_format format;
43.40461 -+
43.40462 -+  /* The direction with which the BFD was opened.  */
43.40463 -+  enum bfd_direction
43.40464 -+    {
43.40465 -+      no_direction = 0,
43.40466 -+      read_direction = 1,
43.40467 -+      write_direction = 2,
43.40468 -+      both_direction = 3
43.40469 -+    }
43.40470 -+  direction;
43.40471 -+
43.40472 -+  /* Format_specific flags.  */
43.40473 -+  flagword flags;
43.40474 -+
43.40475 -+  /* Currently my_archive is tested before adding origin to
43.40476 -+     anything. I believe that this can become always an add of
43.40477 -+     origin, with origin set to 0 for non archive files.  */
43.40478 -+  ufile_ptr origin;
43.40479 -+
43.40480 -+  /* Remember when output has begun, to stop strange things
43.40481 -+     from happening.  */
43.40482 -+  bfd_boolean output_has_begun;
43.40483 -+
43.40484 -+  /* A hash table for section names.  */
43.40485 -+  struct bfd_hash_table section_htab;
43.40486 -+
43.40487 -+  /* Pointer to linked list of sections.  */
43.40488 -+  struct bfd_section *sections;
43.40489 -+
43.40490 -+  /* The last section on the section list.  */
43.40491 -+  struct bfd_section *section_last;
43.40492 -+
43.40493 -+  /* The number of sections.  */
43.40494 -+  unsigned int section_count;
43.40495 -+
43.40496 -+  /* Stuff only useful for object files:
43.40497 -+     The start address.  */
43.40498 -+  bfd_vma start_address;
43.40499 -+
43.40500 -+  /* Used for input and output.  */
43.40501 -+  unsigned int symcount;
43.40502 -+
43.40503 -+  /* Symbol table for output BFD (with symcount entries).  */
43.40504 -+  struct bfd_symbol  **outsymbols;
43.40505 -+
43.40506 -+  /* Used for slurped dynamic symbol tables.  */
43.40507 -+  unsigned int dynsymcount;
43.40508 -+
43.40509 -+  /* Pointer to structure which contains architecture information.  */
43.40510 -+  const struct bfd_arch_info *arch_info;
43.40511 -+
43.40512 -+  /* Flag set if symbols from this BFD should not be exported.  */
43.40513 -+  bfd_boolean no_export;
43.40514 -+
43.40515 -+  /* Stuff only useful for archives.  */
43.40516 -+  void *arelt_data;
43.40517 -+  struct bfd *my_archive;      /* The containing archive BFD.  */
43.40518 -+  struct bfd *archive_next;    /* The next BFD in the archive.  */
43.40519 -+  struct bfd *archive_head;    /* The first BFD in the archive.  */
43.40520 -+  bfd_boolean has_armap;
43.40521 -+
43.40522 -+  /* A chain of BFD structures involved in a link.  */
43.40523 -+  struct bfd *link_next;
43.40524 -+
43.40525 -+  /* A field used by _bfd_generic_link_add_archive_symbols.  This will
43.40526 -+     be used only for archive elements.  */
43.40527 -+  int archive_pass;
43.40528 -+
43.40529 -+  /* Used by the back end to hold private data.  */
43.40530 -+  union
43.40531 -+    {
43.40532 -+      struct aout_data_struct *aout_data;
43.40533 -+      struct artdata *aout_ar_data;
43.40534 -+      struct _oasys_data *oasys_obj_data;
43.40535 -+      struct _oasys_ar_data *oasys_ar_data;
43.40536 -+      struct coff_tdata *coff_obj_data;
43.40537 -+      struct pe_tdata *pe_obj_data;
43.40538 -+      struct xcoff_tdata *xcoff_obj_data;
43.40539 -+      struct ecoff_tdata *ecoff_obj_data;
43.40540 -+      struct ieee_data_struct *ieee_data;
43.40541 -+      struct ieee_ar_data_struct *ieee_ar_data;
43.40542 -+      struct srec_data_struct *srec_data;
43.40543 -+      struct ihex_data_struct *ihex_data;
43.40544 -+      struct tekhex_data_struct *tekhex_data;
43.40545 -+      struct elf_obj_tdata *elf_obj_data;
43.40546 -+      struct nlm_obj_tdata *nlm_obj_data;
43.40547 -+      struct bout_data_struct *bout_data;
43.40548 -+      struct mmo_data_struct *mmo_data;
43.40549 -+      struct sun_core_struct *sun_core_data;
43.40550 -+      struct sco5_core_struct *sco5_core_data;
43.40551 -+      struct trad_core_struct *trad_core_data;
43.40552 -+      struct som_data_struct *som_data;
43.40553 -+      struct hpux_core_struct *hpux_core_data;
43.40554 -+      struct hppabsd_core_struct *hppabsd_core_data;
43.40555 -+      struct sgi_core_struct *sgi_core_data;
43.40556 -+      struct lynx_core_struct *lynx_core_data;
43.40557 -+      struct osf_core_struct *osf_core_data;
43.40558 -+      struct cisco_core_struct *cisco_core_data;
43.40559 -+      struct versados_data_struct *versados_data;
43.40560 -+      struct netbsd_core_struct *netbsd_core_data;
43.40561 -+      struct mach_o_data_struct *mach_o_data;
43.40562 -+      struct mach_o_fat_data_struct *mach_o_fat_data;
43.40563 -+      struct bfd_pef_data_struct *pef_data;
43.40564 -+      struct bfd_pef_xlib_data_struct *pef_xlib_data;
43.40565 -+      struct bfd_sym_data_struct *sym_data;
43.40566 -+      void *any;
43.40567 -+    }
43.40568 -+  tdata;
43.40569 -+
43.40570 -+  /* Used by the application to hold private data.  */
43.40571 -+  void *usrdata;
43.40572 -+
43.40573 -+  /* Where all the allocated stuff under this BFD goes.  This is a
43.40574 -+     struct objalloc *, but we use void * to avoid requiring the inclusion
43.40575 -+     of objalloc.h.  */
43.40576 -+  void *memory;
43.40577 -+};
43.40578 -+
43.40579 -+typedef enum bfd_error
43.40580 -+{
43.40581 -+  bfd_error_no_error = 0,
43.40582 -+  bfd_error_system_call,
43.40583 -+  bfd_error_invalid_target,
43.40584 -+  bfd_error_wrong_format,
43.40585 -+  bfd_error_wrong_object_format,
43.40586 -+  bfd_error_invalid_operation,
43.40587 -+  bfd_error_no_memory,
43.40588 -+  bfd_error_no_symbols,
43.40589 -+  bfd_error_no_armap,
43.40590 -+  bfd_error_no_more_archived_files,
43.40591 -+  bfd_error_malformed_archive,
43.40592 -+  bfd_error_file_not_recognized,
43.40593 -+  bfd_error_file_ambiguously_recognized,
43.40594 -+  bfd_error_no_contents,
43.40595 -+  bfd_error_nonrepresentable_section,
43.40596 -+  bfd_error_no_debug_section,
43.40597 -+  bfd_error_bad_value,
43.40598 -+  bfd_error_file_truncated,
43.40599 -+  bfd_error_file_too_big,
43.40600 -+  bfd_error_on_input,
43.40601 -+  bfd_error_invalid_error_code
43.40602 -+}
43.40603 -+bfd_error_type;
43.40604 -+
43.40605 -+bfd_error_type bfd_get_error (void);
43.40606 -+
43.40607 -+void bfd_set_error (bfd_error_type error_tag, ...);
43.40608 -+
43.40609 -+const char *bfd_errmsg (bfd_error_type error_tag);
43.40610 -+
43.40611 -+void bfd_perror (const char *message);
43.40612 -+
43.40613 -+typedef void (*bfd_error_handler_type) (const char *, ...);
43.40614 -+
43.40615 -+bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
43.40616 -+
43.40617 -+void bfd_set_error_program_name (const char *);
43.40618 -+
43.40619 -+bfd_error_handler_type bfd_get_error_handler (void);
43.40620 -+
43.40621 -+long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
43.40622 -+
43.40623 -+long bfd_canonicalize_reloc
43.40624 -+   (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
43.40625 -+
43.40626 -+void bfd_set_reloc
43.40627 -+   (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
43.40628 -+
43.40629 -+bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
43.40630 -+
43.40631 -+int bfd_get_arch_size (bfd *abfd);
43.40632 -+
43.40633 -+int bfd_get_sign_extend_vma (bfd *abfd);
43.40634 -+
43.40635 -+bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
43.40636 -+
43.40637 -+unsigned int bfd_get_gp_size (bfd *abfd);
43.40638 -+
43.40639 -+void bfd_set_gp_size (bfd *abfd, unsigned int i);
43.40640 -+
43.40641 -+bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
43.40642 -+
43.40643 -+bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
43.40644 -+
43.40645 -+#define bfd_copy_private_header_data(ibfd, obfd) \
43.40646 -+     BFD_SEND (obfd, _bfd_copy_private_header_data, \
43.40647 -+               (ibfd, obfd))
43.40648 -+bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
43.40649 -+
43.40650 -+#define bfd_copy_private_bfd_data(ibfd, obfd) \
43.40651 -+     BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
43.40652 -+               (ibfd, obfd))
43.40653 -+bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
43.40654 -+
43.40655 -+#define bfd_merge_private_bfd_data(ibfd, obfd) \
43.40656 -+     BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
43.40657 -+               (ibfd, obfd))
43.40658 -+bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
43.40659 -+
43.40660 -+#define bfd_set_private_flags(abfd, flags) \
43.40661 -+     BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
43.40662 -+#define bfd_sizeof_headers(abfd, info) \
43.40663 -+       BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
43.40664 -+
43.40665 -+#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
43.40666 -+       BFD_SEND (abfd, _bfd_find_nearest_line, \
43.40667 -+                 (abfd, sec, syms, off, file, func, line))
43.40668 -+
43.40669 -+#define bfd_find_line(abfd, syms, sym, file, line) \
43.40670 -+       BFD_SEND (abfd, _bfd_find_line, \
43.40671 -+                 (abfd, syms, sym, file, line))
43.40672 -+
43.40673 -+#define bfd_find_inliner_info(abfd, file, func, line) \
43.40674 -+       BFD_SEND (abfd, _bfd_find_inliner_info, \
43.40675 -+                 (abfd, file, func, line))
43.40676 -+
43.40677 -+#define bfd_debug_info_start(abfd) \
43.40678 -+       BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
43.40679 -+
43.40680 -+#define bfd_debug_info_end(abfd) \
43.40681 -+       BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
43.40682 -+
43.40683 -+#define bfd_debug_info_accumulate(abfd, section) \
43.40684 -+       BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
43.40685 -+
43.40686 -+#define bfd_stat_arch_elt(abfd, stat) \
43.40687 -+       BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
43.40688 -+
43.40689 -+#define bfd_update_armap_timestamp(abfd) \
43.40690 -+       BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
43.40691 -+
43.40692 -+#define bfd_set_arch_mach(abfd, arch, mach)\
43.40693 -+       BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
43.40694 -+
43.40695 -+#define bfd_relax_section(abfd, section, link_info, again) \
43.40696 -+       BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
43.40697 -+
43.40698 -+#define bfd_gc_sections(abfd, link_info) \
43.40699 -+       BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
43.40700 -+
43.40701 -+#define bfd_merge_sections(abfd, link_info) \
43.40702 -+       BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
43.40703 -+
43.40704 -+#define bfd_is_group_section(abfd, sec) \
43.40705 -+       BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
43.40706 -+
43.40707 -+#define bfd_discard_group(abfd, sec) \
43.40708 -+       BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
43.40709 -+
43.40710 -+#define bfd_link_hash_table_create(abfd) \
43.40711 -+       BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
43.40712 -+
43.40713 -+#define bfd_link_hash_table_free(abfd, hash) \
43.40714 -+       BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
43.40715 -+
43.40716 -+#define bfd_link_add_symbols(abfd, info) \
43.40717 -+       BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
43.40718 -+
43.40719 -+#define bfd_link_just_syms(abfd, sec, info) \
43.40720 -+       BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
43.40721 -+
43.40722 -+#define bfd_final_link(abfd, info) \
43.40723 -+       BFD_SEND (abfd, _bfd_final_link, (abfd, info))
43.40724 -+
43.40725 -+#define bfd_free_cached_info(abfd) \
43.40726 -+       BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
43.40727 -+
43.40728 -+#define bfd_get_dynamic_symtab_upper_bound(abfd) \
43.40729 -+       BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
43.40730 -+
43.40731 -+#define bfd_print_private_bfd_data(abfd, file)\
43.40732 -+       BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
43.40733 -+
43.40734 -+#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
43.40735 -+       BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
43.40736 -+
43.40737 -+#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
43.40738 -+       BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
43.40739 -+                                                   dyncount, dynsyms, ret))
43.40740 -+
43.40741 -+#define bfd_get_dynamic_reloc_upper_bound(abfd) \
43.40742 -+       BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
43.40743 -+
43.40744 -+#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
43.40745 -+       BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
43.40746 -+
43.40747 -+extern bfd_byte *bfd_get_relocated_section_contents
43.40748 -+  (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
43.40749 -+   bfd_boolean, asymbol **);
43.40750 -+
43.40751 -+bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
43.40752 -+
43.40753 -+struct bfd_preserve
43.40754 -+{
43.40755 -+  void *marker;
43.40756 -+  void *tdata;
43.40757 -+  flagword flags;
43.40758 -+  const struct bfd_arch_info *arch_info;
43.40759 -+  struct bfd_section *sections;
43.40760 -+  struct bfd_section *section_last;
43.40761 -+  unsigned int section_count;
43.40762 -+  struct bfd_hash_table section_htab;
43.40763 -+};
43.40764 -+
43.40765 -+bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
43.40766 -+
43.40767 -+void bfd_preserve_restore (bfd *, struct bfd_preserve *);
43.40768 -+
43.40769 -+void bfd_preserve_finish (bfd *, struct bfd_preserve *);
43.40770 -+
43.40771 -+bfd_vma bfd_emul_get_maxpagesize (const char *);
43.40772 -+
43.40773 -+void bfd_emul_set_maxpagesize (const char *, bfd_vma);
43.40774 -+
43.40775 -+bfd_vma bfd_emul_get_commonpagesize (const char *);
43.40776 -+
43.40777 -+void bfd_emul_set_commonpagesize (const char *, bfd_vma);
43.40778 -+
43.40779 -+char *bfd_demangle (bfd *, const char *, int);
43.40780 -+
43.40781 -+/* Extracted from archive.c.  */
43.40782 -+symindex bfd_get_next_mapent
43.40783 -+   (bfd *abfd, symindex previous, carsym **sym);
43.40784 -+
43.40785 -+bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
43.40786 -+
43.40787 -+bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
43.40788 -+
43.40789 -+/* Extracted from corefile.c.  */
43.40790 -+const char *bfd_core_file_failing_command (bfd *abfd);
43.40791 -+
43.40792 -+int bfd_core_file_failing_signal (bfd *abfd);
43.40793 -+
43.40794 -+bfd_boolean core_file_matches_executable_p
43.40795 -+   (bfd *core_bfd, bfd *exec_bfd);
43.40796 -+
43.40797 -+bfd_boolean generic_core_file_matches_executable_p
43.40798 -+   (bfd *core_bfd, bfd *exec_bfd);
43.40799 -+
43.40800 -+/* Extracted from targets.c.  */
43.40801 -+#define BFD_SEND(bfd, message, arglist) \
43.40802 -+  ((*((bfd)->xvec->message)) arglist)
43.40803 -+
43.40804 -+#ifdef DEBUG_BFD_SEND
43.40805 -+#undef BFD_SEND
43.40806 -+#define BFD_SEND(bfd, message, arglist) \
43.40807 -+  (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
43.40808 -+    ((*((bfd)->xvec->message)) arglist) : \
43.40809 -+    (bfd_assert (__FILE__,__LINE__), NULL))
43.40810 -+#endif
43.40811 -+#define BFD_SEND_FMT(bfd, message, arglist) \
43.40812 -+  (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
43.40813 -+
43.40814 -+#ifdef DEBUG_BFD_SEND
43.40815 -+#undef BFD_SEND_FMT
43.40816 -+#define BFD_SEND_FMT(bfd, message, arglist) \
43.40817 -+  (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
43.40818 -+   (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
43.40819 -+   (bfd_assert (__FILE__,__LINE__), NULL))
43.40820 -+#endif
43.40821 -+
43.40822 -+enum bfd_flavour
43.40823 -+{
43.40824 -+  bfd_target_unknown_flavour,
43.40825 -+  bfd_target_aout_flavour,
43.40826 -+  bfd_target_coff_flavour,
43.40827 -+  bfd_target_ecoff_flavour,
43.40828 -+  bfd_target_xcoff_flavour,
43.40829 -+  bfd_target_elf_flavour,
43.40830 -+  bfd_target_ieee_flavour,
43.40831 -+  bfd_target_nlm_flavour,
43.40832 -+  bfd_target_oasys_flavour,
43.40833 -+  bfd_target_tekhex_flavour,
43.40834 -+  bfd_target_srec_flavour,
43.40835 -+  bfd_target_ihex_flavour,
43.40836 -+  bfd_target_som_flavour,
43.40837 -+  bfd_target_os9k_flavour,
43.40838 -+  bfd_target_versados_flavour,
43.40839 -+  bfd_target_msdos_flavour,
43.40840 -+  bfd_target_ovax_flavour,
43.40841 -+  bfd_target_evax_flavour,
43.40842 -+  bfd_target_mmo_flavour,
43.40843 -+  bfd_target_mach_o_flavour,
43.40844 -+  bfd_target_pef_flavour,
43.40845 -+  bfd_target_pef_xlib_flavour,
43.40846 -+  bfd_target_sym_flavour
43.40847 -+};
43.40848 -+
43.40849 -+enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
43.40850 -+
43.40851 -+/* Forward declaration.  */
43.40852 -+typedef struct bfd_link_info _bfd_link_info;
43.40853 -+
43.40854 -+typedef struct bfd_target
43.40855 -+{
43.40856 -+  /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
43.40857 -+  char *name;
43.40858 -+
43.40859 -+ /* The "flavour" of a back end is a general indication about
43.40860 -+    the contents of a file.  */
43.40861 -+  enum bfd_flavour flavour;
43.40862 -+
43.40863 -+  /* The order of bytes within the data area of a file.  */
43.40864 -+  enum bfd_endian byteorder;
43.40865 -+
43.40866 -+ /* The order of bytes within the header parts of a file.  */
43.40867 -+  enum bfd_endian header_byteorder;
43.40868 -+
43.40869 -+  /* A mask of all the flags which an executable may have set -
43.40870 -+     from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>.  */
43.40871 -+  flagword object_flags;
43.40872 -+
43.40873 -+ /* A mask of all the flags which a section may have set - from
43.40874 -+    the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>.  */
43.40875 -+  flagword section_flags;
43.40876 -+
43.40877 -+ /* The character normally found at the front of a symbol.
43.40878 -+    (if any), perhaps `_'.  */
43.40879 -+  char symbol_leading_char;
43.40880 -+
43.40881 -+ /* The pad character for file names within an archive header.  */
43.40882 -+  char ar_pad_char;
43.40883 -+
43.40884 -+  /* The maximum number of characters in an archive header.  */
43.40885 -+  unsigned short ar_max_namelen;
43.40886 -+
43.40887 -+  /* Entries for byte swapping for data. These are different from the
43.40888 -+     other entry points, since they don't take a BFD as the first argument.
43.40889 -+     Certain other handlers could do the same.  */
43.40890 -+  bfd_uint64_t   (*bfd_getx64) (const void *);
43.40891 -+  bfd_int64_t    (*bfd_getx_signed_64) (const void *);
43.40892 -+  void           (*bfd_putx64) (bfd_uint64_t, void *);
43.40893 -+  bfd_vma        (*bfd_getx32) (const void *);
43.40894 -+  bfd_signed_vma (*bfd_getx_signed_32) (const void *);
43.40895 -+  void           (*bfd_putx32) (bfd_vma, void *);
43.40896 -+  bfd_vma        (*bfd_getx16) (const void *);
43.40897 -+  bfd_signed_vma (*bfd_getx_signed_16) (const void *);
43.40898 -+  void           (*bfd_putx16) (bfd_vma, void *);
43.40899 -+
43.40900 -+  /* Byte swapping for the headers.  */
43.40901 -+  bfd_uint64_t   (*bfd_h_getx64) (const void *);
43.40902 -+  bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
43.40903 -+  void           (*bfd_h_putx64) (bfd_uint64_t, void *);
43.40904 -+  bfd_vma        (*bfd_h_getx32) (const void *);
43.40905 -+  bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
43.40906 -+  void           (*bfd_h_putx32) (bfd_vma, void *);
43.40907 -+  bfd_vma        (*bfd_h_getx16) (const void *);
43.40908 -+  bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
43.40909 -+  void           (*bfd_h_putx16) (bfd_vma, void *);
43.40910 -+
43.40911 -+  /* Format dependent routines: these are vectors of entry points
43.40912 -+     within the target vector structure, one for each format to check.  */
43.40913 -+
43.40914 -+  /* Check the format of a file being read.  Return a <<bfd_target *>> or zero.  */
43.40915 -+  const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
43.40916 -+
43.40917 -+  /* Set the format of a file being written.  */
43.40918 -+  bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
43.40919 -+
43.40920 -+  /* Write cached information into a file being written, at <<bfd_close>>.  */
43.40921 -+  bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
43.40922 -+
43.40923 -+
43.40924 -+  /* Generic entry points.  */
43.40925 -+#define BFD_JUMP_TABLE_GENERIC(NAME) \
43.40926 -+  NAME##_close_and_cleanup, \
43.40927 -+  NAME##_bfd_free_cached_info, \
43.40928 -+  NAME##_new_section_hook, \
43.40929 -+  NAME##_get_section_contents, \
43.40930 -+  NAME##_get_section_contents_in_window
43.40931 -+
43.40932 -+  /* Called when the BFD is being closed to do any necessary cleanup.  */
43.40933 -+  bfd_boolean (*_close_and_cleanup) (bfd *);
43.40934 -+  /* Ask the BFD to free all cached information.  */
43.40935 -+  bfd_boolean (*_bfd_free_cached_info) (bfd *);
43.40936 -+  /* Called when a new section is created.  */
43.40937 -+  bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
43.40938 -+  /* Read the contents of a section.  */
43.40939 -+  bfd_boolean (*_bfd_get_section_contents)
43.40940 -+    (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
43.40941 -+  bfd_boolean (*_bfd_get_section_contents_in_window)
43.40942 -+    (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
43.40943 -+
43.40944 -+  /* Entry points to copy private data.  */
43.40945 -+#define BFD_JUMP_TABLE_COPY(NAME) \
43.40946 -+  NAME##_bfd_copy_private_bfd_data, \
43.40947 -+  NAME##_bfd_merge_private_bfd_data, \
43.40948 -+  _bfd_generic_init_private_section_data, \
43.40949 -+  NAME##_bfd_copy_private_section_data, \
43.40950 -+  NAME##_bfd_copy_private_symbol_data, \
43.40951 -+  NAME##_bfd_copy_private_header_data, \
43.40952 -+  NAME##_bfd_set_private_flags, \
43.40953 -+  NAME##_bfd_print_private_bfd_data
43.40954 -+
43.40955 -+  /* Called to copy BFD general private data from one object file
43.40956 -+     to another.  */
43.40957 -+  bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
43.40958 -+  /* Called to merge BFD general private data from one object file
43.40959 -+     to a common output file when linking.  */
43.40960 -+  bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
43.40961 -+  /* Called to initialize BFD private section data from one object file
43.40962 -+     to another.  */
43.40963 -+#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
43.40964 -+  BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
43.40965 -+  bfd_boolean (*_bfd_init_private_section_data)
43.40966 -+    (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
43.40967 -+  /* Called to copy BFD private section data from one object file
43.40968 -+     to another.  */
43.40969 -+  bfd_boolean (*_bfd_copy_private_section_data)
43.40970 -+    (bfd *, sec_ptr, bfd *, sec_ptr);
43.40971 -+  /* Called to copy BFD private symbol data from one symbol
43.40972 -+     to another.  */
43.40973 -+  bfd_boolean (*_bfd_copy_private_symbol_data)
43.40974 -+    (bfd *, asymbol *, bfd *, asymbol *);
43.40975 -+  /* Called to copy BFD private header data from one object file
43.40976 -+     to another.  */
43.40977 -+  bfd_boolean (*_bfd_copy_private_header_data)
43.40978 -+    (bfd *, bfd *);
43.40979 -+  /* Called to set private backend flags.  */
43.40980 -+  bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
43.40981 -+
43.40982 -+  /* Called to print private BFD data.  */
43.40983 -+  bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
43.40984 -+
43.40985 -+  /* Core file entry points.  */
43.40986 -+#define BFD_JUMP_TABLE_CORE(NAME) \
43.40987 -+  NAME##_core_file_failing_command, \
43.40988 -+  NAME##_core_file_failing_signal, \
43.40989 -+  NAME##_core_file_matches_executable_p
43.40990 -+
43.40991 -+  char *      (*_core_file_failing_command) (bfd *);
43.40992 -+  int         (*_core_file_failing_signal) (bfd *);
43.40993 -+  bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
43.40994 -+
43.40995 -+  /* Archive entry points.  */
43.40996 -+#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
43.40997 -+  NAME##_slurp_armap, \
43.40998 -+  NAME##_slurp_extended_name_table, \
43.40999 -+  NAME##_construct_extended_name_table, \
43.41000 -+  NAME##_truncate_arname, \
43.41001 -+  NAME##_write_armap, \
43.41002 -+  NAME##_read_ar_hdr, \
43.41003 -+  NAME##_openr_next_archived_file, \
43.41004 -+  NAME##_get_elt_at_index, \
43.41005 -+  NAME##_generic_stat_arch_elt, \
43.41006 -+  NAME##_update_armap_timestamp
43.41007 -+
43.41008 -+  bfd_boolean (*_bfd_slurp_armap) (bfd *);
43.41009 -+  bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
43.41010 -+  bfd_boolean (*_bfd_construct_extended_name_table)
43.41011 -+    (bfd *, char **, bfd_size_type *, const char **);
43.41012 -+  void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
43.41013 -+  bfd_boolean (*write_armap)
43.41014 -+    (bfd *, unsigned int, struct orl *, unsigned int, int);
43.41015 -+  void *      (*_bfd_read_ar_hdr_fn) (bfd *);
43.41016 -+  bfd *       (*openr_next_archived_file) (bfd *, bfd *);
43.41017 -+#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
43.41018 -+  bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
43.41019 -+  int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
43.41020 -+  bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
43.41021 -+
43.41022 -+  /* Entry points used for symbols.  */
43.41023 -+#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
43.41024 -+  NAME##_get_symtab_upper_bound, \
43.41025 -+  NAME##_canonicalize_symtab, \
43.41026 -+  NAME##_make_empty_symbol, \
43.41027 -+  NAME##_print_symbol, \
43.41028 -+  NAME##_get_symbol_info, \
43.41029 -+  NAME##_bfd_is_local_label_name, \
43.41030 -+  NAME##_bfd_is_target_special_symbol, \
43.41031 -+  NAME##_get_lineno, \
43.41032 -+  NAME##_find_nearest_line, \
43.41033 -+  _bfd_generic_find_line, \
43.41034 -+  NAME##_find_inliner_info, \
43.41035 -+  NAME##_bfd_make_debug_symbol, \
43.41036 -+  NAME##_read_minisymbols, \
43.41037 -+  NAME##_minisymbol_to_symbol
43.41038 -+
43.41039 -+  long        (*_bfd_get_symtab_upper_bound) (bfd *);
43.41040 -+  long        (*_bfd_canonicalize_symtab)
43.41041 -+    (bfd *, struct bfd_symbol **);
43.41042 -+  struct bfd_symbol *
43.41043 -+              (*_bfd_make_empty_symbol) (bfd *);
43.41044 -+  void        (*_bfd_print_symbol)
43.41045 -+    (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
43.41046 -+#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
43.41047 -+  void        (*_bfd_get_symbol_info)
43.41048 -+    (bfd *, struct bfd_symbol *, symbol_info *);
43.41049 -+#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
43.41050 -+  bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
43.41051 -+  bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
43.41052 -+  alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
43.41053 -+  bfd_boolean (*_bfd_find_nearest_line)
43.41054 -+    (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
43.41055 -+     const char **, const char **, unsigned int *);
43.41056 -+  bfd_boolean (*_bfd_find_line)
43.41057 -+    (bfd *, struct bfd_symbol **, struct bfd_symbol *,
43.41058 -+     const char **, unsigned int *);
43.41059 -+  bfd_boolean (*_bfd_find_inliner_info)
43.41060 -+    (bfd *, const char **, const char **, unsigned int *);
43.41061 -+ /* Back-door to allow format-aware applications to create debug symbols
43.41062 -+    while using BFD for everything else.  Currently used by the assembler
43.41063 -+    when creating COFF files.  */
43.41064 -+  asymbol *   (*_bfd_make_debug_symbol)
43.41065 -+    (bfd *, void *, unsigned long size);
43.41066 -+#define bfd_read_minisymbols(b, d, m, s) \
43.41067 -+  BFD_SEND (b, _read_minisymbols, (b, d, m, s))
43.41068 -+  long        (*_read_minisymbols)
43.41069 -+    (bfd *, bfd_boolean, void **, unsigned int *);
43.41070 -+#define bfd_minisymbol_to_symbol(b, d, m, f) \
43.41071 -+  BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
43.41072 -+  asymbol *   (*_minisymbol_to_symbol)
43.41073 -+    (bfd *, bfd_boolean, const void *, asymbol *);
43.41074 -+
43.41075 -+  /* Routines for relocs.  */
43.41076 -+#define BFD_JUMP_TABLE_RELOCS(NAME) \
43.41077 -+  NAME##_get_reloc_upper_bound, \
43.41078 -+  NAME##_canonicalize_reloc, \
43.41079 -+  NAME##_bfd_reloc_type_lookup, \
43.41080 -+  NAME##_bfd_reloc_name_lookup
43.41081 -+
43.41082 -+  long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
43.41083 -+  long        (*_bfd_canonicalize_reloc)
43.41084 -+    (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
43.41085 -+  /* See documentation on reloc types.  */
43.41086 -+  reloc_howto_type *
43.41087 -+              (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
43.41088 -+  reloc_howto_type *
43.41089 -+              (*reloc_name_lookup) (bfd *, const char *);
43.41090 -+
43.41091 -+
43.41092 -+  /* Routines used when writing an object file.  */
43.41093 -+#define BFD_JUMP_TABLE_WRITE(NAME) \
43.41094 -+  NAME##_set_arch_mach, \
43.41095 -+  NAME##_set_section_contents
43.41096 -+
43.41097 -+  bfd_boolean (*_bfd_set_arch_mach)
43.41098 -+    (bfd *, enum bfd_architecture, unsigned long);
43.41099 -+  bfd_boolean (*_bfd_set_section_contents)
43.41100 -+    (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
43.41101 -+
43.41102 -+  /* Routines used by the linker.  */
43.41103 -+#define BFD_JUMP_TABLE_LINK(NAME) \
43.41104 -+  NAME##_sizeof_headers, \
43.41105 -+  NAME##_bfd_get_relocated_section_contents, \
43.41106 -+  NAME##_bfd_relax_section, \
43.41107 -+  NAME##_bfd_link_hash_table_create, \
43.41108 -+  NAME##_bfd_link_hash_table_free, \
43.41109 -+  NAME##_bfd_link_add_symbols, \
43.41110 -+  NAME##_bfd_link_just_syms, \
43.41111 -+  NAME##_bfd_final_link, \
43.41112 -+  NAME##_bfd_link_split_section, \
43.41113 -+  NAME##_bfd_gc_sections, \
43.41114 -+  NAME##_bfd_merge_sections, \
43.41115 -+  NAME##_bfd_is_group_section, \
43.41116 -+  NAME##_bfd_discard_group, \
43.41117 -+  NAME##_section_already_linked \
43.41118 -+
43.41119 -+  int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
43.41120 -+  bfd_byte *  (*_bfd_get_relocated_section_contents)
43.41121 -+    (bfd *, struct bfd_link_info *, struct bfd_link_order *,
43.41122 -+     bfd_byte *, bfd_boolean, struct bfd_symbol **);
43.41123 -+
43.41124 -+  bfd_boolean (*_bfd_relax_section)
43.41125 -+    (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
43.41126 -+
43.41127 -+  /* Create a hash table for the linker.  Different backends store
43.41128 -+     different information in this table.  */
43.41129 -+  struct bfd_link_hash_table *
43.41130 -+              (*_bfd_link_hash_table_create) (bfd *);
43.41131 -+
43.41132 -+  /* Release the memory associated with the linker hash table.  */
43.41133 -+  void        (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
43.41134 -+
43.41135 -+  /* Add symbols from this object file into the hash table.  */
43.41136 -+  bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
43.41137 -+
43.41138 -+  /* Indicate that we are only retrieving symbol values from this section.  */
43.41139 -+  void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
43.41140 -+
43.41141 -+  /* Do a link based on the link_order structures attached to each
43.41142 -+     section of the BFD.  */
43.41143 -+  bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
43.41144 -+
43.41145 -+  /* Should this section be split up into smaller pieces during linking.  */
43.41146 -+  bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
43.41147 -+
43.41148 -+  /* Remove sections that are not referenced from the output.  */
43.41149 -+  bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
43.41150 -+
43.41151 -+  /* Attempt to merge SEC_MERGE sections.  */
43.41152 -+  bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
43.41153 -+
43.41154 -+  /* Is this section a member of a group?  */
43.41155 -+  bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
43.41156 -+
43.41157 -+  /* Discard members of a group.  */
43.41158 -+  bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
43.41159 -+
43.41160 -+  /* Check if SEC has been already linked during a reloceatable or
43.41161 -+     final link.  */
43.41162 -+  void (*_section_already_linked) (bfd *, struct bfd_section *,
43.41163 -+                                   struct bfd_link_info *);
43.41164 -+
43.41165 -+  /* Routines to handle dynamic symbols and relocs.  */
43.41166 -+#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
43.41167 -+  NAME##_get_dynamic_symtab_upper_bound, \
43.41168 -+  NAME##_canonicalize_dynamic_symtab, \
43.41169 -+  NAME##_get_synthetic_symtab, \
43.41170 -+  NAME##_get_dynamic_reloc_upper_bound, \
43.41171 -+  NAME##_canonicalize_dynamic_reloc
43.41172 -+
43.41173 -+  /* Get the amount of memory required to hold the dynamic symbols.  */
43.41174 -+  long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
43.41175 -+  /* Read in the dynamic symbols.  */
43.41176 -+  long        (*_bfd_canonicalize_dynamic_symtab)
43.41177 -+    (bfd *, struct bfd_symbol **);
43.41178 -+  /* Create synthetized symbols.  */
43.41179 -+  long        (*_bfd_get_synthetic_symtab)
43.41180 -+    (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
43.41181 -+     struct bfd_symbol **);
43.41182 -+  /* Get the amount of memory required to hold the dynamic relocs.  */
43.41183 -+  long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
43.41184 -+  /* Read in the dynamic relocs.  */
43.41185 -+  long        (*_bfd_canonicalize_dynamic_reloc)
43.41186 -+    (bfd *, arelent **, struct bfd_symbol **);
43.41187 -+
43.41188 -+  /* Opposite endian version of this target.  */
43.41189 -+  const struct bfd_target * alternative_target;
43.41190 -+
43.41191 -+  /* Data for use by back-end routines, which isn't
43.41192 -+     generic enough to belong in this structure.  */
43.41193 -+  const void *backend_data;
43.41194 -+
43.41195 -+} bfd_target;
43.41196 -+
43.41197 -+bfd_boolean bfd_set_default_target (const char *name);
43.41198 -+
43.41199 -+const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
43.41200 -+
43.41201 -+const char ** bfd_target_list (void);
43.41202 -+
43.41203 -+const bfd_target *bfd_search_for_target
43.41204 -+   (int (*search_func) (const bfd_target *, void *),
43.41205 -+    void *);
43.41206 -+
43.41207 -+/* Extracted from format.c.  */
43.41208 -+bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
43.41209 -+
43.41210 -+bfd_boolean bfd_check_format_matches
43.41211 -+   (bfd *abfd, bfd_format format, char ***matching);
43.41212 -+
43.41213 -+bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
43.41214 -+
43.41215 -+const char *bfd_format_string (bfd_format format);
43.41216 -+
43.41217 -+/* Extracted from linker.c.  */
43.41218 -+bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
43.41219 -+
43.41220 -+#define bfd_link_split_section(abfd, sec) \
43.41221 -+       BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
43.41222 -+
43.41223 -+void bfd_section_already_linked (bfd *abfd, asection *sec,
43.41224 -+    struct bfd_link_info *info);
43.41225 -+
43.41226 -+#define bfd_section_already_linked(abfd, sec, info) \
43.41227 -+       BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
43.41228 -+
43.41229 -+/* Extracted from simple.c.  */
43.41230 -+bfd_byte *bfd_simple_get_relocated_section_contents
43.41231 -+   (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
43.41232 -+
43.41233 -+#ifdef __cplusplus
43.41234 -+}
43.41235 -+#endif
43.41236 -+#endif
43.41237 ---- /dev/null
43.41238 -+++ b/bfd/doc/libbfd.h
43.41239 -@@ -0,0 +1,2074 @@
43.41240 -+/* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically 
43.41241 -+   generated from "libbfd-in.h", "init.c", "libbfd.c", "bfdio.c", 
43.41242 -+   "bfdwin.c", "cache.c", "reloc.c", "archures.c" and "elf.c".
43.41243 -+   Run "make headers" in your build bfd/ to regenerate.  */
43.41244 -+
43.41245 -+/* libbfd.h -- Declarations used by bfd library *implementation*.
43.41246 -+   (This include file is not for users of the library.)
43.41247 -+
43.41248 -+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
43.41249 -+   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
43.41250 -+   Free Software Foundation, Inc.
43.41251 -+
43.41252 -+   Written by Cygnus Support.
43.41253 -+
43.41254 -+   This file is part of BFD, the Binary File Descriptor library.
43.41255 -+
43.41256 -+   This program is free software; you can redistribute it and/or modify
43.41257 -+   it under the terms of the GNU General Public License as published by
43.41258 -+   the Free Software Foundation; either version 3 of the License, or
43.41259 -+   (at your option) any later version.
43.41260 -+
43.41261 -+   This program is distributed in the hope that it will be useful,
43.41262 -+   but WITHOUT ANY WARRANTY; without even the implied warranty of
43.41263 -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
43.41264 -+   GNU General Public License for more details.
43.41265 -+
43.41266 -+   You should have received a copy of the GNU General Public License
43.41267 -+   along with this program; if not, write to the Free Software
43.41268 -+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
43.41269 -+   MA 02110-1301, USA.  */
43.41270 -+
43.41271 -+#include "hashtab.h"
43.41272 -+
43.41273 -+/* Align an address upward to a boundary, expressed as a number of bytes.
43.41274 -+   E.g. align to an 8-byte boundary with argument of 8.  Take care never
43.41275 -+   to wrap around if the address is within boundary-1 of the end of the
43.41276 -+   address space.  */
43.41277 -+#define BFD_ALIGN(this, boundary)					  \
43.41278 -+  ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this))		  \
43.41279 -+   ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
43.41280 -+   : ~ (bfd_vma) 0)
43.41281 -+
43.41282 -+/* If you want to read and write large blocks, you might want to do it
43.41283 -+   in quanta of this amount */
43.41284 -+#define DEFAULT_BUFFERSIZE 8192
43.41285 -+
43.41286 -+/* Set a tdata field.  Can't use the other macros for this, since they
43.41287 -+   do casts, and casting to the left of assignment isn't portable.  */
43.41288 -+#define set_tdata(bfd, v) ((bfd)->tdata.any = (v))
43.41289 -+
43.41290 -+/* If BFD_IN_MEMORY is set for a BFD, then the iostream fields points
43.41291 -+   to an instance of this structure.  */
43.41292 -+
43.41293 -+struct bfd_in_memory
43.41294 -+{
43.41295 -+  /* Size of buffer.  */
43.41296 -+  bfd_size_type size;
43.41297 -+  /* Buffer holding contents of BFD.  */
43.41298 -+  bfd_byte *buffer;
43.41299 -+};
43.41300 -+
43.41301 -+struct section_hash_entry
43.41302 -+{
43.41303 -+  struct bfd_hash_entry root;
43.41304 -+  asection section;
43.41305 -+};
43.41306 -+
43.41307 -+/* tdata for an archive.  For an input archive, cache
43.41308 -+   needs to be free()'d.  For an output archive, symdefs do.  */
43.41309 -+
43.41310 -+struct artdata {
43.41311 -+  file_ptr first_file_filepos;
43.41312 -+  /* Speed up searching the armap */
43.41313 -+  htab_t cache;
43.41314 -+  bfd *archive_head;		/* Only interesting in output routines */
43.41315 -+  carsym *symdefs;		/* the symdef entries */
43.41316 -+  symindex symdef_count;	/* how many there are */
43.41317 -+  char *extended_names;		/* clever intel extension */
43.41318 -+  bfd_size_type extended_names_size; /* Size of extended names */
43.41319 -+  /* when more compilers are standard C, this can be a time_t */
43.41320 -+  long  armap_timestamp;	/* Timestamp value written into armap.
43.41321 -+				   This is used for BSD archives to check
43.41322 -+				   that the timestamp is recent enough
43.41323 -+				   for the BSD linker to not complain,
43.41324 -+				   just before we finish writing an
43.41325 -+				   archive.  */
43.41326 -+  file_ptr armap_datepos;	/* Position within archive to seek to
43.41327 -+				   rewrite the date field.  */
43.41328 -+  void *tdata;			/* Backend specific information.  */
43.41329 -+};
43.41330 -+
43.41331 -+#define bfd_ardata(bfd) ((bfd)->tdata.aout_ar_data)
43.41332 -+
43.41333 -+/* Goes in bfd's arelt_data slot */
43.41334 -+struct areltdata {
43.41335 -+  char * arch_header;		/* it's actually a string */
43.41336 -+  unsigned int parsed_size;	/* octets of filesize not including ar_hdr */
43.41337 -+  char *filename;		/* null-terminated */
43.41338 -+};
43.41339 -+
43.41340 -+#define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
43.41341 -+
43.41342 -+extern void *bfd_malloc
43.41343 -+  (bfd_size_type);
43.41344 -+extern void *bfd_realloc
43.41345 -+  (void *, bfd_size_type);
43.41346 -+extern void *bfd_zmalloc
43.41347 -+  (bfd_size_type);
43.41348 -+extern void *bfd_malloc2
43.41349 -+  (bfd_size_type, bfd_size_type);
43.41350 -+extern void *bfd_realloc2
43.41351 -+  (void *, bfd_size_type, bfd_size_type);
43.41352 -+extern void *bfd_zmalloc2
43.41353 -+  (bfd_size_type, bfd_size_type);
43.41354 -+
43.41355 -+extern void _bfd_default_error_handler (const char *s, ...);
43.41356 -+extern bfd_error_handler_type _bfd_error_handler;
43.41357 -+
43.41358 -+/* These routines allocate and free things on the BFD's objalloc.  */
43.41359 -+
43.41360 -+extern void *bfd_alloc
43.41361 -+  (bfd *, bfd_size_type);
43.41362 -+extern void *bfd_zalloc
43.41363 -+  (bfd *, bfd_size_type);
43.41364 -+extern void *bfd_alloc2
43.41365 -+  (bfd *, bfd_size_type, bfd_size_type);
43.41366 -+extern void *bfd_zalloc2
43.41367 -+  (bfd *, bfd_size_type, bfd_size_type);
43.41368 -+extern void bfd_release
43.41369 -+  (bfd *, void *);
43.41370 -+
43.41371 -+bfd * _bfd_create_empty_archive_element_shell
43.41372 -+  (bfd *obfd);
43.41373 -+bfd * _bfd_look_for_bfd_in_cache
43.41374 -+  (bfd *, file_ptr);
43.41375 -+bfd_boolean _bfd_add_bfd_to_archive_cache
43.41376 -+  (bfd *, file_ptr, bfd *);
43.41377 -+bfd_boolean _bfd_generic_mkarchive
43.41378 -+  (bfd *abfd);
43.41379 -+const bfd_target *bfd_generic_archive_p
43.41380 -+  (bfd *abfd);
43.41381 -+bfd_boolean bfd_slurp_armap
43.41382 -+  (bfd *abfd);
43.41383 -+bfd_boolean bfd_slurp_bsd_armap_f2
43.41384 -+  (bfd *abfd);
43.41385 -+#define bfd_slurp_bsd_armap bfd_slurp_armap
43.41386 -+#define bfd_slurp_coff_armap bfd_slurp_armap
43.41387 -+bfd_boolean _bfd_slurp_extended_name_table
43.41388 -+  (bfd *abfd);
43.41389 -+extern bfd_boolean _bfd_construct_extended_name_table
43.41390 -+  (bfd *, bfd_boolean, char **, bfd_size_type *);
43.41391 -+bfd_boolean _bfd_write_archive_contents
43.41392 -+  (bfd *abfd);
43.41393 -+bfd_boolean _bfd_compute_and_write_armap
43.41394 -+  (bfd *, unsigned int elength);
43.41395 -+bfd *_bfd_get_elt_at_filepos
43.41396 -+  (bfd *archive, file_ptr filepos);
43.41397 -+extern bfd *_bfd_generic_get_elt_at_index
43.41398 -+  (bfd *, symindex);
43.41399 -+bfd * _bfd_new_bfd
43.41400 -+  (void);
43.41401 -+void _bfd_delete_bfd
43.41402 -+  (bfd *);
43.41403 -+bfd_boolean _bfd_free_cached_info
43.41404 -+  (bfd *);
43.41405 -+
43.41406 -+bfd_boolean bfd_false
43.41407 -+  (bfd *ignore);
43.41408 -+bfd_boolean bfd_true
43.41409 -+  (bfd *ignore);
43.41410 -+void *bfd_nullvoidptr
43.41411 -+  (bfd *ignore);
43.41412 -+int bfd_0
43.41413 -+  (bfd *ignore);
43.41414 -+unsigned int bfd_0u
43.41415 -+  (bfd *ignore);
43.41416 -+long bfd_0l
43.41417 -+  (bfd *ignore);
43.41418 -+long _bfd_n1
43.41419 -+  (bfd *ignore);
43.41420 -+void bfd_void
43.41421 -+  (bfd *ignore);
43.41422 -+
43.41423 -+bfd *_bfd_new_bfd_contained_in
43.41424 -+  (bfd *);
43.41425 -+const bfd_target *_bfd_dummy_target
43.41426 -+  (bfd *abfd);
43.41427 -+
43.41428 -+void bfd_dont_truncate_arname
43.41429 -+  (bfd *abfd, const char *filename, char *hdr);
43.41430 -+void bfd_bsd_truncate_arname
43.41431 -+  (bfd *abfd, const char *filename, char *hdr);
43.41432 -+void bfd_gnu_truncate_arname
43.41433 -+  (bfd *abfd, const char *filename, char *hdr);
43.41434 -+
43.41435 -+bfd_boolean bsd_write_armap
43.41436 -+  (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
43.41437 -+   int stridx);
43.41438 -+
43.41439 -+bfd_boolean coff_write_armap
43.41440 -+  (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
43.41441 -+   int stridx);
43.41442 -+
43.41443 -+extern void *_bfd_generic_read_ar_hdr
43.41444 -+  (bfd *);
43.41445 -+extern void _bfd_ar_spacepad
43.41446 -+  (char *, size_t, const char *, long);
43.41447 -+
43.41448 -+extern void *_bfd_generic_read_ar_hdr_mag
43.41449 -+  (bfd *, const char *);
43.41450 -+
43.41451 -+bfd * bfd_generic_openr_next_archived_file
43.41452 -+  (bfd *archive, bfd *last_file);
43.41453 -+
43.41454 -+int bfd_generic_stat_arch_elt
43.41455 -+  (bfd *, struct stat *);
43.41456 -+
43.41457 -+#define _bfd_read_ar_hdr(abfd) \
43.41458 -+  BFD_SEND (abfd, _bfd_read_ar_hdr_fn, (abfd))
43.41459 -+
43.41460 -+/* Generic routines to use for BFD_JUMP_TABLE_GENERIC.  Use
43.41461 -+   BFD_JUMP_TABLE_GENERIC (_bfd_generic).  */
43.41462 -+
43.41463 -+#define _bfd_generic_close_and_cleanup bfd_true
43.41464 -+#define _bfd_generic_bfd_free_cached_info bfd_true
43.41465 -+extern bfd_boolean _bfd_generic_new_section_hook
43.41466 -+  (bfd *, asection *);
43.41467 -+extern bfd_boolean _bfd_generic_get_section_contents
43.41468 -+  (bfd *, asection *, void *, file_ptr, bfd_size_type);
43.41469 -+extern bfd_boolean _bfd_generic_get_section_contents_in_window
43.41470 -+  (bfd *, asection *, bfd_window *, file_ptr, bfd_size_type);
43.41471 -+
43.41472 -+/* Generic routines to use for BFD_JUMP_TABLE_COPY.  Use
43.41473 -+   BFD_JUMP_TABLE_COPY (_bfd_generic).  */
43.41474 -+
43.41475 -+#define _bfd_generic_bfd_copy_private_bfd_data \
43.41476 -+  ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
43.41477 -+#define _bfd_generic_bfd_merge_private_bfd_data \
43.41478 -+  ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
43.41479 -+#define _bfd_generic_bfd_set_private_flags \
43.41480 -+  ((bfd_boolean (*) (bfd *, flagword)) bfd_true)
43.41481 -+#define _bfd_generic_bfd_copy_private_section_data \
43.41482 -+  ((bfd_boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true)
43.41483 -+#define _bfd_generic_bfd_copy_private_symbol_data \
43.41484 -+  ((bfd_boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true)
43.41485 -+#define _bfd_generic_bfd_copy_private_header_data \
43.41486 -+  ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
43.41487 -+#define _bfd_generic_bfd_print_private_bfd_data \
43.41488 -+  ((bfd_boolean (*) (bfd *, void *)) bfd_true)
43.41489 -+
43.41490 -+extern bfd_boolean _bfd_generic_init_private_section_data
43.41491 -+  (bfd *, asection *, bfd *, asection *, struct bfd_link_info *);
43.41492 -+
43.41493 -+/* Routines to use for BFD_JUMP_TABLE_CORE when there is no core file
43.41494 -+   support.  Use BFD_JUMP_TABLE_CORE (_bfd_nocore).  */
43.41495 -+
43.41496 -+extern char *_bfd_nocore_core_file_failing_command
43.41497 -+  (bfd *);
43.41498 -+extern int _bfd_nocore_core_file_failing_signal
43.41499 -+  (bfd *);
43.41500 -+extern bfd_boolean _bfd_nocore_core_file_matches_executable_p
43.41501 -+  (bfd *, bfd *);
43.41502 -+
43.41503 -+/* Routines to use for BFD_JUMP_TABLE_ARCHIVE when there is no archive
43.41504 -+   file support.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive).  */
43.41505 -+
43.41506 -+#define _bfd_noarchive_slurp_armap bfd_false
43.41507 -+#define _bfd_noarchive_slurp_extended_name_table bfd_false
43.41508 -+#define _bfd_noarchive_construct_extended_name_table \
43.41509 -+  ((bfd_boolean (*) (bfd *, char **, bfd_size_type *, const char **)) \
43.41510 -+   bfd_false)
43.41511 -+#define _bfd_noarchive_truncate_arname \
43.41512 -+  ((void (*) (bfd *, const char *, char *)) bfd_void)
43.41513 -+#define _bfd_noarchive_write_armap \
43.41514 -+  ((bfd_boolean (*) (bfd *, unsigned int, struct orl *, unsigned int, int)) \
43.41515 -+   bfd_false)
43.41516 -+#define _bfd_noarchive_read_ar_hdr bfd_nullvoidptr
43.41517 -+#define _bfd_noarchive_openr_next_archived_file \
43.41518 -+  ((bfd *(*) (bfd *, bfd *)) bfd_nullvoidptr)
43.41519 -+#define _bfd_noarchive_get_elt_at_index \
43.41520 -+  ((bfd *(*) (bfd *, symindex)) bfd_nullvoidptr)
43.41521 -+#define _bfd_noarchive_generic_stat_arch_elt bfd_generic_stat_arch_elt
43.41522 -+#define _bfd_noarchive_update_armap_timestamp bfd_false
43.41523 -+
43.41524 -+/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD style
43.41525 -+   archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd).  */
43.41526 -+
43.41527 -+#define _bfd_archive_bsd_slurp_armap bfd_slurp_bsd_armap
43.41528 -+#define _bfd_archive_bsd_slurp_extended_name_table \
43.41529 -+  _bfd_slurp_extended_name_table
43.41530 -+extern bfd_boolean _bfd_archive_bsd_construct_extended_name_table
43.41531 -+  (bfd *, char **, bfd_size_type *, const char **);
43.41532 -+#define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname
43.41533 -+#define _bfd_archive_bsd_write_armap bsd_write_armap
43.41534 -+#define _bfd_archive_bsd_read_ar_hdr _bfd_generic_read_ar_hdr
43.41535 -+#define _bfd_archive_bsd_openr_next_archived_file \
43.41536 -+  bfd_generic_openr_next_archived_file
43.41537 -+#define _bfd_archive_bsd_get_elt_at_index _bfd_generic_get_elt_at_index
43.41538 -+#define _bfd_archive_bsd_generic_stat_arch_elt \
43.41539 -+  bfd_generic_stat_arch_elt
43.41540 -+extern bfd_boolean _bfd_archive_bsd_update_armap_timestamp
43.41541 -+  (bfd *);
43.41542 -+
43.41543 -+/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get COFF style
43.41544 -+   archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff).  */
43.41545 -+
43.41546 -+#define _bfd_archive_coff_slurp_armap bfd_slurp_coff_armap
43.41547 -+#define _bfd_archive_coff_slurp_extended_name_table \
43.41548 -+  _bfd_slurp_extended_name_table
43.41549 -+extern bfd_boolean _bfd_archive_coff_construct_extended_name_table
43.41550 -+  (bfd *, char **, bfd_size_type *, const char **);
43.41551 -+#define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname
43.41552 -+#define _bfd_archive_coff_write_armap coff_write_armap
43.41553 -+#define _bfd_archive_coff_read_ar_hdr _bfd_generic_read_ar_hdr
43.41554 -+#define _bfd_archive_coff_openr_next_archived_file \
43.41555 -+  bfd_generic_openr_next_archived_file
43.41556 -+#define _bfd_archive_coff_get_elt_at_index _bfd_generic_get_elt_at_index
43.41557 -+#define _bfd_archive_coff_generic_stat_arch_elt \
43.41558 -+  bfd_generic_stat_arch_elt
43.41559 -+#define _bfd_archive_coff_update_armap_timestamp bfd_true
43.41560 -+
43.41561 -+/* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol
43.41562 -+   support.  Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols).  */
43.41563 -+
43.41564 -+#define _bfd_nosymbols_get_symtab_upper_bound _bfd_n1
43.41565 -+#define _bfd_nosymbols_canonicalize_symtab \
43.41566 -+  ((long (*) (bfd *, asymbol **)) _bfd_n1)
43.41567 -+#define _bfd_nosymbols_make_empty_symbol _bfd_generic_make_empty_symbol
43.41568 -+#define _bfd_nosymbols_print_symbol \
43.41569 -+  ((void (*) (bfd *, void *, asymbol *, bfd_print_symbol_type)) bfd_void)
43.41570 -+#define _bfd_nosymbols_get_symbol_info \
43.41571 -+  ((void (*) (bfd *, asymbol *, symbol_info *)) bfd_void)
43.41572 -+#define _bfd_nosymbols_bfd_is_local_label_name \
43.41573 -+  ((bfd_boolean (*) (bfd *, const char *)) bfd_false)
43.41574 -+#define _bfd_nosymbols_bfd_is_target_special_symbol \
43.41575 -+  ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
43.41576 -+#define _bfd_nosymbols_get_lineno \
43.41577 -+  ((alent *(*) (bfd *, asymbol *)) bfd_nullvoidptr)
43.41578 -+#define _bfd_nosymbols_find_nearest_line \
43.41579 -+  ((bfd_boolean (*) (bfd *, asection *, asymbol **, bfd_vma, const char **, \
43.41580 -+		     const char **, unsigned int *)) \
43.41581 -+   bfd_false)
43.41582 -+#define _bfd_nosymbols_find_inliner_info \
43.41583 -+  ((bfd_boolean (*) (bfd *, const char **, const char **, unsigned int *)) \
43.41584 -+   bfd_false)
43.41585 -+#define _bfd_nosymbols_bfd_make_debug_symbol \
43.41586 -+  ((asymbol *(*) (bfd *, void *, unsigned long)) bfd_nullvoidptr)
43.41587 -+#define _bfd_nosymbols_read_minisymbols \
43.41588 -+  ((long (*) (bfd *, bfd_boolean, void **, unsigned int *)) _bfd_n1)
43.41589 -+#define _bfd_nosymbols_minisymbol_to_symbol \
43.41590 -+  ((asymbol *(*) (bfd *, bfd_boolean, const void *, asymbol *)) \
43.41591 -+   bfd_nullvoidptr)
43.41592 -+
43.41593 -+/* Routines to use for BFD_JUMP_TABLE_RELOCS when there is no reloc
43.41594 -+   support.  Use BFD_JUMP_TABLE_RELOCS (_bfd_norelocs).  */
43.41595 -+
43.41596 -+extern long _bfd_norelocs_get_reloc_upper_bound (bfd *, asection *);
43.41597 -+extern long _bfd_norelocs_canonicalize_reloc (bfd *, asection *,
43.41598 -+					      arelent **, asymbol **);
43.41599 -+#define _bfd_norelocs_bfd_reloc_type_lookup \
43.41600 -+  ((reloc_howto_type *(*) (bfd *, bfd_reloc_code_real_type)) bfd_nullvoidptr)
43.41601 -+#define _bfd_norelocs_bfd_reloc_name_lookup \
43.41602 -+  ((reloc_howto_type *(*) (bfd *, const char *)) bfd_nullvoidptr)
43.41603 -+
43.41604 -+/* Routines to use for BFD_JUMP_TABLE_WRITE for targets which may not
43.41605 -+   be written.  Use BFD_JUMP_TABLE_WRITE (_bfd_nowrite).  */
43.41606 -+
43.41607 -+#define _bfd_nowrite_set_arch_mach \
43.41608 -+  ((bfd_boolean (*) (bfd *, enum bfd_architecture, unsigned long)) \
43.41609 -+   bfd_false)
43.41610 -+#define _bfd_nowrite_set_section_contents \
43.41611 -+  ((bfd_boolean (*) (bfd *, asection *, const void *, file_ptr, bfd_size_type)) \
43.41612 -+   bfd_false)
43.41613 -+
43.41614 -+/* Generic routines to use for BFD_JUMP_TABLE_WRITE.  Use
43.41615 -+   BFD_JUMP_TABLE_WRITE (_bfd_generic).  */
43.41616 -+
43.41617 -+#define _bfd_generic_set_arch_mach bfd_default_set_arch_mach
43.41618 -+extern bfd_boolean _bfd_generic_set_section_contents
43.41619 -+  (bfd *, asection *, const void *, file_ptr, bfd_size_type);
43.41620 -+
43.41621 -+/* Routines to use for BFD_JUMP_TABLE_LINK for targets which do not
43.41622 -+   support linking.  Use BFD_JUMP_TABLE_LINK (_bfd_nolink).  */
43.41623 -+
43.41624 -+#define _bfd_nolink_sizeof_headers \
43.41625 -+  ((int (*) (bfd *, struct bfd_link_info *)) bfd_0)
43.41626 -+#define _bfd_nolink_bfd_get_relocated_section_contents \
43.41627 -+  ((bfd_byte *(*) (bfd *, struct bfd_link_info *, struct bfd_link_order *, \
43.41628 -+		   bfd_byte *, bfd_boolean, asymbol **)) \
43.41629 -+   bfd_nullvoidptr)
43.41630 -+#define _bfd_nolink_bfd_relax_section \
43.41631 -+  ((bfd_boolean (*) \
43.41632 -+    (bfd *, asection *, struct bfd_link_info *, bfd_boolean *)) \
43.41633 -+   bfd_false)
43.41634 -+#define _bfd_nolink_bfd_gc_sections \
43.41635 -+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
43.41636 -+   bfd_false)
43.41637 -+#define _bfd_nolink_bfd_merge_sections \
43.41638 -+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
43.41639 -+   bfd_false)
43.41640 -+#define _bfd_nolink_bfd_is_group_section \
43.41641 -+  ((bfd_boolean (*) (bfd *, const struct bfd_section *)) \
43.41642 -+   bfd_false)
43.41643 -+#define _bfd_nolink_bfd_discard_group \
43.41644 -+  ((bfd_boolean (*) (bfd *, struct bfd_section *)) \
43.41645 -+   bfd_false)
43.41646 -+#define _bfd_nolink_bfd_link_hash_table_create \
43.41647 -+  ((struct bfd_link_hash_table *(*) (bfd *)) bfd_nullvoidptr)
43.41648 -+#define _bfd_nolink_bfd_link_hash_table_free \
43.41649 -+  ((void (*) (struct bfd_link_hash_table *)) bfd_void)
43.41650 -+#define _bfd_nolink_bfd_link_add_symbols \
43.41651 -+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
43.41652 -+#define _bfd_nolink_bfd_link_just_syms \
43.41653 -+  ((void (*) (asection *, struct bfd_link_info *)) bfd_void)
43.41654 -+#define _bfd_nolink_bfd_final_link \
43.41655 -+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
43.41656 -+#define _bfd_nolink_bfd_link_split_section \
43.41657 -+  ((bfd_boolean (*) (bfd *, struct bfd_section *)) bfd_false)
43.41658 -+#define _bfd_nolink_section_already_linked \
43.41659 -+  ((void (*) (bfd *, struct bfd_section *, struct bfd_link_info *)) bfd_void)
43.41660 -+
43.41661 -+/* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
43.41662 -+   have dynamic symbols or relocs.  Use BFD_JUMP_TABLE_DYNAMIC
43.41663 -+   (_bfd_nodynamic).  */
43.41664 -+
43.41665 -+#define _bfd_nodynamic_get_dynamic_symtab_upper_bound _bfd_n1
43.41666 -+#define _bfd_nodynamic_canonicalize_dynamic_symtab \
43.41667 -+  ((long (*) (bfd *, asymbol **)) _bfd_n1)
43.41668 -+#define _bfd_nodynamic_get_synthetic_symtab \
43.41669 -+  ((long (*) (bfd *, long, asymbol **, long, asymbol **, asymbol **)) _bfd_n1)
43.41670 -+#define _bfd_nodynamic_get_dynamic_reloc_upper_bound _bfd_n1
43.41671 -+#define _bfd_nodynamic_canonicalize_dynamic_reloc \
43.41672 -+  ((long (*) (bfd *, arelent **, asymbol **)) _bfd_n1)
43.41673 -+
43.41674 -+/* Generic routine to determine of the given symbol is a local
43.41675 -+   label.  */
43.41676 -+extern bfd_boolean bfd_generic_is_local_label_name
43.41677 -+  (bfd *, const char *);
43.41678 -+
43.41679 -+/* Generic minisymbol routines.  */
43.41680 -+extern long _bfd_generic_read_minisymbols
43.41681 -+  (bfd *, bfd_boolean, void **, unsigned int *);
43.41682 -+extern asymbol *_bfd_generic_minisymbol_to_symbol
43.41683 -+  (bfd *, bfd_boolean, const void *, asymbol *);
43.41684 -+
43.41685 -+/* Find the nearest line using .stab/.stabstr sections.  */
43.41686 -+extern bfd_boolean _bfd_stab_section_find_nearest_line
43.41687 -+  (bfd *, asymbol **, asection *, bfd_vma, bfd_boolean *,
43.41688 -+   const char **, const char **, unsigned int *, void **);
43.41689 -+
43.41690 -+/* Find the nearest line using DWARF 1 debugging information.  */
43.41691 -+extern bfd_boolean _bfd_dwarf1_find_nearest_line
43.41692 -+  (bfd *, asection *, asymbol **, bfd_vma, const char **,
43.41693 -+   const char **, unsigned int *);
43.41694 -+
43.41695 -+/* Find the nearest line using DWARF 2 debugging information.  */
43.41696 -+extern bfd_boolean _bfd_dwarf2_find_nearest_line
43.41697 -+  (bfd *, asection *, asymbol **, bfd_vma, const char **, const char **,
43.41698 -+   unsigned int *, unsigned int, void **);
43.41699 -+
43.41700 -+/* Find the line using DWARF 2 debugging information.  */
43.41701 -+extern bfd_boolean _bfd_dwarf2_find_line
43.41702 -+  (bfd *, asymbol **, asymbol *, const char **,
43.41703 -+   unsigned int *, unsigned int, void **);
43.41704 -+
43.41705 -+bfd_boolean _bfd_generic_find_line
43.41706 -+  (bfd *, asymbol **, asymbol *, const char **, unsigned int *);
43.41707 -+
43.41708 -+/* Find inliner info after calling bfd_find_nearest_line. */
43.41709 -+extern bfd_boolean _bfd_dwarf2_find_inliner_info
43.41710 -+  (bfd *, const char **, const char **, unsigned int *, void **);
43.41711 -+  
43.41712 -+/* Create a new section entry.  */
43.41713 -+extern struct bfd_hash_entry *bfd_section_hash_newfunc
43.41714 -+  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
43.41715 -+
43.41716 -+/* A routine to create entries for a bfd_link_hash_table.  */
43.41717 -+extern struct bfd_hash_entry *_bfd_link_hash_newfunc
43.41718 -+  (struct bfd_hash_entry *entry, struct bfd_hash_table *table,
43.41719 -+   const char *string);
43.41720 -+
43.41721 -+/* Initialize a bfd_link_hash_table.  */
43.41722 -+extern bfd_boolean _bfd_link_hash_table_init
43.41723 -+  (struct bfd_link_hash_table *, bfd *,
43.41724 -+   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
43.41725 -+			       struct bfd_hash_table *,
43.41726 -+			       const char *),
43.41727 -+   unsigned int);
43.41728 -+
43.41729 -+/* Generic link hash table creation routine.  */
43.41730 -+extern struct bfd_link_hash_table *_bfd_generic_link_hash_table_create
43.41731 -+  (bfd *);
43.41732 -+
43.41733 -+/* Generic link hash table destruction routine.  */
43.41734 -+extern void _bfd_generic_link_hash_table_free
43.41735 -+  (struct bfd_link_hash_table *);
43.41736 -+
43.41737 -+/* Generic add symbol routine.  */
43.41738 -+extern bfd_boolean _bfd_generic_link_add_symbols
43.41739 -+  (bfd *, struct bfd_link_info *);
43.41740 -+
43.41741 -+/* Generic add symbol routine.  This version is used by targets for
43.41742 -+   which the linker must collect constructors and destructors by name,
43.41743 -+   as the collect2 program does.  */
43.41744 -+extern bfd_boolean _bfd_generic_link_add_symbols_collect
43.41745 -+  (bfd *, struct bfd_link_info *);
43.41746 -+
43.41747 -+/* Generic archive add symbol routine.  */
43.41748 -+extern bfd_boolean _bfd_generic_link_add_archive_symbols
43.41749 -+  (bfd *, struct bfd_link_info *,
43.41750 -+   bfd_boolean (*) (bfd *, struct bfd_link_info *, bfd_boolean *));
43.41751 -+
43.41752 -+/* Forward declaration to avoid prototype errors.  */
43.41753 -+typedef struct bfd_link_hash_entry _bfd_link_hash_entry;
43.41754 -+
43.41755 -+/* Generic routine to add a single symbol.  */
43.41756 -+extern bfd_boolean _bfd_generic_link_add_one_symbol
43.41757 -+  (struct bfd_link_info *, bfd *, const char *name, flagword,
43.41758 -+   asection *, bfd_vma, const char *, bfd_boolean copy,
43.41759 -+   bfd_boolean constructor, struct bfd_link_hash_entry **);
43.41760 -+
43.41761 -+/* Generic routine to mark section as supplying symbols only.  */
43.41762 -+extern void _bfd_generic_link_just_syms
43.41763 -+  (asection *, struct bfd_link_info *);
43.41764 -+
43.41765 -+/* Generic link routine.  */
43.41766 -+extern bfd_boolean _bfd_generic_final_link
43.41767 -+  (bfd *, struct bfd_link_info *);
43.41768 -+
43.41769 -+extern bfd_boolean _bfd_generic_link_split_section
43.41770 -+  (bfd *, struct bfd_section *);
43.41771 -+
43.41772 -+extern void _bfd_generic_section_already_linked
43.41773 -+  (bfd *, struct bfd_section *, struct bfd_link_info *);
43.41774 -+
43.41775 -+/* Generic reloc_link_order processing routine.  */
43.41776 -+extern bfd_boolean _bfd_generic_reloc_link_order
43.41777 -+  (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
43.41778 -+
43.41779 -+/* Default link order processing routine.  */
43.41780 -+extern bfd_boolean _bfd_default_link_order
43.41781 -+  (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
43.41782 -+
43.41783 -+/* Count the number of reloc entries in a link order list.  */
43.41784 -+extern unsigned int _bfd_count_link_order_relocs
43.41785 -+  (struct bfd_link_order *);
43.41786 -+
43.41787 -+/* Final link relocation routine.  */
43.41788 -+extern bfd_reloc_status_type _bfd_final_link_relocate
43.41789 -+  (reloc_howto_type *, bfd *, asection *, bfd_byte *,
43.41790 -+   bfd_vma, bfd_vma, bfd_vma);
43.41791 -+
43.41792 -+/* Relocate a particular location by a howto and a value.  */
43.41793 -+extern bfd_reloc_status_type _bfd_relocate_contents
43.41794 -+  (reloc_howto_type *, bfd *, bfd_vma, bfd_byte *);
43.41795 -+
43.41796 -+/* Clear a given location using a given howto.  */
43.41797 -+extern void _bfd_clear_contents (reloc_howto_type *howto, bfd *input_bfd,
43.41798 -+				 bfd_byte *location);
43.41799 -+
43.41800 -+/* Link stabs in sections in the first pass.  */
43.41801 -+
43.41802 -+extern bfd_boolean _bfd_link_section_stabs
43.41803 -+  (bfd *, struct stab_info *, asection *, asection *, void **,
43.41804 -+   bfd_size_type *);
43.41805 -+
43.41806 -+/* Eliminate stabs for discarded functions and symbols.  */
43.41807 -+extern bfd_boolean _bfd_discard_section_stabs
43.41808 -+  (bfd *, asection *, void *, bfd_boolean (*) (bfd_vma, void *), void *);
43.41809 -+
43.41810 -+/* Write out the .stab section when linking stabs in sections.  */
43.41811 -+
43.41812 -+extern bfd_boolean _bfd_write_section_stabs
43.41813 -+  (bfd *, struct stab_info *, asection *, void **, bfd_byte *);
43.41814 -+
43.41815 -+/* Write out the .stabstr string table when linking stabs in sections.  */
43.41816 -+
43.41817 -+extern bfd_boolean _bfd_write_stab_strings
43.41818 -+  (bfd *, struct stab_info *);
43.41819 -+
43.41820 -+/* Find an offset within a .stab section when linking stabs in
43.41821 -+   sections.  */
43.41822 -+
43.41823 -+extern bfd_vma _bfd_stab_section_offset
43.41824 -+  (asection *, void *, bfd_vma);
43.41825 -+
43.41826 -+/* Register a SEC_MERGE section as a candidate for merging.  */
43.41827 -+
43.41828 -+extern bfd_boolean _bfd_add_merge_section
43.41829 -+  (bfd *, void **, asection *, void **);
43.41830 -+
43.41831 -+/* Attempt to merge SEC_MERGE sections.  */
43.41832 -+
43.41833 -+extern bfd_boolean _bfd_merge_sections
43.41834 -+  (bfd *, struct bfd_link_info *, void *, void (*) (bfd *, asection *));
43.41835 -+
43.41836 -+/* Write out a merged section.  */
43.41837 -+
43.41838 -+extern bfd_boolean _bfd_write_merged_section
43.41839 -+  (bfd *, asection *, void *);
43.41840 -+
43.41841 -+/* Find an offset within a modified SEC_MERGE section.  */
43.41842 -+
43.41843 -+extern bfd_vma _bfd_merged_section_offset
43.41844 -+  (bfd *, asection **, void *, bfd_vma);
43.41845 -+
43.41846 -+/* Create a string table.  */
43.41847 -+extern struct bfd_strtab_hash *_bfd_stringtab_init
43.41848 -+  (void);
43.41849 -+
43.41850 -+/* Create an XCOFF .debug section style string table.  */
43.41851 -+extern struct bfd_strtab_hash *_bfd_xcoff_stringtab_init
43.41852 -+  (void);
43.41853 -+
43.41854 -+/* Free a string table.  */
43.41855 -+extern void _bfd_stringtab_free
43.41856 -+  (struct bfd_strtab_hash *);
43.41857 -+
43.41858 -+/* Get the size of a string table.  */
43.41859 -+extern bfd_size_type _bfd_stringtab_size
43.41860 -+  (struct bfd_strtab_hash *);
43.41861 -+
43.41862 -+/* Add a string to a string table.  */
43.41863 -+extern bfd_size_type _bfd_stringtab_add
43.41864 -+  (struct bfd_strtab_hash *, const char *, bfd_boolean hash, bfd_boolean copy);
43.41865 -+
43.41866 -+/* Write out a string table.  */
43.41867 -+extern bfd_boolean _bfd_stringtab_emit
43.41868 -+  (bfd *, struct bfd_strtab_hash *);
43.41869 -+
43.41870 -+/* Check that endianness of input and output file match.  */
43.41871 -+extern bfd_boolean _bfd_generic_verify_endian_match
43.41872 -+  (bfd *, bfd *);
43.41873 -+
43.41874 -+/* Macros to tell if bfds are read or write enabled.
43.41875 -+
43.41876 -+   Note that bfds open for read may be scribbled into if the fd passed
43.41877 -+   to bfd_fdopenr is actually open both for read and write
43.41878 -+   simultaneously.  However an output bfd will never be open for
43.41879 -+   read.  Therefore sometimes you want to check bfd_read_p or
43.41880 -+   !bfd_read_p, and only sometimes bfd_write_p.
43.41881 -+*/
43.41882 -+
43.41883 -+#define	bfd_read_p(abfd) \
43.41884 -+  ((abfd)->direction == read_direction || (abfd)->direction == both_direction)
43.41885 -+#define	bfd_write_p(abfd) \
43.41886 -+  ((abfd)->direction == write_direction || (abfd)->direction == both_direction)
43.41887 -+
43.41888 -+void bfd_assert
43.41889 -+  (const char*,int);
43.41890 -+
43.41891 -+#define BFD_ASSERT(x) \
43.41892 -+  do { if (!(x)) bfd_assert(__FILE__,__LINE__); } while (0)
43.41893 -+
43.41894 -+#define BFD_FAIL() \
43.41895 -+  do { bfd_assert(__FILE__,__LINE__); } while (0)
43.41896 -+
43.41897 -+extern void _bfd_abort
43.41898 -+  (const char *, int, const char *) ATTRIBUTE_NORETURN;
43.41899 -+
43.41900 -+/* if gcc >= 2.6, we can give a function name, too */
43.41901 -+#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
43.41902 -+#define __PRETTY_FUNCTION__  ((char *) NULL)
43.41903 -+#endif
43.41904 -+
43.41905 -+#undef abort
43.41906 -+#define abort() _bfd_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
43.41907 -+
43.41908 -+/* Manipulate a system FILE but using BFD's "file_ptr", rather than
43.41909 -+   the system "off_t" or "off64_t", as the offset.  */
43.41910 -+extern file_ptr real_ftell (FILE *file);
43.41911 -+extern int real_fseek (FILE *file, file_ptr offset, int whence);
43.41912 -+extern FILE *real_fopen (const char *filename, const char *modes);
43.41913 -+
43.41914 -+/* List of supported target vectors, and the default vector (if
43.41915 -+   bfd_default_vector[0] is NULL, there is no default).  */
43.41916 -+extern const bfd_target * const *bfd_target_vector;
43.41917 -+extern const bfd_target *bfd_default_vector[];
43.41918 -+
43.41919 -+/* List of associated target vectors.  */
43.41920 -+extern const bfd_target * const *bfd_associated_vector;
43.41921 -+
43.41922 -+/* Functions shared by the ECOFF and MIPS ELF backends, which have no
43.41923 -+   other common header files.  */
43.41924 -+
43.41925 -+#if defined(__STDC__) || defined(ALMOST_STDC)
43.41926 -+struct ecoff_find_line;
43.41927 -+#endif
43.41928 -+
43.41929 -+extern bfd_boolean _bfd_ecoff_locate_line
43.41930 -+  (bfd *, asection *, bfd_vma, struct ecoff_debug_info * const,
43.41931 -+   const struct ecoff_debug_swap * const, struct ecoff_find_line *,
43.41932 -+   const char **, const char **, unsigned int *);
43.41933 -+extern bfd_boolean _bfd_ecoff_get_accumulated_pdr
43.41934 -+  (void *, bfd_byte *);
43.41935 -+extern bfd_boolean _bfd_ecoff_get_accumulated_sym
43.41936 -+  (void *, bfd_byte *);
43.41937 -+extern bfd_boolean _bfd_ecoff_get_accumulated_ss
43.41938 -+  (void *, bfd_byte *);
43.41939 -+
43.41940 -+extern bfd_vma _bfd_get_gp_value
43.41941 -+  (bfd *);
43.41942 -+extern void _bfd_set_gp_value
43.41943 -+  (bfd *, bfd_vma);
43.41944 -+
43.41945 -+/* Function shared by the COFF and ELF SH backends, which have no
43.41946 -+   other common header files.  */
43.41947 -+
43.41948 -+#ifndef _bfd_sh_align_load_span
43.41949 -+extern bfd_boolean _bfd_sh_align_load_span
43.41950 -+  (bfd *, asection *, bfd_byte *,
43.41951 -+   bfd_boolean (*) (bfd *, asection *, void *, bfd_byte *, bfd_vma),
43.41952 -+   void *, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, bfd_boolean *);
43.41953 -+#endif
43.41954 -+
43.41955 -+/* This is the shape of the elements inside the already_linked hash
43.41956 -+   table. It maps a name onto a list of already_linked elements with
43.41957 -+   the same name.  */
43.41958 -+
43.41959 -+struct bfd_section_already_linked_hash_entry
43.41960 -+{
43.41961 -+  struct bfd_hash_entry root;
43.41962 -+  struct bfd_section_already_linked *entry;
43.41963 -+};
43.41964 -+
43.41965 -+struct bfd_section_already_linked
43.41966 -+{
43.41967 -+  struct bfd_section_already_linked *next;
43.41968 -+  asection *sec;
43.41969 -+};
43.41970 -+
43.41971 -+extern struct bfd_section_already_linked_hash_entry *
43.41972 -+  bfd_section_already_linked_table_lookup (const char *);
43.41973 -+extern bfd_boolean bfd_section_already_linked_table_insert
43.41974 -+  (struct bfd_section_already_linked_hash_entry *, asection *);
43.41975 -+extern void bfd_section_already_linked_table_traverse
43.41976 -+  (bfd_boolean (*) (struct bfd_section_already_linked_hash_entry *,
43.41977 -+		    void *), void *);
43.41978 -+
43.41979 -+extern bfd_vma read_unsigned_leb128 (bfd *, bfd_byte *, unsigned int *);
43.41980 -+extern bfd_signed_vma read_signed_leb128 (bfd *, bfd_byte *, unsigned int *);
43.41981 -+
43.41982 -+/* Extracted from init.c.  */
43.41983 -+/* Extracted from libbfd.c.  */
43.41984 -+bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
43.41985 -+
43.41986 -+unsigned int bfd_log2 (bfd_vma x);
43.41987 -+
43.41988 -+/* Extracted from bfdio.c.  */
43.41989 -+struct bfd_iovec
43.41990 -+{
43.41991 -+  /* To avoid problems with macros, a "b" rather than "f"
43.41992 -+     prefix is prepended to each method name.  */
43.41993 -+  /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
43.41994 -+     bytes starting at PTR.  Return the number of bytes actually
43.41995 -+     transfered (a read past end-of-file returns less than NBYTES),
43.41996 -+     or -1 (setting <<bfd_error>>) if an error occurs.  */
43.41997 -+  file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
43.41998 -+  file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
43.41999 -+                      file_ptr nbytes);
43.42000 -+  /* Return the current IOSTREAM file offset, or -1 (setting <<bfd_error>>
43.42001 -+     if an error occurs.  */
43.42002 -+  file_ptr (*btell) (struct bfd *abfd);
43.42003 -+  /* For the following, on successful completion a value of 0 is returned.
43.42004 -+     Otherwise, a value of -1 is returned (and  <<bfd_error>> is set).  */
43.42005 -+  int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
43.42006 -+  int (*bclose) (struct bfd *abfd);
43.42007 -+  int (*bflush) (struct bfd *abfd);
43.42008 -+  int (*bstat) (struct bfd *abfd, struct stat *sb);
43.42009 -+};
43.42010 -+/* Extracted from bfdwin.c.  */
43.42011 -+struct _bfd_window_internal {
43.42012 -+  struct _bfd_window_internal *next;
43.42013 -+  void *data;
43.42014 -+  bfd_size_type size;
43.42015 -+  int refcount : 31;           /* should be enough...  */
43.42016 -+  unsigned mapped : 1;         /* 1 = mmap, 0 = malloc */
43.42017 -+};
43.42018 -+/* Extracted from cache.c.  */
43.42019 -+bfd_boolean bfd_cache_init (bfd *abfd);
43.42020 -+
43.42021 -+bfd_boolean bfd_cache_close (bfd *abfd);
43.42022 -+
43.42023 -+FILE* bfd_open_file (bfd *abfd);
43.42024 -+
43.42025 -+/* Extracted from reloc.c.  */
43.42026 -+#ifdef _BFD_MAKE_TABLE_bfd_reloc_code_real
43.42027 -+
43.42028 -+static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
43.42029 -+
43.42030 -+  "BFD_RELOC_64",
43.42031 -+  "BFD_RELOC_32",
43.42032 -+  "BFD_RELOC_26",
43.42033 -+  "BFD_RELOC_24",
43.42034 -+  "BFD_RELOC_16",
43.42035 -+  "BFD_RELOC_14",
43.42036 -+  "BFD_RELOC_8",
43.42037 -+  "BFD_RELOC_64_PCREL",
43.42038 -+  "BFD_RELOC_32_PCREL",
43.42039 -+  "BFD_RELOC_24_PCREL",
43.42040 -+  "BFD_RELOC_16_PCREL",
43.42041 -+  "BFD_RELOC_12_PCREL",
43.42042 -+  "BFD_RELOC_8_PCREL",
43.42043 -+  "BFD_RELOC_32_SECREL",
43.42044 -+  "BFD_RELOC_32_GOT_PCREL",
43.42045 -+  "BFD_RELOC_16_GOT_PCREL",
43.42046 -+  "BFD_RELOC_8_GOT_PCREL",
43.42047 -+  "BFD_RELOC_32_GOTOFF",
43.42048 -+  "BFD_RELOC_16_GOTOFF",
43.42049 -+  "BFD_RELOC_LO16_GOTOFF",
43.42050 -+  "BFD_RELOC_HI16_GOTOFF",
43.42051 -+  "BFD_RELOC_HI16_S_GOTOFF",
43.42052 -+  "BFD_RELOC_8_GOTOFF",
43.42053 -+  "BFD_RELOC_64_PLT_PCREL",
43.42054 -+  "BFD_RELOC_32_PLT_PCREL",
43.42055 -+  "BFD_RELOC_24_PLT_PCREL",
43.42056 -+  "BFD_RELOC_16_PLT_PCREL",
43.42057 -+  "BFD_RELOC_8_PLT_PCREL",
43.42058 -+  "BFD_RELOC_64_PLTOFF",
43.42059 -+  "BFD_RELOC_32_PLTOFF",
43.42060 -+  "BFD_RELOC_16_PLTOFF",
43.42061 -+  "BFD_RELOC_LO16_PLTOFF",
43.42062 -+  "BFD_RELOC_HI16_PLTOFF",
43.42063 -+  "BFD_RELOC_HI16_S_PLTOFF",
43.42064 -+  "BFD_RELOC_8_PLTOFF",
43.42065 -+  "BFD_RELOC_68K_GLOB_DAT",
43.42066 -+  "BFD_RELOC_68K_JMP_SLOT",
43.42067 -+  "BFD_RELOC_68K_RELATIVE",
43.42068 -+  "BFD_RELOC_32_BASEREL",
43.42069 -+  "BFD_RELOC_16_BASEREL",
43.42070 -+  "BFD_RELOC_LO16_BASEREL",
43.42071 -+  "BFD_RELOC_HI16_BASEREL",
43.42072 -+  "BFD_RELOC_HI16_S_BASEREL",
43.42073 -+  "BFD_RELOC_8_BASEREL",
43.42074 -+  "BFD_RELOC_RVA",
43.42075 -+  "BFD_RELOC_8_FFnn",
43.42076 -+  "BFD_RELOC_32_PCREL_S2",
43.42077 -+  "BFD_RELOC_16_PCREL_S2",
43.42078 -+  "BFD_RELOC_23_PCREL_S2",
43.42079 -+  "BFD_RELOC_HI22",
43.42080 -+  "BFD_RELOC_LO10",
43.42081 -+  "BFD_RELOC_GPREL16",
43.42082 -+  "BFD_RELOC_GPREL32",
43.42083 -+  "BFD_RELOC_I960_CALLJ",
43.42084 -+  "BFD_RELOC_NONE",
43.42085 -+  "BFD_RELOC_SPARC_WDISP22",
43.42086 -+  "BFD_RELOC_SPARC22",
43.42087 -+  "BFD_RELOC_SPARC13",
43.42088 -+  "BFD_RELOC_SPARC_GOT10",
43.42089 -+  "BFD_RELOC_SPARC_GOT13",
43.42090 -+  "BFD_RELOC_SPARC_GOT22",
43.42091 -+  "BFD_RELOC_SPARC_PC10",
43.42092 -+  "BFD_RELOC_SPARC_PC22",
43.42093 -+  "BFD_RELOC_SPARC_WPLT30",
43.42094 -+  "BFD_RELOC_SPARC_COPY",
43.42095 -+  "BFD_RELOC_SPARC_GLOB_DAT",
43.42096 -+  "BFD_RELOC_SPARC_JMP_SLOT",
43.42097 -+  "BFD_RELOC_SPARC_RELATIVE",
43.42098 -+  "BFD_RELOC_SPARC_UA16",
43.42099 -+  "BFD_RELOC_SPARC_UA32",
43.42100 -+  "BFD_RELOC_SPARC_UA64",
43.42101 -+  "BFD_RELOC_SPARC_BASE13",
43.42102 -+  "BFD_RELOC_SPARC_BASE22",
43.42103 -+  "BFD_RELOC_SPARC_10",
43.42104 -+  "BFD_RELOC_SPARC_11",
43.42105 -+  "BFD_RELOC_SPARC_OLO10",
43.42106 -+  "BFD_RELOC_SPARC_HH22",
43.42107 -+  "BFD_RELOC_SPARC_HM10",
43.42108 -+  "BFD_RELOC_SPARC_LM22",
43.42109 -+  "BFD_RELOC_SPARC_PC_HH22",
43.42110 -+  "BFD_RELOC_SPARC_PC_HM10",
43.42111 -+  "BFD_RELOC_SPARC_PC_LM22",
43.42112 -+  "BFD_RELOC_SPARC_WDISP16",
43.42113 -+  "BFD_RELOC_SPARC_WDISP19",
43.42114 -+  "BFD_RELOC_SPARC_7",
43.42115 -+  "BFD_RELOC_SPARC_6",
43.42116 -+  "BFD_RELOC_SPARC_5",
43.42117 -+  "BFD_RELOC_SPARC_PLT32",
43.42118 -+  "BFD_RELOC_SPARC_PLT64",
43.42119 -+  "BFD_RELOC_SPARC_HIX22",
43.42120 -+  "BFD_RELOC_SPARC_LOX10",
43.42121 -+  "BFD_RELOC_SPARC_H44",
43.42122 -+  "BFD_RELOC_SPARC_M44",
43.42123 -+  "BFD_RELOC_SPARC_L44",
43.42124 -+  "BFD_RELOC_SPARC_REGISTER",
43.42125 -+  "BFD_RELOC_SPARC_REV32",
43.42126 -+  "BFD_RELOC_SPARC_TLS_GD_HI22",
43.42127 -+  "BFD_RELOC_SPARC_TLS_GD_LO10",
43.42128 -+  "BFD_RELOC_SPARC_TLS_GD_ADD",
43.42129 -+  "BFD_RELOC_SPARC_TLS_GD_CALL",
43.42130 -+  "BFD_RELOC_SPARC_TLS_LDM_HI22",
43.42131 -+  "BFD_RELOC_SPARC_TLS_LDM_LO10",
43.42132 -+  "BFD_RELOC_SPARC_TLS_LDM_ADD",
43.42133 -+  "BFD_RELOC_SPARC_TLS_LDM_CALL",
43.42134 -+  "BFD_RELOC_SPARC_TLS_LDO_HIX22",
43.42135 -+  "BFD_RELOC_SPARC_TLS_LDO_LOX10",
43.42136 -+  "BFD_RELOC_SPARC_TLS_LDO_ADD",
43.42137 -+  "BFD_RELOC_SPARC_TLS_IE_HI22",
43.42138 -+  "BFD_RELOC_SPARC_TLS_IE_LO10",
43.42139 -+  "BFD_RELOC_SPARC_TLS_IE_LD",
43.42140 -+  "BFD_RELOC_SPARC_TLS_IE_LDX",
43.42141 -+  "BFD_RELOC_SPARC_TLS_IE_ADD",
43.42142 -+  "BFD_RELOC_SPARC_TLS_LE_HIX22",
43.42143 -+  "BFD_RELOC_SPARC_TLS_LE_LOX10",
43.42144 -+  "BFD_RELOC_SPARC_TLS_DTPMOD32",
43.42145 -+  "BFD_RELOC_SPARC_TLS_DTPMOD64",
43.42146 -+  "BFD_RELOC_SPARC_TLS_DTPOFF32",
43.42147 -+  "BFD_RELOC_SPARC_TLS_DTPOFF64",
43.42148 -+  "BFD_RELOC_SPARC_TLS_TPOFF32",
43.42149 -+  "BFD_RELOC_SPARC_TLS_TPOFF64",
43.42150 -+  "BFD_RELOC_SPU_IMM7",
43.42151 -+  "BFD_RELOC_SPU_IMM8",
43.42152 -+  "BFD_RELOC_SPU_IMM10",
43.42153 -+  "BFD_RELOC_SPU_IMM10W",
43.42154 -+  "BFD_RELOC_SPU_IMM16",
43.42155 -+  "BFD_RELOC_SPU_IMM16W",
43.42156 -+  "BFD_RELOC_SPU_IMM18",
43.42157 -+  "BFD_RELOC_SPU_PCREL9a",
43.42158 -+  "BFD_RELOC_SPU_PCREL9b",
43.42159 -+  "BFD_RELOC_SPU_PCREL16",
43.42160 -+  "BFD_RELOC_SPU_LO16",
43.42161 -+  "BFD_RELOC_SPU_HI16",
43.42162 -+  "BFD_RELOC_SPU_PPU32",
43.42163 -+  "BFD_RELOC_SPU_PPU64",
43.42164 -+  "BFD_RELOC_ALPHA_GPDISP_HI16",
43.42165 -+  "BFD_RELOC_ALPHA_GPDISP_LO16",
43.42166 -+  "BFD_RELOC_ALPHA_GPDISP",
43.42167 -+  "BFD_RELOC_ALPHA_LITERAL",
43.42168 -+  "BFD_RELOC_ALPHA_ELF_LITERAL",
43.42169 -+  "BFD_RELOC_ALPHA_LITUSE",
43.42170 -+  "BFD_RELOC_ALPHA_HINT",
43.42171 -+  "BFD_RELOC_ALPHA_LINKAGE",
43.42172 -+  "BFD_RELOC_ALPHA_CODEADDR",
43.42173 -+  "BFD_RELOC_ALPHA_GPREL_HI16",
43.42174 -+  "BFD_RELOC_ALPHA_GPREL_LO16",
43.42175 -+  "BFD_RELOC_ALPHA_BRSGP",
43.42176 -+  "BFD_RELOC_ALPHA_TLSGD",
43.42177 -+  "BFD_RELOC_ALPHA_TLSLDM",
43.42178 -+  "BFD_RELOC_ALPHA_DTPMOD64",
43.42179 -+  "BFD_RELOC_ALPHA_GOTDTPREL16",
43.42180 -+  "BFD_RELOC_ALPHA_DTPREL64",
43.42181 -+  "BFD_RELOC_ALPHA_DTPREL_HI16",
43.42182 -+  "BFD_RELOC_ALPHA_DTPREL_LO16",
43.42183 -+  "BFD_RELOC_ALPHA_DTPREL16",
43.42184 -+  "BFD_RELOC_ALPHA_GOTTPREL16",
43.42185 -+  "BFD_RELOC_ALPHA_TPREL64",
43.42186 -+  "BFD_RELOC_ALPHA_TPREL_HI16",
43.42187 -+  "BFD_RELOC_ALPHA_TPREL_LO16",
43.42188 -+  "BFD_RELOC_ALPHA_TPREL16",
43.42189 -+  "BFD_RELOC_MIPS_JMP",
43.42190 -+  "BFD_RELOC_MIPS16_JMP",
43.42191 -+  "BFD_RELOC_MIPS16_GPREL",
43.42192 -+  "BFD_RELOC_HI16",
43.42193 -+  "BFD_RELOC_HI16_S",
43.42194 -+  "BFD_RELOC_LO16",
43.42195 -+  "BFD_RELOC_HI16_PCREL",
43.42196 -+  "BFD_RELOC_HI16_S_PCREL",
43.42197 -+  "BFD_RELOC_LO16_PCREL",
43.42198 -+  "BFD_RELOC_MIPS16_HI16",
43.42199 -+  "BFD_RELOC_MIPS16_HI16_S",
43.42200 -+  "BFD_RELOC_MIPS16_LO16",
43.42201 -+  "BFD_RELOC_MIPS_LITERAL",
43.42202 -+  "BFD_RELOC_MIPS_GOT16",
43.42203 -+  "BFD_RELOC_MIPS_CALL16",
43.42204 -+  "BFD_RELOC_MIPS_GOT_HI16",
43.42205 -+  "BFD_RELOC_MIPS_GOT_LO16",
43.42206 -+  "BFD_RELOC_MIPS_CALL_HI16",
43.42207 -+  "BFD_RELOC_MIPS_CALL_LO16",
43.42208 -+  "BFD_RELOC_MIPS_SUB",
43.42209 -+  "BFD_RELOC_MIPS_GOT_PAGE",
43.42210 -+  "BFD_RELOC_MIPS_GOT_OFST",
43.42211 -+  "BFD_RELOC_MIPS_GOT_DISP",
43.42212 -+  "BFD_RELOC_MIPS_SHIFT5",
43.42213 -+  "BFD_RELOC_MIPS_SHIFT6",
43.42214 -+  "BFD_RELOC_MIPS_INSERT_A",
43.42215 -+  "BFD_RELOC_MIPS_INSERT_B",
43.42216 -+  "BFD_RELOC_MIPS_DELETE",
43.42217 -+  "BFD_RELOC_MIPS_HIGHEST",
43.42218 -+  "BFD_RELOC_MIPS_HIGHER",
43.42219 -+  "BFD_RELOC_MIPS_SCN_DISP",
43.42220 -+  "BFD_RELOC_MIPS_REL16",
43.42221 -+  "BFD_RELOC_MIPS_RELGOT",
43.42222 -+  "BFD_RELOC_MIPS_JALR",
43.42223 -+  "BFD_RELOC_MIPS_TLS_DTPMOD32",
43.42224 -+  "BFD_RELOC_MIPS_TLS_DTPREL32",
43.42225 -+  "BFD_RELOC_MIPS_TLS_DTPMOD64",
43.42226 -+  "BFD_RELOC_MIPS_TLS_DTPREL64",
43.42227 -+  "BFD_RELOC_MIPS_TLS_GD",
43.42228 -+  "BFD_RELOC_MIPS_TLS_LDM",
43.42229 -+  "BFD_RELOC_MIPS_TLS_DTPREL_HI16",
43.42230 -+  "BFD_RELOC_MIPS_TLS_DTPREL_LO16",
43.42231 -+  "BFD_RELOC_MIPS_TLS_GOTTPREL",
43.42232 -+  "BFD_RELOC_MIPS_TLS_TPREL32",
43.42233 -+  "BFD_RELOC_MIPS_TLS_TPREL64",
43.42234 -+  "BFD_RELOC_MIPS_TLS_TPREL_HI16",
43.42235 -+  "BFD_RELOC_MIPS_TLS_TPREL_LO16",
43.42236 -+
43.42237 -+  "BFD_RELOC_MIPS_COPY",
43.42238 -+  "BFD_RELOC_MIPS_JUMP_SLOT",
43.42239 -+
43.42240 -+  "BFD_RELOC_FRV_LABEL16",
43.42241 -+  "BFD_RELOC_FRV_LABEL24",
43.42242 -+  "BFD_RELOC_FRV_LO16",
43.42243 -+  "BFD_RELOC_FRV_HI16",
43.42244 -+  "BFD_RELOC_FRV_GPREL12",
43.42245 -+  "BFD_RELOC_FRV_GPRELU12",
43.42246 -+  "BFD_RELOC_FRV_GPREL32",
43.42247 -+  "BFD_RELOC_FRV_GPRELHI",
43.42248 -+  "BFD_RELOC_FRV_GPRELLO",
43.42249 -+  "BFD_RELOC_FRV_GOT12",
43.42250 -+  "BFD_RELOC_FRV_GOTHI",
43.42251 -+  "BFD_RELOC_FRV_GOTLO",
43.42252 -+  "BFD_RELOC_FRV_FUNCDESC",
43.42253 -+  "BFD_RELOC_FRV_FUNCDESC_GOT12",
43.42254 -+  "BFD_RELOC_FRV_FUNCDESC_GOTHI",
43.42255 -+  "BFD_RELOC_FRV_FUNCDESC_GOTLO",
43.42256 -+  "BFD_RELOC_FRV_FUNCDESC_VALUE",
43.42257 -+  "BFD_RELOC_FRV_FUNCDESC_GOTOFF12",
43.42258 -+  "BFD_RELOC_FRV_FUNCDESC_GOTOFFHI",
43.42259 -+  "BFD_RELOC_FRV_FUNCDESC_GOTOFFLO",
43.42260 -+  "BFD_RELOC_FRV_GOTOFF12",
43.42261 -+  "BFD_RELOC_FRV_GOTOFFHI",
43.42262 -+  "BFD_RELOC_FRV_GOTOFFLO",
43.42263 -+  "BFD_RELOC_FRV_GETTLSOFF",
43.42264 -+  "BFD_RELOC_FRV_TLSDESC_VALUE",
43.42265 -+  "BFD_RELOC_FRV_GOTTLSDESC12",
43.42266 -+  "BFD_RELOC_FRV_GOTTLSDESCHI",
43.42267 -+  "BFD_RELOC_FRV_GOTTLSDESCLO",
43.42268 -+  "BFD_RELOC_FRV_TLSMOFF12",
43.42269 -+  "BFD_RELOC_FRV_TLSMOFFHI",
43.42270 -+  "BFD_RELOC_FRV_TLSMOFFLO",
43.42271 -+  "BFD_RELOC_FRV_GOTTLSOFF12",
43.42272 -+  "BFD_RELOC_FRV_GOTTLSOFFHI",
43.42273 -+  "BFD_RELOC_FRV_GOTTLSOFFLO",
43.42274 -+  "BFD_RELOC_FRV_TLSOFF",
43.42275 -+  "BFD_RELOC_FRV_TLSDESC_RELAX",
43.42276 -+  "BFD_RELOC_FRV_GETTLSOFF_RELAX",
43.42277 -+  "BFD_RELOC_FRV_TLSOFF_RELAX",
43.42278 -+  "BFD_RELOC_FRV_TLSMOFF",
43.42279 -+
43.42280 -+  "BFD_RELOC_MN10300_GOTOFF24",
43.42281 -+  "BFD_RELOC_MN10300_GOT32",
43.42282 -+  "BFD_RELOC_MN10300_GOT24",
43.42283 -+  "BFD_RELOC_MN10300_GOT16",
43.42284 -+  "BFD_RELOC_MN10300_COPY",
43.42285 -+  "BFD_RELOC_MN10300_GLOB_DAT",
43.42286 -+  "BFD_RELOC_MN10300_JMP_SLOT",
43.42287 -+  "BFD_RELOC_MN10300_RELATIVE",
43.42288 -+
43.42289 -+  "BFD_RELOC_386_GOT32",
43.42290 -+  "BFD_RELOC_386_PLT32",
43.42291 -+  "BFD_RELOC_386_COPY",
43.42292 -+  "BFD_RELOC_386_GLOB_DAT",
43.42293 -+  "BFD_RELOC_386_JUMP_SLOT",
43.42294 -+  "BFD_RELOC_386_RELATIVE",
43.42295 -+  "BFD_RELOC_386_GOTOFF",
43.42296 -+  "BFD_RELOC_386_GOTPC",
43.42297 -+  "BFD_RELOC_386_TLS_TPOFF",
43.42298 -+  "BFD_RELOC_386_TLS_IE",
43.42299 -+  "BFD_RELOC_386_TLS_GOTIE",
43.42300 -+  "BFD_RELOC_386_TLS_LE",
43.42301 -+  "BFD_RELOC_386_TLS_GD",
43.42302 -+  "BFD_RELOC_386_TLS_LDM",
43.42303 -+  "BFD_RELOC_386_TLS_LDO_32",
43.42304 -+  "BFD_RELOC_386_TLS_IE_32",
43.42305 -+  "BFD_RELOC_386_TLS_LE_32",
43.42306 -+  "BFD_RELOC_386_TLS_DTPMOD32",
43.42307 -+  "BFD_RELOC_386_TLS_DTPOFF32",
43.42308 -+  "BFD_RELOC_386_TLS_TPOFF32",
43.42309 -+  "BFD_RELOC_386_TLS_GOTDESC",
43.42310 -+  "BFD_RELOC_386_TLS_DESC_CALL",
43.42311 -+  "BFD_RELOC_386_TLS_DESC",
43.42312 -+  "BFD_RELOC_X86_64_GOT32",
43.42313 -+  "BFD_RELOC_X86_64_PLT32",
43.42314 -+  "BFD_RELOC_X86_64_COPY",
43.42315 -+  "BFD_RELOC_X86_64_GLOB_DAT",
43.42316 -+  "BFD_RELOC_X86_64_JUMP_SLOT",
43.42317 -+  "BFD_RELOC_X86_64_RELATIVE",
43.42318 -+  "BFD_RELOC_X86_64_GOTPCREL",
43.42319 -+  "BFD_RELOC_X86_64_32S",
43.42320 -+  "BFD_RELOC_X86_64_DTPMOD64",
43.42321 -+  "BFD_RELOC_X86_64_DTPOFF64",
43.42322 -+  "BFD_RELOC_X86_64_TPOFF64",
43.42323 -+  "BFD_RELOC_X86_64_TLSGD",
43.42324 -+  "BFD_RELOC_X86_64_TLSLD",
43.42325 -+  "BFD_RELOC_X86_64_DTPOFF32",
43.42326 -+  "BFD_RELOC_X86_64_GOTTPOFF",
43.42327 -+  "BFD_RELOC_X86_64_TPOFF32",
43.42328 -+  "BFD_RELOC_X86_64_GOTOFF64",
43.42329 -+  "BFD_RELOC_X86_64_GOTPC32",
43.42330 -+  "BFD_RELOC_X86_64_GOT64",
43.42331 -+  "BFD_RELOC_X86_64_GOTPCREL64",
43.42332 -+  "BFD_RELOC_X86_64_GOTPC64",
43.42333 -+  "BFD_RELOC_X86_64_GOTPLT64",
43.42334 -+  "BFD_RELOC_X86_64_PLTOFF64",
43.42335 -+  "BFD_RELOC_X86_64_GOTPC32_TLSDESC",
43.42336 -+  "BFD_RELOC_X86_64_TLSDESC_CALL",
43.42337 -+  "BFD_RELOC_X86_64_TLSDESC",
43.42338 -+  "BFD_RELOC_NS32K_IMM_8",
43.42339 -+  "BFD_RELOC_NS32K_IMM_16",
43.42340 -+  "BFD_RELOC_NS32K_IMM_32",
43.42341 -+  "BFD_RELOC_NS32K_IMM_8_PCREL",
43.42342 -+  "BFD_RELOC_NS32K_IMM_16_PCREL",
43.42343 -+  "BFD_RELOC_NS32K_IMM_32_PCREL",
43.42344 -+  "BFD_RELOC_NS32K_DISP_8",
43.42345 -+  "BFD_RELOC_NS32K_DISP_16",
43.42346 -+  "BFD_RELOC_NS32K_DISP_32",
43.42347 -+  "BFD_RELOC_NS32K_DISP_8_PCREL",
43.42348 -+  "BFD_RELOC_NS32K_DISP_16_PCREL",
43.42349 -+  "BFD_RELOC_NS32K_DISP_32_PCREL",
43.42350 -+  "BFD_RELOC_PDP11_DISP_8_PCREL",
43.42351 -+  "BFD_RELOC_PDP11_DISP_6_PCREL",
43.42352 -+  "BFD_RELOC_PJ_CODE_HI16",
43.42353 -+  "BFD_RELOC_PJ_CODE_LO16",
43.42354 -+  "BFD_RELOC_PJ_CODE_DIR16",
43.42355 -+  "BFD_RELOC_PJ_CODE_DIR32",
43.42356 -+  "BFD_RELOC_PJ_CODE_REL16",
43.42357 -+  "BFD_RELOC_PJ_CODE_REL32",
43.42358 -+  "BFD_RELOC_PPC_B26",
43.42359 -+  "BFD_RELOC_PPC_BA26",
43.42360 -+  "BFD_RELOC_PPC_TOC16",
43.42361 -+  "BFD_RELOC_PPC_B16",
43.42362 -+  "BFD_RELOC_PPC_B16_BRTAKEN",
43.42363 -+  "BFD_RELOC_PPC_B16_BRNTAKEN",
43.42364 -+  "BFD_RELOC_PPC_BA16",
43.42365 -+  "BFD_RELOC_PPC_BA16_BRTAKEN",
43.42366 -+  "BFD_RELOC_PPC_BA16_BRNTAKEN",
43.42367 -+  "BFD_RELOC_PPC_COPY",
43.42368 -+  "BFD_RELOC_PPC_GLOB_DAT",
43.42369 -+  "BFD_RELOC_PPC_JMP_SLOT",
43.42370 -+  "BFD_RELOC_PPC_RELATIVE",
43.42371 -+  "BFD_RELOC_PPC_LOCAL24PC",
43.42372 -+  "BFD_RELOC_PPC_EMB_NADDR32",
43.42373 -+  "BFD_RELOC_PPC_EMB_NADDR16",
43.42374 -+  "BFD_RELOC_PPC_EMB_NADDR16_LO",
43.42375 -+  "BFD_RELOC_PPC_EMB_NADDR16_HI",
43.42376 -+  "BFD_RELOC_PPC_EMB_NADDR16_HA",
43.42377 -+  "BFD_RELOC_PPC_EMB_SDAI16",
43.42378 -+  "BFD_RELOC_PPC_EMB_SDA2I16",
43.42379 -+  "BFD_RELOC_PPC_EMB_SDA2REL",
43.42380 -+  "BFD_RELOC_PPC_EMB_SDA21",
43.42381 -+  "BFD_RELOC_PPC_EMB_MRKREF",
43.42382 -+  "BFD_RELOC_PPC_EMB_RELSEC16",
43.42383 -+  "BFD_RELOC_PPC_EMB_RELST_LO",
43.42384 -+  "BFD_RELOC_PPC_EMB_RELST_HI",
43.42385 -+  "BFD_RELOC_PPC_EMB_RELST_HA",
43.42386 -+  "BFD_RELOC_PPC_EMB_BIT_FLD",
43.42387 -+  "BFD_RELOC_PPC_EMB_RELSDA",
43.42388 -+  "BFD_RELOC_PPC64_HIGHER",
43.42389 -+  "BFD_RELOC_PPC64_HIGHER_S",
43.42390 -+  "BFD_RELOC_PPC64_HIGHEST",
43.42391 -+  "BFD_RELOC_PPC64_HIGHEST_S",
43.42392 -+  "BFD_RELOC_PPC64_TOC16_LO",
43.42393 -+  "BFD_RELOC_PPC64_TOC16_HI",
43.42394 -+  "BFD_RELOC_PPC64_TOC16_HA",
43.42395 -+  "BFD_RELOC_PPC64_TOC",
43.42396 -+  "BFD_RELOC_PPC64_PLTGOT16",
43.42397 -+  "BFD_RELOC_PPC64_PLTGOT16_LO",
43.42398 -+  "BFD_RELOC_PPC64_PLTGOT16_HI",
43.42399 -+  "BFD_RELOC_PPC64_PLTGOT16_HA",
43.42400 -+  "BFD_RELOC_PPC64_ADDR16_DS",
43.42401 -+  "BFD_RELOC_PPC64_ADDR16_LO_DS",
43.42402 -+  "BFD_RELOC_PPC64_GOT16_DS",
43.42403 -+  "BFD_RELOC_PPC64_GOT16_LO_DS",
43.42404 -+  "BFD_RELOC_PPC64_PLT16_LO_DS",
43.42405 -+  "BFD_RELOC_PPC64_SECTOFF_DS",
43.42406 -+  "BFD_RELOC_PPC64_SECTOFF_LO_DS",
43.42407 -+  "BFD_RELOC_PPC64_TOC16_DS",
43.42408 -+  "BFD_RELOC_PPC64_TOC16_LO_DS",
43.42409 -+  "BFD_RELOC_PPC64_PLTGOT16_DS",
43.42410 -+  "BFD_RELOC_PPC64_PLTGOT16_LO_DS",
43.42411 -+  "BFD_RELOC_PPC_TLS",
43.42412 -+  "BFD_RELOC_PPC_DTPMOD",
43.42413 -+  "BFD_RELOC_PPC_TPREL16",
43.42414 -+  "BFD_RELOC_PPC_TPREL16_LO",
43.42415 -+  "BFD_RELOC_PPC_TPREL16_HI",
43.42416 -+  "BFD_RELOC_PPC_TPREL16_HA",
43.42417 -+  "BFD_RELOC_PPC_TPREL",
43.42418 -+  "BFD_RELOC_PPC_DTPREL16",
43.42419 -+  "BFD_RELOC_PPC_DTPREL16_LO",
43.42420 -+  "BFD_RELOC_PPC_DTPREL16_HI",
43.42421 -+  "BFD_RELOC_PPC_DTPREL16_HA",
43.42422 -+  "BFD_RELOC_PPC_DTPREL",
43.42423 -+  "BFD_RELOC_PPC_GOT_TLSGD16",
43.42424 -+  "BFD_RELOC_PPC_GOT_TLSGD16_LO",
43.42425 -+  "BFD_RELOC_PPC_GOT_TLSGD16_HI",
43.42426 -+  "BFD_RELOC_PPC_GOT_TLSGD16_HA",
43.42427 -+  "BFD_RELOC_PPC_GOT_TLSLD16",
43.42428 -+  "BFD_RELOC_PPC_GOT_TLSLD16_LO",
43.42429 -+  "BFD_RELOC_PPC_GOT_TLSLD16_HI",
43.42430 -+  "BFD_RELOC_PPC_GOT_TLSLD16_HA",
43.42431 -+  "BFD_RELOC_PPC_GOT_TPREL16",
43.42432 -+  "BFD_RELOC_PPC_GOT_TPREL16_LO",
43.42433 -+  "BFD_RELOC_PPC_GOT_TPREL16_HI",
43.42434 -+  "BFD_RELOC_PPC_GOT_TPREL16_HA",
43.42435 -+  "BFD_RELOC_PPC_GOT_DTPREL16",
43.42436 -+  "BFD_RELOC_PPC_GOT_DTPREL16_LO",
43.42437 -+  "BFD_RELOC_PPC_GOT_DTPREL16_HI",
43.42438 -+  "BFD_RELOC_PPC_GOT_DTPREL16_HA",
43.42439 -+  "BFD_RELOC_PPC64_TPREL16_DS",
43.42440 -+  "BFD_RELOC_PPC64_TPREL16_LO_DS",
43.42441 -+  "BFD_RELOC_PPC64_TPREL16_HIGHER",
43.42442 -+  "BFD_RELOC_PPC64_TPREL16_HIGHERA",
43.42443 -+  "BFD_RELOC_PPC64_TPREL16_HIGHEST",
43.42444 -+  "BFD_RELOC_PPC64_TPREL16_HIGHESTA",
43.42445 -+  "BFD_RELOC_PPC64_DTPREL16_DS",
43.42446 -+  "BFD_RELOC_PPC64_DTPREL16_LO_DS",
43.42447 -+  "BFD_RELOC_PPC64_DTPREL16_HIGHER",
43.42448 -+  "BFD_RELOC_PPC64_DTPREL16_HIGHERA",
43.42449 -+  "BFD_RELOC_PPC64_DTPREL16_HIGHEST",
43.42450 -+  "BFD_RELOC_PPC64_DTPREL16_HIGHESTA",
43.42451 -+  "BFD_RELOC_I370_D12",
43.42452 -+  "BFD_RELOC_CTOR",
43.42453 -+  "BFD_RELOC_ARM_PCREL_BRANCH",
43.42454 -+  "BFD_RELOC_ARM_PCREL_BLX",
43.42455 -+  "BFD_RELOC_THUMB_PCREL_BLX",
43.42456 -+  "BFD_RELOC_ARM_PCREL_CALL",
43.42457 -+  "BFD_RELOC_ARM_PCREL_JUMP",
43.42458 -+  "BFD_RELOC_THUMB_PCREL_BRANCH7",
43.42459 -+  "BFD_RELOC_THUMB_PCREL_BRANCH9",
43.42460 -+  "BFD_RELOC_THUMB_PCREL_BRANCH12",
43.42461 -+  "BFD_RELOC_THUMB_PCREL_BRANCH20",
43.42462 -+  "BFD_RELOC_THUMB_PCREL_BRANCH23",
43.42463 -+  "BFD_RELOC_THUMB_PCREL_BRANCH25",
43.42464 -+  "BFD_RELOC_ARM_OFFSET_IMM",
43.42465 -+  "BFD_RELOC_ARM_THUMB_OFFSET",
43.42466 -+  "BFD_RELOC_ARM_TARGET1",
43.42467 -+  "BFD_RELOC_ARM_ROSEGREL32",
43.42468 -+  "BFD_RELOC_ARM_SBREL32",
43.42469 -+  "BFD_RELOC_ARM_TARGET2",
43.42470 -+  "BFD_RELOC_ARM_PREL31",
43.42471 -+  "BFD_RELOC_ARM_MOVW",
43.42472 -+  "BFD_RELOC_ARM_MOVT",
43.42473 -+  "BFD_RELOC_ARM_MOVW_PCREL",
43.42474 -+  "BFD_RELOC_ARM_MOVT_PCREL",
43.42475 -+  "BFD_RELOC_ARM_THUMB_MOVW",
43.42476 -+  "BFD_RELOC_ARM_THUMB_MOVT",
43.42477 -+  "BFD_RELOC_ARM_THUMB_MOVW_PCREL",
43.42478 -+  "BFD_RELOC_ARM_THUMB_MOVT_PCREL",
43.42479 -+  "BFD_RELOC_ARM_JUMP_SLOT",
43.42480 -+  "BFD_RELOC_ARM_GLOB_DAT",
43.42481 -+  "BFD_RELOC_ARM_GOT32",
43.42482 -+  "BFD_RELOC_ARM_PLT32",
43.42483 -+  "BFD_RELOC_ARM_RELATIVE",
43.42484 -+  "BFD_RELOC_ARM_GOTOFF",
43.42485 -+  "BFD_RELOC_ARM_GOTPC",
43.42486 -+  "BFD_RELOC_ARM_TLS_GD32",
43.42487 -+  "BFD_RELOC_ARM_TLS_LDO32",
43.42488 -+  "BFD_RELOC_ARM_TLS_LDM32",
43.42489 -+  "BFD_RELOC_ARM_TLS_DTPOFF32",
43.42490 -+  "BFD_RELOC_ARM_TLS_DTPMOD32",
43.42491 -+  "BFD_RELOC_ARM_TLS_TPOFF32",
43.42492 -+  "BFD_RELOC_ARM_TLS_IE32",
43.42493 -+  "BFD_RELOC_ARM_TLS_LE32",
43.42494 -+  "BFD_RELOC_ARM_ALU_PC_G0_NC",
43.42495 -+  "BFD_RELOC_ARM_ALU_PC_G0",
43.42496 -+  "BFD_RELOC_ARM_ALU_PC_G1_NC",
43.42497 -+  "BFD_RELOC_ARM_ALU_PC_G1",
43.42498 -+  "BFD_RELOC_ARM_ALU_PC_G2",
43.42499 -+  "BFD_RELOC_ARM_LDR_PC_G0",
43.42500 -+  "BFD_RELOC_ARM_LDR_PC_G1",
43.42501 -+  "BFD_RELOC_ARM_LDR_PC_G2",
43.42502 -+  "BFD_RELOC_ARM_LDRS_PC_G0",
43.42503 -+  "BFD_RELOC_ARM_LDRS_PC_G1",
43.42504 -+  "BFD_RELOC_ARM_LDRS_PC_G2",
43.42505 -+  "BFD_RELOC_ARM_LDC_PC_G0",
43.42506 -+  "BFD_RELOC_ARM_LDC_PC_G1",
43.42507 -+  "BFD_RELOC_ARM_LDC_PC_G2",
43.42508 -+  "BFD_RELOC_ARM_ALU_SB_G0_NC",
43.42509 -+  "BFD_RELOC_ARM_ALU_SB_G0",
43.42510 -+  "BFD_RELOC_ARM_ALU_SB_G1_NC",
43.42511 -+  "BFD_RELOC_ARM_ALU_SB_G1",
43.42512 -+  "BFD_RELOC_ARM_ALU_SB_G2",
43.42513 -+  "BFD_RELOC_ARM_LDR_SB_G0",
43.42514 -+  "BFD_RELOC_ARM_LDR_SB_G1",
43.42515 -+  "BFD_RELOC_ARM_LDR_SB_G2",
43.42516 -+  "BFD_RELOC_ARM_LDRS_SB_G0",
43.42517 -+  "BFD_RELOC_ARM_LDRS_SB_G1",
43.42518 -+  "BFD_RELOC_ARM_LDRS_SB_G2",
43.42519 -+  "BFD_RELOC_ARM_LDC_SB_G0",
43.42520 -+  "BFD_RELOC_ARM_LDC_SB_G1",
43.42521 -+  "BFD_RELOC_ARM_LDC_SB_G2",
43.42522 -+  "BFD_RELOC_ARM_IMMEDIATE",
43.42523 -+  "BFD_RELOC_ARM_ADRL_IMMEDIATE",
43.42524 -+  "BFD_RELOC_ARM_T32_IMMEDIATE",
43.42525 -+  "BFD_RELOC_ARM_T32_ADD_IMM",
43.42526 -+  "BFD_RELOC_ARM_T32_IMM12",
43.42527 -+  "BFD_RELOC_ARM_T32_ADD_PC12",
43.42528 -+  "BFD_RELOC_ARM_SHIFT_IMM",
43.42529 -+  "BFD_RELOC_ARM_SMC",
43.42530 -+  "BFD_RELOC_ARM_SWI",
43.42531 -+  "BFD_RELOC_ARM_MULTI",
43.42532 -+  "BFD_RELOC_ARM_CP_OFF_IMM",
43.42533 -+  "BFD_RELOC_ARM_CP_OFF_IMM_S2",
43.42534 -+  "BFD_RELOC_ARM_T32_CP_OFF_IMM",
43.42535 -+  "BFD_RELOC_ARM_T32_CP_OFF_IMM_S2",
43.42536 -+  "BFD_RELOC_ARM_ADR_IMM",
43.42537 -+  "BFD_RELOC_ARM_LDR_IMM",
43.42538 -+  "BFD_RELOC_ARM_LITERAL",
43.42539 -+  "BFD_RELOC_ARM_IN_POOL",
43.42540 -+  "BFD_RELOC_ARM_OFFSET_IMM8",
43.42541 -+  "BFD_RELOC_ARM_T32_OFFSET_U8",
43.42542 -+  "BFD_RELOC_ARM_T32_OFFSET_IMM",
43.42543 -+  "BFD_RELOC_ARM_HWLITERAL",
43.42544 -+  "BFD_RELOC_ARM_THUMB_ADD",
43.42545 -+  "BFD_RELOC_ARM_THUMB_IMM",
43.42546 -+  "BFD_RELOC_ARM_THUMB_SHIFT",
43.42547 -+  "BFD_RELOC_SH_PCDISP8BY2",
43.42548 -+  "BFD_RELOC_SH_PCDISP12BY2",
43.42549 -+  "BFD_RELOC_SH_IMM3",
43.42550 -+  "BFD_RELOC_SH_IMM3U",
43.42551 -+  "BFD_RELOC_SH_DISP12",
43.42552 -+  "BFD_RELOC_SH_DISP12BY2",
43.42553 -+  "BFD_RELOC_SH_DISP12BY4",
43.42554 -+  "BFD_RELOC_SH_DISP12BY8",
43.42555 -+  "BFD_RELOC_SH_DISP20",
43.42556 -+  "BFD_RELOC_SH_DISP20BY8",
43.42557 -+  "BFD_RELOC_SH_IMM4",
43.42558 -+  "BFD_RELOC_SH_IMM4BY2",
43.42559 -+  "BFD_RELOC_SH_IMM4BY4",
43.42560 -+  "BFD_RELOC_SH_IMM8",
43.42561 -+  "BFD_RELOC_SH_IMM8BY2",
43.42562 -+  "BFD_RELOC_SH_IMM8BY4",
43.42563 -+  "BFD_RELOC_SH_PCRELIMM8BY2",
43.42564 -+  "BFD_RELOC_SH_PCRELIMM8BY4",
43.42565 -+  "BFD_RELOC_SH_SWITCH16",
43.42566 -+  "BFD_RELOC_SH_SWITCH32",
43.42567 -+  "BFD_RELOC_SH_USES",
43.42568 -+  "BFD_RELOC_SH_COUNT",
43.42569 -+  "BFD_RELOC_SH_ALIGN",
43.42570 -+  "BFD_RELOC_SH_CODE",
43.42571 -+  "BFD_RELOC_SH_DATA",
43.42572 -+  "BFD_RELOC_SH_LABEL",
43.42573 -+  "BFD_RELOC_SH_LOOP_START",
43.42574 -+  "BFD_RELOC_SH_LOOP_END",
43.42575 -+  "BFD_RELOC_SH_COPY",
43.42576 -+  "BFD_RELOC_SH_GLOB_DAT",
43.42577 -+  "BFD_RELOC_SH_JMP_SLOT",
43.42578 -+  "BFD_RELOC_SH_RELATIVE",
43.42579 -+  "BFD_RELOC_SH_GOTPC",
43.42580 -+  "BFD_RELOC_SH_GOT_LOW16",
43.42581 -+  "BFD_RELOC_SH_GOT_MEDLOW16",
43.42582 -+  "BFD_RELOC_SH_GOT_MEDHI16",
43.42583 -+  "BFD_RELOC_SH_GOT_HI16",
43.42584 -+  "BFD_RELOC_SH_GOTPLT_LOW16",
43.42585 -+  "BFD_RELOC_SH_GOTPLT_MEDLOW16",
43.42586 -+  "BFD_RELOC_SH_GOTPLT_MEDHI16",
43.42587 -+  "BFD_RELOC_SH_GOTPLT_HI16",
43.42588 -+  "BFD_RELOC_SH_PLT_LOW16",
43.42589 -+  "BFD_RELOC_SH_PLT_MEDLOW16",
43.42590 -+  "BFD_RELOC_SH_PLT_MEDHI16",
43.42591 -+  "BFD_RELOC_SH_PLT_HI16",
43.42592 -+  "BFD_RELOC_SH_GOTOFF_LOW16",
43.42593 -+  "BFD_RELOC_SH_GOTOFF_MEDLOW16",
43.42594 -+  "BFD_RELOC_SH_GOTOFF_MEDHI16",
43.42595 -+  "BFD_RELOC_SH_GOTOFF_HI16",
43.42596 -+  "BFD_RELOC_SH_GOTPC_LOW16",
43.42597 -+  "BFD_RELOC_SH_GOTPC_MEDLOW16",
43.42598 -+  "BFD_RELOC_SH_GOTPC_MEDHI16",
43.42599 -+  "BFD_RELOC_SH_GOTPC_HI16",
43.42600 -+  "BFD_RELOC_SH_COPY64",
43.42601 -+  "BFD_RELOC_SH_GLOB_DAT64",
43.42602 -+  "BFD_RELOC_SH_JMP_SLOT64",
43.42603 -+  "BFD_RELOC_SH_RELATIVE64",
43.42604 -+  "BFD_RELOC_SH_GOT10BY4",
43.42605 -+  "BFD_RELOC_SH_GOT10BY8",
43.42606 -+  "BFD_RELOC_SH_GOTPLT10BY4",
43.42607 -+  "BFD_RELOC_SH_GOTPLT10BY8",
43.42608 -+  "BFD_RELOC_SH_GOTPLT32",
43.42609 -+  "BFD_RELOC_SH_SHMEDIA_CODE",
43.42610 -+  "BFD_RELOC_SH_IMMU5",
43.42611 -+  "BFD_RELOC_SH_IMMS6",
43.42612 -+  "BFD_RELOC_SH_IMMS6BY32",
43.42613 -+  "BFD_RELOC_SH_IMMU6",
43.42614 -+  "BFD_RELOC_SH_IMMS10",
43.42615 -+  "BFD_RELOC_SH_IMMS10BY2",
43.42616 -+  "BFD_RELOC_SH_IMMS10BY4",
43.42617 -+  "BFD_RELOC_SH_IMMS10BY8",
43.42618 -+  "BFD_RELOC_SH_IMMS16",
43.42619 -+  "BFD_RELOC_SH_IMMU16",
43.42620 -+  "BFD_RELOC_SH_IMM_LOW16",
43.42621 -+  "BFD_RELOC_SH_IMM_LOW16_PCREL",
43.42622 -+  "BFD_RELOC_SH_IMM_MEDLOW16",
43.42623 -+  "BFD_RELOC_SH_IMM_MEDLOW16_PCREL",
43.42624 -+  "BFD_RELOC_SH_IMM_MEDHI16",
43.42625 -+  "BFD_RELOC_SH_IMM_MEDHI16_PCREL",
43.42626 -+  "BFD_RELOC_SH_IMM_HI16",
43.42627 -+  "BFD_RELOC_SH_IMM_HI16_PCREL",
43.42628 -+  "BFD_RELOC_SH_PT_16",
43.42629 -+  "BFD_RELOC_SH_TLS_GD_32",
43.42630 -+  "BFD_RELOC_SH_TLS_LD_32",
43.42631 -+  "BFD_RELOC_SH_TLS_LDO_32",
43.42632 -+  "BFD_RELOC_SH_TLS_IE_32",
43.42633 -+  "BFD_RELOC_SH_TLS_LE_32",
43.42634 -+  "BFD_RELOC_SH_TLS_DTPMOD32",
43.42635 -+  "BFD_RELOC_SH_TLS_DTPOFF32",
43.42636 -+  "BFD_RELOC_SH_TLS_TPOFF32",
43.42637 -+  "BFD_RELOC_ARC_B22_PCREL",
43.42638 -+  "BFD_RELOC_ARC_B26",
43.42639 -+  "BFD_RELOC_BFIN_16_IMM",
43.42640 -+  "BFD_RELOC_BFIN_16_HIGH",
43.42641 -+  "BFD_RELOC_BFIN_4_PCREL",
43.42642 -+  "BFD_RELOC_BFIN_5_PCREL",
43.42643 -+  "BFD_RELOC_BFIN_16_LOW",
43.42644 -+  "BFD_RELOC_BFIN_10_PCREL",
43.42645 -+  "BFD_RELOC_BFIN_11_PCREL",
43.42646 -+  "BFD_RELOC_BFIN_12_PCREL_JUMP",
43.42647 -+  "BFD_RELOC_BFIN_12_PCREL_JUMP_S",
43.42648 -+  "BFD_RELOC_BFIN_24_PCREL_CALL_X",
43.42649 -+  "BFD_RELOC_BFIN_24_PCREL_JUMP_L",
43.42650 -+  "BFD_RELOC_BFIN_GOT17M4",
43.42651 -+  "BFD_RELOC_BFIN_GOTHI",
43.42652 -+  "BFD_RELOC_BFIN_GOTLO",
43.42653 -+  "BFD_RELOC_BFIN_FUNCDESC",
43.42654 -+  "BFD_RELOC_BFIN_FUNCDESC_GOT17M4",
43.42655 -+  "BFD_RELOC_BFIN_FUNCDESC_GOTHI",
43.42656 -+  "BFD_RELOC_BFIN_FUNCDESC_GOTLO",
43.42657 -+  "BFD_RELOC_BFIN_FUNCDESC_VALUE",
43.42658 -+  "BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4",
43.42659 -+  "BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI",
43.42660 -+  "BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO",
43.42661 -+  "BFD_RELOC_BFIN_GOTOFF17M4",
43.42662 -+  "BFD_RELOC_BFIN_GOTOFFHI",
43.42663 -+  "BFD_RELOC_BFIN_GOTOFFLO",
43.42664 -+  "BFD_RELOC_BFIN_GOT",
43.42665 -+  "BFD_RELOC_BFIN_PLTPC",
43.42666 -+  "BFD_ARELOC_BFIN_PUSH",
43.42667 -+  "BFD_ARELOC_BFIN_CONST",
43.42668 -+  "BFD_ARELOC_BFIN_ADD",
43.42669 -+  "BFD_ARELOC_BFIN_SUB",
43.42670 -+  "BFD_ARELOC_BFIN_MULT",
43.42671 -+  "BFD_ARELOC_BFIN_DIV",
43.42672 -+  "BFD_ARELOC_BFIN_MOD",
43.42673 -+  "BFD_ARELOC_BFIN_LSHIFT",
43.42674 -+  "BFD_ARELOC_BFIN_RSHIFT",
43.42675 -+  "BFD_ARELOC_BFIN_AND",
43.42676 -+  "BFD_ARELOC_BFIN_OR",
43.42677 -+  "BFD_ARELOC_BFIN_XOR",
43.42678 -+  "BFD_ARELOC_BFIN_LAND",
43.42679 -+  "BFD_ARELOC_BFIN_LOR",
43.42680 -+  "BFD_ARELOC_BFIN_LEN",
43.42681 -+  "BFD_ARELOC_BFIN_NEG",
43.42682 -+  "BFD_ARELOC_BFIN_COMP",
43.42683 -+  "BFD_ARELOC_BFIN_PAGE",
43.42684 -+  "BFD_ARELOC_BFIN_HWPAGE",
43.42685 -+  "BFD_ARELOC_BFIN_ADDR",
43.42686 -+  "BFD_RELOC_D10V_10_PCREL_R",
43.42687 -+  "BFD_RELOC_D10V_10_PCREL_L",
43.42688 -+  "BFD_RELOC_D10V_18",
43.42689 -+  "BFD_RELOC_D10V_18_PCREL",
43.42690 -+  "BFD_RELOC_D30V_6",
43.42691 -+  "BFD_RELOC_D30V_9_PCREL",
43.42692 -+  "BFD_RELOC_D30V_9_PCREL_R",
43.42693 -+  "BFD_RELOC_D30V_15",
43.42694 -+  "BFD_RELOC_D30V_15_PCREL",
43.42695 -+  "BFD_RELOC_D30V_15_PCREL_R",
43.42696 -+  "BFD_RELOC_D30V_21",
43.42697 -+  "BFD_RELOC_D30V_21_PCREL",
43.42698 -+  "BFD_RELOC_D30V_21_PCREL_R",
43.42699 -+  "BFD_RELOC_D30V_32",
43.42700 -+  "BFD_RELOC_D30V_32_PCREL",
43.42701 -+  "BFD_RELOC_DLX_HI16_S",
43.42702 -+  "BFD_RELOC_DLX_LO16",
43.42703 -+  "BFD_RELOC_DLX_JMP26",
43.42704 -+  "BFD_RELOC_M32C_HI8",
43.42705 -+  "BFD_RELOC_M32C_RL_JUMP",
43.42706 -+  "BFD_RELOC_M32C_RL_1ADDR",
43.42707 -+  "BFD_RELOC_M32C_RL_2ADDR",
43.42708 -+  "BFD_RELOC_M32R_24",
43.42709 -+  "BFD_RELOC_M32R_10_PCREL",
43.42710 -+  "BFD_RELOC_M32R_18_PCREL",
43.42711 -+  "BFD_RELOC_M32R_26_PCREL",
43.42712 -+  "BFD_RELOC_M32R_HI16_ULO",
43.42713 -+  "BFD_RELOC_M32R_HI16_SLO",
43.42714 -+  "BFD_RELOC_M32R_LO16",
43.42715 -+  "BFD_RELOC_M32R_SDA16",
43.42716 -+  "BFD_RELOC_M32R_GOT24",
43.42717 -+  "BFD_RELOC_M32R_26_PLTREL",
43.42718 -+  "BFD_RELOC_M32R_COPY",
43.42719 -+  "BFD_RELOC_M32R_GLOB_DAT",
43.42720 -+  "BFD_RELOC_M32R_JMP_SLOT",
43.42721 -+  "BFD_RELOC_M32R_RELATIVE",
43.42722 -+  "BFD_RELOC_M32R_GOTOFF",
43.42723 -+  "BFD_RELOC_M32R_GOTOFF_HI_ULO",
43.42724 -+  "BFD_RELOC_M32R_GOTOFF_HI_SLO",
43.42725 -+  "BFD_RELOC_M32R_GOTOFF_LO",
43.42726 -+  "BFD_RELOC_M32R_GOTPC24",
43.42727 -+  "BFD_RELOC_M32R_GOT16_HI_ULO",
43.42728 -+  "BFD_RELOC_M32R_GOT16_HI_SLO",
43.42729 -+  "BFD_RELOC_M32R_GOT16_LO",
43.42730 -+  "BFD_RELOC_M32R_GOTPC_HI_ULO",
43.42731 -+  "BFD_RELOC_M32R_GOTPC_HI_SLO",
43.42732 -+  "BFD_RELOC_M32R_GOTPC_LO",
43.42733 -+  "BFD_RELOC_V850_9_PCREL",
43.42734 -+  "BFD_RELOC_V850_22_PCREL",
43.42735 -+  "BFD_RELOC_V850_SDA_16_16_OFFSET",
43.42736 -+  "BFD_RELOC_V850_SDA_15_16_OFFSET",
43.42737 -+  "BFD_RELOC_V850_ZDA_16_16_OFFSET",
43.42738 -+  "BFD_RELOC_V850_ZDA_15_16_OFFSET",
43.42739 -+  "BFD_RELOC_V850_TDA_6_8_OFFSET",
43.42740 -+  "BFD_RELOC_V850_TDA_7_8_OFFSET",
43.42741 -+  "BFD_RELOC_V850_TDA_7_7_OFFSET",
43.42742 -+  "BFD_RELOC_V850_TDA_16_16_OFFSET",
43.42743 -+  "BFD_RELOC_V850_TDA_4_5_OFFSET",
43.42744 -+  "BFD_RELOC_V850_TDA_4_4_OFFSET",
43.42745 -+  "BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET",
43.42746 -+  "BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET",
43.42747 -+  "BFD_RELOC_V850_CALLT_6_7_OFFSET",
43.42748 -+  "BFD_RELOC_V850_CALLT_16_16_OFFSET",
43.42749 -+  "BFD_RELOC_V850_LONGCALL",
43.42750 -+  "BFD_RELOC_V850_LONGJUMP",
43.42751 -+  "BFD_RELOC_V850_ALIGN",
43.42752 -+  "BFD_RELOC_V850_LO16_SPLIT_OFFSET",
43.42753 -+  "BFD_RELOC_MN10300_32_PCREL",
43.42754 -+  "BFD_RELOC_MN10300_16_PCREL",
43.42755 -+  "BFD_RELOC_TIC30_LDP",
43.42756 -+  "BFD_RELOC_TIC54X_PARTLS7",
43.42757 -+  "BFD_RELOC_TIC54X_PARTMS9",
43.42758 -+  "BFD_RELOC_TIC54X_23",
43.42759 -+  "BFD_RELOC_TIC54X_16_OF_23",
43.42760 -+  "BFD_RELOC_TIC54X_MS7_OF_23",
43.42761 -+  "BFD_RELOC_FR30_48",
43.42762 -+  "BFD_RELOC_FR30_20",
43.42763 -+  "BFD_RELOC_FR30_6_IN_4",
43.42764 -+  "BFD_RELOC_FR30_8_IN_8",
43.42765 -+  "BFD_RELOC_FR30_9_IN_8",
43.42766 -+  "BFD_RELOC_FR30_10_IN_8",
43.42767 -+  "BFD_RELOC_FR30_9_PCREL",
43.42768 -+  "BFD_RELOC_FR30_12_PCREL",
43.42769 -+  "BFD_RELOC_MCORE_PCREL_IMM8BY4",
43.42770 -+  "BFD_RELOC_MCORE_PCREL_IMM11BY2",
43.42771 -+  "BFD_RELOC_MCORE_PCREL_IMM4BY2",
43.42772 -+  "BFD_RELOC_MCORE_PCREL_32",
43.42773 -+  "BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2",
43.42774 -+  "BFD_RELOC_MCORE_RVA",
43.42775 -+  "BFD_RELOC_MEP_8",
43.42776 -+  "BFD_RELOC_MEP_16",
43.42777 -+  "BFD_RELOC_MEP_32",
43.42778 -+  "BFD_RELOC_MEP_PCREL8A2",
43.42779 -+  "BFD_RELOC_MEP_PCREL12A2",
43.42780 -+  "BFD_RELOC_MEP_PCREL17A2",
43.42781 -+  "BFD_RELOC_MEP_PCREL24A2",
43.42782 -+  "BFD_RELOC_MEP_PCABS24A2",
43.42783 -+  "BFD_RELOC_MEP_LOW16",
43.42784 -+  "BFD_RELOC_MEP_HI16U",
43.42785 -+  "BFD_RELOC_MEP_HI16S",
43.42786 -+  "BFD_RELOC_MEP_GPREL",
43.42787 -+  "BFD_RELOC_MEP_TPREL",
43.42788 -+  "BFD_RELOC_MEP_TPREL7",
43.42789 -+  "BFD_RELOC_MEP_TPREL7A2",
43.42790 -+  "BFD_RELOC_MEP_TPREL7A4",
43.42791 -+  "BFD_RELOC_MEP_UIMM24",
43.42792 -+  "BFD_RELOC_MEP_ADDR24A4",
43.42793 -+  "BFD_RELOC_MEP_GNU_VTINHERIT",
43.42794 -+  "BFD_RELOC_MEP_GNU_VTENTRY",
43.42795 -+
43.42796 -+  "BFD_RELOC_MMIX_GETA",
43.42797 -+  "BFD_RELOC_MMIX_GETA_1",
43.42798 -+  "BFD_RELOC_MMIX_GETA_2",
43.42799 -+  "BFD_RELOC_MMIX_GETA_3",
43.42800 -+  "BFD_RELOC_MMIX_CBRANCH",
43.42801 -+  "BFD_RELOC_MMIX_CBRANCH_J",
43.42802 -+  "BFD_RELOC_MMIX_CBRANCH_1",
43.42803 -+  "BFD_RELOC_MMIX_CBRANCH_2",
43.42804 -+  "BFD_RELOC_MMIX_CBRANCH_3",
43.42805 -+  "BFD_RELOC_MMIX_PUSHJ",
43.42806 -+  "BFD_RELOC_MMIX_PUSHJ_1",
43.42807 -+  "BFD_RELOC_MMIX_PUSHJ_2",
43.42808 -+  "BFD_RELOC_MMIX_PUSHJ_3",
43.42809 -+  "BFD_RELOC_MMIX_PUSHJ_STUBBABLE",
43.42810 -+  "BFD_RELOC_MMIX_JMP",
43.42811 -+  "BFD_RELOC_MMIX_JMP_1",
43.42812 -+  "BFD_RELOC_MMIX_JMP_2",
43.42813 -+  "BFD_RELOC_MMIX_JMP_3",
43.42814 -+  "BFD_RELOC_MMIX_ADDR19",
43.42815 -+  "BFD_RELOC_MMIX_ADDR27",
43.42816 -+  "BFD_RELOC_MMIX_REG_OR_BYTE",
43.42817 -+  "BFD_RELOC_MMIX_REG",
43.42818 -+  "BFD_RELOC_MMIX_BASE_PLUS_OFFSET",
43.42819 -+  "BFD_RELOC_MMIX_LOCAL",
43.42820 -+  "BFD_RELOC_AVR_7_PCREL",
43.42821 -+  "BFD_RELOC_AVR_13_PCREL",
43.42822 -+  "BFD_RELOC_AVR_16_PM",
43.42823 -+  "BFD_RELOC_AVR_LO8_LDI",
43.42824 -+  "BFD_RELOC_AVR_HI8_LDI",
43.42825 -+  "BFD_RELOC_AVR_HH8_LDI",
43.42826 -+  "BFD_RELOC_AVR_MS8_LDI",
43.42827 -+  "BFD_RELOC_AVR_LO8_LDI_NEG",
43.42828 -+  "BFD_RELOC_AVR_HI8_LDI_NEG",
43.42829 -+  "BFD_RELOC_AVR_HH8_LDI_NEG",
43.42830 -+  "BFD_RELOC_AVR_MS8_LDI_NEG",
43.42831 -+  "BFD_RELOC_AVR_LO8_LDI_PM",
43.42832 -+  "BFD_RELOC_AVR_LO8_LDI_GS",
43.42833 -+  "BFD_RELOC_AVR_HI8_LDI_PM",
43.42834 -+  "BFD_RELOC_AVR_HI8_LDI_GS",
43.42835 -+  "BFD_RELOC_AVR_HH8_LDI_PM",
43.42836 -+  "BFD_RELOC_AVR_LO8_LDI_PM_NEG",
43.42837 -+  "BFD_RELOC_AVR_HI8_LDI_PM_NEG",
43.42838 -+  "BFD_RELOC_AVR_HH8_LDI_PM_NEG",
43.42839 -+  "BFD_RELOC_AVR_CALL",
43.42840 -+  "BFD_RELOC_AVR_LDI",
43.42841 -+  "BFD_RELOC_AVR_6",
43.42842 -+  "BFD_RELOC_AVR_6_ADIW",
43.42843 -+  "BFD_RELOC_AVR32_DIFF32",
43.42844 -+  "BFD_RELOC_AVR32_DIFF16",
43.42845 -+  "BFD_RELOC_AVR32_DIFF8",
43.42846 -+  "BFD_RELOC_AVR32_GOT32",
43.42847 -+  "BFD_RELOC_AVR32_GOT16",
43.42848 -+  "BFD_RELOC_AVR32_GOT8",
43.42849 -+  "BFD_RELOC_AVR32_21S",
43.42850 -+  "BFD_RELOC_AVR32_16U",
43.42851 -+  "BFD_RELOC_AVR32_16S",
43.42852 -+  "BFD_RELOC_AVR32_SUB5",
43.42853 -+  "BFD_RELOC_AVR32_8S_EXT",
43.42854 -+  "BFD_RELOC_AVR32_8S",
43.42855 -+  "BFD_RELOC_AVR32_15S",
43.42856 -+  "BFD_RELOC_AVR32_22H_PCREL",
43.42857 -+  "BFD_RELOC_AVR32_18W_PCREL",
43.42858 -+  "BFD_RELOC_AVR32_16B_PCREL",
43.42859 -+  "BFD_RELOC_AVR32_16N_PCREL",
43.42860 -+  "BFD_RELOC_AVR32_14UW_PCREL",
43.42861 -+  "BFD_RELOC_AVR32_11H_PCREL",
43.42862 -+  "BFD_RELOC_AVR32_10UW_PCREL",
43.42863 -+  "BFD_RELOC_AVR32_9H_PCREL",
43.42864 -+  "BFD_RELOC_AVR32_9UW_PCREL",
43.42865 -+  "BFD_RELOC_AVR32_GOTPC",
43.42866 -+  "BFD_RELOC_AVR32_GOTCALL",
43.42867 -+  "BFD_RELOC_AVR32_LDA_GOT",
43.42868 -+  "BFD_RELOC_AVR32_GOT21S",
43.42869 -+  "BFD_RELOC_AVR32_GOT18SW",
43.42870 -+  "BFD_RELOC_AVR32_GOT16S",
43.42871 -+  "BFD_RELOC_AVR32_32_CPENT",
43.42872 -+  "BFD_RELOC_AVR32_CPCALL",
43.42873 -+  "BFD_RELOC_AVR32_16_CP",
43.42874 -+  "BFD_RELOC_AVR32_9W_CP",
43.42875 -+  "BFD_RELOC_AVR32_ALIGN",
43.42876 -+  "BFD_RELOC_AVR32_14UW",
43.42877 -+  "BFD_RELOC_AVR32_10UW",
43.42878 -+  "BFD_RELOC_AVR32_10SW",
43.42879 -+  "BFD_RELOC_AVR32_STHH_W",
43.42880 -+  "BFD_RELOC_AVR32_7UW",
43.42881 -+  "BFD_RELOC_AVR32_6S",
43.42882 -+  "BFD_RELOC_AVR32_6UW",
43.42883 -+  "BFD_RELOC_AVR32_4UH",
43.42884 -+  "BFD_RELOC_AVR32_3U",
43.42885 -+  "BFD_RELOC_390_12",
43.42886 -+  "BFD_RELOC_390_GOT12",
43.42887 -+  "BFD_RELOC_390_PLT32",
43.42888 -+  "BFD_RELOC_390_COPY",
43.42889 -+  "BFD_RELOC_390_GLOB_DAT",
43.42890 -+  "BFD_RELOC_390_JMP_SLOT",
43.42891 -+  "BFD_RELOC_390_RELATIVE",
43.42892 -+  "BFD_RELOC_390_GOTPC",
43.42893 -+  "BFD_RELOC_390_GOT16",
43.42894 -+  "BFD_RELOC_390_PC16DBL",
43.42895 -+  "BFD_RELOC_390_PLT16DBL",
43.42896 -+  "BFD_RELOC_390_PC32DBL",
43.42897 -+  "BFD_RELOC_390_PLT32DBL",
43.42898 -+  "BFD_RELOC_390_GOTPCDBL",
43.42899 -+  "BFD_RELOC_390_GOT64",
43.42900 -+  "BFD_RELOC_390_PLT64",
43.42901 -+  "BFD_RELOC_390_GOTENT",
43.42902 -+  "BFD_RELOC_390_GOTOFF64",
43.42903 -+  "BFD_RELOC_390_GOTPLT12",
43.42904 -+  "BFD_RELOC_390_GOTPLT16",
43.42905 -+  "BFD_RELOC_390_GOTPLT32",
43.42906 -+  "BFD_RELOC_390_GOTPLT64",
43.42907 -+  "BFD_RELOC_390_GOTPLTENT",
43.42908 -+  "BFD_RELOC_390_PLTOFF16",
43.42909 -+  "BFD_RELOC_390_PLTOFF32",
43.42910 -+  "BFD_RELOC_390_PLTOFF64",
43.42911 -+  "BFD_RELOC_390_TLS_LOAD",
43.42912 -+  "BFD_RELOC_390_TLS_GDCALL",
43.42913 -+  "BFD_RELOC_390_TLS_LDCALL",
43.42914 -+  "BFD_RELOC_390_TLS_GD32",
43.42915 -+  "BFD_RELOC_390_TLS_GD64",
43.42916 -+  "BFD_RELOC_390_TLS_GOTIE12",
43.42917 -+  "BFD_RELOC_390_TLS_GOTIE32",
43.42918 -+  "BFD_RELOC_390_TLS_GOTIE64",
43.42919 -+  "BFD_RELOC_390_TLS_LDM32",
43.42920 -+  "BFD_RELOC_390_TLS_LDM64",
43.42921 -+  "BFD_RELOC_390_TLS_IE32",
43.42922 -+  "BFD_RELOC_390_TLS_IE64",
43.42923 -+  "BFD_RELOC_390_TLS_IEENT",
43.42924 -+  "BFD_RELOC_390_TLS_LE32",
43.42925 -+  "BFD_RELOC_390_TLS_LE64",
43.42926 -+  "BFD_RELOC_390_TLS_LDO32",
43.42927 -+  "BFD_RELOC_390_TLS_LDO64",
43.42928 -+  "BFD_RELOC_390_TLS_DTPMOD",
43.42929 -+  "BFD_RELOC_390_TLS_DTPOFF",
43.42930 -+  "BFD_RELOC_390_TLS_TPOFF",
43.42931 -+  "BFD_RELOC_390_20",
43.42932 -+  "BFD_RELOC_390_GOT20",
43.42933 -+  "BFD_RELOC_390_GOTPLT20",
43.42934 -+  "BFD_RELOC_390_TLS_GOTIE20",
43.42935 -+  "BFD_RELOC_SCORE_DUMMY1",
43.42936 -+  "BFD_RELOC_SCORE_GPREL15",
43.42937 -+  "BFD_RELOC_SCORE_DUMMY2",
43.42938 -+  "BFD_RELOC_SCORE_JMP",
43.42939 -+  "BFD_RELOC_SCORE_BRANCH",
43.42940 -+  "BFD_RELOC_SCORE16_JMP",
43.42941 -+  "BFD_RELOC_SCORE16_BRANCH",
43.42942 -+  "BFD_RELOC_SCORE_GOT15",
43.42943 -+  "BFD_RELOC_SCORE_GOT_LO16",
43.42944 -+  "BFD_RELOC_SCORE_CALL15",
43.42945 -+  "BFD_RELOC_SCORE_DUMMY_HI16",
43.42946 -+  "BFD_RELOC_IP2K_FR9",
43.42947 -+  "BFD_RELOC_IP2K_BANK",
43.42948 -+  "BFD_RELOC_IP2K_ADDR16CJP",
43.42949 -+  "BFD_RELOC_IP2K_PAGE3",
43.42950 -+  "BFD_RELOC_IP2K_LO8DATA",
43.42951 -+  "BFD_RELOC_IP2K_HI8DATA",
43.42952 -+  "BFD_RELOC_IP2K_EX8DATA",
43.42953 -+  "BFD_RELOC_IP2K_LO8INSN",
43.42954 -+  "BFD_RELOC_IP2K_HI8INSN",
43.42955 -+  "BFD_RELOC_IP2K_PC_SKIP",
43.42956 -+  "BFD_RELOC_IP2K_TEXT",
43.42957 -+  "BFD_RELOC_IP2K_FR_OFFSET",
43.42958 -+  "BFD_RELOC_VPE4KMATH_DATA",
43.42959 -+  "BFD_RELOC_VPE4KMATH_INSN",
43.42960 -+  "BFD_RELOC_VTABLE_INHERIT",
43.42961 -+  "BFD_RELOC_VTABLE_ENTRY",
43.42962 -+  "BFD_RELOC_IA64_IMM14",
43.42963 -+  "BFD_RELOC_IA64_IMM22",
43.42964 -+  "BFD_RELOC_IA64_IMM64",
43.42965 -+  "BFD_RELOC_IA64_DIR32MSB",
43.42966 -+  "BFD_RELOC_IA64_DIR32LSB",
43.42967 -+  "BFD_RELOC_IA64_DIR64MSB",
43.42968 -+  "BFD_RELOC_IA64_DIR64LSB",
43.42969 -+  "BFD_RELOC_IA64_GPREL22",
43.42970 -+  "BFD_RELOC_IA64_GPREL64I",
43.42971 -+  "BFD_RELOC_IA64_GPREL32MSB",
43.42972 -+  "BFD_RELOC_IA64_GPREL32LSB",
43.42973 -+  "BFD_RELOC_IA64_GPREL64MSB",
43.42974 -+  "BFD_RELOC_IA64_GPREL64LSB",
43.42975 -+  "BFD_RELOC_IA64_LTOFF22",
43.42976 -+  "BFD_RELOC_IA64_LTOFF64I",
43.42977 -+  "BFD_RELOC_IA64_PLTOFF22",
43.42978 -+  "BFD_RELOC_IA64_PLTOFF64I",
43.42979 -+  "BFD_RELOC_IA64_PLTOFF64MSB",
43.42980 -+  "BFD_RELOC_IA64_PLTOFF64LSB",
43.42981 -+  "BFD_RELOC_IA64_FPTR64I",
43.42982 -+  "BFD_RELOC_IA64_FPTR32MSB",
43.42983 -+  "BFD_RELOC_IA64_FPTR32LSB",
43.42984 -+  "BFD_RELOC_IA64_FPTR64MSB",
43.42985 -+  "BFD_RELOC_IA64_FPTR64LSB",
43.42986 -+  "BFD_RELOC_IA64_PCREL21B",
43.42987 -+  "BFD_RELOC_IA64_PCREL21BI",
43.42988 -+  "BFD_RELOC_IA64_PCREL21M",
43.42989 -+  "BFD_RELOC_IA64_PCREL21F",
43.42990 -+  "BFD_RELOC_IA64_PCREL22",
43.42991 -+  "BFD_RELOC_IA64_PCREL60B",
43.42992 -+  "BFD_RELOC_IA64_PCREL64I",
43.42993 -+  "BFD_RELOC_IA64_PCREL32MSB",
43.42994 -+  "BFD_RELOC_IA64_PCREL32LSB",
43.42995 -+  "BFD_RELOC_IA64_PCREL64MSB",
43.42996 -+  "BFD_RELOC_IA64_PCREL64LSB",
43.42997 -+  "BFD_RELOC_IA64_LTOFF_FPTR22",
43.42998 -+  "BFD_RELOC_IA64_LTOFF_FPTR64I",
43.42999 -+  "BFD_RELOC_IA64_LTOFF_FPTR32MSB",
43.43000 -+  "BFD_RELOC_IA64_LTOFF_FPTR32LSB",
43.43001 -+  "BFD_RELOC_IA64_LTOFF_FPTR64MSB",
43.43002 -+  "BFD_RELOC_IA64_LTOFF_FPTR64LSB",
43.43003 -+  "BFD_RELOC_IA64_SEGREL32MSB",
43.43004 -+  "BFD_RELOC_IA64_SEGREL32LSB",
43.43005 -+  "BFD_RELOC_IA64_SEGREL64MSB",
43.43006 -+  "BFD_RELOC_IA64_SEGREL64LSB",
43.43007 -+  "BFD_RELOC_IA64_SECREL32MSB",
43.43008 -+  "BFD_RELOC_IA64_SECREL32LSB",
43.43009 -+  "BFD_RELOC_IA64_SECREL64MSB",
43.43010 -+  "BFD_RELOC_IA64_SECREL64LSB",
43.43011 -+  "BFD_RELOC_IA64_REL32MSB",
43.43012 -+  "BFD_RELOC_IA64_REL32LSB",
43.43013 -+  "BFD_RELOC_IA64_REL64MSB",
43.43014 -+  "BFD_RELOC_IA64_REL64LSB",
43.43015 -+  "BFD_RELOC_IA64_LTV32MSB",
43.43016 -+  "BFD_RELOC_IA64_LTV32LSB",
43.43017 -+  "BFD_RELOC_IA64_LTV64MSB",
43.43018 -+  "BFD_RELOC_IA64_LTV64LSB",
43.43019 -+  "BFD_RELOC_IA64_IPLTMSB",
43.43020 -+  "BFD_RELOC_IA64_IPLTLSB",
43.43021 -+  "BFD_RELOC_IA64_COPY",
43.43022 -+  "BFD_RELOC_IA64_LTOFF22X",
43.43023 -+  "BFD_RELOC_IA64_LDXMOV",
43.43024 -+  "BFD_RELOC_IA64_TPREL14",
43.43025 -+  "BFD_RELOC_IA64_TPREL22",
43.43026 -+  "BFD_RELOC_IA64_TPREL64I",
43.43027 -+  "BFD_RELOC_IA64_TPREL64MSB",
43.43028 -+  "BFD_RELOC_IA64_TPREL64LSB",
43.43029 -+  "BFD_RELOC_IA64_LTOFF_TPREL22",
43.43030 -+  "BFD_RELOC_IA64_DTPMOD64MSB",
43.43031 -+  "BFD_RELOC_IA64_DTPMOD64LSB",
43.43032 -+  "BFD_RELOC_IA64_LTOFF_DTPMOD22",
43.43033 -+  "BFD_RELOC_IA64_DTPREL14",
43.43034 -+  "BFD_RELOC_IA64_DTPREL22",
43.43035 -+  "BFD_RELOC_IA64_DTPREL64I",
43.43036 -+  "BFD_RELOC_IA64_DTPREL32MSB",
43.43037 -+  "BFD_RELOC_IA64_DTPREL32LSB",
43.43038 -+  "BFD_RELOC_IA64_DTPREL64MSB",
43.43039 -+  "BFD_RELOC_IA64_DTPREL64LSB",
43.43040 -+  "BFD_RELOC_IA64_LTOFF_DTPREL22",
43.43041 -+  "BFD_RELOC_M68HC11_HI8",
43.43042 -+  "BFD_RELOC_M68HC11_LO8",
43.43043 -+  "BFD_RELOC_M68HC11_3B",
43.43044 -+  "BFD_RELOC_M68HC11_RL_JUMP",
43.43045 -+  "BFD_RELOC_M68HC11_RL_GROUP",
43.43046 -+  "BFD_RELOC_M68HC11_LO16",
43.43047 -+  "BFD_RELOC_M68HC11_PAGE",
43.43048 -+  "BFD_RELOC_M68HC11_24",
43.43049 -+  "BFD_RELOC_M68HC12_5B",
43.43050 -+  "BFD_RELOC_16C_NUM08",
43.43051 -+  "BFD_RELOC_16C_NUM08_C",
43.43052 -+  "BFD_RELOC_16C_NUM16",
43.43053 -+  "BFD_RELOC_16C_NUM16_C",
43.43054 -+  "BFD_RELOC_16C_NUM32",
43.43055 -+  "BFD_RELOC_16C_NUM32_C",
43.43056 -+  "BFD_RELOC_16C_DISP04",
43.43057 -+  "BFD_RELOC_16C_DISP04_C",
43.43058 -+  "BFD_RELOC_16C_DISP08",
43.43059 -+  "BFD_RELOC_16C_DISP08_C",
43.43060 -+  "BFD_RELOC_16C_DISP16",
43.43061 -+  "BFD_RELOC_16C_DISP16_C",
43.43062 -+  "BFD_RELOC_16C_DISP24",
43.43063 -+  "BFD_RELOC_16C_DISP24_C",
43.43064 -+  "BFD_RELOC_16C_DISP24a",
43.43065 -+  "BFD_RELOC_16C_DISP24a_C",
43.43066 -+  "BFD_RELOC_16C_REG04",
43.43067 -+  "BFD_RELOC_16C_REG04_C",
43.43068 -+  "BFD_RELOC_16C_REG04a",
43.43069 -+  "BFD_RELOC_16C_REG04a_C",
43.43070 -+  "BFD_RELOC_16C_REG14",
43.43071 -+  "BFD_RELOC_16C_REG14_C",
43.43072 -+  "BFD_RELOC_16C_REG16",
43.43073 -+  "BFD_RELOC_16C_REG16_C",
43.43074 -+  "BFD_RELOC_16C_REG20",
43.43075 -+  "BFD_RELOC_16C_REG20_C",
43.43076 -+  "BFD_RELOC_16C_ABS20",
43.43077 -+  "BFD_RELOC_16C_ABS20_C",
43.43078 -+  "BFD_RELOC_16C_ABS24",
43.43079 -+  "BFD_RELOC_16C_ABS24_C",
43.43080 -+  "BFD_RELOC_16C_IMM04",
43.43081 -+  "BFD_RELOC_16C_IMM04_C",
43.43082 -+  "BFD_RELOC_16C_IMM16",
43.43083 -+  "BFD_RELOC_16C_IMM16_C",
43.43084 -+  "BFD_RELOC_16C_IMM20",
43.43085 -+  "BFD_RELOC_16C_IMM20_C",
43.43086 -+  "BFD_RELOC_16C_IMM24",
43.43087 -+  "BFD_RELOC_16C_IMM24_C",
43.43088 -+  "BFD_RELOC_16C_IMM32",
43.43089 -+  "BFD_RELOC_16C_IMM32_C",
43.43090 -+  "BFD_RELOC_CR16_NUM8",
43.43091 -+  "BFD_RELOC_CR16_NUM16",
43.43092 -+  "BFD_RELOC_CR16_NUM32",
43.43093 -+  "BFD_RELOC_CR16_NUM32a",
43.43094 -+  "BFD_RELOC_CR16_REGREL0",
43.43095 -+  "BFD_RELOC_CR16_REGREL4",
43.43096 -+  "BFD_RELOC_CR16_REGREL4a",
43.43097 -+  "BFD_RELOC_CR16_REGREL14",
43.43098 -+  "BFD_RELOC_CR16_REGREL14a",
43.43099 -+  "BFD_RELOC_CR16_REGREL16",
43.43100 -+  "BFD_RELOC_CR16_REGREL20",
43.43101 -+  "BFD_RELOC_CR16_REGREL20a",
43.43102 -+  "BFD_RELOC_CR16_ABS20",
43.43103 -+  "BFD_RELOC_CR16_ABS24",
43.43104 -+  "BFD_RELOC_CR16_IMM4",
43.43105 -+  "BFD_RELOC_CR16_IMM8",
43.43106 -+  "BFD_RELOC_CR16_IMM16",
43.43107 -+  "BFD_RELOC_CR16_IMM20",
43.43108 -+  "BFD_RELOC_CR16_IMM24",
43.43109 -+  "BFD_RELOC_CR16_IMM32",
43.43110 -+  "BFD_RELOC_CR16_IMM32a",
43.43111 -+  "BFD_RELOC_CR16_DISP4",
43.43112 -+  "BFD_RELOC_CR16_DISP8",
43.43113 -+  "BFD_RELOC_CR16_DISP16",
43.43114 -+  "BFD_RELOC_CR16_DISP20",
43.43115 -+  "BFD_RELOC_CR16_DISP24",
43.43116 -+  "BFD_RELOC_CR16_DISP24a",
43.43117 -+  "BFD_RELOC_CRX_REL4",
43.43118 -+  "BFD_RELOC_CRX_REL8",
43.43119 -+  "BFD_RELOC_CRX_REL8_CMP",
43.43120 -+  "BFD_RELOC_CRX_REL16",
43.43121 -+  "BFD_RELOC_CRX_REL24",
43.43122 -+  "BFD_RELOC_CRX_REL32",
43.43123 -+  "BFD_RELOC_CRX_REGREL12",
43.43124 -+  "BFD_RELOC_CRX_REGREL22",
43.43125 -+  "BFD_RELOC_CRX_REGREL28",
43.43126 -+  "BFD_RELOC_CRX_REGREL32",
43.43127 -+  "BFD_RELOC_CRX_ABS16",
43.43128 -+  "BFD_RELOC_CRX_ABS32",
43.43129 -+  "BFD_RELOC_CRX_NUM8",
43.43130 -+  "BFD_RELOC_CRX_NUM16",
43.43131 -+  "BFD_RELOC_CRX_NUM32",
43.43132 -+  "BFD_RELOC_CRX_IMM16",
43.43133 -+  "BFD_RELOC_CRX_IMM32",
43.43134 -+  "BFD_RELOC_CRX_SWITCH8",
43.43135 -+  "BFD_RELOC_CRX_SWITCH16",
43.43136 -+  "BFD_RELOC_CRX_SWITCH32",
43.43137 -+  "BFD_RELOC_CRIS_BDISP8",
43.43138 -+  "BFD_RELOC_CRIS_UNSIGNED_5",
43.43139 -+  "BFD_RELOC_CRIS_SIGNED_6",
43.43140 -+  "BFD_RELOC_CRIS_UNSIGNED_6",
43.43141 -+  "BFD_RELOC_CRIS_SIGNED_8",
43.43142 -+  "BFD_RELOC_CRIS_UNSIGNED_8",
43.43143 -+  "BFD_RELOC_CRIS_SIGNED_16",
43.43144 -+  "BFD_RELOC_CRIS_UNSIGNED_16",
43.43145 -+  "BFD_RELOC_CRIS_LAPCQ_OFFSET",
43.43146 -+  "BFD_RELOC_CRIS_UNSIGNED_4",
43.43147 -+  "BFD_RELOC_CRIS_COPY",
43.43148 -+  "BFD_RELOC_CRIS_GLOB_DAT",
43.43149 -+  "BFD_RELOC_CRIS_JUMP_SLOT",
43.43150 -+  "BFD_RELOC_CRIS_RELATIVE",
43.43151 -+  "BFD_RELOC_CRIS_32_GOT",
43.43152 -+  "BFD_RELOC_CRIS_16_GOT",
43.43153 -+  "BFD_RELOC_CRIS_32_GOTPLT",
43.43154 -+  "BFD_RELOC_CRIS_16_GOTPLT",
43.43155 -+  "BFD_RELOC_CRIS_32_GOTREL",
43.43156 -+  "BFD_RELOC_CRIS_32_PLT_GOTREL",
43.43157 -+  "BFD_RELOC_CRIS_32_PLT_PCREL",
43.43158 -+  "BFD_RELOC_860_COPY",
43.43159 -+  "BFD_RELOC_860_GLOB_DAT",
43.43160 -+  "BFD_RELOC_860_JUMP_SLOT",
43.43161 -+  "BFD_RELOC_860_RELATIVE",
43.43162 -+  "BFD_RELOC_860_PC26",
43.43163 -+  "BFD_RELOC_860_PLT26",
43.43164 -+  "BFD_RELOC_860_PC16",
43.43165 -+  "BFD_RELOC_860_LOW0",
43.43166 -+  "BFD_RELOC_860_SPLIT0",
43.43167 -+  "BFD_RELOC_860_LOW1",
43.43168 -+  "BFD_RELOC_860_SPLIT1",
43.43169 -+  "BFD_RELOC_860_LOW2",
43.43170 -+  "BFD_RELOC_860_SPLIT2",
43.43171 -+  "BFD_RELOC_860_LOW3",
43.43172 -+  "BFD_RELOC_860_LOGOT0",
43.43173 -+  "BFD_RELOC_860_SPGOT0",
43.43174 -+  "BFD_RELOC_860_LOGOT1",
43.43175 -+  "BFD_RELOC_860_SPGOT1",
43.43176 -+  "BFD_RELOC_860_LOGOTOFF0",
43.43177 -+  "BFD_RELOC_860_SPGOTOFF0",
43.43178 -+  "BFD_RELOC_860_LOGOTOFF1",
43.43179 -+  "BFD_RELOC_860_SPGOTOFF1",
43.43180 -+  "BFD_RELOC_860_LOGOTOFF2",
43.43181 -+  "BFD_RELOC_860_LOGOTOFF3",
43.43182 -+  "BFD_RELOC_860_LOPC",
43.43183 -+  "BFD_RELOC_860_HIGHADJ",
43.43184 -+  "BFD_RELOC_860_HAGOT",
43.43185 -+  "BFD_RELOC_860_HAGOTOFF",
43.43186 -+  "BFD_RELOC_860_HAPC",
43.43187 -+  "BFD_RELOC_860_HIGH",
43.43188 -+  "BFD_RELOC_860_HIGOT",
43.43189 -+  "BFD_RELOC_860_HIGOTOFF",
43.43190 -+  "BFD_RELOC_OPENRISC_ABS_26",
43.43191 -+  "BFD_RELOC_OPENRISC_REL_26",
43.43192 -+  "BFD_RELOC_H8_DIR16A8",
43.43193 -+  "BFD_RELOC_H8_DIR16R8",
43.43194 -+  "BFD_RELOC_H8_DIR24A8",
43.43195 -+  "BFD_RELOC_H8_DIR24R8",
43.43196 -+  "BFD_RELOC_H8_DIR32A16",
43.43197 -+  "BFD_RELOC_XSTORMY16_REL_12",
43.43198 -+  "BFD_RELOC_XSTORMY16_12",
43.43199 -+  "BFD_RELOC_XSTORMY16_24",
43.43200 -+  "BFD_RELOC_XSTORMY16_FPTR16",
43.43201 -+  "BFD_RELOC_RELC",
43.43202 -+
43.43203 -+  "BFD_RELOC_XC16X_PAG",
43.43204 -+  "BFD_RELOC_XC16X_POF",
43.43205 -+  "BFD_RELOC_XC16X_SEG",
43.43206 -+  "BFD_RELOC_XC16X_SOF",
43.43207 -+  "BFD_RELOC_VAX_GLOB_DAT",
43.43208 -+  "BFD_RELOC_VAX_JMP_SLOT",
43.43209 -+  "BFD_RELOC_VAX_RELATIVE",
43.43210 -+  "BFD_RELOC_MT_PC16",
43.43211 -+  "BFD_RELOC_MT_HI16",
43.43212 -+  "BFD_RELOC_MT_LO16",
43.43213 -+  "BFD_RELOC_MT_GNU_VTINHERIT",
43.43214 -+  "BFD_RELOC_MT_GNU_VTENTRY",
43.43215 -+  "BFD_RELOC_MT_PCINSN8",
43.43216 -+  "BFD_RELOC_MSP430_10_PCREL",
43.43217 -+  "BFD_RELOC_MSP430_16_PCREL",
43.43218 -+  "BFD_RELOC_MSP430_16",
43.43219 -+  "BFD_RELOC_MSP430_16_PCREL_BYTE",
43.43220 -+  "BFD_RELOC_MSP430_16_BYTE",
43.43221 -+  "BFD_RELOC_MSP430_2X_PCREL",
43.43222 -+  "BFD_RELOC_MSP430_RL_PCREL",
43.43223 -+  "BFD_RELOC_IQ2000_OFFSET_16",
43.43224 -+  "BFD_RELOC_IQ2000_OFFSET_21",
43.43225 -+  "BFD_RELOC_IQ2000_UHI16",
43.43226 -+  "BFD_RELOC_XTENSA_RTLD",
43.43227 -+  "BFD_RELOC_XTENSA_GLOB_DAT",
43.43228 -+  "BFD_RELOC_XTENSA_JMP_SLOT",
43.43229 -+  "BFD_RELOC_XTENSA_RELATIVE",
43.43230 -+  "BFD_RELOC_XTENSA_PLT",
43.43231 -+  "BFD_RELOC_XTENSA_DIFF8",
43.43232 -+  "BFD_RELOC_XTENSA_DIFF16",
43.43233 -+  "BFD_RELOC_XTENSA_DIFF32",
43.43234 -+  "BFD_RELOC_XTENSA_SLOT0_OP",
43.43235 -+  "BFD_RELOC_XTENSA_SLOT1_OP",
43.43236 -+  "BFD_RELOC_XTENSA_SLOT2_OP",
43.43237 -+  "BFD_RELOC_XTENSA_SLOT3_OP",
43.43238 -+  "BFD_RELOC_XTENSA_SLOT4_OP",
43.43239 -+  "BFD_RELOC_XTENSA_SLOT5_OP",
43.43240 -+  "BFD_RELOC_XTENSA_SLOT6_OP",
43.43241 -+  "BFD_RELOC_XTENSA_SLOT7_OP",
43.43242 -+  "BFD_RELOC_XTENSA_SLOT8_OP",
43.43243 -+  "BFD_RELOC_XTENSA_SLOT9_OP",
43.43244 -+  "BFD_RELOC_XTENSA_SLOT10_OP",
43.43245 -+  "BFD_RELOC_XTENSA_SLOT11_OP",
43.43246 -+  "BFD_RELOC_XTENSA_SLOT12_OP",
43.43247 -+  "BFD_RELOC_XTENSA_SLOT13_OP",
43.43248 -+  "BFD_RELOC_XTENSA_SLOT14_OP",
43.43249 -+  "BFD_RELOC_XTENSA_SLOT0_ALT",
43.43250 -+  "BFD_RELOC_XTENSA_SLOT1_ALT",
43.43251 -+  "BFD_RELOC_XTENSA_SLOT2_ALT",
43.43252 -+  "BFD_RELOC_XTENSA_SLOT3_ALT",
43.43253 -+  "BFD_RELOC_XTENSA_SLOT4_ALT",
43.43254 -+  "BFD_RELOC_XTENSA_SLOT5_ALT",
43.43255 -+  "BFD_RELOC_XTENSA_SLOT6_ALT",
43.43256 -+  "BFD_RELOC_XTENSA_SLOT7_ALT",
43.43257 -+  "BFD_RELOC_XTENSA_SLOT8_ALT",
43.43258 -+  "BFD_RELOC_XTENSA_SLOT9_ALT",
43.43259 -+  "BFD_RELOC_XTENSA_SLOT10_ALT",
43.43260 -+  "BFD_RELOC_XTENSA_SLOT11_ALT",
43.43261 -+  "BFD_RELOC_XTENSA_SLOT12_ALT",
43.43262 -+  "BFD_RELOC_XTENSA_SLOT13_ALT",
43.43263 -+  "BFD_RELOC_XTENSA_SLOT14_ALT",
43.43264 -+  "BFD_RELOC_XTENSA_OP0",
43.43265 -+  "BFD_RELOC_XTENSA_OP1",
43.43266 -+  "BFD_RELOC_XTENSA_OP2",
43.43267 -+  "BFD_RELOC_XTENSA_ASM_EXPAND",
43.43268 -+  "BFD_RELOC_XTENSA_ASM_SIMPLIFY",
43.43269 -+  "BFD_RELOC_Z80_DISP8",
43.43270 -+  "BFD_RELOC_Z8K_DISP7",
43.43271 -+  "BFD_RELOC_Z8K_CALLR",
43.43272 -+  "BFD_RELOC_Z8K_IMM4L",
43.43273 -+ "@@overflow: BFD_RELOC_UNUSED@@",
43.43274 -+};
43.43275 -+#endif
43.43276 -+
43.43277 -+reloc_howto_type *bfd_default_reloc_type_lookup
43.43278 -+   (bfd *abfd, bfd_reloc_code_real_type  code);
43.43279 -+
43.43280 -+bfd_boolean bfd_generic_relax_section
43.43281 -+   (bfd *abfd,
43.43282 -+    asection *section,
43.43283 -+    struct bfd_link_info *,
43.43284 -+    bfd_boolean *);
43.43285 -+
43.43286 -+bfd_boolean bfd_generic_gc_sections
43.43287 -+   (bfd *, struct bfd_link_info *);
43.43288 -+
43.43289 -+bfd_boolean bfd_generic_merge_sections
43.43290 -+   (bfd *, struct bfd_link_info *);
43.43291 -+
43.43292 -+bfd_byte *bfd_generic_get_relocated_section_contents
43.43293 -+   (bfd *abfd,
43.43294 -+    struct bfd_link_info *link_info,
43.43295 -+    struct bfd_link_order *link_order,
43.43296 -+    bfd_byte *data,
43.43297 -+    bfd_boolean relocatable,
43.43298 -+    asymbol **symbols);
43.43299 -+
43.43300 -+/* Extracted from archures.c.  */
43.43301 -+extern const bfd_arch_info_type bfd_default_arch_struct;
43.43302 -+bfd_boolean bfd_default_set_arch_mach
43.43303 -+   (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
43.43304 -+
43.43305 -+const bfd_arch_info_type *bfd_default_compatible
43.43306 -+   (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
43.43307 -+
43.43308 -+bfd_boolean bfd_default_scan
43.43309 -+   (const struct bfd_arch_info *info, const char *string);
43.43310 -+
43.43311 -+/* Extracted from elf.c.  */
43.43312 -+struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
43.43313 -+
43.43314 ---- /dev/null
43.43315 -+++ b/bfd/doc/libcoff.h
43.43316 -@@ -0,0 +1,936 @@
43.43317 -+/* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically 
43.43318 -+   generated from "libcoff-in.h" and "coffcode.h".
43.43319 -+   Run "make headers" in your build bfd/ to regenerate.  */
43.43320 -+
43.43321 -+/* BFD COFF object file private structure.
43.43322 -+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
43.43323 -+   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
43.43324 -+   Free Software Foundation, Inc.
43.43325 -+   Written by Cygnus Support.
43.43326 -+
43.43327 -+   This file is part of BFD, the Binary File Descriptor library.
43.43328 -+
43.43329 -+   This program is free software; you can redistribute it and/or modify
43.43330 -+   it under the terms of the GNU General Public License as published by
43.43331 -+   the Free Software Foundation; either version 3 of the License, or
43.43332 -+   (at your option) any later version.
43.43333 -+
43.43334 -+   This program is distributed in the hope that it will be useful,
43.43335 -+   but WITHOUT ANY WARRANTY; without even the implied warranty of
43.43336 -+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
43.43337 -+   GNU General Public License for more details.
43.43338 -+
43.43339 -+   You should have received a copy of the GNU General Public License
43.43340 -+   along with this program; if not, write to the Free Software
43.43341 -+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
43.43342 -+   MA 02110-1301, USA.  */
43.43343 -+
43.43344 -+#include "bfdlink.h"
43.43345 -+
43.43346 -+/* Object file tdata; access macros.  */
43.43347 -+
43.43348 -+#define coff_data(bfd)		      ((bfd)->tdata.coff_obj_data)
43.43349 -+#define exec_hdr(bfd)		      (coff_data (bfd)->hdr)
43.43350 -+#define obj_pe(bfd)                   (coff_data (bfd)->pe)
43.43351 -+#define obj_symbols(bfd)	      (coff_data (bfd)->symbols)
43.43352 -+#define	obj_sym_filepos(bfd)	      (coff_data (bfd)->sym_filepos)
43.43353 -+#define obj_relocbase(bfd)	      (coff_data (bfd)->relocbase)
43.43354 -+#define obj_raw_syments(bfd)	      (coff_data (bfd)->raw_syments)
43.43355 -+#define obj_raw_syment_count(bfd)     (coff_data (bfd)->raw_syment_count)
43.43356 -+#define obj_convert(bfd)	      (coff_data (bfd)->conversion_table)
43.43357 -+#define obj_conv_table_size(bfd)      (coff_data (bfd)->conv_table_size)
43.43358 -+#define obj_coff_external_syms(bfd)   (coff_data (bfd)->external_syms)
43.43359 -+#define obj_coff_keep_syms(bfd)	      (coff_data (bfd)->keep_syms)
43.43360 -+#define obj_coff_strings(bfd)	      (coff_data (bfd)->strings)
43.43361 -+#define obj_coff_keep_strings(bfd)    (coff_data (bfd)->keep_strings)
43.43362 -+#define obj_coff_sym_hashes(bfd)      (coff_data (bfd)->sym_hashes)
43.43363 -+#define obj_coff_strings_written(bfd) (coff_data (bfd)->strings_written)
43.43364 -+#define obj_coff_local_toc_table(bfd) (coff_data (bfd)->local_toc_sym_map)
43.43365 -+
43.43366 -+/* `Tdata' information kept for COFF files.  */
43.43367 -+
43.43368 -+typedef struct coff_tdata
43.43369 -+{
43.43370 -+  struct coff_symbol_struct *symbols;	/* Symtab for input bfd.  */
43.43371 -+  unsigned int *conversion_table;
43.43372 -+  int conv_table_size;
43.43373 -+  file_ptr sym_filepos;
43.43374 -+
43.43375 -+  struct coff_ptr_struct *raw_syments;
43.43376 -+  unsigned long raw_syment_count;
43.43377 -+
43.43378 -+  /* These are only valid once writing has begun.  */
43.43379 -+  long int relocbase;
43.43380 -+
43.43381 -+  /* These members communicate important constants about the symbol table
43.43382 -+     to GDB's symbol-reading code.  These `constants' unfortunately vary
43.43383 -+     from coff implementation to implementation...  */
43.43384 -+  unsigned local_n_btmask;
43.43385 -+  unsigned local_n_btshft;
43.43386 -+  unsigned local_n_tmask;
43.43387 -+  unsigned local_n_tshift;
43.43388 -+  unsigned local_symesz;
43.43389 -+  unsigned local_auxesz;
43.43390 -+  unsigned local_linesz;
43.43391 -+
43.43392 -+  /* The unswapped external symbols.  May be NULL.  Read by
43.43393 -+     _bfd_coff_get_external_symbols.  */
43.43394 -+  void * external_syms;
43.43395 -+  /* If this is TRUE, the external_syms may not be freed.  */
43.43396 -+  bfd_boolean keep_syms;
43.43397 -+
43.43398 -+  /* The string table.  May be NULL.  Read by
43.43399 -+     _bfd_coff_read_string_table.  */
43.43400 -+  char *strings;
43.43401 -+  /* If this is TRUE, the strings may not be freed.  */
43.43402 -+  bfd_boolean keep_strings;
43.43403 -+  /* If this is TRUE, the strings have been written out already.  */
43.43404 -+  bfd_boolean strings_written;
43.43405 -+
43.43406 -+  /* Is this a PE format coff file?  */
43.43407 -+  int pe;
43.43408 -+  /* Used by the COFF backend linker.  */
43.43409 -+  struct coff_link_hash_entry **sym_hashes;
43.43410 -+
43.43411 -+  /* Used by the pe linker for PowerPC.  */
43.43412 -+  int *local_toc_sym_map;
43.43413 -+
43.43414 -+  struct bfd_link_info *link_info;
43.43415 -+
43.43416 -+  /* Used by coff_find_nearest_line.  */
43.43417 -+  void * line_info;
43.43418 -+
43.43419 -+  /* A place to stash dwarf2 info for this bfd.  */
43.43420 -+  void * dwarf2_find_line_info;
43.43421 -+
43.43422 -+  /* The timestamp from the COFF file header.  */
43.43423 -+  long timestamp;
43.43424 -+
43.43425 -+  /* Copy of some of the f_flags bits in the COFF filehdr structure,
43.43426 -+     used by ARM code.  */
43.43427 -+  flagword flags;
43.43428 -+
43.43429 -+} coff_data_type;
43.43430 -+
43.43431 -+/* Tdata for pe image files.  */
43.43432 -+typedef struct pe_tdata
43.43433 -+{
43.43434 -+  coff_data_type coff;
43.43435 -+  struct internal_extra_pe_aouthdr pe_opthdr;
43.43436 -+  int dll;
43.43437 -+  int has_reloc_section;
43.43438 -+  bfd_boolean (*in_reloc_p) (bfd *, reloc_howto_type *);
43.43439 -+  flagword real_flags;
43.43440 -+  int target_subsystem;
43.43441 -+  bfd_boolean force_minimum_alignment;
43.43442 -+} pe_data_type;
43.43443 -+
43.43444 -+#define pe_data(bfd)		((bfd)->tdata.pe_obj_data)
43.43445 -+
43.43446 -+/* Tdata for XCOFF files.  */
43.43447 -+
43.43448 -+struct xcoff_tdata
43.43449 -+{
43.43450 -+  /* Basic COFF information.  */
43.43451 -+  coff_data_type coff;
43.43452 -+
43.43453 -+  /* TRUE if this is an XCOFF64 file. */
43.43454 -+  bfd_boolean xcoff64;
43.43455 -+
43.43456 -+  /* TRUE if a large a.out header should be generated.  */
43.43457 -+  bfd_boolean full_aouthdr;
43.43458 -+
43.43459 -+  /* TOC value.  */
43.43460 -+  bfd_vma toc;
43.43461 -+
43.43462 -+  /* Index of section holding TOC.  */
43.43463 -+  int sntoc;
43.43464 -+
43.43465 -+  /* Index of section holding entry point.  */
43.43466 -+  int snentry;
43.43467 -+
43.43468 -+  /* .text alignment from optional header.  */
43.43469 -+  int text_align_power;
43.43470 -+
43.43471 -+  /* .data alignment from optional header.  */
43.43472 -+  int data_align_power;
43.43473 -+
43.43474 -+  /* modtype from optional header.  */
43.43475 -+  short modtype;
43.43476 -+
43.43477 -+  /* cputype from optional header.  */
43.43478 -+  short cputype;
43.43479 -+
43.43480 -+  /* maxdata from optional header.  */
43.43481 -+  bfd_vma maxdata;
43.43482 -+
43.43483 -+  /* maxstack from optional header.  */
43.43484 -+  bfd_vma maxstack;
43.43485 -+
43.43486 -+  /* Used by the XCOFF backend linker.  */
43.43487 -+  asection **csects;
43.43488 -+  unsigned long *debug_indices;
43.43489 -+  unsigned int import_file_id;
43.43490 -+};
43.43491 -+
43.43492 -+#define xcoff_data(abfd) ((abfd)->tdata.xcoff_obj_data)
43.43493 -+
43.43494 -+/* We take the address of the first element of an asymbol to ensure that the
43.43495 -+   macro is only ever applied to an asymbol.  */
43.43496 -+#define coffsymbol(asymbol) ((coff_symbol_type *)(&((asymbol)->the_bfd)))
43.43497 -+
43.43498 -+/* The used_by_bfd field of a section may be set to a pointer to this
43.43499 -+   structure.  */
43.43500 -+
43.43501 -+struct coff_section_tdata
43.43502 -+{
43.43503 -+  /* The relocs, swapped into COFF internal form.  This may be NULL.  */
43.43504 -+  struct internal_reloc *relocs;
43.43505 -+  /* If this is TRUE, the relocs entry may not be freed.  */
43.43506 -+  bfd_boolean keep_relocs;
43.43507 -+  /* The section contents.  This may be NULL.  */
43.43508 -+  bfd_byte *contents;
43.43509 -+  /* If this is TRUE, the contents entry may not be freed.  */
43.43510 -+  bfd_boolean keep_contents;
43.43511 -+  /* Information cached by coff_find_nearest_line.  */
43.43512 -+  bfd_vma offset;
43.43513 -+  unsigned int i;
43.43514 -+  const char *function;
43.43515 -+  /* Optional information about a COMDAT entry; NULL if not COMDAT. */
43.43516 -+  struct coff_comdat_info *comdat;
43.43517 -+  int line_base;
43.43518 -+  /* A pointer used for .stab linking optimizations.  */
43.43519 -+  void * stab_info;
43.43520 -+  /* Available for individual backends.  */
43.43521 -+  void * tdata;
43.43522 -+};
43.43523 -+
43.43524 -+/* An accessor macro for the coff_section_tdata structure.  */
43.43525 -+#define coff_section_data(abfd, sec) \
43.43526 -+  ((struct coff_section_tdata *) (sec)->used_by_bfd)
43.43527 -+
43.43528 -+/* Tdata for sections in XCOFF files.  This is used by the linker.  */
43.43529 -+
43.43530 -+struct xcoff_section_tdata
43.43531 -+{
43.43532 -+  /* Used for XCOFF csects created by the linker; points to the real
43.43533 -+     XCOFF section which contains this csect.  */
43.43534 -+  asection *enclosing;
43.43535 -+  /* The lineno_count field for the enclosing section, because we are
43.43536 -+     going to clobber it there.  */
43.43537 -+  unsigned int lineno_count;
43.43538 -+  /* The first and one past the last symbol indices for symbols used
43.43539 -+     by this csect.  */
43.43540 -+  unsigned long first_symndx;
43.43541 -+  unsigned long last_symndx;
43.43542 -+};
43.43543 -+
43.43544 -+/* An accessor macro the xcoff_section_tdata structure.  */
43.43545 -+#define xcoff_section_data(abfd, sec) \
43.43546 -+  ((struct xcoff_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
43.43547 -+
43.43548 -+/* Tdata for sections in PE files.  */
43.43549 -+
43.43550 -+struct pei_section_tdata
43.43551 -+{
43.43552 -+  /* The virtual size of the section.  */
43.43553 -+  bfd_size_type virt_size;
43.43554 -+  /* The PE section flags.  */
43.43555 -+  long pe_flags;
43.43556 -+};
43.43557 -+
43.43558 -+/* An accessor macro for the pei_section_tdata structure.  */
43.43559 -+#define pei_section_data(abfd, sec) \
43.43560 -+  ((struct pei_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
43.43561 -+
43.43562 -+/* COFF linker hash table entries.  */
43.43563 -+
43.43564 -+struct coff_link_hash_entry
43.43565 -+{
43.43566 -+  struct bfd_link_hash_entry root;
43.43567 -+
43.43568 -+  /* Symbol index in output file.  Set to -1 initially.  Set to -2 if
43.43569 -+     there is a reloc against this symbol.  */
43.43570 -+  long indx;
43.43571 -+
43.43572 -+  /* Symbol type.  */
43.43573 -+  unsigned short type;
43.43574 -+
43.43575 -+  /* Symbol class.  */
43.43576 -+  unsigned char class;
43.43577 -+
43.43578 -+  /* Number of auxiliary entries.  */
43.43579 -+  char numaux;
43.43580 -+
43.43581 -+  /* BFD to take auxiliary entries from.  */
43.43582 -+  bfd *auxbfd;
43.43583 -+
43.43584 -+  /* Pointer to array of auxiliary entries, if any.  */
43.43585 -+  union internal_auxent *aux;
43.43586 -+
43.43587 -+  /* Flag word; legal values follow.  */
43.43588 -+  unsigned short coff_link_hash_flags;
43.43589 -+  /* Symbol is a PE section symbol.  */
43.43590 -+#define COFF_LINK_HASH_PE_SECTION_SYMBOL (01)
43.43591 -+};
43.43592 -+
43.43593 -+/* COFF linker hash table.  */
43.43594 -+
43.43595 -+struct coff_link_hash_table
43.43596 -+{
43.43597 -+  struct bfd_link_hash_table root;
43.43598 -+  /* A pointer to information used to link stabs in sections.  */
43.43599 -+  struct stab_info stab_info;
43.43600 -+};
43.43601 -+
43.43602 -+/* Look up an entry in a COFF linker hash table.  */
43.43603 -+
43.43604 -+#define coff_link_hash_lookup(table, string, create, copy, follow)	\
43.43605 -+  ((struct coff_link_hash_entry *)					\
43.43606 -+   bfd_link_hash_lookup (&(table)->root, (string), (create),		\
43.43607 -+			 (copy), (follow)))
43.43608 -+
43.43609 -+/* Traverse a COFF linker hash table.  */
43.43610 -+
43.43611 -+#define coff_link_hash_traverse(table, func, info)			\
43.43612 -+  (bfd_link_hash_traverse						\
43.43613 -+   (&(table)->root,							\
43.43614 -+    (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func), \
43.43615 -+    (info)))
43.43616 -+
43.43617 -+/* Get the COFF linker hash table from a link_info structure.  */
43.43618 -+
43.43619 -+#define coff_hash_table(p) ((struct coff_link_hash_table *) ((p)->hash))
43.43620 -+
43.43621 -+/* Functions in coffgen.c.  */
43.43622 -+extern const bfd_target *coff_object_p
43.43623 -+  (bfd *);
43.43624 -+extern struct bfd_section *coff_section_from_bfd_index
43.43625 -+  (bfd *, int);
43.43626 -+extern long coff_get_symtab_upper_bound
43.43627 -+  (bfd *);
43.43628 -+extern long coff_canonicalize_symtab
43.43629 -+  (bfd *, asymbol **);
43.43630 -+extern int coff_count_linenumbers
43.43631 -+  (bfd *);
43.43632 -+extern struct coff_symbol_struct *coff_symbol_from
43.43633 -+  (bfd *, asymbol *);
43.43634 -+extern bfd_boolean coff_renumber_symbols
43.43635 -+  (bfd *, int *);
43.43636 -+extern void coff_mangle_symbols
43.43637 -+  (bfd *);
43.43638 -+extern bfd_boolean coff_write_symbols
43.43639 -+  (bfd *);
43.43640 -+extern bfd_boolean coff_write_linenumbers
43.43641 -+  (bfd *);
43.43642 -+extern alent *coff_get_lineno
43.43643 -+  (bfd *, asymbol *);
43.43644 -+extern asymbol *coff_section_symbol
43.43645 -+  (bfd *, char *);
43.43646 -+extern bfd_boolean _bfd_coff_get_external_symbols
43.43647 -+  (bfd *);
43.43648 -+extern const char *_bfd_coff_read_string_table
43.43649 -+  (bfd *);
43.43650 -+extern bfd_boolean _bfd_coff_free_symbols
43.43651 -+  (bfd *);
43.43652 -+extern struct coff_ptr_struct *coff_get_normalized_symtab
43.43653 -+  (bfd *);
43.43654 -+extern long coff_get_reloc_upper_bound
43.43655 -+  (bfd *, sec_ptr);
43.43656 -+extern asymbol *coff_make_empty_symbol
43.43657 -+  (bfd *);
43.43658 -+extern void coff_print_symbol
43.43659 -+  (bfd *, void * filep, asymbol *, bfd_print_symbol_type);
43.43660 -+extern void coff_get_symbol_info
43.43661 -+  (bfd *, asymbol *, symbol_info *ret);
43.43662 -+extern bfd_boolean _bfd_coff_is_local_label_name
43.43663 -+  (bfd *, const char *);
43.43664 -+extern asymbol *coff_bfd_make_debug_symbol
43.43665 -+  (bfd *, void *, unsigned long);
43.43666 -+extern bfd_boolean coff_find_nearest_line
43.43667 -+  (bfd *, asection *, asymbol **, bfd_vma, const char **,
43.43668 -+   const char **, unsigned int *);
43.43669 -+extern bfd_boolean coff_find_inliner_info
43.43670 -+  (bfd *, const char **, const char **, unsigned int *);
43.43671 -+extern int coff_sizeof_headers
43.43672 -+  (bfd *, struct bfd_link_info *);
43.43673 -+extern bfd_boolean bfd_coff_reloc16_relax_section
43.43674 -+  (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
43.43675 -+extern bfd_byte *bfd_coff_reloc16_get_relocated_section_contents
43.43676 -+  (bfd *, struct bfd_link_info *, struct bfd_link_order *,
43.43677 -+   bfd_byte *, bfd_boolean, asymbol **);
43.43678 -+extern bfd_vma bfd_coff_reloc16_get_value
43.43679 -+  (arelent *, struct bfd_link_info *, asection *);
43.43680 -+extern void bfd_perform_slip
43.43681 -+  (bfd *, unsigned int, asection *, bfd_vma);
43.43682 -+
43.43683 -+/* Functions and types in cofflink.c.  */
43.43684 -+
43.43685 -+#define STRING_SIZE_SIZE 4
43.43686 -+
43.43687 -+/* We use a hash table to merge identical enum, struct, and union
43.43688 -+   definitions in the linker.  */
43.43689 -+
43.43690 -+/* Information we keep for a single element (an enum value, a
43.43691 -+   structure or union field) in the debug merge hash table.  */
43.43692 -+
43.43693 -+struct coff_debug_merge_element
43.43694 -+{
43.43695 -+  /* Next element.  */
43.43696 -+  struct coff_debug_merge_element *next;
43.43697 -+
43.43698 -+  /* Name.  */
43.43699 -+  const char *name;
43.43700 -+
43.43701 -+  /* Type.  */
43.43702 -+  unsigned int type;
43.43703 -+
43.43704 -+  /* Symbol index for complex type.  */
43.43705 -+  long tagndx;
43.43706 -+};
43.43707 -+
43.43708 -+/* A linked list of debug merge entries for a given name.  */
43.43709 -+
43.43710 -+struct coff_debug_merge_type
43.43711 -+{
43.43712 -+  /* Next type with the same name.  */
43.43713 -+  struct coff_debug_merge_type *next;
43.43714 -+
43.43715 -+  /* Class of type.  */
43.43716 -+  int class;
43.43717 -+
43.43718 -+  /* Symbol index where this type is defined.  */
43.43719 -+  long indx;
43.43720 -+
43.43721 -+  /* List of elements.  */
43.43722 -+  struct coff_debug_merge_element *elements;
43.43723 -+};
43.43724 -+
43.43725 -+/* Information we store in the debug merge hash table.  */
43.43726 -+
43.43727 -+struct coff_debug_merge_hash_entry
43.43728 -+{
43.43729 -+  struct bfd_hash_entry root;
43.43730 -+
43.43731 -+  /* A list of types with this name.  */
43.43732 -+  struct coff_debug_merge_type *types;
43.43733 -+};
43.43734 -+
43.43735 -+/* The debug merge hash table.  */
43.43736 -+
43.43737 -+struct coff_debug_merge_hash_table
43.43738 -+{
43.43739 -+  struct bfd_hash_table root;
43.43740 -+};
43.43741 -+
43.43742 -+/* Initialize a COFF debug merge hash table.  */
43.43743 -+
43.43744 -+#define coff_debug_merge_hash_table_init(table) \
43.43745 -+  (bfd_hash_table_init (&(table)->root, _bfd_coff_debug_merge_hash_newfunc, \
43.43746 -+			sizeof (struct coff_debug_merge_hash_entry)))
43.43747 -+
43.43748 -+/* Free a COFF debug merge hash table.  */
43.43749 -+
43.43750 -+#define coff_debug_merge_hash_table_free(table) \
43.43751 -+  (bfd_hash_table_free (&(table)->root))
43.43752 -+
43.43753 -+/* Look up an entry in a COFF debug merge hash table.  */
43.43754 -+
43.43755 -+#define coff_debug_merge_hash_lookup(table, string, create, copy) \
43.43756 -+  ((struct coff_debug_merge_hash_entry *) \
43.43757 -+   bfd_hash_lookup (&(table)->root, (string), (create), (copy)))
43.43758 -+
43.43759 -+/* Information we keep for each section in the output file when doing
43.43760 -+   a relocatable link.  */
43.43761 -+
43.43762 -+struct coff_link_section_info
43.43763 -+{
43.43764 -+  /* The relocs to be output.  */
43.43765 -+  struct internal_reloc *relocs;
43.43766 -+  /* For each reloc against a global symbol whose index was not known
43.43767 -+     when the reloc was handled, the global hash table entry.  */
43.43768 -+  struct coff_link_hash_entry **rel_hashes;
43.43769 -+};
43.43770 -+
43.43771 -+/* Information that we pass around while doing the final link step.  */
43.43772 -+
43.43773 -+struct coff_final_link_info
43.43774 -+{
43.43775 -+  /* General link information.  */
43.43776 -+  struct bfd_link_info *info;
43.43777 -+  /* Output BFD.  */
43.43778 -+  bfd *output_bfd;
43.43779 -+  /* Used to indicate failure in traversal routine.  */
43.43780 -+  bfd_boolean failed;
43.43781 -+  /* If doing "task linking" set only during the time when we want the
43.43782 -+     global symbol writer to convert the storage class of defined global
43.43783 -+     symbols from global to static. */
43.43784 -+  bfd_boolean global_to_static;
43.43785 -+  /* Hash table for long symbol names.  */
43.43786 -+  struct bfd_strtab_hash *strtab;
43.43787 -+  /* When doing a relocatable link, an array of information kept for
43.43788 -+     each output section, indexed by the target_index field.  */
43.43789 -+  struct coff_link_section_info *section_info;
43.43790 -+  /* Symbol index of last C_FILE symbol (-1 if none).  */
43.43791 -+  long last_file_index;
43.43792 -+  /* Contents of last C_FILE symbol.  */
43.43793 -+  struct internal_syment last_file;
43.43794 -+  /* Symbol index of first aux entry of last .bf symbol with an empty
43.43795 -+     endndx field (-1 if none).  */
43.43796 -+  long last_bf_index;
43.43797 -+  /* Contents of last_bf_index aux entry.  */
43.43798 -+  union internal_auxent last_bf;
43.43799 -+  /* Hash table used to merge debug information.  */
43.43800 -+  struct coff_debug_merge_hash_table debug_merge;
43.43801 -+  /* Buffer large enough to hold swapped symbols of any input file.  */
43.43802 -+  struct internal_syment *internal_syms;
43.43803 -+  /* Buffer large enough to hold sections of symbols of any input file.  */
43.43804 -+  asection **sec_ptrs;
43.43805 -+  /* Buffer large enough to hold output indices of symbols of any
43.43806 -+     input file.  */
43.43807 -+  long *sym_indices;
43.43808 -+  /* Buffer large enough to hold output symbols for any input file.  */
43.43809 -+  bfd_byte *outsyms;
43.43810 -+  /* Buffer large enough to hold external line numbers for any input
43.43811 -+     section.  */
43.43812 -+  bfd_byte *linenos;
43.43813 -+  /* Buffer large enough to hold any input section.  */
43.43814 -+  bfd_byte *contents;
43.43815 -+  /* Buffer large enough to hold external relocs of any input section.  */
43.43816 -+  bfd_byte *external_relocs;
43.43817 -+  /* Buffer large enough to hold swapped relocs of any input section.  */
43.43818 -+  struct internal_reloc *internal_relocs;
43.43819 -+};
43.43820 -+
43.43821 -+/* Most COFF variants have no way to record the alignment of a
43.43822 -+   section.  This struct is used to set a specific alignment based on
43.43823 -+   the name of the section.  */
43.43824 -+
43.43825 -+struct coff_section_alignment_entry
43.43826 -+{
43.43827 -+  /* The section name.  */
43.43828 -+  const char *name;
43.43829 -+
43.43830 -+  /* This is either (unsigned int) -1, indicating that the section
43.43831 -+     name must match exactly, or it is the number of letters which
43.43832 -+     must match at the start of the name.  */
43.43833 -+  unsigned int comparison_length;
43.43834 -+
43.43835 -+  /* These macros may be used to fill in the first two fields in a
43.43836 -+     structure initialization.  */
43.43837 -+#define COFF_SECTION_NAME_EXACT_MATCH(name) (name), ((unsigned int) -1)
43.43838 -+#define COFF_SECTION_NAME_PARTIAL_MATCH(name) (name), (sizeof (name) - 1)
43.43839 -+
43.43840 -+  /* Only use this entry if the default section alignment for this
43.43841 -+     target is at least that much (as a power of two).  If this field
43.43842 -+     is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored.  */
43.43843 -+  unsigned int default_alignment_min;
43.43844 -+
43.43845 -+  /* Only use this entry if the default section alignment for this
43.43846 -+     target is no greater than this (as a power of two).  If this
43.43847 -+     field is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored.  */
43.43848 -+  unsigned int default_alignment_max;
43.43849 -+
43.43850 -+#define COFF_ALIGNMENT_FIELD_EMPTY ((unsigned int) -1)
43.43851 -+
43.43852 -+  /* The desired alignment for this section (as a power of two).  */
43.43853 -+  unsigned int alignment_power;
43.43854 -+};
43.43855 -+
43.43856 -+extern struct bfd_hash_entry *_bfd_coff_link_hash_newfunc
43.43857 -+  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
43.43858 -+extern bfd_boolean _bfd_coff_link_hash_table_init
43.43859 -+  (struct coff_link_hash_table *, bfd *,
43.43860 -+   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
43.43861 -+			       struct bfd_hash_table *,
43.43862 -+			       const char *),
43.43863 -+   unsigned int);
43.43864 -+extern struct bfd_link_hash_table *_bfd_coff_link_hash_table_create
43.43865 -+  (bfd *);
43.43866 -+extern const char *_bfd_coff_internal_syment_name
43.43867 -+  (bfd *, const struct internal_syment *, char *);
43.43868 -+extern bfd_boolean _bfd_coff_link_add_symbols
43.43869 -+  (bfd *, struct bfd_link_info *);
43.43870 -+extern bfd_boolean _bfd_coff_final_link
43.43871 -+  (bfd *, struct bfd_link_info *);
43.43872 -+extern struct internal_reloc *_bfd_coff_read_internal_relocs
43.43873 -+  (bfd *, asection *, bfd_boolean, bfd_byte *, bfd_boolean,
43.43874 -+   struct internal_reloc *);
43.43875 -+extern bfd_boolean _bfd_coff_generic_relocate_section
43.43876 -+  (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
43.43877 -+   struct internal_reloc *, struct internal_syment *, asection **);
43.43878 -+extern struct bfd_hash_entry *_bfd_coff_debug_merge_hash_newfunc
43.43879 -+  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
43.43880 -+extern bfd_boolean _bfd_coff_write_global_sym
43.43881 -+  (struct coff_link_hash_entry *, void *);
43.43882 -+extern bfd_boolean _bfd_coff_write_task_globals
43.43883 -+  (struct coff_link_hash_entry *, void *);
43.43884 -+extern bfd_boolean _bfd_coff_link_input_bfd
43.43885 -+  (struct coff_final_link_info *, bfd *);
43.43886 -+extern bfd_boolean _bfd_coff_reloc_link_order
43.43887 -+  (bfd *, struct coff_final_link_info *, asection *,
43.43888 -+   struct bfd_link_order *);
43.43889 -+
43.43890 -+
43.43891 -+#define coff_get_section_contents_in_window \
43.43892 -+  _bfd_generic_get_section_contents_in_window
43.43893 -+
43.43894 -+/* Functions in xcofflink.c.  */
43.43895 -+
43.43896 -+extern long _bfd_xcoff_get_dynamic_symtab_upper_bound
43.43897 -+  (bfd *);
43.43898 -+extern long _bfd_xcoff_canonicalize_dynamic_symtab
43.43899 -+  (bfd *, asymbol **);
43.43900 -+extern long _bfd_xcoff_get_dynamic_reloc_upper_bound
43.43901 -+  (bfd *);
43.43902 -+extern long _bfd_xcoff_canonicalize_dynamic_reloc
43.43903 -+  (bfd *, arelent **, asymbol **);
43.43904 -+extern struct bfd_link_hash_table *_bfd_xcoff_bfd_link_hash_table_create
43.43905 -+  (bfd *);
43.43906 -+extern void _bfd_xcoff_bfd_link_hash_table_free
43.43907 -+  (struct bfd_link_hash_table *);
43.43908 -+extern bfd_boolean _bfd_xcoff_bfd_link_add_symbols
43.43909 -+  (bfd *, struct bfd_link_info *);
43.43910 -+extern bfd_boolean _bfd_xcoff_bfd_final_link
43.43911 -+  (bfd *, struct bfd_link_info *);
43.43912 -+extern bfd_boolean _bfd_ppc_xcoff_relocate_section
43.43913 -+  (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
43.43914 -+   struct internal_reloc *, struct internal_syment *, asection **);
43.43915 -+
43.43916 -+/* Functions in coff-ppc.c.  FIXME: These are called be pe.em in the
43.43917 -+   linker, and so should start with bfd and be declared in bfd.h.  */
43.43918 -+
43.43919 -+extern bfd_boolean ppc_allocate_toc_section
43.43920 -+  (struct bfd_link_info *);
43.43921 -+extern bfd_boolean ppc_process_before_allocation
43.43922 -+  (bfd *, struct bfd_link_info *);
43.43923 -+
43.43924 -+/* Extracted from coffcode.h.  */
43.43925 -+typedef struct coff_ptr_struct
43.43926 -+{
43.43927 -+  /* Remembers the offset from the first symbol in the file for
43.43928 -+     this symbol. Generated by coff_renumber_symbols. */
43.43929 -+  unsigned int offset;
43.43930 -+
43.43931 -+  /* Should the value of this symbol be renumbered.  Used for
43.43932 -+     XCOFF C_BSTAT symbols.  Set by coff_slurp_symbol_table.  */
43.43933 -+  unsigned int fix_value : 1;
43.43934 -+
43.43935 -+  /* Should the tag field of this symbol be renumbered.
43.43936 -+     Created by coff_pointerize_aux. */
43.43937 -+  unsigned int fix_tag : 1;
43.43938 -+
43.43939 -+  /* Should the endidx field of this symbol be renumbered.
43.43940 -+     Created by coff_pointerize_aux. */
43.43941 -+  unsigned int fix_end : 1;
43.43942 -+
43.43943 -+  /* Should the x_csect.x_scnlen field be renumbered.
43.43944 -+     Created by coff_pointerize_aux. */
43.43945 -+  unsigned int fix_scnlen : 1;
43.43946 -+
43.43947 -+  /* Fix up an XCOFF C_BINCL/C_EINCL symbol.  The value is the
43.43948 -+     index into the line number entries.  Set by coff_slurp_symbol_table.  */
43.43949 -+  unsigned int fix_line : 1;
43.43950 -+
43.43951 -+  /* The container for the symbol structure as read and translated
43.43952 -+     from the file. */
43.43953 -+  union
43.43954 -+  {
43.43955 -+    union internal_auxent auxent;
43.43956 -+    struct internal_syment syment;
43.43957 -+  } u;
43.43958 -+} combined_entry_type;
43.43959 -+
43.43960 -+
43.43961 -+/* Each canonical asymbol really looks like this: */
43.43962 -+
43.43963 -+typedef struct coff_symbol_struct
43.43964 -+{
43.43965 -+  /* The actual symbol which the rest of BFD works with */
43.43966 -+  asymbol symbol;
43.43967 -+
43.43968 -+  /* A pointer to the hidden information for this symbol */
43.43969 -+  combined_entry_type *native;
43.43970 -+
43.43971 -+  /* A pointer to the linenumber information for this symbol */
43.43972 -+  struct lineno_cache_entry *lineno;
43.43973 -+
43.43974 -+  /* Have the line numbers been relocated yet ? */
43.43975 -+  bfd_boolean done_lineno;
43.43976 -+} coff_symbol_type;
43.43977 -+/* COFF symbol classifications.  */
43.43978 -+
43.43979 -+enum coff_symbol_classification
43.43980 -+{
43.43981 -+  /* Global symbol.  */
43.43982 -+  COFF_SYMBOL_GLOBAL,
43.43983 -+  /* Common symbol.  */
43.43984 -+  COFF_SYMBOL_COMMON,
43.43985 -+  /* Undefined symbol.  */
43.43986 -+  COFF_SYMBOL_UNDEFINED,
43.43987 -+  /* Local symbol.  */
43.43988 -+  COFF_SYMBOL_LOCAL,
43.43989 -+  /* PE section symbol.  */
43.43990 -+  COFF_SYMBOL_PE_SECTION
43.43991 -+};
43.43992 -+
43.43993 -+typedef struct
43.43994 -+{
43.43995 -+  void (*_bfd_coff_swap_aux_in)
43.43996 -+    (bfd *, void *, int, int, int, int, void *);
43.43997 -+
43.43998 -+  void (*_bfd_coff_swap_sym_in)
43.43999 -+    (bfd *, void *, void *);
43.44000 -+
43.44001 -+  void (*_bfd_coff_swap_lineno_in)
43.44002 -+    (bfd *, void *, void *);
43.44003 -+
43.44004 -+  unsigned int (*_bfd_coff_swap_aux_out)
43.44005 -+    (bfd *, void *, int, int, int, int, void *);
43.44006 -+
43.44007 -+  unsigned int (*_bfd_coff_swap_sym_out)
43.44008 -+    (bfd *, void *, void *);
43.44009 -+
43.44010 -+  unsigned int (*_bfd_coff_swap_lineno_out)
43.44011 -+    (bfd *, void *, void *);
43.44012 -+
43.44013 -+  unsigned int (*_bfd_coff_swap_reloc_out)
43.44014 -+    (bfd *, void *, void *);
43.44015 -+
43.44016 -+  unsigned int (*_bfd_coff_swap_filehdr_out)
43.44017 -+    (bfd *, void *, void *);
43.44018 -+
43.44019 -+  unsigned int (*_bfd_coff_swap_aouthdr_out)
43.44020 -+    (bfd *, void *, void *);
43.44021 -+
43.44022 -+  unsigned int (*_bfd_coff_swap_scnhdr_out)
43.44023 -+    (bfd *, void *, void *);
43.44024 -+
43.44025 -+  unsigned int _bfd_filhsz;
43.44026 -+  unsigned int _bfd_aoutsz;
43.44027 -+  unsigned int _bfd_scnhsz;
43.44028 -+  unsigned int _bfd_symesz;
43.44029 -+  unsigned int _bfd_auxesz;
43.44030 -+  unsigned int _bfd_relsz;
43.44031 -+  unsigned int _bfd_linesz;
43.44032 -+  unsigned int _bfd_filnmlen;
43.44033 -+  bfd_boolean _bfd_coff_long_filenames;
43.44034 -+  bfd_boolean _bfd_coff_long_section_names;
43.44035 -+  unsigned int _bfd_coff_default_section_alignment_power;
43.44036 -+  bfd_boolean _bfd_coff_force_symnames_in_strings;
43.44037 -+  unsigned int _bfd_coff_debug_string_prefix_length;
43.44038 -+
43.44039 -+  void (*_bfd_coff_swap_filehdr_in)
43.44040 -+    (bfd *, void *, void *);
43.44041 -+
43.44042 -+  void (*_bfd_coff_swap_aouthdr_in)
43.44043 -+    (bfd *, void *, void *);
43.44044 -+
43.44045 -+  void (*_bfd_coff_swap_scnhdr_in)
43.44046 -+    (bfd *, void *, void *);
43.44047 -+
43.44048 -+  void (*_bfd_coff_swap_reloc_in)
43.44049 -+    (bfd *abfd, void *, void *);
43.44050 -+
43.44051 -+  bfd_boolean (*_bfd_coff_bad_format_hook)
43.44052 -+    (bfd *, void *);
43.44053 -+
43.44054 -+  bfd_boolean (*_bfd_coff_set_arch_mach_hook)
43.44055 -+    (bfd *, void *);
43.44056 -+
43.44057 -+  void * (*_bfd_coff_mkobject_hook)
43.44058 -+    (bfd *, void *, void *);
43.44059 -+
43.44060 -+  bfd_boolean (*_bfd_styp_to_sec_flags_hook)
43.44061 -+    (bfd *, void *, const char *, asection *, flagword *);
43.44062 -+
43.44063 -+  void (*_bfd_set_alignment_hook)
43.44064 -+    (bfd *, asection *, void *);
43.44065 -+
43.44066 -+  bfd_boolean (*_bfd_coff_slurp_symbol_table)
43.44067 -+    (bfd *);
43.44068 -+
43.44069 -+  bfd_boolean (*_bfd_coff_symname_in_debug)
43.44070 -+    (bfd *, struct internal_syment *);
43.44071 -+
43.44072 -+  bfd_boolean (*_bfd_coff_pointerize_aux_hook)
43.44073 -+    (bfd *, combined_entry_type *, combined_entry_type *,
43.44074 -+            unsigned int, combined_entry_type *);
43.44075 -+
43.44076 -+  bfd_boolean (*_bfd_coff_print_aux)
43.44077 -+    (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
43.44078 -+            combined_entry_type *, unsigned int);
43.44079 -+
43.44080 -+  void (*_bfd_coff_reloc16_extra_cases)
43.44081 -+    (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
43.44082 -+           bfd_byte *, unsigned int *, unsigned int *);
43.44083 -+
43.44084 -+  int (*_bfd_coff_reloc16_estimate)
43.44085 -+    (bfd *, asection *, arelent *, unsigned int,
43.44086 -+            struct bfd_link_info *);
43.44087 -+
43.44088 -+  enum coff_symbol_classification (*_bfd_coff_classify_symbol)
43.44089 -+    (bfd *, struct internal_syment *);
43.44090 -+
43.44091 -+  bfd_boolean (*_bfd_coff_compute_section_file_positions)
43.44092 -+    (bfd *);
43.44093 -+
43.44094 -+  bfd_boolean (*_bfd_coff_start_final_link)
43.44095 -+    (bfd *, struct bfd_link_info *);
43.44096 -+
43.44097 -+  bfd_boolean (*_bfd_coff_relocate_section)
43.44098 -+    (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
43.44099 -+            struct internal_reloc *, struct internal_syment *, asection **);
43.44100 -+
43.44101 -+  reloc_howto_type *(*_bfd_coff_rtype_to_howto)
43.44102 -+    (bfd *, asection *, struct internal_reloc *,
43.44103 -+            struct coff_link_hash_entry *, struct internal_syment *,
43.44104 -+            bfd_vma *);
43.44105 -+
43.44106 -+  bfd_boolean (*_bfd_coff_adjust_symndx)
43.44107 -+    (bfd *, struct bfd_link_info *, bfd *, asection *,
43.44108 -+            struct internal_reloc *, bfd_boolean *);
43.44109 -+
43.44110 -+  bfd_boolean (*_bfd_coff_link_add_one_symbol)
43.44111 -+    (struct bfd_link_info *, bfd *, const char *, flagword,
43.44112 -+            asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
43.44113 -+            struct bfd_link_hash_entry **);
43.44114 -+
43.44115 -+  bfd_boolean (*_bfd_coff_link_output_has_begun)
43.44116 -+    (bfd *, struct coff_final_link_info *);
43.44117 -+
43.44118 -+  bfd_boolean (*_bfd_coff_final_link_postscript)
43.44119 -+    (bfd *, struct coff_final_link_info *);
43.44120 -+
43.44121 -+} bfd_coff_backend_data;
43.44122 -+
43.44123 -+#define coff_backend_info(abfd) \
43.44124 -+  ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
43.44125 -+
43.44126 -+#define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
43.44127 -+  ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
43.44128 -+
43.44129 -+#define bfd_coff_swap_sym_in(a,e,i) \
43.44130 -+  ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))
43.44131 -+
43.44132 -+#define bfd_coff_swap_lineno_in(a,e,i) \
43.44133 -+  ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))
43.44134 -+
43.44135 -+#define bfd_coff_swap_reloc_out(abfd, i, o) \
43.44136 -+  ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))
43.44137 -+
43.44138 -+#define bfd_coff_swap_lineno_out(abfd, i, o) \
43.44139 -+  ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))
43.44140 -+
43.44141 -+#define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
43.44142 -+  ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))
43.44143 -+
43.44144 -+#define bfd_coff_swap_sym_out(abfd, i,o) \
43.44145 -+  ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))
43.44146 -+
43.44147 -+#define bfd_coff_swap_scnhdr_out(abfd, i,o) \
43.44148 -+  ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))
43.44149 -+
43.44150 -+#define bfd_coff_swap_filehdr_out(abfd, i,o) \
43.44151 -+  ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))
43.44152 -+
43.44153 -+#define bfd_coff_swap_aouthdr_out(abfd, i,o) \
43.44154 -+  ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))
43.44155 -+
43.44156 -+#define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
43.44157 -+#define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
43.44158 -+#define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
43.44159 -+#define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
43.44160 -+#define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
43.44161 -+#define bfd_coff_relsz(abfd)  (coff_backend_info (abfd)->_bfd_relsz)
43.44162 -+#define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
43.44163 -+#define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
43.44164 -+#define bfd_coff_long_filenames(abfd) \
43.44165 -+  (coff_backend_info (abfd)->_bfd_coff_long_filenames)
43.44166 -+#define bfd_coff_long_section_names(abfd) \
43.44167 -+  (coff_backend_info (abfd)->_bfd_coff_long_section_names)
43.44168 -+#define bfd_coff_default_section_alignment_power(abfd) \
43.44169 -+  (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
43.44170 -+#define bfd_coff_swap_filehdr_in(abfd, i,o) \
43.44171 -+  ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
43.44172 -+
43.44173 -+#define bfd_coff_swap_aouthdr_in(abfd, i,o) \
43.44174 -+  ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))
43.44175 -+
43.44176 -+#define bfd_coff_swap_scnhdr_in(abfd, i,o) \
43.44177 -+  ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))
43.44178 -+
43.44179 -+#define bfd_coff_swap_reloc_in(abfd, i, o) \
43.44180 -+  ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))
43.44181 -+
43.44182 -+#define bfd_coff_bad_format_hook(abfd, filehdr) \
43.44183 -+  ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))
43.44184 -+
43.44185 -+#define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
43.44186 -+  ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
43.44187 -+#define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
43.44188 -+  ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
43.44189 -+   (abfd, filehdr, aouthdr))
43.44190 -+
43.44191 -+#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
43.44192 -+  ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
43.44193 -+   (abfd, scnhdr, name, section, flags_ptr))
43.44194 -+
43.44195 -+#define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
43.44196 -+  ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
43.44197 -+
43.44198 -+#define bfd_coff_slurp_symbol_table(abfd)\
43.44199 -+  ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))
43.44200 -+
43.44201 -+#define bfd_coff_symname_in_debug(abfd, sym)\
43.44202 -+  ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
43.44203 -+
43.44204 -+#define bfd_coff_force_symnames_in_strings(abfd)\
43.44205 -+  (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
43.44206 -+
43.44207 -+#define bfd_coff_debug_string_prefix_length(abfd)\
43.44208 -+  (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
43.44209 -+
43.44210 -+#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
43.44211 -+  ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
43.44212 -+   (abfd, file, base, symbol, aux, indaux))
43.44213 -+
43.44214 -+#define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
43.44215 -+                                     reloc, data, src_ptr, dst_ptr)\
43.44216 -+  ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
43.44217 -+   (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
43.44218 -+
43.44219 -+#define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
43.44220 -+  ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
43.44221 -+   (abfd, section, reloc, shrink, link_info))
43.44222 -+
43.44223 -+#define bfd_coff_classify_symbol(abfd, sym)\
43.44224 -+  ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
43.44225 -+   (abfd, sym))
43.44226 -+
43.44227 -+#define bfd_coff_compute_section_file_positions(abfd)\
43.44228 -+  ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
43.44229 -+   (abfd))
43.44230 -+
43.44231 -+#define bfd_coff_start_final_link(obfd, info)\
43.44232 -+  ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
43.44233 -+   (obfd, info))
43.44234 -+#define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
43.44235 -+  ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
43.44236 -+   (obfd, info, ibfd, o, con, rel, isyms, secs))
43.44237 -+#define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
43.44238 -+  ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
43.44239 -+   (abfd, sec, rel, h, sym, addendp))
43.44240 -+#define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
43.44241 -+  ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
43.44242 -+   (obfd, info, ibfd, sec, rel, adjustedp))
43.44243 -+#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
43.44244 -+                                     value, string, cp, coll, hashp)\
43.44245 -+  ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
43.44246 -+   (info, abfd, name, flags, section, value, string, cp, coll, hashp))
43.44247 -+
43.44248 -+#define bfd_coff_link_output_has_begun(a,p) \
43.44249 -+  ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
43.44250 -+#define bfd_coff_final_link_postscript(a,p) \
43.44251 -+  ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))
43.44252 -+
43.44253 ---- a/bfd/libbfd.h
43.44254 -+++ b/bfd/libbfd.h
43.44255 -@@ -1601,6 +1601,48 @@ static const char *const bfd_reloc_code_
43.44256 -   "BFD_RELOC_AVR_LDI",
43.44257 -   "BFD_RELOC_AVR_6",
43.44258 -   "BFD_RELOC_AVR_6_ADIW",
43.44259 -+  "BFD_RELOC_AVR32_DIFF32",
43.44260 -+  "BFD_RELOC_AVR32_DIFF16",
43.44261 -+  "BFD_RELOC_AVR32_DIFF8",
43.44262 -+  "BFD_RELOC_AVR32_GOT32",
43.44263 -+  "BFD_RELOC_AVR32_GOT16",
43.44264 -+  "BFD_RELOC_AVR32_GOT8",
43.44265 -+  "BFD_RELOC_AVR32_21S",
43.44266 -+  "BFD_RELOC_AVR32_16U",
43.44267 -+  "BFD_RELOC_AVR32_16S",
43.44268 -+  "BFD_RELOC_AVR32_SUB5",
43.44269 -+  "BFD_RELOC_AVR32_8S_EXT",
43.44270 -+  "BFD_RELOC_AVR32_8S",
43.44271 -+  "BFD_RELOC_AVR32_15S",
43.44272 -+  "BFD_RELOC_AVR32_22H_PCREL",
43.44273 -+  "BFD_RELOC_AVR32_18W_PCREL",
43.44274 -+  "BFD_RELOC_AVR32_16B_PCREL",
43.44275 -+  "BFD_RELOC_AVR32_16N_PCREL",
43.44276 -+  "BFD_RELOC_AVR32_14UW_PCREL",
43.44277 -+  "BFD_RELOC_AVR32_11H_PCREL",
43.44278 -+  "BFD_RELOC_AVR32_10UW_PCREL",
43.44279 -+  "BFD_RELOC_AVR32_9H_PCREL",
43.44280 -+  "BFD_RELOC_AVR32_9UW_PCREL",
43.44281 -+  "BFD_RELOC_AVR32_GOTPC",
43.44282 -+  "BFD_RELOC_AVR32_GOTCALL",
43.44283 -+  "BFD_RELOC_AVR32_LDA_GOT",
43.44284 -+  "BFD_RELOC_AVR32_GOT21S",
43.44285 -+  "BFD_RELOC_AVR32_GOT18SW",
43.44286 -+  "BFD_RELOC_AVR32_GOT16S",
43.44287 -+  "BFD_RELOC_AVR32_32_CPENT",
43.44288 -+  "BFD_RELOC_AVR32_CPCALL",
43.44289 -+  "BFD_RELOC_AVR32_16_CP",
43.44290 -+  "BFD_RELOC_AVR32_9W_CP",
43.44291 -+  "BFD_RELOC_AVR32_ALIGN",
43.44292 -+  "BFD_RELOC_AVR32_14UW",
43.44293 -+  "BFD_RELOC_AVR32_10UW",
43.44294 -+  "BFD_RELOC_AVR32_10SW",
43.44295 -+  "BFD_RELOC_AVR32_STHH_W",
43.44296 -+  "BFD_RELOC_AVR32_7UW",
43.44297 -+  "BFD_RELOC_AVR32_6S",
43.44298 -+  "BFD_RELOC_AVR32_6UW",
43.44299 -+  "BFD_RELOC_AVR32_4UH",
43.44300 -+  "BFD_RELOC_AVR32_3U",
43.44301 -   "BFD_RELOC_390_12",
43.44302 -   "BFD_RELOC_390_GOT12",
43.44303 -   "BFD_RELOC_390_PLT32",
43.44304 ---- /dev/null
43.44305 -+++ b/bfd/libtool
43.44306 -@@ -0,0 +1,7871 @@
43.44307 -+#! /bin/bash
43.44308 -+
43.44309 -+# libtool - Provide generalized library-building support services.
43.44310 -+# Generated automatically by config.status (bfd) 2.18.atmel.1.0.1
43.44311 -+# Libtool was configured on host hcegtvedt:
43.44312 -+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
43.44313 -+#
43.44314 -+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
43.44315 -+#                 2006, 2007, 2008 Free Software Foundation, Inc.
43.44316 -+#   Written by Gordon Matzigkeit, 1996
43.44317 -+#
43.44318 -+#   This file is part of GNU Libtool.
43.44319 -+#
43.44320 -+# GNU Libtool is free software; you can redistribute it and/or
43.44321 -+# modify it under the terms of the GNU General Public License as
43.44322 -+# published by the Free Software Foundation; either version 2 of
43.44323 -+# the License, or (at your option) any later version.
43.44324 -+#
43.44325 -+# As a special exception to the GNU General Public License,
43.44326 -+# if you distribute this file as part of a program or library that
43.44327 -+# is built using GNU Libtool, you may include this file under the
43.44328 -+# same distribution terms that you use for the rest of that program.
43.44329 -+#
43.44330 -+# GNU Libtool is distributed in the hope that it will be useful,
43.44331 -+# but WITHOUT ANY WARRANTY; without even the implied warranty of
43.44332 -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
43.44333 -+# GNU General Public License for more details.
43.44334 -+#
43.44335 -+# You should have received a copy of the GNU General Public License
43.44336 -+# along with GNU Libtool; see the file COPYING.  If not, a copy
43.44337 -+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
43.44338 -+# obtained by writing to the Free Software Foundation, Inc.,
43.44339 -+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
43.44340 -+
43.44341 -+
43.44342 -+# The names of the tagged configurations supported by this script.
43.44343 -+available_tags=""
43.44344 -+
43.44345 -+# ### BEGIN LIBTOOL CONFIG
43.44346 -+
43.44347 -+# Whether or not to build shared libraries.
43.44348 -+build_libtool_libs=no
43.44349 -+
43.44350 -+# Which release of libtool.m4 was used?
43.44351 -+macro_version=2.2.4
43.44352 -+macro_revision=1.2976
43.44353 -+
43.44354 -+# Whether or not to build static libraries.
43.44355 -+build_old_libs=yes
43.44356 -+
43.44357 -+# What type of objects to build.
43.44358 -+pic_mode=default
43.44359 -+
43.44360 -+# Whether or not to optimize for fast installation.
43.44361 -+fast_install=needless
43.44362 -+
43.44363 -+# The host system.
43.44364 -+host_alias=i686-pc-linux-gnu
43.44365 -+host=i686-pc-linux-gnu
43.44366 -+host_os=linux-gnu
43.44367 -+
43.44368 -+# The build system.
43.44369 -+build_alias=i686-pc-linux-gnu
43.44370 -+build=i686-pc-linux-gnu
43.44371 -+build_os=linux-gnu
43.44372 -+
43.44373 -+# A sed program that does not truncate output.
43.44374 -+SED="/bin/sed"
43.44375 -+
43.44376 -+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
43.44377 -+Xsed="$SED -e 1s/^X//"
43.44378 -+
43.44379 -+# A grep program that handles long lines.
43.44380 -+GREP="/bin/grep"
43.44381 -+
43.44382 -+# An ERE matcher.
43.44383 -+EGREP="/bin/grep -E"
43.44384 -+
43.44385 -+# A literal string matcher.
43.44386 -+FGREP="/bin/grep -F"
43.44387 -+
43.44388 -+# A BSD- or MS-compatible name lister.
43.44389 -+NM="nm"
43.44390 -+
43.44391 -+# Whether we need soft or hard links.
43.44392 -+LN_S="ln -s"
43.44393 -+
43.44394 -+# What is the maximum length of a command?
43.44395 -+max_cmd_len=805306365
43.44396 -+
43.44397 -+# Object file suffix (normally "o").
43.44398 -+objext=o
43.44399 -+
43.44400 -+# Executable file suffix (normally "").
43.44401 -+exeext=
43.44402 -+
43.44403 -+# whether the shell understands "unset".
43.44404 -+lt_unset=unset
43.44405 -+
43.44406 -+# turn spaces into newlines.
43.44407 -+SP2NL="tr \\040 \\012"
43.44408 -+
43.44409 -+# turn newlines into spaces.
43.44410 -+NL2SP="tr \\015\\012 \\040\\040"
43.44411 -+
43.44412 -+# How to create reloadable object files.
43.44413 -+reload_flag=" -r"
43.44414 -+reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
43.44415 -+
43.44416 -+# Method to check whether dependent libraries are shared objects.
43.44417 -+deplibs_check_method="pass_all"
43.44418 -+
43.44419 -+# Command to use when deplibs_check_method == "file_magic".
43.44420 -+file_magic_cmd="\$MAGIC_CMD"
43.44421 -+
43.44422 -+# The archiver.
43.44423 -+AR="ar"
43.44424 -+AR_FLAGS="cru"
43.44425 -+
43.44426 -+# A symbol stripping program.
43.44427 -+STRIP="strip"
43.44428 -+
43.44429 -+# Commands used to install an old-style archive.
43.44430 -+RANLIB="ranlib"
43.44431 -+old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
43.44432 -+old_postuninstall_cmds=""
43.44433 -+
43.44434 -+# A C compiler.
43.44435 -+LTCC="gcc"
43.44436 -+
43.44437 -+# LTCC compiler flags.
43.44438 -+LTCFLAGS="-g -O2"
43.44439 -+
43.44440 -+# Take the output of nm and produce a listing of raw symbols and C names.
43.44441 -+global_symbol_pipe="sed -n -e 's/^.*[	 ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[	 ][	 ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
43.44442 -+
43.44443 -+# Transform the output of nm in a proper C declaration.
43.44444 -+global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'"
43.44445 -+
43.44446 -+# Transform the output of nm in a C name address pair.
43.44447 -+global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/  {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/  {\"\\2\", (void *) \\&\\2},/p'"
43.44448 -+
43.44449 -+# Transform the output of nm in a C name address pair when lib prefix is needed.
43.44450 -+global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\) \$/  {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/  {\"\\2\", (void *) \\&\\2},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/  {\"lib\\2\", (void *) \\&\\2},/p'"
43.44451 -+
43.44452 -+# The name of the directory that contains temporary libtool files.
43.44453 -+objdir=.libs
43.44454 -+
43.44455 -+# Shell to use when invoking shell scripts.
43.44456 -+SHELL="/bin/bash"
43.44457 -+
43.44458 -+# An echo program that does not interpret backslashes.
43.44459 -+ECHO="echo"
43.44460 -+
43.44461 -+# Used to examine libraries when file_magic_cmd begins with "file".
43.44462 -+MAGIC_CMD=file
43.44463 -+
43.44464 -+# Must we lock files when doing compilation?
43.44465 -+need_locks="no"
43.44466 -+
43.44467 -+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
43.44468 -+DSYMUTIL=""
43.44469 -+
43.44470 -+# Tool to change global to local symbols on Mac OS X.
43.44471 -+NMEDIT=""
43.44472 -+
43.44473 -+# Tool to manipulate fat objects and archives on Mac OS X.
43.44474 -+LIPO=""
43.44475 -+
43.44476 -+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
43.44477 -+OTOOL=""
43.44478 -+
43.44479 -+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
43.44480 -+OTOOL64=""
43.44481 -+
43.44482 -+# Old archive suffix (normally "a").
43.44483 -+libext=a
43.44484 -+
43.44485 -+# Shared library suffix (normally ".so").
43.44486 -+shrext_cmds=".so"
43.44487 -+
43.44488 -+# The commands to extract the exported symbol list from a shared archive.
43.44489 -+extract_expsyms_cmds=""
43.44490 -+
43.44491 -+# Variables whose values should be saved in libtool wrapper scripts and
43.44492 -+# restored at link time.
43.44493 -+variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
43.44494 -+
43.44495 -+# Do we need the "lib" prefix for modules?
43.44496 -+need_lib_prefix=no
43.44497 -+
43.44498 -+# Do we need a version for libraries?
43.44499 -+need_version=no
43.44500 -+
43.44501 -+# Library versioning type.
43.44502 -+version_type=linux
43.44503 -+
43.44504 -+# Shared library runtime path variable.
43.44505 -+runpath_var=LD_RUN_PATH
43.44506 -+
43.44507 -+# Shared library path variable.
43.44508 -+shlibpath_var=LD_LIBRARY_PATH
43.44509 -+
43.44510 -+# Is shlibpath searched before the hard-coded library search path?
43.44511 -+shlibpath_overrides_runpath=no
43.44512 -+
43.44513 -+# Format of library name prefix.
43.44514 -+libname_spec="lib\$name"
43.44515 -+
43.44516 -+# List of archive names.  First name is the real one, the rest are links.
43.44517 -+# The last name is the one that the linker finds with -lNAME
43.44518 -+library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
43.44519 -+
43.44520 -+# The coded name of the library, if different from the real name.
43.44521 -+soname_spec="\${libname}\${release}\${shared_ext}\$major"
43.44522 -+
43.44523 -+# Command to use after installation of a shared archive.
43.44524 -+postinstall_cmds=""
43.44525 -+
43.44526 -+# Command to use after uninstallation of a shared archive.
43.44527 -+postuninstall_cmds=""
43.44528 -+
43.44529 -+# Commands used to finish a libtool library installation in a directory.
43.44530 -+finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
43.44531 -+
43.44532 -+# As "finish_cmds", except a single script fragment to be evaled but
43.44533 -+# not shown.
43.44534 -+finish_eval=""
43.44535 -+
43.44536 -+# Whether we should hardcode library paths into libraries.
43.44537 -+hardcode_into_libs=yes
43.44538 -+
43.44539 -+# Compile-time system search path for libraries.
43.44540 -+sys_lib_search_path_spec="/usr/lib/gcc/i486-linux-gnu/4.2.4 /usr/lib /lib"
43.44541 -+
43.44542 -+# Run-time system search path for libraries.
43.44543 -+sys_lib_dlsearch_path_spec="/lib /usr/lib /lib/i486-linux-gnu /usr/lib/i486-linux-gnu /usr/lib/alsa-lib /usr/local/lib "
43.44544 -+
43.44545 -+# Whether dlopen is supported.
43.44546 -+dlopen_support=unknown
43.44547 -+
43.44548 -+# Whether dlopen of programs is supported.
43.44549 -+dlopen_self=unknown
43.44550 -+
43.44551 -+# Whether dlopen of statically linked programs is supported.
43.44552 -+dlopen_self_static=unknown
43.44553 -+
43.44554 -+# Commands to strip libraries.
43.44555 -+old_striplib="strip --strip-debug"
43.44556 -+striplib="strip --strip-unneeded"
43.44557 -+
43.44558 -+
43.44559 -+# The linker used to build libraries.
43.44560 -+LD="ld"
43.44561 -+
43.44562 -+# Commands used to build an old-style archive.
43.44563 -+old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
43.44564 -+
43.44565 -+# A language specific compiler.
43.44566 -+CC="gcc"
43.44567 -+
43.44568 -+# Is the compiler the GNU compiler?
43.44569 -+with_gcc=yes
43.44570 -+
43.44571 -+# Compiler flag to turn off builtin functions.
43.44572 -+no_builtin_flag=" -fno-builtin"
43.44573 -+
43.44574 -+# How to pass a linker flag through the compiler.
43.44575 -+wl="-Wl,"
43.44576 -+
43.44577 -+# Additional compiler flags for building library objects.
43.44578 -+pic_flag=" -fPIC -DPIC"
43.44579 -+
43.44580 -+# Compiler flag to prevent dynamic linking.
43.44581 -+link_static_flag="-static"
43.44582 -+
43.44583 -+# Does compiler simultaneously support -c and -o options?
43.44584 -+compiler_c_o="yes"
43.44585 -+
43.44586 -+# Whether or not to add -lc for building shared libraries.
43.44587 -+build_libtool_need_lc=yes
43.44588 -+
43.44589 -+# Whether or not to disallow shared libs when runtime libs are static.
43.44590 -+allow_libtool_libs_with_static_runtimes=no
43.44591 -+
43.44592 -+# Compiler flag to allow reflexive dlopens.
43.44593 -+export_dynamic_flag_spec="\${wl}--export-dynamic"
43.44594 -+
43.44595 -+# Compiler flag to generate shared objects directly from archives.
43.44596 -+whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
43.44597 -+
43.44598 -+# Whether the compiler copes with passing no objects directly.
43.44599 -+compiler_needs_object="no"
43.44600 -+
43.44601 -+# Create an old-style archive from a shared archive.
43.44602 -+old_archive_from_new_cmds=""
43.44603 -+
43.44604 -+# Create a temporary old-style archive to link instead of a shared archive.
43.44605 -+old_archive_from_expsyms_cmds=""
43.44606 -+
43.44607 -+# Commands used to build a shared archive.
43.44608 -+archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
43.44609 -+archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
43.44610 -+	    cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
43.44611 -+	    echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
43.44612 -+	    \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
43.44613 -+
43.44614 -+# Commands used to build a loadable module if different from building
43.44615 -+# a shared archive.
43.44616 -+module_cmds=""
43.44617 -+module_expsym_cmds=""
43.44618 -+
43.44619 -+# Whether we are building with GNU ld or not.
43.44620 -+with_gnu_ld="yes"
43.44621 -+
43.44622 -+# Flag that allows shared libraries with undefined symbols to be built.
43.44623 -+allow_undefined_flag=""
43.44624 -+
43.44625 -+# Flag that enforces no undefined symbols.
43.44626 -+no_undefined_flag=""
43.44627 -+
43.44628 -+# Flag to hardcode $libdir into a binary during linking.
43.44629 -+# This must work even if $libdir does not exist
43.44630 -+hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
43.44631 -+
43.44632 -+# If ld is used when linking, flag to hardcode $libdir into a binary
43.44633 -+# during linking.  This must work even if $libdir does not exist.
43.44634 -+hardcode_libdir_flag_spec_ld=""
43.44635 -+
43.44636 -+# Whether we need a single "-rpath" flag with a separated argument.
43.44637 -+hardcode_libdir_separator=""
43.44638 -+
43.44639 -+# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
43.44640 -+# DIR into the resulting binary.
43.44641 -+hardcode_direct=no
43.44642 -+
43.44643 -+# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
43.44644 -+# DIR into the resulting binary and the resulting library dependency is
43.44645 -+# "absolute",i.e impossible to change by setting ${shlibpath_var} if the
43.44646 -+# library is relocated.
43.44647 -+hardcode_direct_absolute=no
43.44648 -+
43.44649 -+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
43.44650 -+# into the resulting binary.
43.44651 -+hardcode_minus_L=no
43.44652 -+
43.44653 -+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
43.44654 -+# into the resulting binary.
43.44655 -+hardcode_shlibpath_var=unsupported
43.44656 -+
43.44657 -+# Set to "yes" if building a shared library automatically hardcodes DIR
43.44658 -+# into the library and all subsequent libraries and executables linked
43.44659 -+# against it.
43.44660 -+hardcode_automatic=no
43.44661 -+
43.44662 -+# Set to yes if linker adds runtime paths of dependent libraries
43.44663 -+# to runtime path list.
43.44664 -+inherit_rpath=no
43.44665 -+
43.44666 -+# Whether libtool must link a program against all its dependency libraries.
43.44667 -+link_all_deplibs=unknown
43.44668 -+
43.44669 -+# Fix the shell variable $srcfile for the compiler.
43.44670 -+fix_srcfile_path=""
43.44671 -+
43.44672 -+# Set to "yes" if exported symbols are required.
43.44673 -+always_export_symbols=no
43.44674 -+
43.44675 -+# The commands to list exported symbols.
43.44676 -+export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
43.44677 -+
43.44678 -+# Symbols that should not be listed in the preloaded symbols.
43.44679 -+exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
43.44680 -+
43.44681 -+# Symbols that must always be exported.
43.44682 -+include_expsyms=""
43.44683 -+
43.44684 -+# Commands necessary for linking programs (against libraries) with templates.
43.44685 -+prelink_cmds=""
43.44686 -+
43.44687 -+# Specify filename containing input files.
43.44688 -+file_list_spec=""
43.44689 -+
43.44690 -+# How to hardcode a shared library path into an executable.
43.44691 -+hardcode_action=immediate
43.44692 -+
43.44693 -+# ### END LIBTOOL CONFIG
43.44694 -+
43.44695 -+# Generated from ltmain.m4sh; do not edit by hand
43.44696 -+
43.44697 -+# ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a
43.44698 -+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
43.44699 -+
43.44700 -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
43.44701 -+# This is free software; see the source for copying conditions.  There is NO
43.44702 -+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
43.44703 -+
43.44704 -+# This program is free software; you can redistribute it and/or modify
43.44705 -+# it under the terms of the GNU General Public License as published by
43.44706 -+# the Free Software Foundation; either version 2 of the License, or
43.44707 -+# (at your option) any later version.
43.44708 -+#
43.44709 -+# This program is distributed in the hope that it will be useful, but
43.44710 -+# WITHOUT ANY WARRANTY; without even the implied warranty of
43.44711 -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
43.44712 -+# General Public License for more details.
43.44713 -+#
43.44714 -+# You should have received a copy of the GNU General Public License
43.44715 -+# along with this program; if not, write to the Free Software
43.44716 -+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
43.44717 -+#
43.44718 -+# As a special exception to the GNU General Public License, if you
43.44719 -+# distribute this file as part of a program that contains a
43.44720 -+# configuration script generated by Autoconf, you may include it under
43.44721 -+# the same distribution terms that you use for the rest of that program.
43.44722 -+
43.44723 -+# Usage: $progname [OPTION]... [MODE-ARG]...
43.44724 -+#
43.44725 -+# Provide generalized library-building support services.
43.44726 -+#
43.44727 -+#     --config             show all configuration variables
43.44728 -+#     --debug              enable verbose shell tracing
43.44729 -+# -n, --dry-run            display commands without modifying any files
43.44730 -+#     --features           display basic configuration information and exit
43.44731 -+#     --mode=MODE          use operation mode MODE
43.44732 -+#     --preserve-dup-deps  don't remove duplicate dependency libraries
43.44733 -+#     --quiet, --silent    don't print informational messages
43.44734 -+#     --tag=TAG            use configuration variables from tag TAG
43.44735 -+# -v, --verbose            print informational messages (default)
43.44736 -+#     --version            print version information
43.44737 -+# -h, --help               print short or long help message
43.44738 -+#
43.44739 -+# MODE must be one of the following:
43.44740 -+#
43.44741 -+#       clean              remove files from the build directory
43.44742 -+#       compile            compile a source file into a libtool object
43.44743 -+#       execute            automatically set library path, then run a program
43.44744 -+#       finish             complete the installation of libtool libraries
43.44745 -+#       install            install libraries or executables
43.44746 -+#       link               create a library or an executable
43.44747 -+#       uninstall          remove libraries from an installed directory
43.44748 -+#
43.44749 -+# MODE-ARGS vary depending on the MODE.
43.44750 -+# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
43.44751 -+#
43.44752 -+# When reporting a bug, please describe a test case to reproduce it and
43.44753 -+# include the following information:
43.44754 -+#
43.44755 -+#       host-triplet:	$host
43.44756 -+#       shell:		$SHELL
43.44757 -+#       compiler:		$LTCC
43.44758 -+#       compiler flags:		$LTCFLAGS
43.44759 -+#       linker:		$LD (gnu? $with_gnu_ld)
43.44760 -+#       $progname:		(GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a
43.44761 -+#       automake:		$automake_version
43.44762 -+#       autoconf:		$autoconf_version
43.44763 -+#
43.44764 -+# Report bugs to <bug-libtool@gnu.org>.
43.44765 -+
43.44766 -+PROGRAM=ltmain.sh
43.44767 -+PACKAGE=libtool
43.44768 -+VERSION=2.1a
43.44769 -+TIMESTAMP=" 1.2435 2007/03/18 18:44:42"
43.44770 -+package_revision=1.2435
43.44771 -+
43.44772 -+# Be Bourne compatible
43.44773 -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
43.44774 -+  emulate sh
43.44775 -+  NULLCMD=:
43.44776 -+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
43.44777 -+  # is contrary to our usage.  Disable this feature.
43.44778 -+  alias -g '${1+"$@"}'='"$@"'
43.44779 -+  setopt NO_GLOB_SUBST
43.44780 -+else
43.44781 -+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
43.44782 -+fi
43.44783 -+BIN_SH=xpg4; export BIN_SH # for Tru64
43.44784 -+DUALCASE=1; export DUALCASE # for MKS sh
43.44785 -+
43.44786 -+# NLS nuisances: We save the old values to restore during execute mode.
43.44787 -+# Only set LANG and LC_ALL to C if already set.
43.44788 -+# These must not be set unconditionally because not all systems understand
43.44789 -+# e.g. LANG=C (notably SCO).
43.44790 -+for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
43.44791 -+do
43.44792 -+  eval "if test \"\${$lt_var+set}\" = set; then
43.44793 -+          save_$lt_var=\$$lt_var
43.44794 -+          $lt_var=C
43.44795 -+	  export $lt_var
43.44796 -+	fi"
43.44797 -+done
43.44798 -+
43.44799 -+$lt_unset CDPATH
43.44800 -+
43.44801 -+
43.44802 -+
43.44803 -+
43.44804 -+
43.44805 -+: ${CP="cp -f"}
43.44806 -+: ${ECHO="echo"}
43.44807 -+: ${EGREP="/bin/grep -E"}
43.44808 -+: ${FGREP="/bin/grep -F"}
43.44809 -+: ${GREP="/bin/grep"}
43.44810 -+: ${LN_S="ln -s"}
43.44811 -+: ${MAKE="make"}
43.44812 -+: ${MKDIR="mkdir"}
43.44813 -+: ${MV="mv -f"}
43.44814 -+: ${RM="rm -f"}
43.44815 -+: ${SED="/bin/sed"}
43.44816 -+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
43.44817 -+: ${Xsed="$SED -e 1s/^X//"}
43.44818 -+
43.44819 -+# Global variables:
43.44820 -+EXIT_SUCCESS=0
43.44821 -+EXIT_FAILURE=1
43.44822 -+EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
43.44823 -+EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
43.44824 -+
43.44825 -+exit_status=$EXIT_SUCCESS
43.44826 -+
43.44827 -+# Make sure IFS has a sensible default
43.44828 -+lt_nl='
43.44829 -+'
43.44830 -+IFS=" 	$lt_nl"
43.44831 -+
43.44832 -+dirname="s,/[^/]*$,,"
43.44833 -+basename="s,^.*/,,"
43.44834 -+
43.44835 -+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
43.44836 -+# is ksh but when the shell is invoked as "sh" and the current value of
43.44837 -+# the _XPG environment variable is not equal to 1 (one), the special
43.44838 -+# positional parameter $0, within a function call, is the name of the
43.44839 -+# function.
43.44840 -+progpath="$0"
43.44841 -+
43.44842 -+# The name of this program:
43.44843 -+# In the unlikely event $progname began with a '-', it would play havoc with
43.44844 -+# func_echo (imagine progname=-n), so we prepend ./ in that case:
43.44845 -+progname=`$ECHO "X$progpath" | $Xsed -e "$basename" -e 's,^-,./-,'`
43.44846 -+
43.44847 -+# Make sure we have an absolute path for reexecution:
43.44848 -+case $progpath in
43.44849 -+  [\\/]*|[A-Za-z]:\\*) ;;
43.44850 -+  *[\\/]*)
43.44851 -+     progdir=`$ECHO "X$progpath" | $Xsed -e "$dirname"`
43.44852 -+     progdir=`cd "$progdir" && pwd`
43.44853 -+     progpath="$progdir/$progname"
43.44854 -+     ;;
43.44855 -+  *)
43.44856 -+     save_IFS="$IFS"
43.44857 -+     IFS=:
43.44858 -+     for progdir in $PATH; do
43.44859 -+       IFS="$save_IFS"
43.44860 -+       test -x "$progdir/$progname" && break
43.44861 -+     done
43.44862 -+     IFS="$save_IFS"
43.44863 -+     test -n "$progdir" || progdir=`pwd`
43.44864 -+     progpath="$progdir/$progname"
43.44865 -+     ;;
43.44866 -+esac
43.44867 -+
43.44868 -+# Sed substitution that helps us do robust quoting.  It backslashifies
43.44869 -+# metacharacters that are still active within double-quoted strings.
43.44870 -+Xsed="${SED}"' -e 1s/^X//'
43.44871 -+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
43.44872 -+
43.44873 -+# Same as above, but do not quote variable references.
43.44874 -+double_quote_subst='s/\(["`\\]\)/\\\1/g'
43.44875 -+
43.44876 -+# Re-`\' parameter expansions in output of double_quote_subst that were
43.44877 -+# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
43.44878 -+# in input to double_quote_subst, that '$' was protected from expansion.
43.44879 -+# Since each input `\' is now two `\'s, look for any number of runs of
43.44880 -+# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
43.44881 -+bs='\\'
43.44882 -+bs2='\\\\'
43.44883 -+bs4='\\\\\\\\'
43.44884 -+dollar='\$'
43.44885 -+sed_double_backslash="\
43.44886 -+  s/$bs4/&\\
43.44887 -+/g
43.44888 -+  s/^$bs2$dollar/$bs&/
43.44889 -+  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
43.44890 -+  s/\n//g"
43.44891 -+
43.44892 -+# Standard options:
43.44893 -+opt_dry_run=false
43.44894 -+opt_help=false
43.44895 -+opt_quiet=false
43.44896 -+opt_verbose=false
43.44897 -+
43.44898 -+# func_echo arg...
43.44899 -+# Echo program name prefixed message, along with the current mode
43.44900 -+# name if it has been set yet.
43.44901 -+func_echo ()
43.44902 -+{
43.44903 -+    $ECHO "$progname${mode+: }$mode: "${1+"$@"}
43.44904 -+}
43.44905 -+
43.44906 -+# func_verbose arg...
43.44907 -+# Echo program name prefixed message in verbose mode only.
43.44908 -+func_verbose ()
43.44909 -+{
43.44910 -+    $opt_verbose && func_echo ${1+"$@"}
43.44911 -+
43.44912 -+    # A bug in bash halts the script if the last line of a function
43.44913 -+    # fails when set -e is in force, so we need another command to
43.44914 -+    # work around that:
43.44915 -+    :
43.44916 -+}
43.44917 -+
43.44918 -+# func_error arg...
43.44919 -+# Echo program name prefixed message to standard error.
43.44920 -+func_error ()
43.44921 -+{
43.44922 -+    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
43.44923 -+}
43.44924 -+
43.44925 -+# func_warning arg...
43.44926 -+# Echo program name prefixed warning message to standard error.
43.44927 -+func_warning ()
43.44928 -+{
43.44929 -+    $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
43.44930 -+}
43.44931 -+
43.44932 -+# func_fatal_error arg...
43.44933 -+# Echo program name prefixed message to standard error, and exit.
43.44934 -+func_fatal_error ()
43.44935 -+{
43.44936 -+    func_error ${1+"$@"}
43.44937 -+    exit $EXIT_FAILURE
43.44938 -+}
43.44939 -+
43.44940 -+# func_fatal_help arg...
43.44941 -+# Echo program name prefixed message to standard error, followed by
43.44942 -+# a help hint, and exit.
43.44943 -+func_fatal_help ()
43.44944 -+{
43.44945 -+    func_error ${1+"$@"}
43.44946 -+    func_fatal_error "$help"
43.44947 -+}
43.44948 -+help="Try \`$progname --help' for more information."  ## default
43.44949 -+
43.44950 -+
43.44951 -+# func_grep expression filename
43.44952 -+# Check whether EXPRESSION matches any line of FILENAME, without output.
43.44953 -+func_grep ()
43.44954 -+{
43.44955 -+    $GREP "$1" "$2" >/dev/null 2>&1
43.44956 -+}
43.44957 -+
43.44958 -+
43.44959 -+# func_mkdir_p directory-path
43.44960 -+# Make sure the entire path to DIRECTORY-PATH is available.
43.44961 -+func_mkdir_p ()
43.44962 -+{
43.44963 -+    my_directory_path="$1"
43.44964 -+    my_dir_list=
43.44965 -+
43.44966 -+    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
43.44967 -+
43.44968 -+      # Protect directory names starting with `-'
43.44969 -+      case $my_directory_path in
43.44970 -+        -*) my_directory_path="./$my_directory_path" ;;
43.44971 -+      esac
43.44972 -+
43.44973 -+      # While some portion of DIR does not yet exist...
43.44974 -+      while test ! -d "$my_directory_path"; do
43.44975 -+        # ...make a list in topmost first order.  Use a colon delimited
43.44976 -+	# list incase some portion of path contains whitespace.
43.44977 -+        my_dir_list="$my_directory_path:$my_dir_list"
43.44978 -+
43.44979 -+        # If the last portion added has no slash in it, the list is done
43.44980 -+        case $my_directory_path in */*) ;; *) break ;; esac
43.44981 -+
43.44982 -+        # ...otherwise throw away the child directory and loop
43.44983 -+        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
43.44984 -+      done
43.44985 -+      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
43.44986 -+
43.44987 -+      save_mkdir_p_IFS="$IFS"; IFS=':'
43.44988 -+      for my_dir in $my_dir_list; do
43.44989 -+	IFS="$save_mkdir_p_IFS"
43.44990 -+        # mkdir can fail with a `File exist' error if two processes
43.44991 -+        # try to create one of the directories concurrently.  Don't
43.44992 -+        # stop in that case!
43.44993 -+        $MKDIR "$my_dir" 2>/dev/null || :
43.44994 -+      done
43.44995 -+      IFS="$save_mkdir_p_IFS"
43.44996 -+
43.44997 -+      # Bail out if we (or some other process) failed to create a directory.
43.44998 -+      test -d "$my_directory_path" || \
43.44999 -+        func_fatal_error "Failed to create \`$1'"
43.45000 -+    fi
43.45001 -+}
43.45002 -+
43.45003 -+
43.45004 -+# func_mktempdir [string]
43.45005 -+# Make a temporary directory that won't clash with other running
43.45006 -+# libtool processes, and avoids race conditions if possible.  If
43.45007 -+# given, STRING is the basename for that directory.
43.45008 -+func_mktempdir ()
43.45009 -+{
43.45010 -+    my_template="${TMPDIR-/tmp}/${1-$progname}"
43.45011 -+
43.45012 -+    if test "$opt_dry_run" = ":"; then
43.45013 -+      # Return a directory name, but don't create it in dry-run mode
43.45014 -+      my_tmpdir="${my_template}-$$"
43.45015 -+    else
43.45016 -+
43.45017 -+      # If mktemp works, use that first and foremost
43.45018 -+      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
43.45019 -+
43.45020 -+      if test ! -d "$my_tmpdir"; then
43.45021 -+        # Failing that, at least try and use $RANDOM to avoid a race
43.45022 -+        my_tmpdir="${my_template}-${RANDOM-0}$$"
43.45023 -+
43.45024 -+        save_mktempdir_umask=`umask`
43.45025 -+        umask 0077
43.45026 -+        $MKDIR "$my_tmpdir"
43.45027 -+        umask $save_mktempdir_umask
43.45028 -+      fi
43.45029 -+
43.45030 -+      # If we're not in dry-run mode, bomb out on failure
43.45031 -+      test -d "$my_tmpdir" || \
43.45032 -+        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
43.45033 -+    fi
43.45034 -+
43.45035 -+    $ECHO "X$my_tmpdir" | $Xsed
43.45036 -+}
43.45037 -+
43.45038 -+
43.45039 -+# func_quote_for_eval arg
43.45040 -+# Aesthetically quote ARG to be evaled later.
43.45041 -+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
43.45042 -+# is double-quoted, suitable for a subsequent eval, whereas
43.45043 -+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
43.45044 -+# which are still active within double quotes backslashified.
43.45045 -+func_quote_for_eval ()
43.45046 -+{
43.45047 -+    case $1 in
43.45048 -+      *[\\\`\"\$]*)
43.45049 -+	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
43.45050 -+      *)
43.45051 -+        func_quote_for_eval_unquoted_result="$1" ;;
43.45052 -+    esac
43.45053 -+
43.45054 -+    case $func_quote_for_eval_unquoted_result in
43.45055 -+      # Double-quote args containing shell metacharacters to delay
43.45056 -+      # word splitting, command substitution and and variable
43.45057 -+      # expansion for a subsequent eval.
43.45058 -+      # Many Bourne shells cannot handle close brackets correctly
43.45059 -+      # in scan sets, so we specify it separately.
43.45060 -+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
43.45061 -+        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
43.45062 -+        ;;
43.45063 -+      *)
43.45064 -+        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
43.45065 -+    esac
43.45066 -+}
43.45067 -+
43.45068 -+
43.45069 -+# func_quote_for_expand arg
43.45070 -+# Aesthetically quote ARG to be evaled later; same as above,
43.45071 -+# but do not quote variable references.
43.45072 -+func_quote_for_expand ()
43.45073 -+{
43.45074 -+    case $1 in
43.45075 -+      *[\\\`\"]*)
43.45076 -+	my_arg=`$ECHO "X$1" | $Xsed \
43.45077 -+	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
43.45078 -+      *)
43.45079 -+        my_arg="$1" ;;
43.45080 -+    esac
43.45081 -+
43.45082 -+    case $my_arg in
43.45083 -+      # Double-quote args containing shell metacharacters to delay
43.45084 -+      # word splitting and command substitution for a subsequent eval.
43.45085 -+      # Many Bourne shells cannot handle close brackets correctly
43.45086 -+      # in scan sets, so we specify it separately.
43.45087 -+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
43.45088 -+        my_arg="\"$my_arg\""
43.45089 -+        ;;
43.45090 -+    esac
43.45091 -+
43.45092 -+    func_quote_for_expand_result="$my_arg"
43.45093 -+}
43.45094 -+
43.45095 -+
43.45096 -+# func_show_eval cmd [fail_exp]
43.45097 -+# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
43.45098 -+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
43.45099 -+# is given, then evaluate it.
43.45100 -+func_show_eval ()
43.45101 -+{
43.45102 -+    my_cmd="$1"
43.45103 -+    my_fail_exp="${2-:}"
43.45104 -+
43.45105 -+    ${opt_silent-false} || {
43.45106 -+      func_quote_for_expand "$my_cmd"
43.45107 -+      eval "func_echo $func_quote_for_expand_result"
43.45108 -+    }
43.45109 -+
43.45110 -+    if ${opt_dry_run-false}; then :; else
43.45111 -+      eval "$my_cmd"
43.45112 -+      my_status=$?
43.45113 -+      if test "$my_status" -eq 0; then :; else
43.45114 -+	eval "(exit $my_status); $my_fail_exp"
43.45115 -+      fi
43.45116 -+    fi
43.45117 -+}
43.45118 -+
43.45119 -+
43.45120 -+
43.45121 -+
43.45122 -+
43.45123 -+# func_version
43.45124 -+# Echo version message to standard output and exit.
43.45125 -+func_version ()
43.45126 -+{
43.45127 -+    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
43.45128 -+        s/^# //
43.45129 -+	s/^# *$//
43.45130 -+        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
43.45131 -+        p
43.45132 -+     }' < "$progpath"
43.45133 -+     exit $?
43.45134 -+}
43.45135 -+
43.45136 -+# func_usage
43.45137 -+# Echo short help message to standard output and exit.
43.45138 -+func_usage ()
43.45139 -+{
43.45140 -+    $SED -n '/^# Usage:/,/# -h/ {
43.45141 -+        s/^# //
43.45142 -+	s/^# *$//
43.45143 -+	s/\$progname/'$progname'/
43.45144 -+	p
43.45145 -+    }' < "$progpath"
43.45146 -+    $ECHO
43.45147 -+    $ECHO "run \`$progname --help | more' for full usage"
43.45148 -+    exit $?
43.45149 -+}
43.45150 -+
43.45151 -+# func_help
43.45152 -+# Echo long help message to standard output and exit.
43.45153 -+func_help ()
43.45154 -+{
43.45155 -+    $SED -n '/^# Usage:/,/# Report bugs to/ {
43.45156 -+        s/^# //
43.45157 -+	s/^# *$//
43.45158 -+	s*\$progname*'$progname'*
43.45159 -+	s*\$host*'"$host"'*
43.45160 -+	s*\$SHELL*'"$SHELL"'*
43.45161 -+	s*\$LTCC*'"$LTCC"'*
43.45162 -+	s*\$LTCFLAGS*'"$LTCFLAGS"'*
43.45163 -+	s*\$LD*'"$LD"'*
43.45164 -+	s/\$with_gnu_ld/'"$with_gnu_ld"'/
43.45165 -+	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
43.45166 -+	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
43.45167 -+	p
43.45168 -+     }' < "$progpath"
43.45169 -+    exit $?
43.45170 -+}
43.45171 -+
43.45172 -+# func_missing_arg argname
43.45173 -+# Echo program name prefixed message to standard error and set global
43.45174 -+# exit_cmd.
43.45175 -+func_missing_arg ()
43.45176 -+{
43.45177 -+    func_error "missing argument for $1"
43.45178 -+    exit_cmd=exit
43.45179 -+}
43.45180 -+
43.45181 -+exit_cmd=:
43.45182 -+
43.45183 -+
43.45184 -+
43.45185 -+
43.45186 -+
43.45187 -+# Check that we have a working $ECHO.
43.45188 -+if test "X$1" = X--no-reexec; then
43.45189 -+  # Discard the --no-reexec flag, and continue.
43.45190 -+  shift
43.45191 -+elif test "X$1" = X--fallback-echo; then
43.45192 -+  # Avoid inline document here, it may be left over
43.45193 -+  :
43.45194 -+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
43.45195 -+  # Yippee, $ECHO works!
43.45196 -+  :
43.45197 -+else
43.45198 -+  # Restart under the correct shell, and then maybe $ECHO will work.
43.45199 -+  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
43.45200 -+fi
43.45201 -+
43.45202 -+if test "X$1" = X--fallback-echo; then
43.45203 -+  # used as fallback echo
43.45204 -+  shift
43.45205 -+  cat <<EOF
43.45206 -+$*
43.45207 -+EOF
43.45208 -+  exit $EXIT_SUCCESS
43.45209 -+fi
43.45210 -+
43.45211 -+magic="%%%MAGIC variable%%%"
43.45212 -+
43.45213 -+
43.45214 -+# Global variables.
43.45215 -+# $mode is unset
43.45216 -+nonopt=
43.45217 -+execute_dlfiles=
43.45218 -+preserve_args=
43.45219 -+lo2o="s/\\.lo\$/.${objext}/"
43.45220 -+o2lo="s/\\.${objext}\$/.lo/"
43.45221 -+extracted_archives=
43.45222 -+extracted_serial=0
43.45223 -+
43.45224 -+opt_dry_run=false
43.45225 -+opt_duplicate_deps=false
43.45226 -+opt_silent=false
43.45227 -+opt_debug=:
43.45228 -+
43.45229 -+# If this variable is set in any of the actions, the command in it
43.45230 -+# will be execed at the end.  This prevents here-documents from being
43.45231 -+# left over by shells.
43.45232 -+exec_cmd=
43.45233 -+
43.45234 -+# func_fatal_configuration arg...
43.45235 -+# Echo program name prefixed message to standard error, followed by
43.45236 -+# a configuration failure hint, and exit.
43.45237 -+func_fatal_configuration ()
43.45238 -+{
43.45239 -+    func_error ${1+"$@"}
43.45240 -+    func_error "See the $PACKAGE documentation for more information."
43.45241 -+    func_fatal_error "Fatal configuration error."
43.45242 -+}
43.45243 -+
43.45244 -+
43.45245 -+# func_config
43.45246 -+# Display the configuration for all the tags in this script.
43.45247 -+func_config ()
43.45248 -+{
43.45249 -+    re_begincf='^# ### BEGIN LIBTOOL'
43.45250 -+    re_endcf='^# ### END LIBTOOL'
43.45251 -+
43.45252 -+    # Default configuration.
43.45253 -+    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
43.45254 -+
43.45255 -+    # Now print the configurations for the tags.
43.45256 -+    for tagname in $taglist; do
43.45257 -+      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
43.45258 -+    done
43.45259 -+
43.45260 -+    exit $?
43.45261 -+}
43.45262 -+
43.45263 -+# func_features
43.45264 -+# Display the features supported by this script.
43.45265 -+func_features ()
43.45266 -+{
43.45267 -+    $ECHO "host: $host"
43.45268 -+    if test "$build_libtool_libs" = yes; then
43.45269 -+      $ECHO "enable shared libraries"
43.45270 -+    else
43.45271 -+      $ECHO "disable shared libraries"
43.45272 -+    fi
43.45273 -+    if test "$build_old_libs" = yes; then
43.45274 -+      $ECHO "enable static libraries"
43.45275 -+    else
43.45276 -+      $ECHO "disable static libraries"
43.45277 -+    fi
43.45278 -+
43.45279 -+    exit $?
43.45280 -+}
43.45281 -+
43.45282 -+# func_enable_tag tagname
43.45283 -+# Verify that TAGNAME is valid, and either flag an error and exit, or
43.45284 -+# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
43.45285 -+# variable here.
43.45286 -+func_enable_tag ()
43.45287 -+{
43.45288 -+  # Global variable:
43.45289 -+  tagname="$1"
43.45290 -+
43.45291 -+  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
43.45292 -+  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
43.45293 -+  sed_extractcf="/$re_begincf/,/$re_endcf/p"
43.45294 -+
43.45295 -+  # Validate tagname.
43.45296 -+  case $tagname in
43.45297 -+    *[!-_A-Za-z0-9,/]*)
43.45298 -+      func_fatal_error "invalid tag name: $tagname"
43.45299 -+      ;;
43.45300 -+  esac
43.45301 -+
43.45302 -+  # Don't test for the "default" C tag, as we know it's
43.45303 -+  # there but not specially marked.
43.45304 -+  case $tagname in
43.45305 -+    CC) ;;
43.45306 -+    *)
43.45307 -+      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
43.45308 -+	taglist="$taglist $tagname"
43.45309 -+
43.45310 -+	# Evaluate the configuration.  Be careful to quote the path
43.45311 -+	# and the sed script, to avoid splitting on whitespace, but
43.45312 -+	# also don't use non-portable quotes within backquotes within
43.45313 -+	# quotes we have to do it in 2 steps:
43.45314 -+	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
43.45315 -+	eval "$extractedcf"
43.45316 -+      else
43.45317 -+	func_error "ignoring unknown tag $tagname"
43.45318 -+      fi
43.45319 -+      ;;
43.45320 -+  esac
43.45321 -+}
43.45322 -+
43.45323 -+
43.45324 -+func_mode_help ()
43.45325 -+{
43.45326 -+    # We need to display help for each of the modes.
43.45327 -+    case $mode in
43.45328 -+      "")
43.45329 -+        # Generic help is extracted from the usage comments
43.45330 -+        # at the start of this file.
43.45331 -+        func_help
43.45332 -+        ;;
43.45333 -+
43.45334 -+      clean)
43.45335 -+        $ECHO \
43.45336 -+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
43.45337 -+
43.45338 -+Remove files from the build directory.
43.45339 -+
43.45340 -+RM is the name of the program to use to delete files associated with each FILE
43.45341 -+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
43.45342 -+to RM.
43.45343 -+
43.45344 -+If FILE is a libtool library, object or program, all the files associated
43.45345 -+with it are deleted. Otherwise, only FILE itself is deleted using RM."
43.45346 -+        ;;
43.45347 -+
43.45348 -+      compile)
43.45349 -+      $ECHO \
43.45350 -+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
43.45351 -+
43.45352 -+Compile a source file into a libtool library object.
43.45353 -+
43.45354 -+This mode accepts the following additional options:
43.45355 -+
43.45356 -+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
43.45357 -+  -no-suppress      do not suppress compiler output for multiple passes
43.45358 -+  -prefer-pic       try to building PIC objects only
43.45359 -+  -prefer-non-pic   try to building non-PIC objects only
43.45360 -+  -shared           do not build a \`.o' file suitable for static linking
43.45361 -+  -static           only build a \`.o' file suitable for static linking
43.45362 -+
43.45363 -+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
43.45364 -+from the given SOURCEFILE.
43.45365 -+
43.45366 -+The output file name is determined by removing the directory component from
43.45367 -+SOURCEFILE, then substituting the C source code suffix \`.c' with the
43.45368 -+library object suffix, \`.lo'."
43.45369 -+        ;;
43.45370 -+
43.45371 -+      execute)
43.45372 -+        $ECHO \
43.45373 -+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
43.45374 -+
43.45375 -+Automatically set library path, then run a program.
43.45376 -+
43.45377 -+This mode accepts the following additional options:
43.45378 -+
43.45379 -+  -dlopen FILE      add the directory containing FILE to the library path
43.45380 -+
43.45381 -+This mode sets the library path environment variable according to \`-dlopen'
43.45382 -+flags.
43.45383 -+
43.45384 -+If any of the ARGS are libtool executable wrappers, then they are translated
43.45385 -+into their corresponding uninstalled binary, and any of their required library
43.45386 -+directories are added to the library path.
43.45387 -+
43.45388 -+Then, COMMAND is executed, with ARGS as arguments."
43.45389 -+        ;;
43.45390 -+
43.45391 -+      finish)
43.45392 -+        $ECHO \
43.45393 -+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
43.45394 -+
43.45395 -+Complete the installation of libtool libraries.
43.45396 -+
43.45397 -+Each LIBDIR is a directory that contains libtool libraries.
43.45398 -+
43.45399 -+The commands that this mode executes may require superuser privileges.  Use
43.45400 -+the \`--dry-run' option if you just want to see what would be executed."
43.45401 -+        ;;
43.45402 -+
43.45403 -+      install)
43.45404 -+        $ECHO \
43.45405 -+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
43.45406 -+
43.45407 -+Install executables or libraries.
43.45408 -+
43.45409 -+INSTALL-COMMAND is the installation command.  The first component should be
43.45410 -+either the \`install' or \`cp' program.
43.45411 -+
43.45412 -+The following components of INSTALL-COMMAND are treated specially:
43.45413 -+
43.45414 -+  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
43.45415 -+
43.45416 -+The rest of the components are interpreted as arguments to that command (only
43.45417 -+BSD-compatible install options are recognized)."
43.45418 -+        ;;
43.45419 -+
43.45420 -+      link)
43.45421 -+        $ECHO \
43.45422 -+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
43.45423 -+
43.45424 -+Link object files or libraries together to form another library, or to
43.45425 -+create an executable program.
43.45426 -+
43.45427 -+LINK-COMMAND is a command using the C compiler that you would use to create
43.45428 -+a program from several object files.
43.45429 -+
43.45430 -+The following components of LINK-COMMAND are treated specially:
43.45431 -+
43.45432 -+  -all-static       do not do any dynamic linking at all
43.45433 -+  -avoid-version    do not add a version suffix if possible
43.45434 -+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
43.45435 -+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
43.45436 -+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
43.45437 -+  -export-symbols SYMFILE
43.45438 -+                    try to export only the symbols listed in SYMFILE
43.45439 -+  -export-symbols-regex REGEX
43.45440 -+                    try to export only the symbols matching REGEX
43.45441 -+  -LLIBDIR          search LIBDIR for required installed libraries
43.45442 -+  -lNAME            OUTPUT-FILE requires the installed library libNAME
43.45443 -+  -module           build a library that can dlopened
43.45444 -+  -no-fast-install  disable the fast-install mode
43.45445 -+  -no-install       link a not-installable executable
43.45446 -+  -no-undefined     declare that a library does not refer to external symbols
43.45447 -+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
43.45448 -+  -objectlist FILE  Use a list of object files found in FILE to specify objects
43.45449 -+  -precious-files-regex REGEX
43.45450 -+                    don't remove output files matching REGEX
43.45451 -+  -release RELEASE  specify package release information
43.45452 -+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
43.45453 -+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
43.45454 -+  -shared           only do dynamic linking of libtool libraries
43.45455 -+  -shrext SUFFIX    override the standard shared library file extension
43.45456 -+  -static           do not do any dynamic linking of uninstalled libtool libraries
43.45457 -+  -static-libtool-libs
43.45458 -+                    do not do any dynamic linking of libtool libraries
43.45459 -+  -version-info CURRENT[:REVISION[:AGE]]
43.45460 -+                    specify library version info [each variable defaults to 0]
43.45461 -+  -weak LIBNAME     declare that the target provides the LIBNAME interface
43.45462 -+
43.45463 -+All other options (arguments beginning with \`-') are ignored.
43.45464 -+
43.45465 -+Every other argument is treated as a filename.  Files ending in \`.la' are
43.45466 -+treated as uninstalled libtool libraries, other files are standard or library
43.45467 -+object files.
43.45468 -+
43.45469 -+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
43.45470 -+only library objects (\`.lo' files) may be specified, and \`-rpath' is
43.45471 -+required, except when creating a convenience library.
43.45472 -+
43.45473 -+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
43.45474 -+using \`ar' and \`ranlib', or on Windows using \`lib'.
43.45475 -+
43.45476 -+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
43.45477 -+is created, otherwise an executable program is created."
43.45478 -+        ;;
43.45479 -+
43.45480 -+      uninstall)
43.45481 -+        $ECHO \
43.45482 -+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
43.45483 -+
43.45484 -+Remove libraries from an installation directory.
43.45485 -+
43.45486 -+RM is the name of the program to use to delete files associated with each FILE
43.45487 -+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
43.45488 -+to RM.
43.45489 -+
43.45490 -+If FILE is a libtool library, all the files associated with it are deleted.
43.45491 -+Otherwise, only FILE itself is deleted using RM."
43.45492 -+        ;;
43.45493 -+
43.45494 -+      *)
43.45495 -+        func_fatal_help "invalid operation mode \`$mode'"
43.45496 -+        ;;
43.45497 -+    esac
43.45498 -+
43.45499 -+    $ECHO
43.45500 -+    $ECHO "Try \`$progname --help' for more information about other modes."
43.45501 -+
43.45502 -+    exit $?
43.45503 -+}
43.45504 -+
43.45505 -+# Generated shell functions inserted here.
43.45506 -+
43.45507 -+# func_dirname file append nondir_replacement
43.45508 -+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
43.45509 -+# otherwise set result to NONDIR_REPLACEMENT.
43.45510 -+func_dirname ()
43.45511 -+{
43.45512 -+  case ${1} in
43.45513 -+    */*) func_dirname_result="${1%/*}${2}" ;;
43.45514 -+    *  ) func_dirname_result="${3}" ;;
43.45515 -+  esac
43.45516 -+}
43.45517 -+
43.45518 -+# func_basename file
43.45519 -+func_basename ()
43.45520 -+{
43.45521 -+  func_basename_result="${1##*/}"
43.45522 -+}
43.45523 -+
43.45524 -+# func_dirname_and_basename file append nondir_replacement
43.45525 -+# perform func_basename and func_dirname in a single function
43.45526 -+# call:
43.45527 -+#   dirname:  Compute the dirname of FILE.  If nonempty,
43.45528 -+#             add APPEND to the result, otherwise set result
43.45529 -+#             to NONDIR_REPLACEMENT.
43.45530 -+#             value returned in "$func_dirname_result"
43.45531 -+#   basename: Compute filename of FILE.
43.45532 -+#             value retuned in "$func_basename_result"
43.45533 -+# Implementation must be kept synchronized with func_dirname
43.45534 -+# and func_basename. For efficiency, we do not delegate to
43.45535 -+# those functions but instead duplicate the functionality here.
43.45536 -+func_dirname_and_basename ()
43.45537 -+{
43.45538 -+  case ${1} in
43.45539 -+    */*) func_dirname_result="${1%/*}${2}" ;;
43.45540 -+    *  ) func_dirname_result="${3}" ;;
43.45541 -+  esac
43.45542 -+  func_basename_result="${1##*/}"
43.45543 -+}
43.45544 -+
43.45545 -+# func_stripname prefix suffix name
43.45546 -+# strip PREFIX and SUFFIX off of NAME.
43.45547 -+# PREFIX and SUFFIX must not contain globbing or regex special
43.45548 -+# characters, hashes, percent signs, but SUFFIX may contain a leading
43.45549 -+# dot (in which case that matches only a dot).
43.45550 -+func_stripname ()
43.45551 -+{
43.45552 -+  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
43.45553 -+  # positional parameters, so assign one to ordinary parameter first.
43.45554 -+  func_stripname_result=${3}
43.45555 -+  func_stripname_result=${func_stripname_result#"${1}"}
43.45556 -+  func_stripname_result=${func_stripname_result%"${2}"}
43.45557 -+}
43.45558 -+
43.45559 -+# func_opt_split
43.45560 -+func_opt_split ()
43.45561 -+{
43.45562 -+  func_opt_split_opt=${1%%=*}
43.45563 -+  func_opt_split_arg=${1#*=}
43.45564 -+}
43.45565 -+
43.45566 -+# func_lo2o object
43.45567 -+func_lo2o ()
43.45568 -+{
43.45569 -+  case ${1} in
43.45570 -+    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
43.45571 -+    *)    func_lo2o_result=${1} ;;
43.45572 -+  esac
43.45573 -+}
43.45574 -+
43.45575 -+# func_xform libobj-or-source
43.45576 -+func_xform ()
43.45577 -+{
43.45578 -+  func_xform_result=${1%.*}.lo
43.45579 -+}
43.45580 -+
43.45581 -+# func_arith arithmetic-term...
43.45582 -+func_arith ()
43.45583 -+{
43.45584 -+  func_arith_result=$(( $* ))
43.45585 -+}
43.45586 -+
43.45587 -+# func_len string
43.45588 -+# STRING may not start with a hyphen.
43.45589 -+func_len ()
43.45590 -+{
43.45591 -+  func_len_result=${#1}
43.45592 -+}
43.45593 -+
43.45594 -+
43.45595 -+# func_append var value
43.45596 -+# Append VALUE to the end of shell variable VAR.
43.45597 -+func_append ()
43.45598 -+{
43.45599 -+  eval "$1+=\$2"
43.45600 -+}
43.45601 -+# Generated shell functions inserted here.
43.45602 -+
43.45603 -+
43.45604 -+# Parse options once, thoroughly.  This comes as soon as possible in
43.45605 -+# the script to make things like `libtool --version' happen quickly.
43.45606 -+{
43.45607 -+
43.45608 -+  # Shorthand for --mode=foo, only valid as the first argument
43.45609 -+  case $1 in
43.45610 -+  clean|clea|cle|cl)
43.45611 -+    shift; set dummy --mode clean ${1+"$@"}; shift
43.45612 -+    ;;
43.45613 -+  compile|compil|compi|comp|com|co|c)
43.45614 -+    shift; set dummy --mode compile ${1+"$@"}; shift
43.45615 -+    ;;
43.45616 -+  execute|execut|execu|exec|exe|ex|e)
43.45617 -+    shift; set dummy --mode execute ${1+"$@"}; shift
43.45618 -+    ;;
43.45619 -+  finish|finis|fini|fin|fi|f)
43.45620 -+    shift; set dummy --mode finish ${1+"$@"}; shift
43.45621 -+    ;;
43.45622 -+  install|instal|insta|inst|ins|in|i)
43.45623 -+    shift; set dummy --mode install ${1+"$@"}; shift
43.45624 -+    ;;
43.45625 -+  link|lin|li|l)
43.45626 -+    shift; set dummy --mode link ${1+"$@"}; shift
43.45627 -+    ;;
43.45628 -+  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
43.45629 -+    shift; set dummy --mode uninstall ${1+"$@"}; shift
43.45630 -+    ;;
43.45631 -+  esac
43.45632 -+
43.45633 -+  # Parse non-mode specific arguments:
43.45634 -+  while test "$#" -gt 0; do
43.45635 -+    opt="$1"
43.45636 -+    shift
43.45637 -+
43.45638 -+    case $opt in
43.45639 -+      --config)		func_config 					;;
43.45640 -+
43.45641 -+      --debug)		preserve_args="$preserve_args $opt"
43.45642 -+	    		func_echo "enabling shell trace mode"
43.45643 -+	    		opt_debug='set -x'
43.45644 -+			$opt_debug
43.45645 -+			;;
43.45646 -+
43.45647 -+      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
43.45648 -+			execute_dlfiles="$execute_dlfiles $1"
43.45649 -+			shift
43.45650 -+			;;
43.45651 -+
43.45652 -+      --dry-run | -n)	opt_dry_run=:					;;
43.45653 -+      --features)       func_features					;;
43.45654 -+      --finish)		mode="finish"					;;
43.45655 -+
43.45656 -+      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
43.45657 -+	    		case $1 in
43.45658 -+			  # Valid mode arguments:
43.45659 -+			  clean)	;;
43.45660 -+			  compile)	;;
43.45661 -+			  execute)	;;
43.45662 -+			  finish)	;;
43.45663 -+			  install)	;;
43.45664 -+			  link)		;;
43.45665 -+			  relink)	;;
43.45666 -+			  uninstall)	;;
43.45667 -+
43.45668 -+			  # Catch anything else as an error
43.45669 -+			  *) func_error "invalid argument for $opt"
43.45670 -+			     exit_cmd=exit
43.45671 -+			     break
43.45672 -+			     ;;
43.45673 -+		        esac
43.45674 -+
43.45675 -+	    		mode="$1"
43.45676 -+			shift
43.45677 -+			;;
43.45678 -+
43.45679 -+      --preserve-dup-deps)
43.45680 -+      			opt_duplicate_deps=:				;;
43.45681 -+
43.45682 -+      --quiet|--silent)	preserve_args="$preserve_args $opt"
43.45683 -+	    		opt_silent=:
43.45684 -+			;;
43.45685 -+
43.45686 -+      --verbose| -v)	preserve_args="$preserve_args $opt"
43.45687 -+	    		opt_silent=false
43.45688 -+			;;
43.45689 -+
43.45690 -+      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
43.45691 -+			preserve_args="$preserve_args $opt $1"
43.45692 -+			func_enable_tag "$1"	# tagname is set here
43.45693 -+			shift
43.45694 -+			;;
43.45695 -+
43.45696 -+      # Separate optargs to long options:
43.45697 -+      -dlopen=*|--mode=*|--tag=*)
43.45698 -+			func_opt_split "$opt"
43.45699 -+			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
43.45700 -+			shift
43.45701 -+			;;
43.45702 -+
43.45703 -+      -\?|-h)		func_usage					;;
43.45704 -+      --help)		opt_help=:					;;
43.45705 -+      --version)	func_version					;;
43.45706 -+
43.45707 -+      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
43.45708 -+
43.45709 -+      *)		nonopt="$opt"
43.45710 -+      			break
43.45711 -+			;;
43.45712 -+    esac
43.45713 -+  done
43.45714 -+
43.45715 -+  # Now that we've collected a possible --mode arg, show help if necessary
43.45716 -+  $opt_help && func_mode_help
43.45717 -+
43.45718 -+  case $host in
43.45719 -+    *cygwin* | *mingw* | *pw32*)
43.45720 -+      # don't eliminate duplications in $postdeps and $predeps
43.45721 -+      opt_duplicate_compiler_generated_deps=:
43.45722 -+      ;;
43.45723 -+    *)
43.45724 -+      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
43.45725 -+      ;;
43.45726 -+  esac
43.45727 -+
43.45728 -+  # Having warned about all mis-specified options, bail out if
43.45729 -+  # anything was wrong.
43.45730 -+  $exit_cmd $EXIT_FAILURE
43.45731 -+}
43.45732 -+
43.45733 -+# func_check_version_match
43.45734 -+# Ensure that we are using m4 macros, and libtool script from the same
43.45735 -+# release of libtool.
43.45736 -+func_check_version_match ()
43.45737 -+{
43.45738 -+  if test "$package_revision" != "$macro_revision"; then
43.45739 -+    if test "$VERSION" != "$macro_version"; then
43.45740 -+      if test -z "$macro_version"; then
43.45741 -+        cat >&2 <<_LT_EOF
43.45742 -+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
43.45743 -+$progname: definition of this LT_INIT comes from an older release.
43.45744 -+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
43.45745 -+$progname: and run autoconf again.
43.45746 -+_LT_EOF
43.45747 -+      else
43.45748 -+        cat >&2 <<_LT_EOF
43.45749 -+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
43.45750 -+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
43.45751 -+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
43.45752 -+$progname: and run autoconf again.
43.45753 -+_LT_EOF
43.45754 -+      fi
43.45755 -+    else
43.45756 -+      cat >&2 <<_LT_EOF
43.45757 -+$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
43.45758 -+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
43.45759 -+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
43.45760 -+$progname: of $PACKAGE $VERSION and run autoconf again.
43.45761 -+_LT_EOF
43.45762 -+    fi
43.45763 -+
43.45764 -+    exit $EXIT_MISMATCH
43.45765 -+  fi
43.45766 -+}
43.45767 -+
43.45768 -+
43.45769 -+## ----------- ##
43.45770 -+##    Main.    ##
43.45771 -+## ----------- ##
43.45772 -+
43.45773 -+{
43.45774 -+  # Sanity checks first:
43.45775 -+  func_check_version_match
43.45776 -+
43.45777 -+  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
43.45778 -+    func_fatal_configuration "not configured to build any kind of library"
43.45779 -+  fi
43.45780 -+
43.45781 -+  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
43.45782 -+
43.45783 -+
43.45784 -+  # Darwin sucks
43.45785 -+  eval std_shrext=\"$shrext_cmds\"
43.45786 -+
43.45787 -+
43.45788 -+  # Only execute mode is allowed to have -dlopen flags.
43.45789 -+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
43.45790 -+    func_error "unrecognized option \`-dlopen'"
43.45791 -+    $ECHO "$help" 1>&2
43.45792 -+    exit $EXIT_FAILURE
43.45793 -+  fi
43.45794 -+
43.45795 -+  # Change the help message to a mode-specific one.
43.45796 -+  generic_help="$help"
43.45797 -+  help="Try \`$progname --help --mode=$mode' for more information."
43.45798 -+}
43.45799 -+
43.45800 -+
43.45801 -+# func_lalib_p file
43.45802 -+# True iff FILE is a libtool `.la' library or `.lo' object file.
43.45803 -+# This function is only a basic sanity check; it will hardly flush out
43.45804 -+# determined imposters.
43.45805 -+func_lalib_p ()
43.45806 -+{
43.45807 -+    $SED -e 4q "$1" 2>/dev/null \
43.45808 -+      | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
43.45809 -+}
43.45810 -+
43.45811 -+# func_lalib_unsafe_p file
43.45812 -+# True iff FILE is a libtool `.la' library or `.lo' object file.
43.45813 -+# This function implements the same check as func_lalib_p without
43.45814 -+# resorting to external programs.  To this end, it redirects stdin and
43.45815 -+# closes it afterwards, without saving the original file descriptor.
43.45816 -+# As a safety measure, use it only where a negative result would be
43.45817 -+# fatal anyway.  Works if `file' does not exist.
43.45818 -+func_lalib_unsafe_p ()
43.45819 -+{
43.45820 -+    lalib_p=no
43.45821 -+    if test -r "$1" && exec 5<&1 <"$1"; then
43.45822 -+	for lalib_p_l in 1 2 3 4
43.45823 -+	do
43.45824 -+	    read lalib_p_line
43.45825 -+	    case "$lalib_p_line" in
43.45826 -+		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
43.45827 -+	    esac
43.45828 -+	done
43.45829 -+	exec 1<&5 5<&-
43.45830 -+    fi
43.45831 -+    test "$lalib_p" = yes
43.45832 -+}
43.45833 -+
43.45834 -+# func_ltwrapper_p file
43.45835 -+# True iff FILE is a libtool wrapper script.
43.45836 -+# This function is only a basic sanity check; it will hardly flush out
43.45837 -+# determined imposters.
43.45838 -+func_ltwrapper_p ()
43.45839 -+{
43.45840 -+    func_lalib_p "$1"
43.45841 -+}
43.45842 -+
43.45843 -+
43.45844 -+# func_execute_cmds commands fail_cmd
43.45845 -+# Execute tilde-delimited COMMANDS.
43.45846 -+# If FAIL_CMD is given, eval that upon failure.
43.45847 -+# FAIL_CMD may read-access the current command in variable CMD!
43.45848 -+func_execute_cmds ()
43.45849 -+{
43.45850 -+    $opt_debug
43.45851 -+    save_ifs=$IFS; IFS='~'
43.45852 -+    for cmd in $1; do
43.45853 -+      IFS=$save_ifs
43.45854 -+      eval cmd=\"$cmd\"
43.45855 -+      func_show_eval "$cmd" "${2-:}"
43.45856 -+    done
43.45857 -+    IFS=$save_ifs
43.45858 -+}
43.45859 -+
43.45860 -+
43.45861 -+# func_source file
43.45862 -+# Source FILE, adding directory component if necessary.
43.45863 -+# Note that it is not necessary on cygwin/mingw to append a dot to
43.45864 -+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
43.45865 -+# behavior happens only for exec(3), not for open(2)!  Also, sourcing
43.45866 -+# `FILE.' does not work on cygwin managed mounts.
43.45867 -+func_source ()
43.45868 -+{
43.45869 -+    $opt_debug
43.45870 -+    case $1 in
43.45871 -+    */* | *\\*)	. "$1" ;;
43.45872 -+    *)		. "./$1" ;;
43.45873 -+    esac
43.45874 -+}
43.45875 -+
43.45876 -+
43.45877 -+# func_win32_libid arg
43.45878 -+# return the library type of file 'arg'
43.45879 -+#
43.45880 -+# Need a lot of goo to handle *both* DLLs and import libs
43.45881 -+# Has to be a shell function in order to 'eat' the argument
43.45882 -+# that is supplied when $file_magic_command is called.
43.45883 -+func_win32_libid ()
43.45884 -+{
43.45885 -+  $opt_debug
43.45886 -+  win32_libid_type="unknown"
43.45887 -+  win32_fileres=`file -L $1 2>/dev/null`
43.45888 -+  case $win32_fileres in
43.45889 -+  *ar\ archive\ import\ library*) # definitely import
43.45890 -+    win32_libid_type="x86 archive import"
43.45891 -+    ;;
43.45892 -+  *ar\ archive*) # could be an import, or static
43.45893 -+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
43.45894 -+       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
43.45895 -+      win32_nmres=`eval $NM -f posix -A $1 |
43.45896 -+	$SED -n -e '
43.45897 -+	    1,100{
43.45898 -+		/ I /{
43.45899 -+		    s,.*,import,
43.45900 -+		    p
43.45901 -+		    q
43.45902 -+		}
43.45903 -+	    }'`
43.45904 -+      case $win32_nmres in
43.45905 -+      import*)  win32_libid_type="x86 archive import";;
43.45906 -+      *)        win32_libid_type="x86 archive static";;
43.45907 -+      esac
43.45908 -+    fi
43.45909 -+    ;;
43.45910 -+  *DLL*)
43.45911 -+    win32_libid_type="x86 DLL"
43.45912 -+    ;;
43.45913 -+  *executable*) # but shell scripts are "executable" too...
43.45914 -+    case $win32_fileres in
43.45915 -+    *MS\ Windows\ PE\ Intel*)
43.45916 -+      win32_libid_type="x86 DLL"
43.45917 -+      ;;
43.45918 -+    esac
43.45919 -+    ;;
43.45920 -+  esac
43.45921 -+  $ECHO "$win32_libid_type"
43.45922 -+}
43.45923 -+
43.45924 -+
43.45925 -+
43.45926 -+# func_infer_tag arg
43.45927 -+# Infer tagged configuration to use if any are available and
43.45928 -+# if one wasn't chosen via the "--tag" command line option.
43.45929 -+# Only attempt this if the compiler in the base compile
43.45930 -+# command doesn't match the default compiler.
43.45931 -+# arg is usually of the form 'gcc ...'
43.45932 -+func_infer_tag ()
43.45933 -+{
43.45934 -+    $opt_debug
43.45935 -+    if test -n "$available_tags" && test -z "$tagname"; then
43.45936 -+      CC_quoted=
43.45937 -+      for arg in $CC; do
43.45938 -+        func_quote_for_eval "$arg"
43.45939 -+	CC_quoted="$CC_quoted $func_quote_for_eval_result"
43.45940 -+      done
43.45941 -+      case $@ in
43.45942 -+      # Blanks in the command may have been stripped by the calling shell,
43.45943 -+      # but not from the CC environment variable when configure was run.
43.45944 -+      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
43.45945 -+      # Blanks at the start of $base_compile will cause this to fail
43.45946 -+      # if we don't check for them as well.
43.45947 -+      *)
43.45948 -+	for z in $available_tags; do
43.45949 -+	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
43.45950 -+	    # Evaluate the configuration.
43.45951 -+	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
43.45952 -+	    CC_quoted=
43.45953 -+	    for arg in $CC; do
43.45954 -+	      # Double-quote args containing other shell metacharacters.
43.45955 -+	      func_quote_for_eval "$arg"
43.45956 -+	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
43.45957 -+	    done
43.45958 -+	    case "$@ " in
43.45959 -+	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
43.45960 -+	      # The compiler in the base compile command matches
43.45961 -+	      # the one in the tagged configuration.
43.45962 -+	      # Assume this is the tagged configuration we want.
43.45963 -+	      tagname=$z
43.45964 -+	      break
43.45965 -+	      ;;
43.45966 -+	    esac
43.45967 -+	  fi
43.45968 -+	done
43.45969 -+	# If $tagname still isn't set, then no tagged configuration
43.45970 -+	# was found and let the user know that the "--tag" command
43.45971 -+	# line option must be used.
43.45972 -+	if test -z "$tagname"; then
43.45973 -+	  func_echo "unable to infer tagged configuration"
43.45974 -+	  func_fatal_error "specify a tag with \`--tag'"
43.45975 -+#	else
43.45976 -+#	  func_verbose "using $tagname tagged configuration"
43.45977 -+	fi
43.45978 -+	;;
43.45979 -+      esac
43.45980 -+    fi
43.45981 -+}
43.45982 -+
43.45983 -+
43.45984 -+
43.45985 -+# func_generate_dlsyms outputname originator pic_p
43.45986 -+# Extract symbols from dlprefiles and create ${outputname}S.o with
43.45987 -+# a dlpreopen symbol table.
43.45988 -+func_generate_dlsyms ()
43.45989 -+{
43.45990 -+    $opt_debug
43.45991 -+    my_outputname="$1"
43.45992 -+    my_originator="$2"
43.45993 -+    my_pic_p="${3-no}"
43.45994 -+    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
43.45995 -+    my_dlsyms=
43.45996 -+
43.45997 -+    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
43.45998 -+      if test -n "$NM" && test -n "$global_symbol_pipe"; then
43.45999 -+	my_dlsyms="${my_outputname}S.c"
43.46000 -+      else
43.46001 -+	func_error "not configured to extract global symbols from dlpreopened files"
43.46002 -+      fi
43.46003 -+    fi
43.46004 -+
43.46005 -+    if test -n "$my_dlsyms"; then
43.46006 -+      case $my_dlsyms in
43.46007 -+      "") ;;
43.46008 -+      *.c)
43.46009 -+	# Discover the nlist of each of the dlfiles.
43.46010 -+	nlist="$output_objdir/${my_outputname}.nm"
43.46011 -+
43.46012 -+	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
43.46013 -+
43.46014 -+	# Parse the name list into a source file.
43.46015 -+	func_echo "creating $output_objdir/$my_dlsyms"
43.46016 -+
43.46017 -+	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
43.46018 -+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
43.46019 -+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
43.46020 -+
43.46021 -+#ifdef __cplusplus
43.46022 -+extern \"C\" {
43.46023 -+#endif
43.46024 -+
43.46025 -+/* External symbol declarations for the compiler. */\
43.46026 -+"
43.46027 -+
43.46028 -+	if test "$dlself" = yes; then
43.46029 -+	  func_echo "generating symbol list for \`$output'"
43.46030 -+
43.46031 -+	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
43.46032 -+
43.46033 -+	  # Add our own program objects to the symbol list.
43.46034 -+	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
43.46035 -+	  for progfile in $progfiles; do
43.46036 -+	    func_echo "extracting global C symbols from \`$progfile'"
43.46037 -+	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
43.46038 -+	  done
43.46039 -+
43.46040 -+	  if test -n "$exclude_expsyms"; then
43.46041 -+	    $opt_dry_run || {
43.46042 -+	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
43.46043 -+	      eval '$MV "$nlist"T "$nlist"'
43.46044 -+	    }
43.46045 -+	  fi
43.46046 -+
43.46047 -+	  if test -n "$export_symbols_regex"; then
43.46048 -+	    $opt_dry_run || {
43.46049 -+	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
43.46050 -+	      eval '$MV "$nlist"T "$nlist"'
43.46051 -+	    }
43.46052 -+	  fi
43.46053 -+
43.46054 -+	  # Prepare the list of exported symbols
43.46055 -+	  if test -z "$export_symbols"; then
43.46056 -+	    export_symbols="$output_objdir/$outputname.exp"
43.46057 -+	    $opt_dry_run || {
43.46058 -+	      $RM $export_symbols
43.46059 -+	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
43.46060 -+	      case $host in
43.46061 -+	      *cygwin* | *mingw* )
43.46062 -+                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
43.46063 -+                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
43.46064 -+	        ;;
43.46065 -+	      esac
43.46066 -+	    }
43.46067 -+	  else
43.46068 -+	    $opt_dry_run || {
43.46069 -+	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
43.46070 -+	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
43.46071 -+	      eval '$MV "$nlist"T "$nlist"'
43.46072 -+	      case $host in
43.46073 -+	        *cygwin | *mingw* )
43.46074 -+	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
43.46075 -+	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
43.46076 -+	          ;;
43.46077 -+	      esac
43.46078 -+	    }
43.46079 -+	  fi
43.46080 -+	fi
43.46081 -+
43.46082 -+	for dlprefile in $dlprefiles; do
43.46083 -+	  func_echo "extracting global C symbols from \`$dlprefile'"
43.46084 -+	  func_basename "$dlprefile"
43.46085 -+	  name="$func_basename_result"
43.46086 -+	  $opt_dry_run || {
43.46087 -+	    eval '$ECHO ": $name " >> "$nlist"'
43.46088 -+	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
43.46089 -+	  }
43.46090 -+	done
43.46091 -+
43.46092 -+	$opt_dry_run || {
43.46093 -+	  # Make sure we have at least an empty file.
43.46094 -+	  test -f "$nlist" || : > "$nlist"
43.46095 -+
43.46096 -+	  if test -n "$exclude_expsyms"; then
43.46097 -+	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
43.46098 -+	    $MV "$nlist"T "$nlist"
43.46099 -+	  fi
43.46100 -+
43.46101 -+	  # Try sorting and uniquifying the output.
43.46102 -+	  if $GREP -v "^: " < "$nlist" |
43.46103 -+	      if sort -k 3 </dev/null >/dev/null 2>&1; then
43.46104 -+		sort -k 3
43.46105 -+	      else
43.46106 -+		sort +2
43.46107 -+	      fi |
43.46108 -+	      uniq > "$nlist"S; then
43.46109 -+	    :
43.46110 -+	  else
43.46111 -+	    $GREP -v "^: " < "$nlist" > "$nlist"S
43.46112 -+	  fi
43.46113 -+
43.46114 -+	  if test -f "$nlist"S; then
43.46115 -+	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
43.46116 -+	  else
43.46117 -+	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
43.46118 -+	  fi
43.46119 -+
43.46120 -+	  $ECHO >> "$output_objdir/$my_dlsyms" "\
43.46121 -+
43.46122 -+/* The mapping between symbol names and symbols.  */
43.46123 -+typedef struct {
43.46124 -+  const char *name;
43.46125 -+  void *address;
43.46126 -+} lt_dlsymlist;
43.46127 -+"
43.46128 -+	  case $host in
43.46129 -+	  *cygwin* | *mingw* )
43.46130 -+	    $ECHO >> "$output_objdir/$my_dlsyms" "\
43.46131 -+/* DATA imports from DLLs on WIN32 con't be const, because
43.46132 -+   runtime relocations are performed -- see ld's documentation
43.46133 -+   on pseudo-relocs.  */"
43.46134 -+	    lt_dlsym_const= ;;
43.46135 -+	  *osf5*)
43.46136 -+	    echo >> "$output_objdir/$my_dlsyms" "\
43.46137 -+/* This system does not cope well with relocations in const data */"
43.46138 -+	    lt_dlsym_const= ;;
43.46139 -+	  *)
43.46140 -+	    lt_dlsym_const=const ;;
43.46141 -+	  esac
43.46142 -+
43.46143 -+	  $ECHO >> "$output_objdir/$my_dlsyms" "\
43.46144 -+extern $lt_dlsym_const lt_dlsymlist
43.46145 -+lt_${my_prefix}_LTX_preloaded_symbols[];
43.46146 -+$lt_dlsym_const lt_dlsymlist
43.46147 -+lt_${my_prefix}_LTX_preloaded_symbols[] =
43.46148 -+{\
43.46149 -+  { \"$my_originator\", (void *) 0 },"
43.46150 -+
43.46151 -+	  eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
43.46152 -+
43.46153 -+	  $ECHO >> "$output_objdir/$my_dlsyms" "\
43.46154 -+  {0, (void *) 0}
43.46155 -+};
43.46156 -+
43.46157 -+/* This works around a problem in FreeBSD linker */
43.46158 -+#ifdef FREEBSD_WORKAROUND
43.46159 -+static const void *lt_preloaded_setup() {
43.46160 -+  return lt_${my_prefix}_LTX_preloaded_symbols;
43.46161 -+}
43.46162 -+#endif
43.46163 -+
43.46164 -+#ifdef __cplusplus
43.46165 -+}
43.46166 -+#endif\
43.46167 -+"
43.46168 -+	} # !$opt_dry_run
43.46169 -+
43.46170 -+  	pic_flag_for_symtable=
43.46171 -+	case "$compile_command " in
43.46172 -+	*" -static "*) ;;
43.46173 -+	*)
43.46174 -+	  case $host in
43.46175 -+	  # compiling the symbol table file with pic_flag works around
43.46176 -+	  # a FreeBSD bug that causes programs to crash when -lm is
43.46177 -+	  # linked before any other PIC object.  But we must not use
43.46178 -+	  # pic_flag when linking with -static.  The problem exists in
43.46179 -+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
43.46180 -+	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
43.46181 -+	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
43.46182 -+	  *-*-hpux*)
43.46183 -+	    pic_flag_for_symtable=" $pic_flag"  ;;
43.46184 -+	  *)
43.46185 -+	    if test "X$my_pic_p" != Xno; then
43.46186 -+	      pic_flag_for_symtable=" $pic_flag"
43.46187 -+	    fi
43.46188 -+	    ;;
43.46189 -+	  esac
43.46190 -+	  ;;
43.46191 -+	esac
43.46192 -+	symtab_cflags=
43.46193 -+	for arg in $LTCFLAGS; do
43.46194 -+	  case $arg in
43.46195 -+	  -pie | -fpie | -fPIE) ;;
43.46196 -+	  *) symtab_cflags="$symtab_cflags $arg" ;;
43.46197 -+	  esac
43.46198 -+	done
43.46199 -+
43.46200 -+	# Now compile the dynamic symbol file.
43.46201 -+	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
43.46202 -+
43.46203 -+	# Clean up the generated files.
43.46204 -+	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
43.46205 -+
43.46206 -+	# Transform the symbol file into the correct name.
43.46207 -+	symfileobj="$output_objdir/${my_outputname}S.$objext"
43.46208 -+	case $host in
43.46209 -+	*cygwin* | *mingw* )
43.46210 -+	  if test -f "$output_objdir/$my_outputname.def"; then
43.46211 -+	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
43.46212 -+	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
43.46213 -+	  else
43.46214 -+	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
43.46215 -+	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
43.46216 -+	  fi
43.46217 -+	  ;;
43.46218 -+	*)
43.46219 -+	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
43.46220 -+	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
43.46221 -+	  ;;
43.46222 -+	esac
43.46223 -+	;;
43.46224 -+      *)
43.46225 -+	func_fatal_error "unknown suffix for \`$my_dlsyms'"
43.46226 -+	;;
43.46227 -+      esac
43.46228 -+    else
43.46229 -+      # We keep going just in case the user didn't refer to
43.46230 -+      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
43.46231 -+      # really was required.
43.46232 -+
43.46233 -+      # Nullify the symbol file.
43.46234 -+      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
43.46235 -+      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
43.46236 -+    fi
43.46237 -+}
43.46238 -+
43.46239 -+# func_extract_an_archive dir oldlib
43.46240 -+func_extract_an_archive ()
43.46241 -+{
43.46242 -+    $opt_debug
43.46243 -+    f_ex_an_ar_dir="$1"; shift
43.46244 -+    f_ex_an_ar_oldlib="$1"
43.46245 -+    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" 'exit $?'
43.46246 -+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
43.46247 -+     :
43.46248 -+    else
43.46249 -+      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
43.46250 -+    fi
43.46251 -+}
43.46252 -+
43.46253 -+
43.46254 -+# func_extract_archives gentop oldlib ...
43.46255 -+func_extract_archives ()
43.46256 -+{
43.46257 -+    $opt_debug
43.46258 -+    my_gentop="$1"; shift
43.46259 -+    my_oldlibs=${1+"$@"}
43.46260 -+    my_oldobjs=""
43.46261 -+    my_xlib=""
43.46262 -+    my_xabs=""
43.46263 -+    my_xdir=""
43.46264 -+
43.46265 -+    for my_xlib in $my_oldlibs; do
43.46266 -+      # Extract the objects.
43.46267 -+      case $my_xlib in
43.46268 -+	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
43.46269 -+	*) my_xabs=`pwd`"/$my_xlib" ;;
43.46270 -+      esac
43.46271 -+      func_basename "$my_xlib"
43.46272 -+      my_xlib="$func_basename_result"
43.46273 -+      my_xlib_u=$my_xlib
43.46274 -+      while :; do
43.46275 -+        case " $extracted_archives " in
43.46276 -+	*" $my_xlib_u "*)
43.46277 -+	  extracted_serial=`expr $extracted_serial + 1`
43.46278 -+	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
43.46279 -+	*) break ;;
43.46280 -+	esac
43.46281 -+      done
43.46282 -+      extracted_archives="$extracted_archives $my_xlib_u"
43.46283 -+      my_xdir="$my_gentop/$my_xlib_u"
43.46284 -+
43.46285 -+      func_mkdir_p "$my_xdir"
43.46286 -+
43.46287 -+      case $host in
43.46288 -+      *-darwin*)
43.46289 -+	func_echo "Extracting $my_xabs"
43.46290 -+	# Do not bother doing anything if just a dry run
43.46291 -+	$opt_dry_run || {
43.46292 -+	  darwin_orig_dir=`pwd`
43.46293 -+	  cd $my_xdir || exit $?
43.46294 -+	  darwin_archive=$my_xabs
43.46295 -+	  darwin_curdir=`pwd`
43.46296 -+	  darwin_base_archive=`basename $darwin_archive`
43.46297 -+	  darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
43.46298 -+	  if test -n "$darwin_arches"; then
43.46299 -+	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
43.46300 -+	    darwin_arch=
43.46301 -+	    func_echo "$darwin_base_archive has multiple architectures $darwin_arches"
43.46302 -+	    for darwin_arch in  $darwin_arches ; do
43.46303 -+	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
43.46304 -+	      lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
43.46305 -+	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
43.46306 -+	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
43.46307 -+	      cd "$darwin_curdir"
43.46308 -+	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
43.46309 -+	    done # $darwin_arches
43.46310 -+            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
43.46311 -+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
43.46312 -+	    darwin_file=
43.46313 -+	    darwin_files=
43.46314 -+	    for darwin_file in $darwin_filelist; do
43.46315 -+	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
43.46316 -+	      lipo -create -output "$darwin_file" $darwin_files
43.46317 -+	    done # $darwin_filelist
43.46318 -+	    $RM -rf unfat-$$
43.46319 -+	    cd "$darwin_orig_dir"
43.46320 -+	  else
43.46321 -+	    cd $darwin_orig_dir
43.46322 -+	    func_extract_an_archive "$my_xdir" "$my_xabs"
43.46323 -+	  fi # $darwin_arches
43.46324 -+	} # !$opt_dry_run
43.46325 -+	;;
43.46326 -+      *)
43.46327 -+        func_extract_an_archive "$my_xdir" "$my_xabs"
43.46328 -+	;;
43.46329 -+      esac
43.46330 -+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
43.46331 -+    done
43.46332 -+
43.46333 -+    func_extract_archives_result="$my_oldobjs"
43.46334 -+}
43.46335 -+
43.46336 -+
43.46337 -+
43.46338 -+# func_write_libtool_object output_name pic_name nonpic_name
43.46339 -+# Create a libtool object file (analogous to a ".la" file),
43.46340 -+# but don't create it if we're doing a dry run.
43.46341 -+func_write_libtool_object ()
43.46342 -+{
43.46343 -+    write_libobj=${1}
43.46344 -+    if test "$build_libtool_libs" = yes; then
43.46345 -+      write_lobj=\'${2}\'
43.46346 -+    else
43.46347 -+      write_lobj=none
43.46348 -+    fi
43.46349 -+
43.46350 -+    if test "$build_old_libs" = yes; then
43.46351 -+      write_oldobj=\'${3}\'
43.46352 -+    else
43.46353 -+      write_oldobj=none
43.46354 -+    fi
43.46355 -+
43.46356 -+    $opt_dry_run || {
43.46357 -+      cat >${write_libobj}T <<EOF
43.46358 -+# $write_libobj - a libtool object file
43.46359 -+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
43.46360 -+#
43.46361 -+# Please DO NOT delete this file!
43.46362 -+# It is necessary for linking the library.
43.46363 -+
43.46364 -+# Name of the PIC object.
43.46365 -+pic_object=$write_lobj
43.46366 -+
43.46367 -+# Name of the non-PIC object
43.46368 -+non_pic_object=$write_oldobj
43.46369 -+
43.46370 -+EOF
43.46371 -+      mv -f "${write_libobj}T" "${write_libobj}"
43.46372 -+    }
43.46373 -+}
43.46374 -+
43.46375 -+# func_mode_compile arg...
43.46376 -+func_mode_compile ()
43.46377 -+{
43.46378 -+    $opt_debug
43.46379 -+    # Get the compilation command and the source file.
43.46380 -+    base_compile=
43.46381 -+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
43.46382 -+    suppress_opt=yes
43.46383 -+    suppress_output=
43.46384 -+    arg_mode=normal
43.46385 -+    libobj=
43.46386 -+    later=
43.46387 -+    pie_flag=
43.46388 -+
43.46389 -+    for arg
43.46390 -+    do
43.46391 -+      case $arg_mode in
43.46392 -+      arg  )
43.46393 -+	# do not "continue".  Instead, add this to base_compile
43.46394 -+	lastarg="$arg"
43.46395 -+	arg_mode=normal
43.46396 -+	;;
43.46397 -+
43.46398 -+      target )
43.46399 -+	libobj="$arg"
43.46400 -+	arg_mode=normal
43.46401 -+	continue
43.46402 -+	;;
43.46403 -+
43.46404 -+      normal )
43.46405 -+	# Accept any command-line options.
43.46406 -+	case $arg in
43.46407 -+	-o)
43.46408 -+	  test -n "$libobj" && \
43.46409 -+	    func_fatal_error "you cannot specify \`-o' more than once"
43.46410 -+	  arg_mode=target
43.46411 -+	  continue
43.46412 -+	  ;;
43.46413 -+
43.46414 -+	-pie | -fpie | -fPIE)
43.46415 -+          pie_flag="$pie_flag $arg"
43.46416 -+	  continue
43.46417 -+	  ;;
43.46418 -+
43.46419 -+	-shared | -static | -prefer-pic | -prefer-non-pic)
43.46420 -+	  later="$later $arg"
43.46421 -+	  continue
43.46422 -+	  ;;
43.46423 -+
43.46424 -+	-no-suppress)
43.46425 -+	  suppress_opt=no
43.46426 -+	  continue
43.46427 -+	  ;;
43.46428 -+
43.46429 -+	-Xcompiler)
43.46430 -+	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
43.46431 -+	  continue      #  The current "srcfile" will either be retained or
43.46432 -+	  ;;            #  replaced later.  I would guess that would be a bug.
43.46433 -+
43.46434 -+	-Wc,*)
43.46435 -+	  func_stripname '-Wc,' '' "$arg"
43.46436 -+	  args=$func_stripname_result
43.46437 -+	  lastarg=
43.46438 -+	  save_ifs="$IFS"; IFS=','
43.46439 -+	  for arg in $args; do
43.46440 -+	    IFS="$save_ifs"
43.46441 -+	    func_quote_for_eval "$arg"
43.46442 -+	    lastarg="$lastarg $func_quote_for_eval_result"
43.46443 -+	  done
43.46444 -+	  IFS="$save_ifs"
43.46445 -+	  func_stripname ' ' '' "$lastarg"
43.46446 -+	  lastarg=$func_stripname_result
43.46447 -+
43.46448 -+	  # Add the arguments to base_compile.
43.46449 -+	  base_compile="$base_compile $lastarg"
43.46450 -+	  continue
43.46451 -+	  ;;
43.46452 -+
43.46453 -+	*)
43.46454 -+	  # Accept the current argument as the source file.
43.46455 -+	  # The previous "srcfile" becomes the current argument.
43.46456 -+	  #
43.46457 -+	  lastarg="$srcfile"
43.46458 -+	  srcfile="$arg"
43.46459 -+	  ;;
43.46460 -+	esac  #  case $arg
43.46461 -+	;;
43.46462 -+      esac    #  case $arg_mode
43.46463 -+
43.46464 -+      # Aesthetically quote the previous argument.
43.46465 -+      func_quote_for_eval "$lastarg"
43.46466 -+      base_compile="$base_compile $func_quote_for_eval_result"
43.46467 -+    done # for arg
43.46468 -+
43.46469 -+    case $arg_mode in
43.46470 -+    arg)
43.46471 -+      func_fatal_error "you must specify an argument for -Xcompile"
43.46472 -+      ;;
43.46473 -+    target)
43.46474 -+      func_fatal_error "you must specify a target with \`-o'"
43.46475 -+      ;;
43.46476 -+    *)
43.46477 -+      # Get the name of the library object.
43.46478 -+      test -z "$libobj" && {
43.46479 -+	func_basename "$srcfile"
43.46480 -+	libobj="$func_basename_result"
43.46481 -+      }
43.46482 -+      ;;
43.46483 -+    esac
43.46484 -+
43.46485 -+    # Recognize several different file suffixes.
43.46486 -+    # If the user specifies -o file.o, it is replaced with file.lo
43.46487 -+    xform='[cCFSifmso]'
43.46488 -+    case $libobj in
43.46489 -+    *.ada) xform=ada ;;
43.46490 -+    *.adb) xform=adb ;;
43.46491 -+    *.ads) xform=ads ;;
43.46492 -+    *.asm) xform=asm ;;
43.46493 -+    *.c++) xform=c++ ;;
43.46494 -+    *.cc) xform=cc ;;
43.46495 -+    *.ii) xform=ii ;;
43.46496 -+    *.class) xform=class ;;
43.46497 -+    *.cpp) xform=cpp ;;
43.46498 -+    *.cxx) xform=cxx ;;
43.46499 -+    *.[fF][09]?) xform='[fF][09].' ;;
43.46500 -+    *.for) xform=for ;;
43.46501 -+    *.java) xform=java ;;
43.46502 -+    *.obj) xform=obj ;;
43.46503 -+    esac
43.46504 -+
43.46505 -+    libobj=`$ECHO "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
43.46506 -+
43.46507 -+    case $libobj in
43.46508 -+    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
43.46509 -+    *)
43.46510 -+      func_fatal_error "cannot determine name of library object from \`$libobj'"
43.46511 -+      ;;
43.46512 -+    esac
43.46513 -+
43.46514 -+    func_infer_tag $base_compile
43.46515 -+
43.46516 -+    for arg in $later; do
43.46517 -+      case $arg in
43.46518 -+      -shared)
43.46519 -+	test "$build_libtool_libs" != yes && \
43.46520 -+	  func_fatal_configuration "can not build a shared library"
43.46521 -+	build_old_libs=no
43.46522 -+	continue
43.46523 -+	;;
43.46524 -+
43.46525 -+      -static)
43.46526 -+	build_libtool_libs=no
43.46527 -+	build_old_libs=yes
43.46528 -+	continue
43.46529 -+	;;
43.46530 -+
43.46531 -+      -prefer-pic)
43.46532 -+	pic_mode=yes
43.46533 -+	continue
43.46534 -+	;;
43.46535 -+
43.46536 -+      -prefer-non-pic)
43.46537 -+	pic_mode=no
43.46538 -+	continue
43.46539 -+	;;
43.46540 -+      esac
43.46541 -+    done
43.46542 -+
43.46543 -+    func_quote_for_eval "$libobj"
43.46544 -+    test "X$libobj" != "X$func_quote_for_eval_result" \
43.46545 -+      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' 	&()|`$[]' \
43.46546 -+      && func_warning "libobj name \`$libobj' may not contain shell special characters."
43.46547 -+    func_basename "$obj"
43.46548 -+    objname="$func_basename_result"
43.46549 -+    func_dirname "$obj" "/" ""
43.46550 -+    xdir="$func_dirname_result"
43.46551 -+    lobj=${xdir}$objdir/$objname
43.46552 -+
43.46553 -+    test -z "$base_compile" && \
43.46554 -+      func_fatal_help "you must specify a compilation command"
43.46555 -+
43.46556 -+    # Delete any leftover library objects.
43.46557 -+    if test "$build_old_libs" = yes; then
43.46558 -+      removelist="$obj $lobj $libobj ${libobj}T"
43.46559 -+    else
43.46560 -+      removelist="$lobj $libobj ${libobj}T"
43.46561 -+    fi
43.46562 -+
43.46563 -+    $opt_dry_run || $RM $removelist
43.46564 -+    trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
43.46565 -+
43.46566 -+    # On Cygwin there's no "real" PIC flag so we must build both object types
43.46567 -+    case $host_os in
43.46568 -+    cygwin* | mingw* | pw32* | os2*)
43.46569 -+      pic_mode=default
43.46570 -+      ;;
43.46571 -+    esac
43.46572 -+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
43.46573 -+      # non-PIC code in shared libraries is not supported
43.46574 -+      pic_mode=default
43.46575 -+    fi
43.46576 -+
43.46577 -+    # Calculate the filename of the output object if compiler does
43.46578 -+    # not support -o with -c
43.46579 -+    if test "$compiler_c_o" = no; then
43.46580 -+      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
43.46581 -+      lockfile="$output_obj.lock"
43.46582 -+      removelist="$removelist $output_obj $lockfile"
43.46583 -+      trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
43.46584 -+    else
43.46585 -+      output_obj=
43.46586 -+      need_locks=no
43.46587 -+      lockfile=
43.46588 -+    fi
43.46589 -+
43.46590 -+    # Lock this critical section if it is needed
43.46591 -+    # We use this script file to make the link, it avoids creating a new file
43.46592 -+    if test "$need_locks" = yes; then
43.46593 -+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
43.46594 -+	func_echo "Waiting for $lockfile to be removed"
43.46595 -+	sleep 2
43.46596 -+      done
43.46597 -+    elif test "$need_locks" = warn; then
43.46598 -+      if test -f "$lockfile"; then
43.46599 -+	$ECHO "\
43.46600 -+*** ERROR, $lockfile exists and contains:
43.46601 -+`cat $lockfile 2>/dev/null`
43.46602 -+
43.46603 -+This indicates that another process is trying to use the same
43.46604 -+temporary object file, and libtool could not work around it because
43.46605 -+your compiler does not support \`-c' and \`-o' together.  If you
43.46606 -+repeat this compilation, it may succeed, by chance, but you had better
43.46607 -+avoid parallel builds (make -j) in this platform, or get a better
43.46608 -+compiler."
43.46609 -+
43.46610 -+	$opt_dry_run || $RM $removelist
43.46611 -+	exit $EXIT_FAILURE
43.46612 -+      fi
43.46613 -+      $ECHO "$srcfile" > "$lockfile"
43.46614 -+    fi
43.46615 -+
43.46616 -+    if test -n "$fix_srcfile_path"; then
43.46617 -+      eval srcfile=\"$fix_srcfile_path\"
43.46618 -+    fi
43.46619 -+    func_quote_for_eval "$srcfile"
43.46620 -+    qsrcfile=$func_quote_for_eval_result
43.46621 -+
43.46622 -+    $opt_dry_run || $RM "$libobj" "${libobj}T"
43.46623 -+
43.46624 -+    # Only build a PIC object if we are building libtool libraries.
43.46625 -+    if test "$build_libtool_libs" = yes; then
43.46626 -+      # Without this assignment, base_compile gets emptied.
43.46627 -+      fbsd_hideous_sh_bug=$base_compile
43.46628 -+
43.46629 -+      if test "$pic_mode" != no; then
43.46630 -+	command="$base_compile $qsrcfile $pic_flag"
43.46631 -+      else
43.46632 -+	# Don't build PIC code
43.46633 -+	command="$base_compile $qsrcfile"
43.46634 -+      fi
43.46635 -+
43.46636 -+      func_mkdir_p "$xdir$objdir"
43.46637 -+
43.46638 -+      if test -z "$output_obj"; then
43.46639 -+	# Place PIC objects in $objdir
43.46640 -+	command="$command -o $lobj"
43.46641 -+      fi
43.46642 -+
43.46643 -+      $opt_dry_run || $RM "$lobj" "$output_obj"
43.46644 -+
43.46645 -+      func_show_eval "$command"	\
43.46646 -+          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
43.46647 -+
43.46648 -+      if test "$need_locks" = warn &&
43.46649 -+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
43.46650 -+	$ECHO "\
43.46651 -+*** ERROR, $lockfile contains:
43.46652 -+`cat $lockfile 2>/dev/null`
43.46653 -+
43.46654 -+but it should contain:
43.46655 -+$srcfile
43.46656 -+
43.46657 -+This indicates that another process is trying to use the same
43.46658 -+temporary object file, and libtool could not work around it because
43.46659 -+your compiler does not support \`-c' and \`-o' together.  If you
43.46660 -+repeat this compilation, it may succeed, by chance, but you had better
43.46661 -+avoid parallel builds (make -j) in this platform, or get a better
43.46662 -+compiler."
43.46663 -+
43.46664 -+	$opt_dry_run || $RM $removelist
43.46665 -+	exit $EXIT_FAILURE
43.46666 -+      fi
43.46667 -+
43.46668 -+      # Just move the object if needed, then go on to compile the next one
43.46669 -+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
43.46670 -+	func_show_eval '$MV "$output_obj" "$lobj"' \
43.46671 -+	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
43.46672 -+      fi
43.46673 -+
43.46674 -+      # Allow error messages only from the first compilation.
43.46675 -+      if test "$suppress_opt" = yes; then
43.46676 -+	suppress_output=' >/dev/null 2>&1'
43.46677 -+      fi
43.46678 -+    fi
43.46679 -+
43.46680 -+    # Only build a position-dependent object if we build old libraries.
43.46681 -+    if test "$build_old_libs" = yes; then
43.46682 -+      if test "$pic_mode" != yes; then
43.46683 -+	# Don't build PIC code
43.46684 -+	command="$base_compile $qsrcfile$pie_flag"
43.46685 -+      else
43.46686 -+	command="$base_compile $qsrcfile $pic_flag"
43.46687 -+      fi
43.46688 -+      if test "$compiler_c_o" = yes; then
43.46689 -+	command="$command -o $obj"
43.46690 -+      fi
43.46691 -+
43.46692 -+      # Suppress compiler output if we already did a PIC compilation.
43.46693 -+      command="$command$suppress_output"
43.46694 -+      $opt_dry_run || $RM "$obj" "$output_obj"
43.46695 -+      func_show_eval "$command" \
43.46696 -+        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
43.46697 -+
43.46698 -+      if test "$need_locks" = warn &&
43.46699 -+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
43.46700 -+	$ECHO "\
43.46701 -+*** ERROR, $lockfile contains:
43.46702 -+`cat $lockfile 2>/dev/null`
43.46703 -+
43.46704 -+but it should contain:
43.46705 -+$srcfile
43.46706 -+
43.46707 -+This indicates that another process is trying to use the same
43.46708 -+temporary object file, and libtool could not work around it because
43.46709 -+your compiler does not support \`-c' and \`-o' together.  If you
43.46710 -+repeat this compilation, it may succeed, by chance, but you had better
43.46711 -+avoid parallel builds (make -j) in this platform, or get a better
43.46712 -+compiler."
43.46713 -+
43.46714 -+	$opt_dry_run || $RM $removelist
43.46715 -+	exit $EXIT_FAILURE
43.46716 -+      fi
43.46717 -+
43.46718 -+      # Just move the object if needed
43.46719 -+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
43.46720 -+	func_show_eval '$MV "$output_obj" "$obj"' \
43.46721 -+	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
43.46722 -+      fi
43.46723 -+    fi
43.46724 -+
43.46725 -+    $opt_dry_run || {
43.46726 -+      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
43.46727 -+
43.46728 -+      # Unlock the critical section if it was locked
43.46729 -+      if test "$need_locks" != no; then
43.46730 -+        $RM "$lockfile"
43.46731 -+      fi
43.46732 -+    }
43.46733 -+
43.46734 -+    exit $EXIT_SUCCESS
43.46735 -+}
43.46736 -+
43.46737 -+test "$mode" = compile && func_mode_compile ${1+"$@"}
43.46738 -+
43.46739 -+
43.46740 -+# func_mode_execute arg...
43.46741 -+func_mode_execute ()
43.46742 -+{
43.46743 -+    $opt_debug
43.46744 -+    # The first argument is the command name.
43.46745 -+    cmd="$nonopt"
43.46746 -+    test -z "$cmd" && \
43.46747 -+      func_fatal_help "you must specify a COMMAND"
43.46748 -+
43.46749 -+    # Handle -dlopen flags immediately.
43.46750 -+    for file in $execute_dlfiles; do
43.46751 -+      test -f "$file" \
43.46752 -+	|| func_fatal_help "\`$file' is not a file"
43.46753 -+
43.46754 -+      dir=
43.46755 -+      case $file in
43.46756 -+      *.la)
43.46757 -+	# Check to see that this really is a libtool archive.
43.46758 -+	func_lalib_unsafe_p "$file" \
43.46759 -+	  || func_fatal_help "\`$lib' is not a valid libtool archive"
43.46760 -+
43.46761 -+	# Read the libtool library.
43.46762 -+	dlname=
43.46763 -+	library_names=
43.46764 -+	func_source "$file"
43.46765 -+
43.46766 -+	# Skip this library if it cannot be dlopened.
43.46767 -+	if test -z "$dlname"; then
43.46768 -+	  # Warn if it was a shared library.
43.46769 -+	  test -n "$library_names" && \
43.46770 -+	    func_warning "\`$file' was not linked with \`-export-dynamic'"
43.46771 -+	  continue
43.46772 -+	fi
43.46773 -+
43.46774 -+	func_dirname "$file" "" "."
43.46775 -+	dir="$func_dirname_result"
43.46776 -+
43.46777 -+	if test -f "$dir/$objdir/$dlname"; then
43.46778 -+	  dir="$dir/$objdir"
43.46779 -+	else
43.46780 -+	  if test ! -f "$dir/$dlname"; then
43.46781 -+	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
43.46782 -+	  fi
43.46783 -+	fi
43.46784 -+	;;
43.46785 -+
43.46786 -+      *.lo)
43.46787 -+	# Just add the directory containing the .lo file.
43.46788 -+	func_dirname "$file" "" "."
43.46789 -+	dir="$func_dirname_result"
43.46790 -+	;;
43.46791 -+
43.46792 -+      *)
43.46793 -+	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
43.46794 -+	continue
43.46795 -+	;;
43.46796 -+      esac
43.46797 -+
43.46798 -+      # Get the absolute pathname.
43.46799 -+      absdir=`cd "$dir" && pwd`
43.46800 -+      test -n "$absdir" && dir="$absdir"
43.46801 -+
43.46802 -+      # Now add the directory to shlibpath_var.
43.46803 -+      if eval "test -z \"\$$shlibpath_var\""; then
43.46804 -+	eval "$shlibpath_var=\"\$dir\""
43.46805 -+      else
43.46806 -+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
43.46807 -+      fi
43.46808 -+    done
43.46809 -+
43.46810 -+    # This variable tells wrapper scripts just to set shlibpath_var
43.46811 -+    # rather than running their programs.
43.46812 -+    libtool_execute_magic="$magic"
43.46813 -+
43.46814 -+    # Check if any of the arguments is a wrapper script.
43.46815 -+    args=
43.46816 -+    for file
43.46817 -+    do
43.46818 -+      case $file in
43.46819 -+      -*) ;;
43.46820 -+      *)
43.46821 -+	# Do a test to see if this is really a libtool program.
43.46822 -+	if func_ltwrapper_p "$file"; then
43.46823 -+	  func_source "$file"
43.46824 -+
43.46825 -+	  # Transform arg to wrapped name.
43.46826 -+	  file="$progdir/$program"
43.46827 -+	fi
43.46828 -+	;;
43.46829 -+      esac
43.46830 -+      # Quote arguments (to preserve shell metacharacters).
43.46831 -+      func_quote_for_eval "$file"
43.46832 -+      args="$args $func_quote_for_eval_result"
43.46833 -+    done
43.46834 -+
43.46835 -+    if test "X$opt_dry_run" = Xfalse; then
43.46836 -+      if test -n "$shlibpath_var"; then
43.46837 -+	# Export the shlibpath_var.
43.46838 -+	eval "export $shlibpath_var"
43.46839 -+      fi
43.46840 -+
43.46841 -+      # Restore saved environment variables
43.46842 -+      for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
43.46843 -+      do
43.46844 -+	eval "if test \"\${save_$lt_var+set}\" = set; then
43.46845 -+                $lt_var=\$save_$lt_var; export $lt_var
43.46846 -+	      else
43.46847 -+		$lt_unset $lt_var
43.46848 -+	      fi"
43.46849 -+      done
43.46850 -+
43.46851 -+      # Now prepare to actually exec the command.
43.46852 -+      exec_cmd="\$cmd$args"
43.46853 -+    else
43.46854 -+      # Display what would be done.
43.46855 -+      if test -n "$shlibpath_var"; then
43.46856 -+	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
43.46857 -+	$ECHO "export $shlibpath_var"
43.46858 -+      fi
43.46859 -+      $ECHO "$cmd$args"
43.46860 -+      exit $EXIT_SUCCESS
43.46861 -+    fi
43.46862 -+}
43.46863 -+
43.46864 -+test "$mode" = execute && func_mode_execute ${1+"$@"}
43.46865 -+
43.46866 -+
43.46867 -+# func_mode_finish arg...
43.46868 -+func_mode_finish ()
43.46869 -+{
43.46870 -+    $opt_debug
43.46871 -+    libdirs="$nonopt"
43.46872 -+    admincmds=
43.46873 -+
43.46874 -+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
43.46875 -+      for dir
43.46876 -+      do
43.46877 -+	libdirs="$libdirs $dir"
43.46878 -+      done
43.46879 -+
43.46880 -+      for libdir in $libdirs; do
43.46881 -+	if test -n "$finish_cmds"; then
43.46882 -+	  # Do each command in the finish commands.
43.46883 -+	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
43.46884 -+'"$cmd"'"'
43.46885 -+	fi
43.46886 -+	if test -n "$finish_eval"; then
43.46887 -+	  # Do the single finish_eval.
43.46888 -+	  eval cmds=\"$finish_eval\"
43.46889 -+	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
43.46890 -+       $cmds"
43.46891 -+	fi
43.46892 -+      done
43.46893 -+    fi
43.46894 -+
43.46895 -+    # Exit here if they wanted silent mode.
43.46896 -+    $opt_silent && exit $EXIT_SUCCESS
43.46897 -+
43.46898 -+    $ECHO "X----------------------------------------------------------------------" | $Xsed
43.46899 -+    $ECHO "Libraries have been installed in:"
43.46900 -+    for libdir in $libdirs; do
43.46901 -+      $ECHO "   $libdir"
43.46902 -+    done
43.46903 -+    $ECHO
43.46904 -+    $ECHO "If you ever happen to want to link against installed libraries"
43.46905 -+    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
43.46906 -+    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
43.46907 -+    $ECHO "flag during linking and do at least one of the following:"
43.46908 -+    if test -n "$shlibpath_var"; then
43.46909 -+      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
43.46910 -+      $ECHO "     during execution"
43.46911 -+    fi
43.46912 -+    if test -n "$runpath_var"; then
43.46913 -+      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
43.46914 -+      $ECHO "     during linking"
43.46915 -+    fi
43.46916 -+    if test -n "$hardcode_libdir_flag_spec"; then
43.46917 -+      libdir=LIBDIR
43.46918 -+      eval flag=\"$hardcode_libdir_flag_spec\"
43.46919 -+
43.46920 -+      $ECHO "   - use the \`$flag' linker flag"
43.46921 -+    fi
43.46922 -+    if test -n "$admincmds"; then
43.46923 -+      $ECHO "   - have your system administrator run these commands:$admincmds"
43.46924 -+    fi
43.46925 -+    if test -f /etc/ld.so.conf; then
43.46926 -+      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
43.46927 -+    fi
43.46928 -+    $ECHO
43.46929 -+
43.46930 -+    $ECHO "See any operating system documentation about shared libraries for"
43.46931 -+    case $host in
43.46932 -+      solaris2.[6789]|solaris2.1[0-9])
43.46933 -+        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
43.46934 -+	$ECHO "pages."
43.46935 -+	;;
43.46936 -+      *)
43.46937 -+        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
43.46938 -+        ;;
43.46939 -+    esac
43.46940 -+    $ECHO "X----------------------------------------------------------------------" | $Xsed
43.46941 -+    exit $EXIT_SUCCESS
43.46942 -+}
43.46943 -+
43.46944 -+test "$mode" = finish && func_mode_finish ${1+"$@"}
43.46945 -+
43.46946 -+
43.46947 -+# func_mode_install arg...
43.46948 -+func_mode_install ()
43.46949 -+{
43.46950 -+    $opt_debug
43.46951 -+    # There may be an optional sh(1) argument at the beginning of
43.46952 -+    # install_prog (especially on Windows NT).
43.46953 -+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
43.46954 -+       # Allow the use of GNU shtool's install command.
43.46955 -+       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
43.46956 -+      # Aesthetically quote it.
43.46957 -+      func_quote_for_eval "$nonopt"
43.46958 -+      install_prog="$func_quote_for_eval_result "
43.46959 -+      arg=$1
43.46960 -+      shift
43.46961 -+    else
43.46962 -+      install_prog=
43.46963 -+      arg=$nonopt
43.46964 -+    fi
43.46965 -+
43.46966 -+    # The real first argument should be the name of the installation program.
43.46967 -+    # Aesthetically quote it.
43.46968 -+    func_quote_for_eval "$arg"
43.46969 -+    install_prog="$install_prog$func_quote_for_eval_result"
43.46970 -+
43.46971 -+    # We need to accept at least all the BSD install flags.
43.46972 -+    dest=
43.46973 -+    files=
43.46974 -+    opts=
43.46975 -+    prev=
43.46976 -+    install_type=
43.46977 -+    isdir=no
43.46978 -+    stripme=
43.46979 -+    for arg
43.46980 -+    do
43.46981 -+      if test -n "$dest"; then
43.46982 -+	files="$files $dest"
43.46983 -+	dest=$arg
43.46984 -+	continue
43.46985 -+      fi
43.46986 -+
43.46987 -+      case $arg in
43.46988 -+      -d) isdir=yes ;;
43.46989 -+      -f)
43.46990 -+      	case " $install_prog " in
43.46991 -+	*[\\\ /]cp\ *) ;;
43.46992 -+	*) prev=$arg ;;
43.46993 -+	esac
43.46994 -+	;;
43.46995 -+      -g | -m | -o)
43.46996 -+	prev=$arg
43.46997 -+	;;
43.46998 -+      -s)
43.46999 -+	stripme=" -s"
43.47000 -+	continue
43.47001 -+	;;
43.47002 -+      -*)
43.47003 -+	;;
43.47004 -+      *)
43.47005 -+	# If the previous option needed an argument, then skip it.
43.47006 -+	if test -n "$prev"; then
43.47007 -+	  prev=
43.47008 -+	else
43.47009 -+	  dest=$arg
43.47010 -+	  continue
43.47011 -+	fi
43.47012 -+	;;
43.47013 -+      esac
43.47014 -+
43.47015 -+      # Aesthetically quote the argument.
43.47016 -+      func_quote_for_eval "$arg"
43.47017 -+      install_prog="$install_prog $func_quote_for_eval_result"
43.47018 -+    done
43.47019 -+
43.47020 -+    test -z "$install_prog" && \
43.47021 -+      func_fatal_help "you must specify an install program"
43.47022 -+
43.47023 -+    test -n "$prev" && \
43.47024 -+      func_fatal_help "the \`$prev' option requires an argument"
43.47025 -+
43.47026 -+    if test -z "$files"; then
43.47027 -+      if test -z "$dest"; then
43.47028 -+	func_fatal_help "no file or destination specified"
43.47029 -+      else
43.47030 -+	func_fatal_help "you must specify a destination"
43.47031 -+      fi
43.47032 -+    fi
43.47033 -+
43.47034 -+    # Strip any trailing slash from the destination.
43.47035 -+    func_stripname '' '/' "$dest"
43.47036 -+    dest=$func_stripname_result
43.47037 -+
43.47038 -+    # Check to see that the destination is a directory.
43.47039 -+    test -d "$dest" && isdir=yes
43.47040 -+    if test "$isdir" = yes; then
43.47041 -+      destdir="$dest"
43.47042 -+      destname=
43.47043 -+    else
43.47044 -+      func_dirname "$dest" "" "."
43.47045 -+      destdir="$func_dirname_result"
43.47046 -+      func_basename "$dest"
43.47047 -+      destname="$func_basename_result"
43.47048 -+
43.47049 -+      # Not a directory, so check to see that there is only one file specified.
43.47050 -+      set dummy $files; shift
43.47051 -+      test "$#" -gt 1 && \
43.47052 -+	func_fatal_help "\`$dest' is not a directory"
43.47053 -+    fi
43.47054 -+    case $destdir in
43.47055 -+    [\\/]* | [A-Za-z]:[\\/]*) ;;
43.47056 -+    *)
43.47057 -+      for file in $files; do
43.47058 -+	case $file in
43.47059 -+	*.lo) ;;
43.47060 -+	*)
43.47061 -+	  func_fatal_help "\`$destdir' must be an absolute directory name"
43.47062 -+	  ;;
43.47063 -+	esac
43.47064 -+      done
43.47065 -+      ;;
43.47066 -+    esac
43.47067 -+
43.47068 -+    # This variable tells wrapper scripts just to set variables rather
43.47069 -+    # than running their programs.
43.47070 -+    libtool_install_magic="$magic"
43.47071 -+
43.47072 -+    staticlibs=
43.47073 -+    future_libdirs=
43.47074 -+    current_libdirs=
43.47075 -+    for file in $files; do
43.47076 -+
43.47077 -+      # Do each installation.
43.47078 -+      case $file in
43.47079 -+      *.$libext)
43.47080 -+	# Do the static libraries later.
43.47081 -+	staticlibs="$staticlibs $file"
43.47082 -+	;;
43.47083 -+
43.47084 -+      *.la)
43.47085 -+	# Check to see that this really is a libtool archive.
43.47086 -+	func_lalib_unsafe_p "$file" \
43.47087 -+	  || func_fatal_help "\`$file' is not a valid libtool archive"
43.47088 -+
43.47089 -+	library_names=
43.47090 -+	old_library=
43.47091 -+	relink_command=
43.47092 -+	func_source "$file"
43.47093 -+
43.47094 -+	# Add the libdir to current_libdirs if it is the destination.
43.47095 -+	if test "X$destdir" = "X$libdir"; then
43.47096 -+	  case "$current_libdirs " in
43.47097 -+	  *" $libdir "*) ;;
43.47098 -+	  *) current_libdirs="$current_libdirs $libdir" ;;
43.47099 -+	  esac
43.47100 -+	else
43.47101 -+	  # Note the libdir as a future libdir.
43.47102 -+	  case "$future_libdirs " in
43.47103 -+	  *" $libdir "*) ;;
43.47104 -+	  *) future_libdirs="$future_libdirs $libdir" ;;
43.47105 -+	  esac
43.47106 -+	fi
43.47107 -+
43.47108 -+	func_dirname "$file" "/" ""
43.47109 -+	dir="$func_dirname_result"
43.47110 -+	dir="$dir$objdir"
43.47111 -+
43.47112 -+	if test -n "$relink_command"; then
43.47113 -+	  # Determine the prefix the user has applied to our future dir.
43.47114 -+	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
43.47115 -+
43.47116 -+	  # Don't allow the user to place us outside of our expected
43.47117 -+	  # location b/c this prevents finding dependent libraries that
43.47118 -+	  # are installed to the same prefix.
43.47119 -+	  # At present, this check doesn't affect windows .dll's that
43.47120 -+	  # are installed into $libdir/../bin (currently, that works fine)
43.47121 -+	  # but it's something to keep an eye on.
43.47122 -+	  test "$inst_prefix_dir" = "$destdir" && \
43.47123 -+	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
43.47124 -+
43.47125 -+	  if test -n "$inst_prefix_dir"; then
43.47126 -+	    # Stick the inst_prefix_dir data into the link command.
43.47127 -+	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
43.47128 -+	  else
43.47129 -+	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
43.47130 -+	  fi
43.47131 -+
43.47132 -+	  func_warning "relinking \`$file'"
43.47133 -+	  func_show_eval "$relink_command" \
43.47134 -+	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
43.47135 -+	fi
43.47136 -+
43.47137 -+	# See the names of the shared library.
43.47138 -+	set dummy $library_names; shift
43.47139 -+	if test -n "$1"; then
43.47140 -+	  realname="$1"
43.47141 -+	  shift
43.47142 -+
43.47143 -+	  srcname="$realname"
43.47144 -+	  test -n "$relink_command" && srcname="$realname"T
43.47145 -+
43.47146 -+	  # Install the shared library and build the symlinks.
43.47147 -+	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
43.47148 -+	      'exit $?'
43.47149 -+	  tstripme="$stripme"
43.47150 -+	  case $host_os in
43.47151 -+	  cygwin* | mingw* | pw32*)
43.47152 -+	    case $realname in
43.47153 -+	    *.dll.a)
43.47154 -+	      tstripme=""
43.47155 -+	      ;;
43.47156 -+	    esac
43.47157 -+	    ;;
43.47158 -+	  esac
43.47159 -+	  if test -n "$tstripme" && test -n "$striplib"; then
43.47160 -+	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
43.47161 -+	  fi
43.47162 -+
43.47163 -+	  if test "$#" -gt 0; then
43.47164 -+	    # Delete the old symlinks, and create new ones.
43.47165 -+	    # Try `ln -sf' first, because the `ln' binary might depend on
43.47166 -+	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
43.47167 -+	    # so we also need to try rm && ln -s.
43.47168 -+	    for linkname
43.47169 -+	    do
43.47170 -+	      test "$linkname" != "$realname" \
43.47171 -+		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
43.47172 -+	    done
43.47173 -+	  fi
43.47174 -+
43.47175 -+	  # Do each command in the postinstall commands.
43.47176 -+	  lib="$destdir/$realname"
43.47177 -+	  func_execute_cmds "$postinstall_cmds" 'exit $?'
43.47178 -+	fi
43.47179 -+
43.47180 -+	# Install the pseudo-library for information purposes.
43.47181 -+	func_basename "$file"
43.47182 -+	name="$func_basename_result"
43.47183 -+	instname="$dir/$name"i
43.47184 -+	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
43.47185 -+
43.47186 -+	# Maybe install the static library, too.
43.47187 -+	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
43.47188 -+	;;
43.47189 -+
43.47190 -+      *.lo)
43.47191 -+	# Install (i.e. copy) a libtool object.
43.47192 -+
43.47193 -+	# Figure out destination file name, if it wasn't already specified.
43.47194 -+	if test -n "$destname"; then
43.47195 -+	  destfile="$destdir/$destname"
43.47196 -+	else
43.47197 -+	  func_basename "$file"
43.47198 -+	  destfile="$func_basename_result"
43.47199 -+	  destfile="$destdir/$destfile"
43.47200 -+	fi
43.47201 -+
43.47202 -+	# Deduce the name of the destination old-style object file.
43.47203 -+	case $destfile in
43.47204 -+	*.lo)
43.47205 -+	  func_lo2o "$destfile"
43.47206 -+	  staticdest=$func_lo2o_result
43.47207 -+	  ;;
43.47208 -+	*.$objext)
43.47209 -+	  staticdest="$destfile"
43.47210 -+	  destfile=
43.47211 -+	  ;;
43.47212 -+	*)
43.47213 -+	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
43.47214 -+	  ;;
43.47215 -+	esac
43.47216 -+
43.47217 -+	# Install the libtool object if requested.
43.47218 -+	test -n "$destfile" && \
43.47219 -+	  func_show_eval "$install_prog $file $destfile" 'exit $?'
43.47220 -+
43.47221 -+	# Install the old object if enabled.
43.47222 -+	if test "$build_old_libs" = yes; then
43.47223 -+	  # Deduce the name of the old-style object file.
43.47224 -+	  func_lo2o "$file"
43.47225 -+	  staticobj=$func_lo2o_result
43.47226 -+	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
43.47227 -+	fi
43.47228 -+	exit $EXIT_SUCCESS
43.47229 -+	;;
43.47230 -+
43.47231 -+      *)
43.47232 -+	# Figure out destination file name, if it wasn't already specified.
43.47233 -+	if test -n "$destname"; then
43.47234 -+	  destfile="$destdir/$destname"
43.47235 -+	else
43.47236 -+	  func_basename "$file"
43.47237 -+	  destfile="$func_basename_result"
43.47238 -+	  destfile="$destdir/$destfile"
43.47239 -+	fi
43.47240 -+
43.47241 -+	# If the file is missing, and there is a .exe on the end, strip it
43.47242 -+	# because it is most likely a libtool script we actually want to
43.47243 -+	# install
43.47244 -+	stripped_ext=""
43.47245 -+	case $file in
43.47246 -+	  *.exe)
43.47247 -+	    if test ! -f "$file"; then
43.47248 -+	      func_stripname '' '.exe' "$file"
43.47249 -+	      file=$func_stripname_result
43.47250 -+	      stripped_ext=".exe"
43.47251 -+	    fi
43.47252 -+	    ;;
43.47253 -+	esac
43.47254 -+
43.47255 -+	# Do a test to see if this is really a libtool program.
43.47256 -+	case $host in
43.47257 -+	*cygwin*|*mingw*)
43.47258 -+	    func_stripname '' '.exe' "$file"
43.47259 -+	    wrapper=$func_stripname_result
43.47260 -+	    ;;
43.47261 -+	*)
43.47262 -+	    wrapper=$file
43.47263 -+	    ;;
43.47264 -+	esac
43.47265 -+	if func_ltwrapper_p "$wrapper"; then
43.47266 -+	  notinst_deplibs=
43.47267 -+	  relink_command=
43.47268 -+
43.47269 -+	  func_source "$wrapper"
43.47270 -+
43.47271 -+	  # Check the variables that should have been set.
43.47272 -+	  test -z "$generated_by_libtool_version" && \
43.47273 -+	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
43.47274 -+
43.47275 -+	  finalize=yes
43.47276 -+	  for lib in $notinst_deplibs; do
43.47277 -+	    # Check to see that each library is installed.
43.47278 -+	    libdir=
43.47279 -+	    if test -f "$lib"; then
43.47280 -+	      func_source "$lib"
43.47281 -+	    fi
43.47282 -+	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
43.47283 -+	    if test -n "$libdir" && test ! -f "$libfile"; then
43.47284 -+	      func_warning "\`$lib' has not been installed in \`$libdir'"
43.47285 -+	      finalize=no
43.47286 -+	    fi
43.47287 -+	  done
43.47288 -+
43.47289 -+	  relink_command=
43.47290 -+	  func_source "$wrapper"
43.47291 -+
43.47292 -+	  outputname=
43.47293 -+	  if test "$fast_install" = no && test -n "$relink_command"; then
43.47294 -+	    $opt_dry_run || {
43.47295 -+	      if test "$finalize" = yes; then
43.47296 -+	        tmpdir=`func_mktempdir`
43.47297 -+		func_basename "$file$stripped_ext"
43.47298 -+		file="$func_basename_result"
43.47299 -+	        outputname="$tmpdir/$file"
43.47300 -+	        # Replace the output file specification.
43.47301 -+	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
43.47302 -+
43.47303 -+	        $opt_silent || {
43.47304 -+	          func_quote_for_expand "$relink_command"
43.47305 -+		  eval "func_echo $func_quote_for_expand_result"
43.47306 -+	        }
43.47307 -+	        if eval "$relink_command"; then :
43.47308 -+	          else
43.47309 -+		  func_error "error: relink \`$file' with the above command before installing it"
43.47310 -+		  $opt_dry_run || ${RM}r "$tmpdir"
43.47311 -+		  continue
43.47312 -+	        fi
43.47313 -+	        file="$outputname"
43.47314 -+	      else
43.47315 -+	        func_warning "cannot relink \`$file'"
43.47316 -+	      fi
43.47317 -+	    }
43.47318 -+	  else
43.47319 -+	    # Install the binary that we compiled earlier.
43.47320 -+	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
43.47321 -+	  fi
43.47322 -+	fi
43.47323 -+
43.47324 -+	# remove .exe since cygwin /usr/bin/install will append another
43.47325 -+	# one anyway
43.47326 -+	case $install_prog,$host in
43.47327 -+	*/usr/bin/install*,*cygwin*)
43.47328 -+	  case $file:$destfile in
43.47329 -+	  *.exe:*.exe)
43.47330 -+	    # this is ok
43.47331 -+	    ;;
43.47332 -+	  *.exe:*)
43.47333 -+	    destfile=$destfile.exe
43.47334 -+	    ;;
43.47335 -+	  *:*.exe)
43.47336 -+	    func_stripname '' '.exe' "$destfile"
43.47337 -+	    destfile=$func_stripname_result
43.47338 -+	    ;;
43.47339 -+	  esac
43.47340 -+	  ;;
43.47341 -+	esac
43.47342 -+	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
43.47343 -+	$opt_dry_run || if test -n "$outputname"; then
43.47344 -+	  ${RM}r "$tmpdir"
43.47345 -+	fi
43.47346 -+	;;
43.47347 -+      esac
43.47348 -+    done
43.47349 -+
43.47350 -+    for file in $staticlibs; do
43.47351 -+      func_basename "$file"
43.47352 -+      name="$func_basename_result"
43.47353 -+
43.47354 -+      # Set up the ranlib parameters.
43.47355 -+      oldlib="$destdir/$name"
43.47356 -+
43.47357 -+      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
43.47358 -+
43.47359 -+      if test -n "$stripme" && test -n "$old_striplib"; then
43.47360 -+	func_show_eval "$old_striplib $oldlib" 'exit $?'
43.47361 -+      fi
43.47362 -+
43.47363 -+      # Do each command in the postinstall commands.
43.47364 -+      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
43.47365 -+    done
43.47366 -+
43.47367 -+    test -n "$future_libdirs" && \
43.47368 -+      func_warning "remember to run \`$progname --finish$future_libdirs'"
43.47369 -+
43.47370 -+    if test -n "$current_libdirs"; then
43.47371 -+      # Maybe just do a dry run.
43.47372 -+      $opt_dry_run && current_libdirs=" -n$current_libdirs"
43.47373 -+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
43.47374 -+    else
43.47375 -+      exit $EXIT_SUCCESS
43.47376 -+    fi
43.47377 -+}
43.47378 -+
43.47379 -+test "$mode" = install && func_mode_install ${1+"$@"}
43.47380 -+
43.47381 -+
43.47382 -+# func_mode_link arg...
43.47383 -+func_mode_link ()
43.47384 -+{
43.47385 -+    $opt_debug
43.47386 -+    case $host in
43.47387 -+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
43.47388 -+      # It is impossible to link a dll without this setting, and
43.47389 -+      # we shouldn't force the makefile maintainer to figure out
43.47390 -+      # which system we are compiling for in order to pass an extra
43.47391 -+      # flag for every libtool invocation.
43.47392 -+      # allow_undefined=no
43.47393 -+
43.47394 -+      # FIXME: Unfortunately, there are problems with the above when trying
43.47395 -+      # to make a dll which has undefined symbols, in which case not
43.47396 -+      # even a static library is built.  For now, we need to specify
43.47397 -+      # -no-undefined on the libtool link line when we can be certain
43.47398 -+      # that all symbols are satisfied, otherwise we get a static library.
43.47399 -+      allow_undefined=yes
43.47400 -+      ;;
43.47401 -+    *)
43.47402 -+      allow_undefined=yes
43.47403 -+      ;;
43.47404 -+    esac
43.47405 -+    libtool_args=$nonopt
43.47406 -+    base_compile="$nonopt $@"
43.47407 -+    compile_command=$nonopt
43.47408 -+    finalize_command=$nonopt
43.47409 -+
43.47410 -+    compile_rpath=
43.47411 -+    finalize_rpath=
43.47412 -+    compile_shlibpath=
43.47413 -+    finalize_shlibpath=
43.47414 -+    convenience=
43.47415 -+    old_convenience=
43.47416 -+    deplibs=
43.47417 -+    old_deplibs=
43.47418 -+    compiler_flags=
43.47419 -+    linker_flags=
43.47420 -+    dllsearchpath=
43.47421 -+    lib_search_path=`pwd`
43.47422 -+    inst_prefix_dir=
43.47423 -+    new_inherited_linker_flags=
43.47424 -+
43.47425 -+    avoid_version=no
43.47426 -+    dlfiles=
43.47427 -+    dlprefiles=
43.47428 -+    dlself=no
43.47429 -+    export_dynamic=no
43.47430 -+    export_symbols=
43.47431 -+    export_symbols_regex=
43.47432 -+    generated=
43.47433 -+    libobjs=
43.47434 -+    ltlibs=
43.47435 -+    module=no
43.47436 -+    no_install=no
43.47437 -+    objs=
43.47438 -+    non_pic_objects=
43.47439 -+    precious_files_regex=
43.47440 -+    prefer_static_libs=no
43.47441 -+    preload=no
43.47442 -+    prev=
43.47443 -+    prevarg=
43.47444 -+    release=
43.47445 -+    rpath=
43.47446 -+    xrpath=
43.47447 -+    perm_rpath=
43.47448 -+    temp_rpath=
43.47449 -+    thread_safe=no
43.47450 -+    vinfo=
43.47451 -+    vinfo_number=no
43.47452 -+    weak_libs=
43.47453 -+    single_module="${wl}-single_module"
43.47454 -+    func_infer_tag $base_compile
43.47455 -+
43.47456 -+    # We need to know -static, to get the right output filenames.
43.47457 -+    for arg
43.47458 -+    do
43.47459 -+      case $arg in
43.47460 -+      -shared)
43.47461 -+	test "$build_libtool_libs" != yes && \
43.47462 -+	  func_fatal_configuration "can not build a shared library"
43.47463 -+	build_old_libs=no
43.47464 -+	break
43.47465 -+	;;
43.47466 -+      -all-static | -static | -static-libtool-libs)
43.47467 -+	case $arg in
43.47468 -+	-all-static)
43.47469 -+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
43.47470 -+	    func_warning "complete static linking is impossible in this configuration"
43.47471 -+	  fi
43.47472 -+	  if test -n "$link_static_flag"; then
43.47473 -+	    dlopen_self=$dlopen_self_static
43.47474 -+	    # See comment for -static flag below, for more details.
43.47475 -+	    func_append compile_command " $link_static_flag"
43.47476 -+	    func_append finalize_command " $link_static_flag"
43.47477 -+	  fi
43.47478 -+	  prefer_static_libs=yes
43.47479 -+	  ;;
43.47480 -+	-static)
43.47481 -+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
43.47482 -+	    dlopen_self=$dlopen_self_static
43.47483 -+	  fi
43.47484 -+	  prefer_static_libs=built
43.47485 -+	  ;;
43.47486 -+	-static-libtool-libs)
43.47487 -+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
43.47488 -+	    dlopen_self=$dlopen_self_static
43.47489 -+	  fi
43.47490 -+	  prefer_static_libs=yes
43.47491 -+	  ;;
43.47492 -+	esac
43.47493 -+	build_libtool_libs=no
43.47494 -+	build_old_libs=yes
43.47495 -+	break
43.47496 -+	;;
43.47497 -+      esac
43.47498 -+    done
43.47499 -+
43.47500 -+    # See if our shared archives depend on static archives.
43.47501 -+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
43.47502 -+
43.47503 -+    # Go through the arguments, transforming them on the way.
43.47504 -+    while test "$#" -gt 0; do
43.47505 -+      arg="$1"
43.47506 -+      shift
43.47507 -+      func_quote_for_eval "$arg"
43.47508 -+      qarg=$func_quote_for_eval_unquoted_result
43.47509 -+      func_append libtool_args " $func_quote_for_eval_result"
43.47510 -+
43.47511 -+      # If the previous option needs an argument, assign it.
43.47512 -+      if test -n "$prev"; then
43.47513 -+	case $prev in
43.47514 -+	output)
43.47515 -+	  func_append compile_command " @OUTPUT@"
43.47516 -+	  func_append finalize_command " @OUTPUT@"
43.47517 -+	  ;;
43.47518 -+	esac
43.47519 -+
43.47520 -+	case $prev in
43.47521 -+	dlfiles|dlprefiles)
43.47522 -+	  if test "$preload" = no; then
43.47523 -+	    # Add the symbol object into the linking commands.
43.47524 -+	    func_append compile_command " @SYMFILE@"
43.47525 -+	    func_append finalize_command " @SYMFILE@"
43.47526 -+	    preload=yes
43.47527 -+	  fi
43.47528 -+	  case $arg in
43.47529 -+	  *.la | *.lo) ;;  # We handle these cases below.
43.47530 -+	  force)
43.47531 -+	    if test "$dlself" = no; then
43.47532 -+	      dlself=needless
43.47533 -+	      export_dynamic=yes
43.47534 -+	    fi
43.47535 -+	    prev=
43.47536 -+	    continue
43.47537 -+	    ;;
43.47538 -+	  self)
43.47539 -+	    if test "$prev" = dlprefiles; then
43.47540 -+	      dlself=yes
43.47541 -+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
43.47542 -+	      dlself=yes
43.47543 -+	    else
43.47544 -+	      dlself=needless
43.47545 -+	      export_dynamic=yes
43.47546 -+	    fi
43.47547 -+	    prev=
43.47548 -+	    continue
43.47549 -+	    ;;
43.47550 -+	  *)
43.47551 -+	    if test "$prev" = dlfiles; then
43.47552 -+	      dlfiles="$dlfiles $arg"
43.47553 -+	    else
43.47554 -+	      dlprefiles="$dlprefiles $arg"
43.47555 -+	    fi
43.47556 -+	    prev=
43.47557 -+	    continue
43.47558 -+	    ;;
43.47559 -+	  esac
43.47560 -+	  ;;
43.47561 -+	expsyms)
43.47562 -+	  export_symbols="$arg"
43.47563 -+	  test -f "$arg" \
43.47564 -+	    || func_fatal_error "symbol file \`$arg' does not exist"
43.47565 -+	  prev=
43.47566 -+	  continue
43.47567 -+	  ;;
43.47568 -+	expsyms_regex)
43.47569 -+	  export_symbols_regex="$arg"
43.47570 -+	  prev=
43.47571 -+	  continue
43.47572 -+	  ;;
43.47573 -+	framework)
43.47574 -+	  case $host in
43.47575 -+	    *-*-darwin*)
43.47576 -+	      case "$deplibs " in
43.47577 -+		*" $qarg.ltframework "*) ;;
43.47578 -+		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
43.47579 -+		   ;;
43.47580 -+	      esac
43.47581 -+	      ;;
43.47582 -+   	  esac
43.47583 -+	  prev=
43.47584 -+	  continue
43.47585 -+	  ;;
43.47586 -+	inst_prefix)
43.47587 -+	  inst_prefix_dir="$arg"
43.47588 -+	  prev=
43.47589 -+	  continue
43.47590 -+	  ;;
43.47591 -+	objectlist)
43.47592 -+	  if test -f "$arg"; then
43.47593 -+	    save_arg=$arg
43.47594 -+	    moreargs=
43.47595 -+	    for fil in `cat "$save_arg"`
43.47596 -+	    do
43.47597 -+#	      moreargs="$moreargs $fil"
43.47598 -+	      arg=$fil
43.47599 -+	      # A libtool-controlled object.
43.47600 -+
43.47601 -+	      # Check to see that this really is a libtool object.
43.47602 -+	      if func_lalib_unsafe_p "$arg"; then
43.47603 -+		pic_object=
43.47604 -+		non_pic_object=
43.47605 -+
43.47606 -+		# Read the .lo file
43.47607 -+		func_source "$arg"
43.47608 -+
43.47609 -+		if test -z "$pic_object" ||
43.47610 -+		   test -z "$non_pic_object" ||
43.47611 -+		   test "$pic_object" = none &&
43.47612 -+		   test "$non_pic_object" = none; then
43.47613 -+		  func_fatal_error "cannot find name of object for \`$arg'"
43.47614 -+		fi
43.47615 -+
43.47616 -+		# Extract subdirectory from the argument.
43.47617 -+		func_dirname "$arg" "/" ""
43.47618 -+		xdir="$func_dirname_result"
43.47619 -+
43.47620 -+		if test "$pic_object" != none; then
43.47621 -+		  # Prepend the subdirectory the object is found in.
43.47622 -+		  pic_object="$xdir$pic_object"
43.47623 -+
43.47624 -+		  if test "$prev" = dlfiles; then
43.47625 -+		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
43.47626 -+		      dlfiles="$dlfiles $pic_object"
43.47627 -+		      prev=
43.47628 -+		      continue
43.47629 -+		    else
43.47630 -+		      # If libtool objects are unsupported, then we need to preload.
43.47631 -+		      prev=dlprefiles
43.47632 -+		    fi
43.47633 -+		  fi
43.47634 -+
43.47635 -+		  # CHECK ME:  I think I busted this.  -Ossama
43.47636 -+		  if test "$prev" = dlprefiles; then
43.47637 -+		    # Preload the old-style object.
43.47638 -+		    dlprefiles="$dlprefiles $pic_object"
43.47639 -+		    prev=
43.47640 -+		  fi
43.47641 -+
43.47642 -+		  # A PIC object.
43.47643 -+		  func_append libobjs " $pic_object"
43.47644 -+		  arg="$pic_object"
43.47645 -+		fi
43.47646 -+
43.47647 -+		# Non-PIC object.
43.47648 -+		if test "$non_pic_object" != none; then
43.47649 -+		  # Prepend the subdirectory the object is found in.
43.47650 -+		  non_pic_object="$xdir$non_pic_object"
43.47651 -+
43.47652 -+		  # A standard non-PIC object
43.47653 -+		  func_append non_pic_objects " $non_pic_object"
43.47654 -+		  if test -z "$pic_object" || test "$pic_object" = none ; then
43.47655 -+		    arg="$non_pic_object"
43.47656 -+		  fi
43.47657 -+		else
43.47658 -+		  # If the PIC object exists, use it instead.
43.47659 -+		  # $xdir was prepended to $pic_object above.
43.47660 -+		  non_pic_object="$pic_object"
43.47661 -+		  func_append non_pic_objects " $non_pic_object"
43.47662 -+		fi
43.47663 -+	      else
43.47664 -+		# Only an error if not doing a dry-run.
43.47665 -+		if $opt_dry_run; then
43.47666 -+		  # Extract subdirectory from the argument.
43.47667 -+		  func_dirname "$arg" "/" ""
43.47668 -+		  xdir="$func_dirname_result"
43.47669 -+
43.47670 -+		  func_lo2o "$arg"
43.47671 -+		  pic_object=$xdir$objdir/$func_lo2o_result
43.47672 -+		  non_pic_object=$xdir$func_lo2o_result
43.47673 -+		  func_append libobjs " $pic_object"
43.47674 -+		  func_append non_pic_objects " $non_pic_object"
43.47675 -+	        else
43.47676 -+		  func_fatal_error "\`$arg' is not a valid libtool object"
43.47677 -+		fi
43.47678 -+	      fi
43.47679 -+	    done
43.47680 -+	  else
43.47681 -+	    func_fatal_error "link input file \`$arg' does not exist"
43.47682 -+	  fi
43.47683 -+	  arg=$save_arg
43.47684 -+	  prev=
43.47685 -+	  continue
43.47686 -+	  ;;
43.47687 -+	precious_regex)
43.47688 -+	  precious_files_regex="$arg"
43.47689 -+	  prev=
43.47690 -+	  continue
43.47691 -+	  ;;
43.47692 -+	release)
43.47693 -+	  release="-$arg"
43.47694 -+	  prev=
43.47695 -+	  continue
43.47696 -+	  ;;
43.47697 -+	rpath | xrpath)
43.47698 -+	  # We need an absolute path.
43.47699 -+	  case $arg in
43.47700 -+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
43.47701 -+	  *)
43.47702 -+	    func_fatal_error "only absolute run-paths are allowed"
43.47703 -+	    ;;
43.47704 -+	  esac
43.47705 -+	  if test "$prev" = rpath; then
43.47706 -+	    case "$rpath " in
43.47707 -+	    *" $arg "*) ;;
43.47708 -+	    *) rpath="$rpath $arg" ;;
43.47709 -+	    esac
43.47710 -+	  else
43.47711 -+	    case "$xrpath " in
43.47712 -+	    *" $arg "*) ;;
43.47713 -+	    *) xrpath="$xrpath $arg" ;;
43.47714 -+	    esac
43.47715 -+	  fi
43.47716 -+	  prev=
43.47717 -+	  continue
43.47718 -+	  ;;
43.47719 -+	shrext)
43.47720 -+  	  shrext_cmds="$arg"
43.47721 -+	  prev=
43.47722 -+	  continue
43.47723 -+	  ;;
43.47724 -+	weak)
43.47725 -+	  weak_libs="$weak_libs $arg"
43.47726 -+	  prev=
43.47727 -+	  continue
43.47728 -+	  ;;
43.47729 -+	xcclinker)
43.47730 -+	  linker_flags="$linker_flags $qarg"
43.47731 -+	  compiler_flags="$compiler_flags $qarg"
43.47732 -+	  prev=
43.47733 -+	  func_append compile_command " $qarg"
43.47734 -+	  func_append finalize_command " $qarg"
43.47735 -+	  continue
43.47736 -+	  ;;
43.47737 -+	xcompiler)
43.47738 -+	  compiler_flags="$compiler_flags $qarg"
43.47739 -+	  prev=
43.47740 -+	  func_append compile_command " $qarg"
43.47741 -+	  func_append finalize_command " $qarg"
43.47742 -+	  continue
43.47743 -+	  ;;
43.47744 -+	xlinker)
43.47745 -+	  linker_flags="$linker_flags $qarg"
43.47746 -+	  compiler_flags="$compiler_flags $wl$qarg"
43.47747 -+	  prev=
43.47748 -+	  func_append compile_command " $wl$qarg"
43.47749 -+	  func_append finalize_command " $wl$qarg"
43.47750 -+	  continue
43.47751 -+	  ;;
43.47752 -+	*)
43.47753 -+	  eval "$prev=\"\$arg\""
43.47754 -+	  prev=
43.47755 -+	  continue
43.47756 -+	  ;;
43.47757 -+	esac
43.47758 -+      fi # test -n "$prev"
43.47759 -+
43.47760 -+      prevarg="$arg"
43.47761 -+
43.47762 -+      case $arg in
43.47763 -+      -all-static)
43.47764 -+	# The effects of -all-static are defined in a previous loop.
43.47765 -+	continue
43.47766 -+	;;
43.47767 -+
43.47768 -+      -allow-undefined)
43.47769 -+	# FIXME: remove this flag sometime in the future.
43.47770 -+	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
43.47771 -+	;;
43.47772 -+
43.47773 -+      -avoid-version)
43.47774 -+	avoid_version=yes
43.47775 -+	continue
43.47776 -+	;;
43.47777 -+
43.47778 -+      -dlopen)
43.47779 -+	prev=dlfiles
43.47780 -+	continue
43.47781 -+	;;
43.47782 -+
43.47783 -+      -dlpreopen)
43.47784 -+	prev=dlprefiles
43.47785 -+	continue
43.47786 -+	;;
43.47787 -+
43.47788 -+      -export-dynamic)
43.47789 -+	export_dynamic=yes
43.47790 -+	continue
43.47791 -+	;;
43.47792 -+
43.47793 -+      -export-symbols | -export-symbols-regex)
43.47794 -+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
43.47795 -+	  func_fatal_error "more than one -exported-symbols argument is not allowed"
43.47796 -+	fi
43.47797 -+	if test "X$arg" = "X-export-symbols"; then
43.47798 -+	  prev=expsyms
43.47799 -+	else
43.47800 -+	  prev=expsyms_regex
43.47801 -+	fi
43.47802 -+	continue
43.47803 -+	;;
43.47804 -+
43.47805 -+      -framework)
43.47806 -+	prev=framework
43.47807 -+	continue
43.47808 -+	;;
43.47809 -+
43.47810 -+      -inst-prefix-dir)
43.47811 -+	prev=inst_prefix
43.47812 -+	continue
43.47813 -+	;;
43.47814 -+
43.47815 -+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
43.47816 -+      # so, if we see these flags be careful not to treat them like -L
43.47817 -+      -L[A-Z][A-Z]*:*)
43.47818 -+	case $with_gcc/$host in
43.47819 -+	no/*-*-irix* | /*-*-irix*)
43.47820 -+	  func_append compile_command " $arg"
43.47821 -+	  func_append finalize_command " $arg"
43.47822 -+	  ;;
43.47823 -+	esac
43.47824 -+	continue
43.47825 -+	;;
43.47826 -+
43.47827 -+      -L*)
43.47828 -+	func_stripname '-L' '' "$arg"
43.47829 -+	dir=$func_stripname_result
43.47830 -+	# We need an absolute path.
43.47831 -+	case $dir in
43.47832 -+	[\\/]* | [A-Za-z]:[\\/]*) ;;
43.47833 -+	*)
43.47834 -+	  absdir=`cd "$dir" && pwd`
43.47835 -+	  test -z "$absdir" && \
43.47836 -+	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
43.47837 -+	  dir="$absdir"
43.47838 -+	  ;;
43.47839 -+	esac
43.47840 -+	case "$deplibs " in
43.47841 -+	*" -L$dir "*) ;;
43.47842 -+	*)
43.47843 -+	  deplibs="$deplibs -L$dir"
43.47844 -+	  lib_search_path="$lib_search_path $dir"
43.47845 -+	  ;;
43.47846 -+	esac
43.47847 -+	case $host in
43.47848 -+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
43.47849 -+	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
43.47850 -+	  case :$dllsearchpath: in
43.47851 -+	  *":$dir:"*) ;;
43.47852 -+	  *) dllsearchpath="$dllsearchpath:$dir";;
43.47853 -+	  esac
43.47854 -+	  case :$dllsearchpath: in
43.47855 -+	  *":$testbindir:"*) ;;
43.47856 -+	  *) dllsearchpath="$dllsearchpath:$testbindir";;
43.47857 -+	  esac
43.47858 -+	  ;;
43.47859 -+	esac
43.47860 -+	continue
43.47861 -+	;;
43.47862 -+
43.47863 -+      -l*)
43.47864 -+	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
43.47865 -+	  case $host in
43.47866 -+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
43.47867 -+	    # These systems don't actually have a C or math library (as such)
43.47868 -+	    continue
43.47869 -+	    ;;
43.47870 -+	  *-*-os2*)
43.47871 -+	    # These systems don't actually have a C library (as such)
43.47872 -+	    test "X$arg" = "X-lc" && continue
43.47873 -+	    ;;
43.47874 -+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
43.47875 -+	    # Do not include libc due to us having libc/libc_r.
43.47876 -+	    test "X$arg" = "X-lc" && continue
43.47877 -+	    ;;
43.47878 -+	  *-*-rhapsody* | *-*-darwin1.[012])
43.47879 -+	    # Rhapsody C and math libraries are in the System framework
43.47880 -+	    deplibs="$deplibs System.ltframework"
43.47881 -+	    continue
43.47882 -+	    ;;
43.47883 -+	  *-*-sco3.2v5* | *-*-sco5v6*)
43.47884 -+	    # Causes problems with __ctype
43.47885 -+	    test "X$arg" = "X-lc" && continue
43.47886 -+	    ;;
43.47887 -+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
43.47888 -+	    # Compiler inserts libc in the correct place for threads to work
43.47889 -+	    test "X$arg" = "X-lc" && continue
43.47890 -+	    ;;
43.47891 -+	  esac
43.47892 -+	elif test "X$arg" = "X-lc_r"; then
43.47893 -+	 case $host in
43.47894 -+	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
43.47895 -+	   # Do not include libc_r directly, use -pthread flag.
43.47896 -+	   continue
43.47897 -+	   ;;
43.47898 -+	 esac
43.47899 -+	fi
43.47900 -+	deplibs="$deplibs $arg"
43.47901 -+	continue
43.47902 -+	;;
43.47903 -+
43.47904 -+      -module)
43.47905 -+	module=yes
43.47906 -+	continue
43.47907 -+	;;
43.47908 -+
43.47909 -+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
43.47910 -+      # classes, name mangling, and exception handling.
43.47911 -+      # Darwin uses the -arch flag to determine output architecture.
43.47912 -+      -model|-arch|-isysroot)
43.47913 -+	compiler_flags="$compiler_flags $arg"
43.47914 -+	func_append compile_command " $arg"
43.47915 -+	func_append finalize_command " $arg"
43.47916 -+	prev=xcompiler
43.47917 -+	continue
43.47918 -+	;;
43.47919 -+
43.47920 -+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
43.47921 -+	compiler_flags="$compiler_flags $arg"
43.47922 -+	func_append compile_command " $arg"
43.47923 -+	func_append finalize_command " $arg"
43.47924 -+	case "$new_inherited_linker_flags " in
43.47925 -+	    *" $arg "*) ;;
43.47926 -+	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
43.47927 -+	esac
43.47928 -+	continue
43.47929 -+	;;
43.47930 -+
43.47931 -+      -multi_module)
43.47932 -+	single_module="${wl}-multi_module"
43.47933 -+	continue
43.47934 -+	;;
43.47935 -+
43.47936 -+      -no-fast-install)
43.47937 -+	fast_install=no
43.47938 -+	continue
43.47939 -+	;;
43.47940 -+
43.47941 -+      -no-install)
43.47942 -+	case $host in
43.47943 -+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
43.47944 -+	  # The PATH hackery in wrapper scripts is required on Windows
43.47945 -+	  # in order for the loader to find any dlls it needs.
43.47946 -+	  func_warning "\`-no-install' is ignored for $host"
43.47947 -+	  func_warning "assuming \`-no-fast-install' instead"
43.47948 -+	  fast_install=no
43.47949 -+	  ;;
43.47950 -+	*) no_install=yes ;;
43.47951 -+	esac
43.47952 -+	continue
43.47953 -+	;;
43.47954 -+
43.47955 -+      -no-undefined)
43.47956 -+	allow_undefined=no
43.47957 -+	continue
43.47958 -+	;;
43.47959 -+
43.47960 -+      -objectlist)
43.47961 -+	prev=objectlist
43.47962 -+	continue
43.47963 -+	;;
43.47964 -+
43.47965 -+      -o) prev=output ;;
43.47966 -+
43.47967 -+      -precious-files-regex)
43.47968 -+	prev=precious_regex
43.47969 -+	continue
43.47970 -+	;;
43.47971 -+
43.47972 -+      -release)
43.47973 -+	prev=release
43.47974 -+	continue
43.47975 -+	;;
43.47976 -+
43.47977 -+      -rpath)
43.47978 -+	prev=rpath
43.47979 -+	continue
43.47980 -+	;;
43.47981 -+
43.47982 -+      -R)
43.47983 -+	prev=xrpath
43.47984 -+	continue
43.47985 -+	;;
43.47986 -+
43.47987 -+      -R*)
43.47988 -+	func_stripname '-R' '' "$arg"
43.47989 -+	dir=$func_stripname_result
43.47990 -+	# We need an absolute path.
43.47991 -+	case $dir in
43.47992 -+	[\\/]* | [A-Za-z]:[\\/]*) ;;
43.47993 -+	*)
43.47994 -+	  func_fatal_error "only absolute run-paths are allowed"
43.47995 -+	  ;;
43.47996 -+	esac
43.47997 -+	case "$xrpath " in
43.47998 -+	*" $dir "*) ;;
43.47999 -+	*) xrpath="$xrpath $dir" ;;
43.48000 -+	esac
43.48001 -+	continue
43.48002 -+	;;
43.48003 -+
43.48004 -+      -shared)
43.48005 -+	# The effects of -shared are defined in a previous loop.
43.48006 -+	continue
43.48007 -+	;;
43.48008 -+
43.48009 -+      -shrext)
43.48010 -+	prev=shrext
43.48011 -+	continue
43.48012 -+	;;
43.48013 -+
43.48014 -+      -static | -static-libtool-libs)
43.48015 -+	# The effects of -static are defined in a previous loop.
43.48016 -+	# We used to do the same as -all-static on platforms that
43.48017 -+	# didn't have a PIC flag, but the assumption that the effects
43.48018 -+	# would be equivalent was wrong.  It would break on at least
43.48019 -+	# Digital Unix and AIX.
43.48020 -+	continue
43.48021 -+	;;
43.48022 -+
43.48023 -+      -thread-safe)
43.48024 -+	thread_safe=yes
43.48025 -+	continue
43.48026 -+	;;
43.48027 -+
43.48028 -+      -version-info)
43.48029 -+	prev=vinfo
43.48030 -+	continue
43.48031 -+	;;
43.48032 -+
43.48033 -+      -version-number)
43.48034 -+	prev=vinfo
43.48035 -+	vinfo_number=yes
43.48036 -+	continue
43.48037 -+	;;
43.48038 -+
43.48039 -+      -weak)
43.48040 -+        prev=weak
43.48041 -+	continue
43.48042 -+	;;
43.48043 -+
43.48044 -+      -Wc,*)
43.48045 -+	func_stripname '-Wc,' '' "$arg"
43.48046 -+	args=$func_stripname_result
43.48047 -+	arg=
43.48048 -+	save_ifs="$IFS"; IFS=','
43.48049 -+	for flag in $args; do
43.48050 -+	  IFS="$save_ifs"
43.48051 -+          func_quote_for_eval "$flag"
43.48052 -+	  arg="$arg $wl$func_quote_for_eval_result"
43.48053 -+	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
43.48054 -+	done
43.48055 -+	IFS="$save_ifs"
43.48056 -+	func_stripname ' ' '' "$arg"
43.48057 -+	arg=$func_stripname_result
43.48058 -+	;;
43.48059 -+
43.48060 -+      -Wl,*)
43.48061 -+	func_stripname '-Wl,' '' "$arg"
43.48062 -+	args=$func_stripname_result
43.48063 -+	arg=
43.48064 -+	save_ifs="$IFS"; IFS=','
43.48065 -+	for flag in $args; do
43.48066 -+	  IFS="$save_ifs"
43.48067 -+          func_quote_for_eval "$flag"
43.48068 -+	  arg="$arg $wl$func_quote_for_eval_result"
43.48069 -+	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
43.48070 -+	  linker_flags="$linker_flags $func_quote_for_eval_result"
43.48071 -+	done
43.48072 -+	IFS="$save_ifs"
43.48073 -+	func_stripname ' ' '' "$arg"
43.48074 -+	arg=$func_stripname_result
43.48075 -+	;;
43.48076 -+
43.48077 -+      -Xcompiler)
43.48078 -+	prev=xcompiler
43.48079 -+	continue
43.48080 -+	;;
43.48081 -+
43.48082 -+      -Xlinker)
43.48083 -+	prev=xlinker
43.48084 -+	continue
43.48085 -+	;;
43.48086 -+
43.48087 -+      -XCClinker)
43.48088 -+	prev=xcclinker
43.48089 -+	continue
43.48090 -+	;;
43.48091 -+
43.48092 -+      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
43.48093 -+      # -r[0-9][0-9]* specifies the processor on the SGI compiler
43.48094 -+      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
43.48095 -+      # +DA*, +DD* enable 64-bit mode on the HP compiler
43.48096 -+      # -q* pass through compiler args for the IBM compiler
43.48097 -+      # -m*, -t[45]*, -txscale* pass through architecture-specific
43.48098 -+      # compiler args for GCC
43.48099 -+      # -F/path gives path to uninstalled frameworks, gcc on darwin
43.48100 -+      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
43.48101 -+      # @file GCC response files
43.48102 -+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
43.48103 -+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
43.48104 -+        func_quote_for_eval "$arg"
43.48105 -+	arg="$func_quote_for_eval_result"
43.48106 -+        func_append compile_command " $arg"
43.48107 -+        func_append finalize_command " $arg"
43.48108 -+        compiler_flags="$compiler_flags $arg"
43.48109 -+        continue
43.48110 -+        ;;
43.48111 -+
43.48112 -+      # Some other compiler flag.
43.48113 -+      -* | +*)
43.48114 -+        func_quote_for_eval "$arg"
43.48115 -+	arg="$func_quote_for_eval_result"
43.48116 -+	;;
43.48117 -+
43.48118 -+      *.$objext)
43.48119 -+	# A standard object.
43.48120 -+	objs="$objs $arg"
43.48121 -+	;;
43.48122 -+
43.48123 -+      *.lo)
43.48124 -+	# A libtool-controlled object.
43.48125 -+
43.48126 -+	# Check to see that this really is a libtool object.
43.48127 -+	if func_lalib_unsafe_p "$arg"; then
43.48128 -+	  pic_object=
43.48129 -+	  non_pic_object=
43.48130 -+
43.48131 -+	  # Read the .lo file
43.48132 -+	  func_source "$arg"
43.48133 -+
43.48134 -+	  if test -z "$pic_object" ||
43.48135 -+	     test -z "$non_pic_object" ||
43.48136 -+	     test "$pic_object" = none &&
43.48137 -+	     test "$non_pic_object" = none; then
43.48138 -+	    func_fatal_error "cannot find name of object for \`$arg'"
43.48139 -+	  fi
43.48140 -+
43.48141 -+	  # Extract subdirectory from the argument.
43.48142 -+	  func_dirname "$arg" "/" ""
43.48143 -+	  xdir="$func_dirname_result"
43.48144 -+
43.48145 -+	  if test "$pic_object" != none; then
43.48146 -+	    # Prepend the subdirectory the object is found in.
43.48147 -+	    pic_object="$xdir$pic_object"
43.48148 -+
43.48149 -+	    if test "$prev" = dlfiles; then
43.48150 -+	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
43.48151 -+		dlfiles="$dlfiles $pic_object"
43.48152 -+		prev=
43.48153 -+		continue
43.48154 -+	      else
43.48155 -+		# If libtool objects are unsupported, then we need to preload.
43.48156 -+		prev=dlprefiles
43.48157 -+	      fi
43.48158 -+	    fi
43.48159 -+
43.48160 -+	    # CHECK ME:  I think I busted this.  -Ossama
43.48161 -+	    if test "$prev" = dlprefiles; then
43.48162 -+	      # Preload the old-style object.
43.48163 -+	      dlprefiles="$dlprefiles $pic_object"
43.48164 -+	      prev=
43.48165 -+	    fi
43.48166 -+
43.48167 -+	    # A PIC object.
43.48168 -+	    func_append libobjs " $pic_object"
43.48169 -+	    arg="$pic_object"
43.48170 -+	  fi
43.48171 -+
43.48172 -+	  # Non-PIC object.
43.48173 -+	  if test "$non_pic_object" != none; then
43.48174 -+	    # Prepend the subdirectory the object is found in.
43.48175 -+	    non_pic_object="$xdir$non_pic_object"
43.48176 -+
43.48177 -+	    # A standard non-PIC object
43.48178 -+	    func_append non_pic_objects " $non_pic_object"
43.48179 -+	    if test -z "$pic_object" || test "$pic_object" = none ; then
43.48180 -+	      arg="$non_pic_object"
43.48181 -+	    fi
43.48182 -+	  else
43.48183 -+	    # If the PIC object exists, use it instead.
43.48184 -+	    # $xdir was prepended to $pic_object above.
43.48185 -+	    non_pic_object="$pic_object"
43.48186 -+	    func_append non_pic_objects " $non_pic_object"
43.48187 -+	  fi
43.48188 -+	else
43.48189 -+	  # Only an error if not doing a dry-run.
43.48190 -+	  if $opt_dry_run; then
43.48191 -+	    # Extract subdirectory from the argument.
43.48192 -+	    func_dirname "$arg" "/" ""
43.48193 -+	    xdir="$func_dirname_result"
43.48194 -+
43.48195 -+	    func_lo2o "$arg"
43.48196 -+	    pic_object=$xdir$objdir/$func_lo2o_result
43.48197 -+	    non_pic_object=$xdir$func_lo2o_result
43.48198 -+	    func_append libobjs " $pic_object"
43.48199 -+	    func_append non_pic_objects " $non_pic_object"
43.48200 -+	  else
43.48201 -+	    func_fatal_error "\`$arg' is not a valid libtool object"
43.48202 -+	  fi
43.48203 -+	fi
43.48204 -+	;;
43.48205 -+
43.48206 -+      *.$libext)
43.48207 -+	# An archive.
43.48208 -+	deplibs="$deplibs $arg"
43.48209 -+	old_deplibs="$old_deplibs $arg"
43.48210 -+	continue
43.48211 -+	;;
43.48212 -+
43.48213 -+      *.la)
43.48214 -+	# A libtool-controlled library.
43.48215 -+
43.48216 -+	if test "$prev" = dlfiles; then
43.48217 -+	  # This library was specified with -dlopen.
43.48218 -+	  dlfiles="$dlfiles $arg"
43.48219 -+	  prev=
43.48220 -+	elif test "$prev" = dlprefiles; then
43.48221 -+	  # The library was specified with -dlpreopen.
43.48222 -+	  dlprefiles="$dlprefiles $arg"
43.48223 -+	  prev=
43.48224 -+	else
43.48225 -+	  deplibs="$deplibs $arg"
43.48226 -+	fi
43.48227 -+	continue
43.48228 -+	;;
43.48229 -+
43.48230 -+      # Some other compiler argument.
43.48231 -+      *)
43.48232 -+	# Unknown arguments in both finalize_command and compile_command need
43.48233 -+	# to be aesthetically quoted because they are evaled later.
43.48234 -+	func_quote_for_eval "$arg"
43.48235 -+	arg="$func_quote_for_eval_result"
43.48236 -+	;;
43.48237 -+      esac # arg
43.48238 -+
43.48239 -+      # Now actually substitute the argument into the commands.
43.48240 -+      if test -n "$arg"; then
43.48241 -+	func_append compile_command " $arg"
43.48242 -+	func_append finalize_command " $arg"
43.48243 -+      fi
43.48244 -+    done # argument parsing loop
43.48245 -+
43.48246 -+    test -n "$prev" && \
43.48247 -+      func_fatal_help "the \`$prevarg' option requires an argument"
43.48248 -+
43.48249 -+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
43.48250 -+      eval arg=\"$export_dynamic_flag_spec\"
43.48251 -+      func_append compile_command " $arg"
43.48252 -+      func_append finalize_command " $arg"
43.48253 -+    fi
43.48254 -+
43.48255 -+    oldlibs=
43.48256 -+    # calculate the name of the file, without its directory
43.48257 -+    func_basename "$output"
43.48258 -+    outputname="$func_basename_result"
43.48259 -+    libobjs_save="$libobjs"
43.48260 -+
43.48261 -+    if test -n "$shlibpath_var"; then
43.48262 -+      # get the directories listed in $shlibpath_var
43.48263 -+      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
43.48264 -+    else
43.48265 -+      shlib_search_path=
43.48266 -+    fi
43.48267 -+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
43.48268 -+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
43.48269 -+
43.48270 -+    func_dirname "$output" "/" ""
43.48271 -+    output_objdir="$func_dirname_result$objdir"
43.48272 -+    # Create the object directory.
43.48273 -+    func_mkdir_p "$output_objdir"
43.48274 -+
43.48275 -+    # Determine the type of output
43.48276 -+    case $output in
43.48277 -+    "")
43.48278 -+      func_fatal_help "you must specify an output file"
43.48279 -+      ;;
43.48280 -+    *.$libext) linkmode=oldlib ;;
43.48281 -+    *.lo | *.$objext) linkmode=obj ;;
43.48282 -+    *.la) linkmode=lib ;;
43.48283 -+    *) linkmode=prog ;; # Anything else should be a program.
43.48284 -+    esac
43.48285 -+
43.48286 -+    specialdeplibs=
43.48287 -+
43.48288 -+    libs=
43.48289 -+    # Find all interdependent deplibs by searching for libraries
43.48290 -+    # that are linked more than once (e.g. -la -lb -la)
43.48291 -+    for deplib in $deplibs; do
43.48292 -+      if $opt_duplicate_deps ; then
43.48293 -+	case "$libs " in
43.48294 -+	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
43.48295 -+	esac
43.48296 -+      fi
43.48297 -+      libs="$libs $deplib"
43.48298 -+    done
43.48299 -+
43.48300 -+    if test "$linkmode" = lib; then
43.48301 -+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
43.48302 -+
43.48303 -+      # Compute libraries that are listed more than once in $predeps
43.48304 -+      # $postdeps and mark them as special (i.e., whose duplicates are
43.48305 -+      # not to be eliminated).
43.48306 -+      pre_post_deps=
43.48307 -+      if $opt_duplicate_compiler_generated_deps; then
43.48308 -+	for pre_post_dep in $predeps $postdeps; do
43.48309 -+	  case "$pre_post_deps " in
43.48310 -+	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
43.48311 -+	  esac
43.48312 -+	  pre_post_deps="$pre_post_deps $pre_post_dep"
43.48313 -+	done
43.48314 -+      fi
43.48315 -+      pre_post_deps=
43.48316 -+    fi
43.48317 -+
43.48318 -+    deplibs=
43.48319 -+    newdependency_libs=
43.48320 -+    newlib_search_path=
43.48321 -+    need_relink=no # whether we're linking any uninstalled libtool libraries
43.48322 -+    notinst_deplibs= # not-installed libtool libraries
43.48323 -+    notinst_path= # paths that contain not-installed libtool libraries
43.48324 -+
43.48325 -+    case $linkmode in
43.48326 -+    lib)
43.48327 -+	passes="conv dlpreopen link"
43.48328 -+	for file in $dlfiles $dlprefiles; do
43.48329 -+	  case $file in
43.48330 -+	  *.la) ;;
43.48331 -+	  *)
43.48332 -+	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
43.48333 -+	    ;;
43.48334 -+	  esac
43.48335 -+	done
43.48336 -+	;;
43.48337 -+    prog)
43.48338 -+	compile_deplibs=
43.48339 -+	finalize_deplibs=
43.48340 -+	alldeplibs=no
43.48341 -+	newdlfiles=
43.48342 -+	newdlprefiles=
43.48343 -+	passes="conv scan dlopen dlpreopen link"
43.48344 -+	;;
43.48345 -+    *)  passes="conv"
43.48346 -+	;;
43.48347 -+    esac
43.48348 -+
43.48349 -+    for pass in $passes; do
43.48350 -+      # The preopen pass in lib mode reverses $deplibs; put it back here
43.48351 -+      # so that -L comes before libs that need it for instance...
43.48352 -+      if test "$linkmode,$pass" = "lib,link"; then
43.48353 -+	## FIXME: Find the place where the list is rebuilt in the wrong
43.48354 -+	##        order, and fix it there properly
43.48355 -+        tmp_deplibs=
43.48356 -+	for deplib in $deplibs; do
43.48357 -+	  tmp_deplibs="$deplib $tmp_deplibs"
43.48358 -+	done
43.48359 -+	deplibs="$tmp_deplibs"
43.48360 -+      fi
43.48361 -+
43.48362 -+      if test "$linkmode,$pass" = "lib,link" ||
43.48363 -+	 test "$linkmode,$pass" = "prog,scan"; then
43.48364 -+	libs="$deplibs"
43.48365 -+	deplibs=
43.48366 -+      fi
43.48367 -+      if test "$linkmode" = prog; then
43.48368 -+	case $pass in
43.48369 -+	dlopen) libs="$dlfiles" ;;
43.48370 -+	dlpreopen) libs="$dlprefiles" ;;
43.48371 -+	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
43.48372 -+	esac
43.48373 -+      fi
43.48374 -+      if test "$linkmode,$pass" = "lib,dlpreopen"; then
43.48375 -+	# Collect and forward deplibs of preopened libtool libs
43.48376 -+	for lib in $dlprefiles; do
43.48377 -+	  # Ignore non-libtool-libs
43.48378 -+	  dependency_libs=
43.48379 -+	  case $lib in
43.48380 -+	  *.la)	func_source "$lib" ;;
43.48381 -+	  esac
43.48382 -+
43.48383 -+	  # Collect preopened libtool deplibs, except any this library
43.48384 -+	  # has declared as weak libs
43.48385 -+	  for deplib in $dependency_libs; do
43.48386 -+            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
43.48387 -+	    case " $weak_libs " in
43.48388 -+	    *" $deplib_base "*) ;;
43.48389 -+	    *) deplibs="$deplibs $deplib" ;;
43.48390 -+	    esac
43.48391 -+	  done
43.48392 -+	done
43.48393 -+	libs="$dlprefiles"
43.48394 -+      fi
43.48395 -+      if test "$pass" = dlopen; then
43.48396 -+	# Collect dlpreopened libraries
43.48397 -+	save_deplibs="$deplibs"
43.48398 -+	deplibs=
43.48399 -+      fi
43.48400 -+
43.48401 -+      for deplib in $libs; do
43.48402 -+	lib=
43.48403 -+	found=no
43.48404 -+	case $deplib in
43.48405 -+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
43.48406 -+	  if test "$linkmode,$pass" = "prog,link"; then
43.48407 -+	    compile_deplibs="$deplib $compile_deplibs"
43.48408 -+	    finalize_deplibs="$deplib $finalize_deplibs"
43.48409 -+	  else
43.48410 -+	    compiler_flags="$compiler_flags $deplib"
43.48411 -+	    if test "$linkmode" = lib ; then
43.48412 -+		case "$new_inherited_linker_flags " in
43.48413 -+		    *" $deplib "*) ;;
43.48414 -+		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
43.48415 -+		esac
43.48416 -+	    fi
43.48417 -+	  fi
43.48418 -+	  continue
43.48419 -+	  ;;
43.48420 -+	-l*)
43.48421 -+	  if test "$linkmode" != lib && test "$linkmode" != prog; then
43.48422 -+	    func_warning "\`-l' is ignored for archives/objects"
43.48423 -+	    continue
43.48424 -+	  fi
43.48425 -+	  func_stripname '-l' '' "$deplib"
43.48426 -+	  name=$func_stripname_result
43.48427 -+	  for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
43.48428 -+	    for search_ext in .la $std_shrext .so .a; do
43.48429 -+	      # Search the libtool library
43.48430 -+	      lib="$searchdir/lib${name}${search_ext}"
43.48431 -+	      if test -f "$lib"; then
43.48432 -+		if test "$search_ext" = ".la"; then
43.48433 -+		  found=yes
43.48434 -+		else
43.48435 -+		  found=no
43.48436 -+		fi
43.48437 -+		break 2
43.48438 -+	      fi
43.48439 -+	    done
43.48440 -+	  done
43.48441 -+	  if test "$found" != yes; then
43.48442 -+	    # deplib doesn't seem to be a libtool library
43.48443 -+	    if test "$linkmode,$pass" = "prog,link"; then
43.48444 -+	      compile_deplibs="$deplib $compile_deplibs"
43.48445 -+	      finalize_deplibs="$deplib $finalize_deplibs"
43.48446 -+	    else
43.48447 -+	      deplibs="$deplib $deplibs"
43.48448 -+	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
43.48449 -+	    fi
43.48450 -+	    continue
43.48451 -+	  else # deplib is a libtool library
43.48452 -+	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
43.48453 -+	    # We need to do some special things here, and not later.
43.48454 -+	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
43.48455 -+	      case " $predeps $postdeps " in
43.48456 -+	      *" $deplib "*)
43.48457 -+		if func_lalib_p "$lib"; then
43.48458 -+		  library_names=
43.48459 -+		  old_library=
43.48460 -+		  func_source "$lib"
43.48461 -+		  for l in $old_library $library_names; do
43.48462 -+		    ll="$l"
43.48463 -+		  done
43.48464 -+		  if test "X$ll" = "X$old_library" ; then # only static version available
43.48465 -+		    found=no
43.48466 -+		    func_dirname "$lib" "" "."
43.48467 -+		    ladir="$func_dirname_result"
43.48468 -+		    lib=$ladir/$old_library
43.48469 -+		    if test "$linkmode,$pass" = "prog,link"; then
43.48470 -+		      compile_deplibs="$deplib $compile_deplibs"
43.48471 -+		      finalize_deplibs="$deplib $finalize_deplibs"
43.48472 -+		    else
43.48473 -+		      deplibs="$deplib $deplibs"
43.48474 -+		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
43.48475 -+		    fi
43.48476 -+		    continue
43.48477 -+		  fi
43.48478 -+		fi
43.48479 -+		;;
43.48480 -+	      *) ;;
43.48481 -+	      esac
43.48482 -+	    fi
43.48483 -+	  fi
43.48484 -+	  ;; # -l
43.48485 -+	*.ltframework)
43.48486 -+	  if test "$linkmode,$pass" = "prog,link"; then
43.48487 -+	    compile_deplibs="$deplib $compile_deplibs"
43.48488 -+	    finalize_deplibs="$deplib $finalize_deplibs"
43.48489 -+	  else
43.48490 -+	    deplibs="$deplib $deplibs"
43.48491 -+	    if test "$linkmode" = lib ; then
43.48492 -+		case "$new_inherited_linker_flags " in
43.48493 -+		    *" $deplib "*) ;;
43.48494 -+		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
43.48495 -+		esac
43.48496 -+	    fi
43.48497 -+	  fi
43.48498 -+	  continue
43.48499 -+	  ;;
43.48500 -+	-L*)
43.48501 -+	  case $linkmode in
43.48502 -+	  lib)
43.48503 -+	    deplibs="$deplib $deplibs"
43.48504 -+	    test "$pass" = conv && continue
43.48505 -+	    newdependency_libs="$deplib $newdependency_libs"
43.48506 -+	    func_stripname '-L' '' "$deplib"
43.48507 -+	    newlib_search_path="$newlib_search_path $func_stripname_result"
43.48508 -+	    ;;
43.48509 -+	  prog)
43.48510 -+	    if test "$pass" = conv; then
43.48511 -+	      deplibs="$deplib $deplibs"
43.48512 -+	      continue
43.48513 -+	    fi
43.48514 -+	    if test "$pass" = scan; then
43.48515 -+	      deplibs="$deplib $deplibs"
43.48516 -+	    else
43.48517 -+	      compile_deplibs="$deplib $compile_deplibs"
43.48518 -+	      finalize_deplibs="$deplib $finalize_deplibs"
43.48519 -+	    fi
43.48520 -+	    func_stripname '-L' '' "$deplib"
43.48521 -+	    newlib_search_path="$newlib_search_path $func_stripname_result"
43.48522 -+	    ;;
43.48523 -+	  *)
43.48524 -+	    func_warning "\`-L' is ignored for archives/objects"
43.48525 -+	    ;;
43.48526 -+	  esac # linkmode
43.48527 -+	  continue
43.48528 -+	  ;; # -L
43.48529 -+	-R*)
43.48530 -+	  if test "$pass" = link; then
43.48531 -+	    func_stripname '-R' '' "$deplib"
43.48532 -+	    dir=$func_stripname_result
43.48533 -+	    # Make sure the xrpath contains only unique directories.
43.48534 -+	    case "$xrpath " in
43.48535 -+	    *" $dir "*) ;;
43.48536 -+	    *) xrpath="$xrpath $dir" ;;
43.48537 -+	    esac
43.48538 -+	  fi
43.48539 -+	  deplibs="$deplib $deplibs"
43.48540 -+	  continue
43.48541 -+	  ;;
43.48542 -+	*.la) lib="$deplib" ;;
43.48543 -+	*.$libext)
43.48544 -+	  if test "$pass" = conv; then
43.48545 -+	    deplibs="$deplib $deplibs"
43.48546 -+	    continue
43.48547 -+	  fi
43.48548 -+	  case $linkmode in
43.48549 -+	  lib)
43.48550 -+	    # Linking convenience modules into shared libraries is allowed,
43.48551 -+	    # but linking other static libraries is non-portable.
43.48552 -+	    case " $dlpreconveniencelibs " in
43.48553 -+	    *" $deplib "*) ;;
43.48554 -+	    *)
43.48555 -+	      valid_a_lib=no
43.48556 -+	      case $deplibs_check_method in
43.48557 -+		match_pattern*)
43.48558 -+		  set dummy $deplibs_check_method; shift
43.48559 -+		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
43.48560 -+		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
43.48561 -+		    | $EGREP "$match_pattern_regex" > /dev/null; then
43.48562 -+		    valid_a_lib=yes
43.48563 -+		  fi
43.48564 -+		;;
43.48565 -+		pass_all)
43.48566 -+		  valid_a_lib=yes
43.48567 -+		;;
43.48568 -+	      esac
43.48569 -+	      if test "$valid_a_lib" != yes; then
43.48570 -+		$ECHO
43.48571 -+		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
43.48572 -+		$ECHO "*** I have the capability to make that library automatically link in when"
43.48573 -+		$ECHO "*** you link to this library.  But I can only do this if you have a"
43.48574 -+		$ECHO "*** shared version of the library, which you do not appear to have"
43.48575 -+		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
43.48576 -+		$ECHO "*** that it is just a static archive that I should not use here."
43.48577 -+	      else
43.48578 -+		$ECHO
43.48579 -+		$ECHO "*** Warning: Linking the shared library $output against the"
43.48580 -+		$ECHO "*** static library $deplib is not portable!"
43.48581 -+		deplibs="$deplib $deplibs"
43.48582 -+	      fi
43.48583 -+	      ;;
43.48584 -+	    esac
43.48585 -+	    continue
43.48586 -+	    ;;
43.48587 -+	  prog)
43.48588 -+	    if test "$pass" != link; then
43.48589 -+	      deplibs="$deplib $deplibs"
43.48590 -+	    else
43.48591 -+	      compile_deplibs="$deplib $compile_deplibs"
43.48592 -+	      finalize_deplibs="$deplib $finalize_deplibs"
43.48593 -+	    fi
43.48594 -+	    continue
43.48595 -+	    ;;
43.48596 -+	  esac # linkmode
43.48597 -+	  ;; # *.$libext
43.48598 -+	*.lo | *.$objext)
43.48599 -+	  if test "$pass" = conv; then
43.48600 -+	    deplibs="$deplib $deplibs"
43.48601 -+	  elif test "$linkmode" = prog; then
43.48602 -+	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
43.48603 -+	      # If there is no dlopen support or we're linking statically,
43.48604 -+	      # we need to preload.
43.48605 -+	      newdlprefiles="$newdlprefiles $deplib"
43.48606 -+	      compile_deplibs="$deplib $compile_deplibs"
43.48607 -+	      finalize_deplibs="$deplib $finalize_deplibs"
43.48608 -+	    else
43.48609 -+	      newdlfiles="$newdlfiles $deplib"
43.48610 -+	    fi
43.48611 -+	  fi
43.48612 -+	  continue
43.48613 -+	  ;;
43.48614 -+	%DEPLIBS%)
43.48615 -+	  alldeplibs=yes
43.48616 -+	  continue
43.48617 -+	  ;;
43.48618 -+	esac # case $deplib
43.48619 -+
43.48620 -+	if test "$found" = yes || test -f "$lib"; then :
43.48621 -+	else
43.48622 -+	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
43.48623 -+	fi
43.48624 -+
43.48625 -+	# Check to see that this really is a libtool archive.
43.48626 -+	func_lalib_unsafe_p "$lib" \
43.48627 -+	  || func_fatal_error "\`$lib' is not a valid libtool archive"
43.48628 -+
43.48629 -+	func_dirname "$lib" "" "."
43.48630 -+	ladir="$func_dirname_result"
43.48631 -+
43.48632 -+	dlname=
43.48633 -+	dlopen=
43.48634 -+	dlpreopen=
43.48635 -+	libdir=
43.48636 -+	library_names=
43.48637 -+	old_library=
43.48638 -+	inherited_linker_flags=
43.48639 -+	# If the library was installed with an old release of libtool,
43.48640 -+	# it will not redefine variables installed, or shouldnotlink
43.48641 -+	installed=yes
43.48642 -+	shouldnotlink=no
43.48643 -+	avoidtemprpath=
43.48644 -+
43.48645 -+
43.48646 -+	# Read the .la file
43.48647 -+	func_source "$lib"
43.48648 -+
43.48649 -+	# Convert "-framework foo" to "foo.ltframework"
43.48650 -+	if test -n "$inherited_linker_flags"; then
43.48651 -+	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
43.48652 -+	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
43.48653 -+	    case " $new_inherited_linker_flags " in
43.48654 -+	      *" $tmp_inherited_linker_flag "*) ;;
43.48655 -+	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
43.48656 -+	    esac
43.48657 -+	  done
43.48658 -+	fi
43.48659 -+	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
43.48660 -+	if test "$linkmode,$pass" = "prog,link"; then
43.48661 -+	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
43.48662 -+	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
43.48663 -+	else
43.48664 -+	  compiler_flags="$compiler_flags $inherited_linker_flags"
43.48665 -+	fi
43.48666 -+	if test "$linkmode,$pass" = "lib,link" ||
43.48667 -+	   test "$linkmode,$pass" = "prog,scan" ||
43.48668 -+	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
43.48669 -+	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
43.48670 -+	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
43.48671 -+	fi
43.48672 -+
43.48673 -+	if test "$pass" = conv; then
43.48674 -+	  # Only check for convenience libraries
43.48675 -+	  deplibs="$lib $deplibs"
43.48676 -+	  if test -z "$libdir"; then
43.48677 -+	    if test -z "$old_library"; then
43.48678 -+	      func_fatal_error "cannot find name of link library for \`$lib'"
43.48679 -+	    fi
43.48680 -+	    # It is a libtool convenience library, so add in its objects.
43.48681 -+	    convenience="$convenience $ladir/$objdir/$old_library"
43.48682 -+	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
43.48683 -+	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
43.48684 -+	    func_fatal_error "\`$lib' is not a convenience library"
43.48685 -+	  fi
43.48686 -+	  tmp_libs=
43.48687 -+	  for deplib in $dependency_libs; do
43.48688 -+	    deplibs="$deplib $deplibs"
43.48689 -+	    if $opt_duplicate_deps ; then
43.48690 -+	      case "$tmp_libs " in
43.48691 -+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
43.48692 -+	      esac
43.48693 -+	    fi
43.48694 -+	    tmp_libs="$tmp_libs $deplib"
43.48695 -+	  done
43.48696 -+	  continue
43.48697 -+	fi # $pass = conv
43.48698 -+
43.48699 -+
43.48700 -+	# Get the name of the library we link against.
43.48701 -+	linklib=
43.48702 -+	for l in $old_library $library_names; do
43.48703 -+	  linklib="$l"
43.48704 -+	done
43.48705 -+	if test -z "$linklib"; then
43.48706 -+	  func_fatal_error "cannot find name of link library for \`$lib'"
43.48707 -+	fi
43.48708 -+
43.48709 -+	# This library was specified with -dlopen.
43.48710 -+	if test "$pass" = dlopen; then
43.48711 -+	  if test -z "$libdir"; then
43.48712 -+	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
43.48713 -+	  fi
43.48714 -+	  if test -z "$dlname" ||
43.48715 -+	     test "$dlopen_support" != yes ||
43.48716 -+	     test "$build_libtool_libs" = no; then
43.48717 -+	    # If there is no dlname, no dlopen support or we're linking
43.48718 -+	    # statically, we need to preload.  We also need to preload any
43.48719 -+	    # dependent libraries so libltdl's deplib preloader doesn't
43.48720 -+	    # bomb out in the load deplibs phase.
43.48721 -+	    dlprefiles="$dlprefiles $lib $dependency_libs"
43.48722 -+	  else
43.48723 -+	    newdlfiles="$newdlfiles $lib"
43.48724 -+	  fi
43.48725 -+	  continue
43.48726 -+	fi # $pass = dlopen
43.48727 -+
43.48728 -+	# We need an absolute path.
43.48729 -+	case $ladir in
43.48730 -+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
43.48731 -+	*)
43.48732 -+	  abs_ladir=`cd "$ladir" && pwd`
43.48733 -+	  if test -z "$abs_ladir"; then
43.48734 -+	    func_warning "cannot determine absolute directory name of \`$ladir'"
43.48735 -+	    func_warning "passing it literally to the linker, although it might fail"
43.48736 -+	    abs_ladir="$ladir"
43.48737 -+	  fi
43.48738 -+	  ;;
43.48739 -+	esac
43.48740 -+	func_basename "$lib"
43.48741 -+	laname="$func_basename_result"
43.48742 -+
43.48743 -+	# Find the relevant object directory and library name.
43.48744 -+	if test "X$installed" = Xyes; then
43.48745 -+	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
43.48746 -+	    func_warning "library \`$lib' was moved."
43.48747 -+	    dir="$ladir"
43.48748 -+	    absdir="$abs_ladir"
43.48749 -+	    libdir="$abs_ladir"
43.48750 -+	  else
43.48751 -+	    dir="$libdir"
43.48752 -+	    absdir="$libdir"
43.48753 -+	  fi
43.48754 -+	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
43.48755 -+	else
43.48756 -+	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
43.48757 -+	    dir="$ladir"
43.48758 -+	    absdir="$abs_ladir"
43.48759 -+	    # Remove this search path later
43.48760 -+	    notinst_path="$notinst_path $abs_ladir"
43.48761 -+	  else
43.48762 -+	    dir="$ladir/$objdir"
43.48763 -+	    absdir="$abs_ladir/$objdir"
43.48764 -+	    # Remove this search path later
43.48765 -+	    notinst_path="$notinst_path $abs_ladir"
43.48766 -+	  fi
43.48767 -+	fi # $installed = yes
43.48768 -+	func_stripname 'lib' '.la' "$laname"
43.48769 -+	name=$func_stripname_result
43.48770 -+
43.48771 -+	# This library was specified with -dlpreopen.
43.48772 -+	if test "$pass" = dlpreopen; then
43.48773 -+	  if test -z "$libdir" && test "$linkmode" = prog; then
43.48774 -+	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
43.48775 -+	  fi
43.48776 -+	  # Prefer using a static library (so that no silly _DYNAMIC symbols
43.48777 -+	  # are required to link).
43.48778 -+	  if test -n "$old_library"; then
43.48779 -+	    newdlprefiles="$newdlprefiles $dir/$old_library"
43.48780 -+	    # Keep a list of preopened convenience libraries to check
43.48781 -+	    # that they are being used correctly in the link pass.
43.48782 -+	    test -z "$libdir" && \
43.48783 -+		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
43.48784 -+	  # Otherwise, use the dlname, so that lt_dlopen finds it.
43.48785 -+	  elif test -n "$dlname"; then
43.48786 -+	    newdlprefiles="$newdlprefiles $dir/$dlname"
43.48787 -+	  else
43.48788 -+	    newdlprefiles="$newdlprefiles $dir/$linklib"
43.48789 -+	  fi
43.48790 -+	fi # $pass = dlpreopen
43.48791 -+
43.48792 -+	if test -z "$libdir"; then
43.48793 -+	  # Link the convenience library
43.48794 -+	  if test "$linkmode" = lib; then
43.48795 -+	    deplibs="$dir/$old_library $deplibs"
43.48796 -+	  elif test "$linkmode,$pass" = "prog,link"; then
43.48797 -+	    compile_deplibs="$dir/$old_library $compile_deplibs"
43.48798 -+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
43.48799 -+	  else
43.48800 -+	    deplibs="$lib $deplibs" # used for prog,scan pass
43.48801 -+	  fi
43.48802 -+	  continue
43.48803 -+	fi
43.48804 -+
43.48805 -+
43.48806 -+	if test "$linkmode" = prog && test "$pass" != link; then
43.48807 -+	  newlib_search_path="$newlib_search_path $ladir"
43.48808 -+	  deplibs="$lib $deplibs"
43.48809 -+
43.48810 -+	  linkalldeplibs=no
43.48811 -+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
43.48812 -+	     test "$build_libtool_libs" = no; then
43.48813 -+	    linkalldeplibs=yes
43.48814 -+	  fi
43.48815 -+
43.48816 -+	  tmp_libs=
43.48817 -+	  for deplib in $dependency_libs; do
43.48818 -+	    case $deplib in
43.48819 -+	    -L*) func_stripname '-L' '' "$deplib"
43.48820 -+	         newlib_search_path="$newlib_search_path $func_stripname_result"
43.48821 -+		 ;;
43.48822 -+	    esac
43.48823 -+	    # Need to link against all dependency_libs?
43.48824 -+	    if test "$linkalldeplibs" = yes; then
43.48825 -+	      deplibs="$deplib $deplibs"
43.48826 -+	    else
43.48827 -+	      # Need to hardcode shared library paths
43.48828 -+	      # or/and link against static libraries
43.48829 -+	      newdependency_libs="$deplib $newdependency_libs"
43.48830 -+	    fi
43.48831 -+	    if $opt_duplicate_deps ; then
43.48832 -+	      case "$tmp_libs " in
43.48833 -+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
43.48834 -+	      esac
43.48835 -+	    fi
43.48836 -+	    tmp_libs="$tmp_libs $deplib"
43.48837 -+	  done # for deplib
43.48838 -+	  continue
43.48839 -+	fi # $linkmode = prog...
43.48840 -+
43.48841 -+	if test "$linkmode,$pass" = "prog,link"; then
43.48842 -+	  if test -n "$library_names" &&
43.48843 -+	     { { test "$prefer_static_libs" = no ||
43.48844 -+	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
43.48845 -+	       test -z "$old_library"; }; then
43.48846 -+	    # We need to hardcode the library path
43.48847 -+	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
43.48848 -+	      # Make sure the rpath contains only unique directories.
43.48849 -+	      case "$temp_rpath:" in
43.48850 -+	      *"$absdir:"*) ;;
43.48851 -+	      *) temp_rpath="$temp_rpath$absdir:" ;;
43.48852 -+	      esac
43.48853 -+	    fi
43.48854 -+
43.48855 -+	    # Hardcode the library path.
43.48856 -+	    # Skip directories that are in the system default run-time
43.48857 -+	    # search path.
43.48858 -+	    case " $sys_lib_dlsearch_path " in
43.48859 -+	    *" $absdir "*) ;;
43.48860 -+	    *)
43.48861 -+	      case "$compile_rpath " in
43.48862 -+	      *" $absdir "*) ;;
43.48863 -+	      *) compile_rpath="$compile_rpath $absdir"
43.48864 -+	      esac
43.48865 -+	      ;;
43.48866 -+	    esac
43.48867 -+	    case " $sys_lib_dlsearch_path " in
43.48868 -+	    *" $libdir "*) ;;
43.48869 -+	    *)
43.48870 -+	      case "$finalize_rpath " in
43.48871 -+	      *" $libdir "*) ;;
43.48872 -+	      *) finalize_rpath="$finalize_rpath $libdir"
43.48873 -+	      esac
43.48874 -+	      ;;
43.48875 -+	    esac
43.48876 -+	  fi # $linkmode,$pass = prog,link...
43.48877 -+
43.48878 -+	  if test "$alldeplibs" = yes &&
43.48879 -+	     { test "$deplibs_check_method" = pass_all ||
43.48880 -+	       { test "$build_libtool_libs" = yes &&
43.48881 -+		 test -n "$library_names"; }; }; then
43.48882 -+	    # We only need to search for static libraries
43.48883 -+	    continue
43.48884 -+	  fi
43.48885 -+	fi
43.48886 -+
43.48887 -+	link_static=no # Whether the deplib will be linked statically
43.48888 -+	use_static_libs=$prefer_static_libs
43.48889 -+	if test "$use_static_libs" = built && test "$installed" = yes; then
43.48890 -+	  use_static_libs=no
43.48891 -+	fi
43.48892 -+	if test -n "$library_names" &&
43.48893 -+	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
43.48894 -+	  case $host in
43.48895 -+	  *cygwin* | *mingw*)
43.48896 -+	      # No point in relinking DLLs because paths are not encoded
43.48897 -+	      notinst_deplibs="$notinst_deplibs $lib"
43.48898 -+	      need_relink=no
43.48899 -+	    ;;
43.48900 -+	  *)
43.48901 -+	    if test "$installed" = no; then
43.48902 -+	      notinst_deplibs="$notinst_deplibs $lib"
43.48903 -+	      need_relink=yes
43.48904 -+	    fi
43.48905 -+	    ;;
43.48906 -+	  esac
43.48907 -+	  # This is a shared library
43.48908 -+
43.48909 -+	  # Warn about portability, can't link against -module's on some
43.48910 -+	  # systems (darwin).  Don't bleat about dlopened modules though!
43.48911 -+	  dlopenmodule=""
43.48912 -+	  for dlpremoduletest in $dlprefiles; do
43.48913 -+	    if test "X$dlpremoduletest" = "X$lib"; then
43.48914 -+	      dlopenmodule="$dlpremoduletest"
43.48915 -+	      break
43.48916 -+	    fi
43.48917 -+	  done
43.48918 -+	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
43.48919 -+	    $ECHO
43.48920 -+	    if test "$linkmode" = prog; then
43.48921 -+	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
43.48922 -+	    else
43.48923 -+	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
43.48924 -+	    fi
43.48925 -+	    $ECHO "*** $linklib is not portable!"
43.48926 -+	  fi
43.48927 -+	  if test "$linkmode" = lib &&
43.48928 -+	     test "$hardcode_into_libs" = yes; then
43.48929 -+	    # Hardcode the library path.
43.48930 -+	    # Skip directories that are in the system default run-time
43.48931 -+	    # search path.
43.48932 -+	    case " $sys_lib_dlsearch_path " in
43.48933 -+	    *" $absdir "*) ;;
43.48934 -+	    *)
43.48935 -+	      case "$compile_rpath " in
43.48936 -+	      *" $absdir "*) ;;
43.48937 -+	      *) compile_rpath="$compile_rpath $absdir"
43.48938 -+	      esac
43.48939 -+	      ;;
43.48940 -+	    esac
43.48941 -+	    case " $sys_lib_dlsearch_path " in
43.48942 -+	    *" $libdir "*) ;;
43.48943 -+	    *)
43.48944 -+	      case "$finalize_rpath " in
43.48945 -+	      *" $libdir "*) ;;
43.48946 -+	      *) finalize_rpath="$finalize_rpath $libdir"
43.48947 -+	      esac
43.48948 -+	      ;;
43.48949 -+	    esac
43.48950 -+	  fi
43.48951 -+
43.48952 -+	  if test -n "$old_archive_from_expsyms_cmds"; then
43.48953 -+	    # figure out the soname
43.48954 -+	    set dummy $library_names
43.48955 -+	    shift
43.48956 -+	    realname="$1"
43.48957 -+	    shift
43.48958 -+	    libname=`eval "\\$ECHO \"$libname_spec\""`
43.48959 -+	    # use dlname if we got it. it's perfectly good, no?
43.48960 -+	    if test -n "$dlname"; then
43.48961 -+	      soname="$dlname"
43.48962 -+	    elif test -n "$soname_spec"; then
43.48963 -+	      # bleh windows
43.48964 -+	      case $host in
43.48965 -+	      *cygwin* | mingw*)
43.48966 -+		major=`expr $current - $age`
43.48967 -+		versuffix="-$major"
43.48968 -+		;;
43.48969 -+	      esac
43.48970 -+	      eval soname=\"$soname_spec\"
43.48971 -+	    else
43.48972 -+	      soname="$realname"
43.48973 -+	    fi
43.48974 -+
43.48975 -+	    # Make a new name for the extract_expsyms_cmds to use
43.48976 -+	    soroot="$soname"
43.48977 -+	    func_basename "$soroot"
43.48978 -+	    soname="$func_basename_result"
43.48979 -+	    func_stripname 'lib' '.dll' "$soname"
43.48980 -+	    newlib=libimp-$func_stripname_result.a
43.48981 -+
43.48982 -+	    # If the library has no export list, then create one now
43.48983 -+	    if test -f "$output_objdir/$soname-def"; then :
43.48984 -+	    else
43.48985 -+	      func_echo "extracting exported symbol list from \`$soname'"
43.48986 -+	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
43.48987 -+	    fi
43.48988 -+
43.48989 -+	    # Create $newlib
43.48990 -+	    if test -f "$output_objdir/$newlib"; then :; else
43.48991 -+	      func_echo "generating import library for \`$soname'"
43.48992 -+	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
43.48993 -+	    fi
43.48994 -+	    # make sure the library variables are pointing to the new library
43.48995 -+	    dir=$output_objdir
43.48996 -+	    linklib=$newlib
43.48997 -+	  fi # test -n "$old_archive_from_expsyms_cmds"
43.48998 -+
43.48999 -+	  if test "$linkmode" = prog || test "$mode" != relink; then
43.49000 -+	    add_shlibpath=
43.49001 -+	    add_dir=
43.49002 -+	    add=
43.49003 -+	    lib_linked=yes
43.49004 -+	    case $hardcode_action in
43.49005 -+	    immediate | unsupported)
43.49006 -+	      if test "$hardcode_direct" = no; then
43.49007 -+		add="$dir/$linklib"
43.49008 -+		case $host in
43.49009 -+		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
43.49010 -+		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
43.49011 -+		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
43.49012 -+		    *-*-unixware7*) add_dir="-L$dir" ;;
43.49013 -+		  *-*-darwin* )
43.49014 -+		    # if the lib is a (non-dlopened) module then we can not
43.49015 -+		    # link against it, someone is ignoring the earlier warnings
43.49016 -+		    if /usr/bin/file -L $add 2> /dev/null |
43.49017 -+			 $GREP ": [^:]* bundle" >/dev/null ; then
43.49018 -+		      if test "X$dlopenmodule" != "X$lib"; then
43.49019 -+			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
43.49020 -+			if test -z "$old_library" ; then
43.49021 -+			  $ECHO
43.49022 -+			  $ECHO "*** And there doesn't seem to be a static archive available"
43.49023 -+			  $ECHO "*** The link will probably fail, sorry"
43.49024 -+			else
43.49025 -+			  add="$dir/$old_library"
43.49026 -+			fi
43.49027 -+		      elif test -n "$old_library"; then
43.49028 -+			add="$dir/$old_library"
43.49029 -+		      fi
43.49030 -+		    fi
43.49031 -+		esac
43.49032 -+	      elif test "$hardcode_minus_L" = no; then
43.49033 -+		case $host in
43.49034 -+		*-*-sunos*) add_shlibpath="$dir" ;;
43.49035 -+		esac
43.49036 -+		add_dir="-L$dir"
43.49037 -+		add="-l$name"
43.49038 -+	      elif test "$hardcode_shlibpath_var" = no; then
43.49039 -+		add_shlibpath="$dir"
43.49040 -+		add="-l$name"
43.49041 -+	      else
43.49042 -+		lib_linked=no
43.49043 -+	      fi
43.49044 -+	      ;;
43.49045 -+	    relink)
43.49046 -+	      if test "$hardcode_direct" = yes &&
43.49047 -+	         test "$hardcode_direct_absolute" = no; then
43.49048 -+		add="$dir/$linklib"
43.49049 -+	      elif test "$hardcode_minus_L" = yes; then
43.49050 -+		add_dir="-L$dir"
43.49051 -+		# Try looking first in the location we're being installed to.
43.49052 -+		if test -n "$inst_prefix_dir"; then
43.49053 -+		  case $libdir in
43.49054 -+		    [\\/]*)
43.49055 -+		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
43.49056 -+		      ;;
43.49057 -+		  esac
43.49058 -+		fi
43.49059 -+		add="-l$name"
43.49060 -+	      elif test "$hardcode_shlibpath_var" = yes; then
43.49061 -+		add_shlibpath="$dir"
43.49062 -+		add="-l$name"
43.49063 -+	      else
43.49064 -+		lib_linked=no
43.49065 -+	      fi
43.49066 -+	      ;;
43.49067 -+	    *) lib_linked=no ;;
43.49068 -+	    esac
43.49069 -+
43.49070 -+	    if test "$lib_linked" != yes; then
43.49071 -+	      func_fatal_configuration "unsupported hardcode properties"
43.49072 -+	    fi
43.49073 -+
43.49074 -+	    if test -n "$add_shlibpath"; then
43.49075 -+	      case :$compile_shlibpath: in
43.49076 -+	      *":$add_shlibpath:"*) ;;
43.49077 -+	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
43.49078 -+	      esac
43.49079 -+	    fi
43.49080 -+	    if test "$linkmode" = prog; then
43.49081 -+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
43.49082 -+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
43.49083 -+	    else
43.49084 -+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
43.49085 -+	      test -n "$add" && deplibs="$add $deplibs"
43.49086 -+	      if test "$hardcode_direct" != yes &&
43.49087 -+		 test "$hardcode_minus_L" != yes &&
43.49088 -+		 test "$hardcode_shlibpath_var" = yes; then
43.49089 -+		case :$finalize_shlibpath: in
43.49090 -+		*":$libdir:"*) ;;
43.49091 -+		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
43.49092 -+		esac
43.49093 -+	      fi
43.49094 -+	    fi
43.49095 -+	  fi
43.49096 -+
43.49097 -+	  if test "$linkmode" = prog || test "$mode" = relink; then
43.49098 -+	    add_shlibpath=
43.49099 -+	    add_dir=
43.49100 -+	    add=
43.49101 -+	    # Finalize command for both is simple: just hardcode it.
43.49102 -+	    if test "$hardcode_direct" = yes &&
43.49103 -+	       test "$hardcode_direct_absolute" = no; then
43.49104 -+	      add="$libdir/$linklib"
43.49105 -+	    elif test "$hardcode_minus_L" = yes; then
43.49106 -+	      add_dir="-L$libdir"
43.49107 -+	      add="-l$name"
43.49108 -+	    elif test "$hardcode_shlibpath_var" = yes; then
43.49109 -+	      case :$finalize_shlibpath: in
43.49110 -+	      *":$libdir:"*) ;;
43.49111 -+	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
43.49112 -+	      esac
43.49113 -+	      add="-l$name"
43.49114 -+	    elif test "$hardcode_automatic" = yes; then
43.49115 -+	      if test -n "$inst_prefix_dir" &&
43.49116 -+		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
43.49117 -+		add="$inst_prefix_dir$libdir/$linklib"
43.49118 -+	      else
43.49119 -+		add="$libdir/$linklib"
43.49120 -+	      fi
43.49121 -+	    else
43.49122 -+	      # We cannot seem to hardcode it, guess we'll fake it.
43.49123 -+	      add_dir="-L$libdir"
43.49124 -+	      # Try looking first in the location we're being installed to.
43.49125 -+	      if test -n "$inst_prefix_dir"; then
43.49126 -+		case $libdir in
43.49127 -+		  [\\/]*)
43.49128 -+		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
43.49129 -+		    ;;
43.49130 -+		esac
43.49131 -+	      fi
43.49132 -+	      add="-l$name"
43.49133 -+	    fi
43.49134 -+
43.49135 -+	    if test "$linkmode" = prog; then
43.49136 -+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
43.49137 -+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
43.49138 -+	    else
43.49139 -+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
43.49140 -+	      test -n "$add" && deplibs="$add $deplibs"
43.49141 -+	    fi
43.49142 -+	  fi
43.49143 -+	elif test "$linkmode" = prog; then
43.49144 -+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
43.49145 -+	  # is not unsupported.  This is valid on all known static and
43.49146 -+	  # shared platforms.
43.49147 -+	  if test "$hardcode_direct" != unsupported; then
43.49148 -+	    test -n "$old_library" && linklib="$old_library"
43.49149 -+	    compile_deplibs="$dir/$linklib $compile_deplibs"
43.49150 -+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
43.49151 -+	  else
43.49152 -+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
43.49153 -+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
43.49154 -+	  fi
43.49155 -+	elif test "$build_libtool_libs" = yes; then
43.49156 -+	  # Not a shared library
43.49157 -+	  if test "$deplibs_check_method" != pass_all; then
43.49158 -+	    # We're trying link a shared library against a static one
43.49159 -+	    # but the system doesn't support it.
43.49160 -+
43.49161 -+	    # Just print a warning and add the library to dependency_libs so
43.49162 -+	    # that the program can be linked against the static library.
43.49163 -+	    $ECHO
43.49164 -+	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
43.49165 -+	    $ECHO "*** I have the capability to make that library automatically link in when"
43.49166 -+	    $ECHO "*** you link to this library.  But I can only do this if you have a"
43.49167 -+	    $ECHO "*** shared version of the library, which you do not appear to have."
43.49168 -+	    if test "$module" = yes; then
43.49169 -+	      $ECHO "*** But as you try to build a module library, libtool will still create "
43.49170 -+	      $ECHO "*** a static module, that should work as long as the dlopening application"
43.49171 -+	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
43.49172 -+	      if test -z "$global_symbol_pipe"; then
43.49173 -+		$ECHO
43.49174 -+		$ECHO "*** However, this would only work if libtool was able to extract symbol"
43.49175 -+		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
43.49176 -+		$ECHO "*** not find such a program.  So, this module is probably useless."
43.49177 -+		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
43.49178 -+	      fi
43.49179 -+	      if test "$build_old_libs" = no; then
43.49180 -+		build_libtool_libs=module
43.49181 -+		build_old_libs=yes
43.49182 -+	      else
43.49183 -+		build_libtool_libs=no
43.49184 -+	      fi
43.49185 -+	    fi
43.49186 -+	  else
43.49187 -+	    deplibs="$dir/$old_library $deplibs"
43.49188 -+	    link_static=yes
43.49189 -+	  fi
43.49190 -+	fi # link shared/static library?
43.49191 -+
43.49192 -+	if test "$linkmode" = lib; then
43.49193 -+	  if test -n "$dependency_libs" &&
43.49194 -+	     { test "$hardcode_into_libs" != yes ||
43.49195 -+	       test "$build_old_libs" = yes ||
43.49196 -+	       test "$link_static" = yes; }; then
43.49197 -+	    # Extract -R from dependency_libs
43.49198 -+	    temp_deplibs=
43.49199 -+	    for libdir in $dependency_libs; do
43.49200 -+	      case $libdir in
43.49201 -+	      -R*) func_stripname '-R' '' "$libdir"
43.49202 -+	           temp_xrpath=$func_stripname_result
43.49203 -+		   case " $xrpath " in
43.49204 -+		   *" $temp_xrpath "*) ;;
43.49205 -+		   *) xrpath="$xrpath $temp_xrpath";;
43.49206 -+		   esac;;
43.49207 -+	      *) temp_deplibs="$temp_deplibs $libdir";;
43.49208 -+	      esac
43.49209 -+	    done
43.49210 -+	    dependency_libs="$temp_deplibs"
43.49211 -+	  fi
43.49212 -+
43.49213 -+	  newlib_search_path="$newlib_search_path $absdir"
43.49214 -+	  # Link against this library
43.49215 -+	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
43.49216 -+	  # ... and its dependency_libs
43.49217 -+	  tmp_libs=
43.49218 -+	  for deplib in $dependency_libs; do
43.49219 -+	    newdependency_libs="$deplib $newdependency_libs"
43.49220 -+	    if $opt_duplicate_deps ; then
43.49221 -+	      case "$tmp_libs " in
43.49222 -+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
43.49223 -+	      esac
43.49224 -+	    fi
43.49225 -+	    tmp_libs="$tmp_libs $deplib"
43.49226 -+	  done
43.49227 -+
43.49228 -+	  if test "$link_all_deplibs" != no; then
43.49229 -+	    # Add the search paths of all dependency libraries
43.49230 -+	    for deplib in $dependency_libs; do
43.49231 -+	      case $deplib in
43.49232 -+	      -L*) path="$deplib" ;;
43.49233 -+	      *.la)
43.49234 -+	        func_dirname "$deplib" "" "."
43.49235 -+		dir="$func_dirname_result"
43.49236 -+		# We need an absolute path.
43.49237 -+		case $dir in
43.49238 -+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
43.49239 -+		*)
43.49240 -+		  absdir=`cd "$dir" && pwd`
43.49241 -+		  if test -z "$absdir"; then
43.49242 -+		    func_warning "cannot determine absolute directory name of \`$dir'"
43.49243 -+		    absdir="$dir"
43.49244 -+		  fi
43.49245 -+		  ;;
43.49246 -+		esac
43.49247 -+		if $GREP "^installed=no" $deplib > /dev/null; then
43.49248 -+		case $host in
43.49249 -+		*-*-darwin*)
43.49250 -+		  depdepl=
43.49251 -+		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
43.49252 -+		  if test -n "$deplibrary_names" ; then
43.49253 -+		    for tmp in $deplibrary_names ; do
43.49254 -+		      depdepl=$tmp
43.49255 -+		    done
43.49256 -+		    if test -f "$absdir/$objdir/$depdepl" ; then
43.49257 -+		      depdepl="$absdir/$objdir/$depdepl"
43.49258 -+		      darwin_install_name=`otool -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
43.49259 -+		      darwin_install_name=`$ECHO $darwin_install_name`
43.49260 -+                      if test -z "$darwin_install_name"; then
43.49261 -+                          darwin_install_name=`otool64 -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
43.49262 -+                          darwin_install_name=`$ECHO $darwin_install_name`
43.49263 -+                      fi
43.49264 -+		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
43.49265 -+		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
43.49266 -+		      path=
43.49267 -+		    fi
43.49268 -+		  fi
43.49269 -+		  ;;
43.49270 -+		*)
43.49271 -+		  path="-L$absdir/$objdir"
43.49272 -+		  ;;
43.49273 -+		esac
43.49274 -+		else
43.49275 -+		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
43.49276 -+		  test -z "$libdir" && \
43.49277 -+		    func_fatal_error "\`$deplib' is not a valid libtool archive"
43.49278 -+		  test "$absdir" != "$libdir" && \
43.49279 -+		    func_warning "\`$deplib' seems to be moved"
43.49280 -+
43.49281 -+		  path="-L$absdir"
43.49282 -+		fi
43.49283 -+		;;
43.49284 -+	      esac
43.49285 -+	      case " $deplibs " in
43.49286 -+	      *" $path "*) ;;
43.49287 -+	      *) deplibs="$path $deplibs" ;;
43.49288 -+	      esac
43.49289 -+	    done
43.49290 -+	  fi # link_all_deplibs != no
43.49291 -+	fi # linkmode = lib
43.49292 -+      done # for deplib in $libs
43.49293 -+      dependency_libs="$newdependency_libs"
43.49294 -+      if test "$pass" = dlpreopen; then
43.49295 -+	# Link the dlpreopened libraries before other libraries
43.49296 -+	for deplib in $save_deplibs; do
43.49297 -+	  deplibs="$deplib $deplibs"
43.49298 -+	done
43.49299 -+      fi
43.49300 -+      if test "$pass" != dlopen; then
43.49301 -+	if test "$pass" != conv; then
43.49302 -+	  # Make sure lib_search_path contains only unique directories.
43.49303 -+	  lib_search_path=
43.49304 -+	  for dir in $newlib_search_path; do
43.49305 -+	    case "$lib_search_path " in
43.49306 -+	    *" $dir "*) ;;
43.49307 -+	    *) lib_search_path="$lib_search_path $dir" ;;
43.49308 -+	    esac
43.49309 -+	  done
43.49310 -+	  newlib_search_path=
43.49311 -+	fi
43.49312 -+
43.49313 -+	if test "$linkmode,$pass" != "prog,link"; then
43.49314 -+	  vars="deplibs"
43.49315 -+	else
43.49316 -+	  vars="compile_deplibs finalize_deplibs"
43.49317 -+	fi
43.49318 -+	for var in $vars dependency_libs; do
43.49319 -+	  # Add libraries to $var in reverse order
43.49320 -+	  eval tmp_libs=\"\$$var\"
43.49321 -+	  new_libs=
43.49322 -+	  for deplib in $tmp_libs; do
43.49323 -+	    # FIXME: Pedantically, this is the right thing to do, so
43.49324 -+	    #        that some nasty dependency loop isn't accidentally
43.49325 -+	    #        broken:
43.49326 -+	    #new_libs="$deplib $new_libs"
43.49327 -+	    # Pragmatically, this seems to cause very few problems in
43.49328 -+	    # practice:
43.49329 -+	    case $deplib in
43.49330 -+	    -L*) new_libs="$deplib $new_libs" ;;
43.49331 -+	    -R*) ;;
43.49332 -+	    *)
43.49333 -+	      # And here is the reason: when a library appears more
43.49334 -+	      # than once as an explicit dependence of a library, or
43.49335 -+	      # is implicitly linked in more than once by the
43.49336 -+	      # compiler, it is considered special, and multiple
43.49337 -+	      # occurrences thereof are not removed.  Compare this
43.49338 -+	      # with having the same library being listed as a
43.49339 -+	      # dependency of multiple other libraries: in this case,
43.49340 -+	      # we know (pedantically, we assume) the library does not
43.49341 -+	      # need to be listed more than once, so we keep only the
43.49342 -+	      # last copy.  This is not always right, but it is rare
43.49343 -+	      # enough that we require users that really mean to play
43.49344 -+	      # such unportable linking tricks to link the library
43.49345 -+	      # using -Wl,-lname, so that libtool does not consider it
43.49346 -+	      # for duplicate removal.
43.49347 -+	      case " $specialdeplibs " in
43.49348 -+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
43.49349 -+	      *)
43.49350 -+		case " $new_libs " in
43.49351 -+		*" $deplib "*) ;;
43.49352 -+		*) new_libs="$deplib $new_libs" ;;
43.49353 -+		esac
43.49354 -+		;;
43.49355 -+	      esac
43.49356 -+	      ;;
43.49357 -+	    esac
43.49358 -+	  done
43.49359 -+	  tmp_libs=
43.49360 -+	  for deplib in $new_libs; do
43.49361 -+	    case $deplib in
43.49362 -+	    -L*)
43.49363 -+	      case " $tmp_libs " in
43.49364 -+	      *" $deplib "*) ;;
43.49365 -+	      *) tmp_libs="$tmp_libs $deplib" ;;
43.49366 -+	      esac
43.49367 -+	      ;;
43.49368 -+	    *) tmp_libs="$tmp_libs $deplib" ;;
43.49369 -+	    esac
43.49370 -+	  done
43.49371 -+	  eval $var=\"$tmp_libs\"
43.49372 -+	done # for var
43.49373 -+      fi
43.49374 -+      # Last step: remove runtime libs from dependency_libs
43.49375 -+      # (they stay in deplibs)
43.49376 -+      tmp_libs=
43.49377 -+      for i in $dependency_libs ; do
43.49378 -+	case " $predeps $postdeps $compiler_lib_search_path " in
43.49379 -+	*" $i "*)
43.49380 -+	  i=""
43.49381 -+	  ;;
43.49382 -+	esac
43.49383 -+	if test -n "$i" ; then
43.49384 -+	  tmp_libs="$tmp_libs $i"
43.49385 -+	fi
43.49386 -+      done
43.49387 -+      dependency_libs=$tmp_libs
43.49388 -+    done # for pass
43.49389 -+    if test "$linkmode" = prog; then
43.49390 -+      dlfiles="$newdlfiles"
43.49391 -+    fi
43.49392 -+    if test "$linkmode" = prog || test "$linkmode" = lib; then
43.49393 -+      dlprefiles="$newdlprefiles"
43.49394 -+    fi
43.49395 -+
43.49396 -+    case $linkmode in
43.49397 -+    oldlib)
43.49398 -+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
43.49399 -+	func_warning "\`-dlopen' is ignored for archives"
43.49400 -+      fi
43.49401 -+
43.49402 -+      test -n "$deplibs" && \
43.49403 -+	func_warning "\`-l' and \`-L' are ignored for archives"
43.49404 -+
43.49405 -+
43.49406 -+      test -n "$rpath" && \
43.49407 -+	func_warning "\`-rpath' is ignored for archives"
43.49408 -+
43.49409 -+      test -n "$xrpath" && \
43.49410 -+	func_warning "\`-R' is ignored for archives"
43.49411 -+
43.49412 -+      test -n "$vinfo" && \
43.49413 -+	func_warning "\`-version-info/-version-number' is ignored for archives"
43.49414 -+
43.49415 -+      test -n "$release" && \
43.49416 -+	func_warning "\`-release' is ignored for archives"
43.49417 -+
43.49418 -+      test -n "$export_symbols$export_symbols_regex" && \
43.49419 -+	func_warning "\`-export-symbols' is ignored for archives"
43.49420 -+
43.49421 -+      # Now set the variables for building old libraries.
43.49422 -+      build_libtool_libs=no
43.49423 -+      oldlibs="$output"
43.49424 -+      objs="$objs$old_deplibs"
43.49425 -+      ;;
43.49426 -+
43.49427 -+    lib)
43.49428 -+      # Make sure we only generate libraries of the form `libNAME.la'.
43.49429 -+      case $outputname in
43.49430 -+      lib*)
43.49431 -+	func_stripname 'lib' '.la' "$outputname"
43.49432 -+	name=$func_stripname_result
43.49433 -+	eval shared_ext=\"$shrext_cmds\"
43.49434 -+	eval libname=\"$libname_spec\"
43.49435 -+	;;
43.49436 -+      *)
43.49437 -+	test "$module" = no && \
43.49438 -+	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
43.49439 -+
43.49440 -+	if test "$need_lib_prefix" != no; then
43.49441 -+	  # Add the "lib" prefix for modules if required
43.49442 -+	  func_stripname '' '.la' "$outputname"
43.49443 -+	  name=$func_stripname_result
43.49444 -+	  eval shared_ext=\"$shrext_cmds\"
43.49445 -+	  eval libname=\"$libname_spec\"
43.49446 -+	else
43.49447 -+	  func_stripname '' '.la' "$outputname"
43.49448 -+	  libname=$func_stripname_result
43.49449 -+	fi
43.49450 -+	;;
43.49451 -+      esac
43.49452 -+
43.49453 -+      if test -n "$objs"; then
43.49454 -+	if test "$deplibs_check_method" != pass_all; then
43.49455 -+	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
43.49456 -+	else
43.49457 -+	  $ECHO
43.49458 -+	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
43.49459 -+	  $ECHO "*** objects $objs is not portable!"
43.49460 -+	  libobjs="$libobjs $objs"
43.49461 -+	fi
43.49462 -+      fi
43.49463 -+
43.49464 -+      test "$dlself" != no && \
43.49465 -+	func_warning "\`-dlopen self' is ignored for libtool libraries"
43.49466 -+
43.49467 -+      set dummy $rpath
43.49468 -+      shift
43.49469 -+      test "$#" -gt 1 && \
43.49470 -+	func_warning "ignoring multiple \`-rpath's for a libtool library"
43.49471 -+
43.49472 -+      install_libdir="$1"
43.49473 -+
43.49474 -+      oldlibs=
43.49475 -+      if test -z "$rpath"; then
43.49476 -+	if test "$build_libtool_libs" = yes; then
43.49477 -+	  # Building a libtool convenience library.
43.49478 -+	  # Some compilers have problems with a `.al' extension so
43.49479 -+	  # convenience libraries should have the same extension an
43.49480 -+	  # archive normally would.
43.49481 -+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
43.49482 -+	  build_libtool_libs=convenience
43.49483 -+	  build_old_libs=yes
43.49484 -+	fi
43.49485 -+
43.49486 -+	test -n "$vinfo" && \
43.49487 -+	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
43.49488 -+
43.49489 -+	test -n "$release" && \
43.49490 -+	  func_warning "\`-release' is ignored for convenience libraries"
43.49491 -+      else
43.49492 -+
43.49493 -+	# Parse the version information argument.
43.49494 -+	save_ifs="$IFS"; IFS=':'
43.49495 -+	set dummy $vinfo 0 0 0
43.49496 -+	shift
43.49497 -+	IFS="$save_ifs"
43.49498 -+
43.49499 -+	test -n "$7" && \
43.49500 -+	  func_fatal_help "too many parameters to \`-version-info'"
43.49501 -+
43.49502 -+	# convert absolute version numbers to libtool ages
43.49503 -+	# this retains compatibility with .la files and attempts
43.49504 -+	# to make the code below a bit more comprehensible
43.49505 -+
43.49506 -+	case $vinfo_number in
43.49507 -+	yes)
43.49508 -+	  number_major="$1"
43.49509 -+	  number_minor="$2"
43.49510 -+	  number_revision="$3"
43.49511 -+	  #
43.49512 -+	  # There are really only two kinds -- those that
43.49513 -+	  # use the current revision as the major version
43.49514 -+	  # and those that subtract age and use age as
43.49515 -+	  # a minor version.  But, then there is irix
43.49516 -+	  # which has an extra 1 added just for fun
43.49517 -+	  #
43.49518 -+	  case $version_type in
43.49519 -+	  darwin|linux|osf|windows|none)
43.49520 -+	    current=`expr $number_major + $number_minor`
43.49521 -+	    age="$number_minor"
43.49522 -+	    revision="$number_revision"
43.49523 -+	    ;;
43.49524 -+	  freebsd-aout|freebsd-elf|sunos)
43.49525 -+	    current="$number_major"
43.49526 -+	    revision="$number_minor"
43.49527 -+	    age="0"
43.49528 -+	    ;;
43.49529 -+	  irix|nonstopux)
43.49530 -+	    current=`expr $number_major + $number_minor - 1`
43.49531 -+	    age="$number_minor"
43.49532 -+	    revision="$number_minor"
43.49533 -+	    ;;
43.49534 -+	  esac
43.49535 -+	  ;;
43.49536 -+	no)
43.49537 -+	  current="$1"
43.49538 -+	  revision="$2"
43.49539 -+	  age="$3"
43.49540 -+	  ;;
43.49541 -+	esac
43.49542 -+
43.49543 -+	# Check that each of the things are valid numbers.
43.49544 -+	case $current in
43.49545 -+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
43.49546 -+	*)
43.49547 -+	  func_error "CURRENT \`$current' must be a nonnegative integer"
43.49548 -+	  func_fatal_error "\`$vinfo' is not valid version information"
43.49549 -+	  ;;
43.49550 -+	esac
43.49551 -+
43.49552 -+	case $revision in
43.49553 -+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
43.49554 -+	*)
43.49555 -+	  func_error "REVISION \`$revision' must be a nonnegative integer"
43.49556 -+	  func_fatal_error "\`$vinfo' is not valid version information"
43.49557 -+	  ;;
43.49558 -+	esac
43.49559 -+
43.49560 -+	case $age in
43.49561 -+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
43.49562 -+	*)
43.49563 -+	  func_error "AGE \`$age' must be a nonnegative integer"
43.49564 -+	  func_fatal_error "\`$vinfo' is not valid version information"
43.49565 -+	  ;;
43.49566 -+	esac
43.49567 -+
43.49568 -+	if test "$age" -gt "$current"; then
43.49569 -+	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
43.49570 -+	  func_fatal_error "\`$vinfo' is not valid version information"
43.49571 -+	fi
43.49572 -+
43.49573 -+	# Calculate the version variables.
43.49574 -+	major=
43.49575 -+	versuffix=
43.49576 -+	verstring=
43.49577 -+	case $version_type in
43.49578 -+	none) ;;
43.49579 -+
43.49580 -+	darwin)
43.49581 -+	  # Like Linux, but with the current version available in
43.49582 -+	  # verstring for coding it into the library header
43.49583 -+	  major=.`expr $current - $age`
43.49584 -+	  versuffix="$major.$age.$revision"
43.49585 -+	  # Darwin ld doesn't like 0 for these options...
43.49586 -+	  minor_current=`expr $current + 1`
43.49587 -+	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
43.49588 -+	  ;;
43.49589 -+
43.49590 -+	freebsd-aout)
43.49591 -+	  major=".$current"
43.49592 -+	  versuffix=".$current.$revision";
43.49593 -+	  ;;
43.49594 -+
43.49595 -+	freebsd-elf)
43.49596 -+	  major=".$current"
43.49597 -+	  versuffix=".$current"
43.49598 -+	  ;;
43.49599 -+
43.49600 -+	irix | nonstopux)
43.49601 -+	  major=`expr $current - $age + 1`
43.49602 -+
43.49603 -+	  case $version_type in
43.49604 -+	    nonstopux) verstring_prefix=nonstopux ;;
43.49605 -+	    *)         verstring_prefix=sgi ;;
43.49606 -+	  esac
43.49607 -+	  verstring="$verstring_prefix$major.$revision"
43.49608 -+
43.49609 -+	  # Add in all the interfaces that we are compatible with.
43.49610 -+	  loop=$revision
43.49611 -+	  while test "$loop" -ne 0; do
43.49612 -+	    iface=`expr $revision - $loop`
43.49613 -+	    loop=`expr $loop - 1`
43.49614 -+	    verstring="$verstring_prefix$major.$iface:$verstring"
43.49615 -+	  done
43.49616 -+
43.49617 -+	  # Before this point, $major must not contain `.'.
43.49618 -+	  major=.$major
43.49619 -+	  versuffix="$major.$revision"
43.49620 -+	  ;;
43.49621 -+
43.49622 -+	linux)
43.49623 -+	  major=.`expr $current - $age`
43.49624 -+	  versuffix="$major.$age.$revision"
43.49625 -+	  ;;
43.49626 -+
43.49627 -+	osf)
43.49628 -+	  major=.`expr $current - $age`
43.49629 -+	  versuffix=".$current.$age.$revision"
43.49630 -+	  verstring="$current.$age.$revision"
43.49631 -+
43.49632 -+	  # Add in all the interfaces that we are compatible with.
43.49633 -+	  loop=$age
43.49634 -+	  while test "$loop" -ne 0; do
43.49635 -+	    iface=`expr $current - $loop`
43.49636 -+	    loop=`expr $loop - 1`
43.49637 -+	    verstring="$verstring:${iface}.0"
43.49638 -+	  done
43.49639 -+
43.49640 -+	  # Make executables depend on our current version.
43.49641 -+	  verstring="$verstring:${current}.0"
43.49642 -+	  ;;
43.49643 -+
43.49644 -+	qnx)
43.49645 -+	  major=".$current"
43.49646 -+	  versuffix=".$current"
43.49647 -+	  ;;
43.49648 -+
43.49649 -+	sunos)
43.49650 -+	  major=".$current"
43.49651 -+	  versuffix=".$current.$revision"
43.49652 -+	  ;;
43.49653 -+
43.49654 -+	windows)
43.49655 -+	  # Use '-' rather than '.', since we only want one
43.49656 -+	  # extension on DOS 8.3 filesystems.
43.49657 -+	  major=`expr $current - $age`
43.49658 -+	  versuffix="-$major"
43.49659 -+	  ;;
43.49660 -+
43.49661 -+	*)
43.49662 -+	  func_fatal_configuration "unknown library version type \`$version_type'"
43.49663 -+	  ;;
43.49664 -+	esac
43.49665 -+
43.49666 -+	# Clear the version info if we defaulted, and they specified a release.
43.49667 -+	if test -z "$vinfo" && test -n "$release"; then
43.49668 -+	  major=
43.49669 -+	  case $version_type in
43.49670 -+	  darwin)
43.49671 -+	    # we can't check for "0.0" in archive_cmds due to quoting
43.49672 -+	    # problems, so we reset it completely
43.49673 -+	    verstring=
43.49674 -+	    ;;
43.49675 -+	  *)
43.49676 -+	    verstring="0.0"
43.49677 -+	    ;;
43.49678 -+	  esac
43.49679 -+	  if test "$need_version" = no; then
43.49680 -+	    versuffix=
43.49681 -+	  else
43.49682 -+	    versuffix=".0.0"
43.49683 -+	  fi
43.49684 -+	fi
43.49685 -+
43.49686 -+	# Remove version info from name if versioning should be avoided
43.49687 -+	if test "$avoid_version" = yes && test "$need_version" = no; then
43.49688 -+	  major=
43.49689 -+	  versuffix=
43.49690 -+	  verstring=""
43.49691 -+	fi
43.49692 -+
43.49693 -+	# Check to see if the archive will have undefined symbols.
43.49694 -+	if test "$allow_undefined" = yes; then
43.49695 -+	  if test "$allow_undefined_flag" = unsupported; then
43.49696 -+	    func_warning "undefined symbols not allowed in $host shared libraries"
43.49697 -+	    build_libtool_libs=no
43.49698 -+	    build_old_libs=yes
43.49699 -+	  fi
43.49700 -+	else
43.49701 -+	  # Don't allow undefined symbols.
43.49702 -+	  allow_undefined_flag="$no_undefined_flag"
43.49703 -+	fi
43.49704 -+
43.49705 -+      fi
43.49706 -+
43.49707 -+      func_generate_dlsyms "$libname" "$libname" "yes"
43.49708 -+      libobjs="$libobjs $symfileobj"
43.49709 -+      test "X$libobjs" = "X " && libobjs=
43.49710 -+
43.49711 -+      if test "$mode" != relink; then
43.49712 -+	# Remove our outputs, but don't remove object files since they
43.49713 -+	# may have been created when compiling PIC objects.
43.49714 -+	removelist=
43.49715 -+	tempremovelist=`$ECHO "$output_objdir/*"`
43.49716 -+	for p in $tempremovelist; do
43.49717 -+	  case $p in
43.49718 -+	    *.$objext)
43.49719 -+	       ;;
43.49720 -+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
43.49721 -+	       if test "X$precious_files_regex" != "X"; then
43.49722 -+		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
43.49723 -+		 then
43.49724 -+		   continue
43.49725 -+		 fi
43.49726 -+	       fi
43.49727 -+	       removelist="$removelist $p"
43.49728 -+	       ;;
43.49729 -+	    *) ;;
43.49730 -+	  esac
43.49731 -+	done
43.49732 -+	test -n "$removelist" && \
43.49733 -+	  func_show_eval "${RM}r \$removelist"
43.49734 -+      fi
43.49735 -+
43.49736 -+      # Now set the variables for building old libraries.
43.49737 -+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
43.49738 -+	oldlibs="$oldlibs $output_objdir/$libname.$libext"
43.49739 -+
43.49740 -+	# Transform .lo files to .o files.
43.49741 -+	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
43.49742 -+      fi
43.49743 -+
43.49744 -+      # Eliminate all temporary directories.
43.49745 -+      #for path in $notinst_path; do
43.49746 -+      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
43.49747 -+      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
43.49748 -+      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
43.49749 -+      #done
43.49750 -+
43.49751 -+      if test -n "$xrpath"; then
43.49752 -+	# If the user specified any rpath flags, then add them.
43.49753 -+	temp_xrpath=
43.49754 -+	for libdir in $xrpath; do
43.49755 -+	  temp_xrpath="$temp_xrpath -R$libdir"
43.49756 -+	  case "$finalize_rpath " in
43.49757 -+	  *" $libdir "*) ;;
43.49758 -+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
43.49759 -+	  esac
43.49760 -+	done
43.49761 -+	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
43.49762 -+	  dependency_libs="$temp_xrpath $dependency_libs"
43.49763 -+	fi
43.49764 -+      fi
43.49765 -+
43.49766 -+      # Make sure dlfiles contains only unique files that won't be dlpreopened
43.49767 -+      old_dlfiles="$dlfiles"
43.49768 -+      dlfiles=
43.49769 -+      for lib in $old_dlfiles; do
43.49770 -+	case " $dlprefiles $dlfiles " in
43.49771 -+	*" $lib "*) ;;
43.49772 -+	*) dlfiles="$dlfiles $lib" ;;
43.49773 -+	esac
43.49774 -+      done
43.49775 -+
43.49776 -+      # Make sure dlprefiles contains only unique files
43.49777 -+      old_dlprefiles="$dlprefiles"
43.49778 -+      dlprefiles=
43.49779 -+      for lib in $old_dlprefiles; do
43.49780 -+	case "$dlprefiles " in
43.49781 -+	*" $lib "*) ;;
43.49782 -+	*) dlprefiles="$dlprefiles $lib" ;;
43.49783 -+	esac
43.49784 -+      done
43.49785 -+
43.49786 -+      if test "$build_libtool_libs" = yes; then
43.49787 -+	if test -n "$rpath"; then
43.49788 -+	  case $host in
43.49789 -+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
43.49790 -+	    # these systems don't actually have a c library (as such)!
43.49791 -+	    ;;
43.49792 -+	  *-*-rhapsody* | *-*-darwin1.[012])
43.49793 -+	    # Rhapsody C library is in the System framework
43.49794 -+	    deplibs="$deplibs System.ltframework"
43.49795 -+	    ;;
43.49796 -+	  *-*-netbsd*)
43.49797 -+	    # Don't link with libc until the a.out ld.so is fixed.
43.49798 -+	    ;;
43.49799 -+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
43.49800 -+	    # Do not include libc due to us having libc/libc_r.
43.49801 -+	    ;;
43.49802 -+	  *-*-sco3.2v5* | *-*-sco5v6*)
43.49803 -+	    # Causes problems with __ctype
43.49804 -+	    ;;
43.49805 -+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
43.49806 -+	    # Compiler inserts libc in the correct place for threads to work
43.49807 -+ 	    ;;
43.49808 -+ 	  *)
43.49809 -+	    # Add libc to deplibs on all other systems if necessary.
43.49810 -+	    if test "$build_libtool_need_lc" = "yes"; then
43.49811 -+	      deplibs="$deplibs -lc"
43.49812 -+	    fi
43.49813 -+	    ;;
43.49814 -+	  esac
43.49815 -+	fi
43.49816 -+
43.49817 -+	# Transform deplibs into only deplibs that can be linked in shared.
43.49818 -+	name_save=$name
43.49819 -+	libname_save=$libname
43.49820 -+	release_save=$release
43.49821 -+	versuffix_save=$versuffix
43.49822 -+	major_save=$major
43.49823 -+	# I'm not sure if I'm treating the release correctly.  I think
43.49824 -+	# release should show up in the -l (ie -lgmp5) so we don't want to
43.49825 -+	# add it in twice.  Is that correct?
43.49826 -+	release=""
43.49827 -+	versuffix=""
43.49828 -+	major=""
43.49829 -+	newdeplibs=
43.49830 -+	droppeddeps=no
43.49831 -+	case $deplibs_check_method in
43.49832 -+	pass_all)
43.49833 -+	  # Don't check for shared/static.  Everything works.
43.49834 -+	  # This might be a little naive.  We might want to check
43.49835 -+	  # whether the library exists or not.  But this is on
43.49836 -+	  # osf3 & osf4 and I'm not really sure... Just
43.49837 -+	  # implementing what was already the behavior.
43.49838 -+	  newdeplibs=$deplibs
43.49839 -+	  ;;
43.49840 -+	test_compile)
43.49841 -+	  # This code stresses the "libraries are programs" paradigm to its
43.49842 -+	  # limits. Maybe even breaks it.  We compile a program, linking it
43.49843 -+	  # against the deplibs as a proxy for the library.  Then we can check
43.49844 -+	  # whether they linked in statically or dynamically with ldd.
43.49845 -+	  $opt_dry_run || $RM conftest.c
43.49846 -+	  cat > conftest.c <<EOF
43.49847 -+	  int main() { return 0; }
43.49848 -+EOF
43.49849 -+	  $opt_dry_run || $RM conftest
43.49850 -+	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
43.49851 -+	    ldd_output=`ldd conftest`
43.49852 -+	    for i in $deplibs; do
43.49853 -+	      name=`expr $i : '-l\(.*\)'`
43.49854 -+	      # If $name is empty we are operating on a -L argument.
43.49855 -+	      if test "$name" != "" && test "$name" != "0"; then
43.49856 -+		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
43.49857 -+		  case " $predeps $postdeps " in
43.49858 -+		  *" $i "*)
43.49859 -+		    newdeplibs="$newdeplibs $i"
43.49860 -+		    i=""
43.49861 -+		    ;;
43.49862 -+		  esac
43.49863 -+		fi
43.49864 -+		if test -n "$i" ; then
43.49865 -+		  libname=`eval "\\$ECHO \"$libname_spec\""`
43.49866 -+		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
43.49867 -+		  set dummy $deplib_matches; shift
43.49868 -+		  deplib_match=$1
43.49869 -+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
43.49870 -+		    newdeplibs="$newdeplibs $i"
43.49871 -+		  else
43.49872 -+		    droppeddeps=yes
43.49873 -+		    $ECHO
43.49874 -+		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
43.49875 -+		    $ECHO "*** I have the capability to make that library automatically link in when"
43.49876 -+		    $ECHO "*** you link to this library.  But I can only do this if you have a"
43.49877 -+		    $ECHO "*** shared version of the library, which I believe you do not have"
43.49878 -+		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
43.49879 -+		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
43.49880 -+		  fi
43.49881 -+		fi
43.49882 -+	      else
43.49883 -+		newdeplibs="$newdeplibs $i"
43.49884 -+	      fi
43.49885 -+	    done
43.49886 -+	  else
43.49887 -+	    # Error occurred in the first compile.  Let's try to salvage
43.49888 -+	    # the situation: Compile a separate program for each library.
43.49889 -+	    for i in $deplibs; do
43.49890 -+	      name=`expr $i : '-l\(.*\)'`
43.49891 -+	      # If $name is empty we are operating on a -L argument.
43.49892 -+	      if test "$name" != "" && test "$name" != "0"; then
43.49893 -+		$opt_dry_run || $RM conftest
43.49894 -+		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
43.49895 -+		  ldd_output=`ldd conftest`
43.49896 -+		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
43.49897 -+		    case " $predeps $postdeps " in
43.49898 -+		    *" $i "*)
43.49899 -+		      newdeplibs="$newdeplibs $i"
43.49900 -+		      i=""
43.49901 -+		      ;;
43.49902 -+		    esac
43.49903 -+		  fi
43.49904 -+		  if test -n "$i" ; then
43.49905 -+		    libname=`eval "\\$ECHO \"$libname_spec\""`
43.49906 -+		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
43.49907 -+		    set dummy $deplib_matches; shift
43.49908 -+		    deplib_match=$1
43.49909 -+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
43.49910 -+		      newdeplibs="$newdeplibs $i"
43.49911 -+		    else
43.49912 -+		      droppeddeps=yes
43.49913 -+		      $ECHO
43.49914 -+		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
43.49915 -+		      $ECHO "*** I have the capability to make that library automatically link in when"
43.49916 -+		      $ECHO "*** you link to this library.  But I can only do this if you have a"
43.49917 -+		      $ECHO "*** shared version of the library, which you do not appear to have"
43.49918 -+		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
43.49919 -+		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
43.49920 -+		    fi
43.49921 -+		  fi
43.49922 -+		else
43.49923 -+		  droppeddeps=yes
43.49924 -+		  $ECHO
43.49925 -+		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
43.49926 -+		  $ECHO "*** make it link in!  You will probably need to install it or some"
43.49927 -+		  $ECHO "*** library that it depends on before this library will be fully"
43.49928 -+		  $ECHO "*** functional.  Installing it before continuing would be even better."
43.49929 -+		fi
43.49930 -+	      else
43.49931 -+		newdeplibs="$newdeplibs $i"
43.49932 -+	      fi
43.49933 -+	    done
43.49934 -+	  fi
43.49935 -+	  ;;
43.49936 -+	file_magic*)
43.49937 -+	  set dummy $deplibs_check_method; shift
43.49938 -+	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
43.49939 -+	  for a_deplib in $deplibs; do
43.49940 -+	    name=`expr $a_deplib : '-l\(.*\)'`
43.49941 -+	    # If $name is empty we are operating on a -L argument.
43.49942 -+	    if test "$name" != "" && test  "$name" != "0"; then
43.49943 -+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
43.49944 -+		case " $predeps $postdeps " in
43.49945 -+		*" $a_deplib "*)
43.49946 -+		  newdeplibs="$newdeplibs $a_deplib"
43.49947 -+		  a_deplib=""
43.49948 -+		  ;;
43.49949 -+		esac
43.49950 -+	      fi
43.49951 -+	      if test -n "$a_deplib" ; then
43.49952 -+		libname=`eval "\\$ECHO \"$libname_spec\""`
43.49953 -+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
43.49954 -+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
43.49955 -+		  for potent_lib in $potential_libs; do
43.49956 -+		      # Follow soft links.
43.49957 -+		      if ls -lLd "$potent_lib" 2>/dev/null |
43.49958 -+			 $GREP " -> " >/dev/null; then
43.49959 -+			continue
43.49960 -+		      fi
43.49961 -+		      # The statement above tries to avoid entering an
43.49962 -+		      # endless loop below, in case of cyclic links.
43.49963 -+		      # We might still enter an endless loop, since a link
43.49964 -+		      # loop can be closed while we follow links,
43.49965 -+		      # but so what?
43.49966 -+		      potlib="$potent_lib"
43.49967 -+		      while test -h "$potlib" 2>/dev/null; do
43.49968 -+			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
43.49969 -+			case $potliblink in
43.49970 -+			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
43.49971 -+			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
43.49972 -+			esac
43.49973 -+		      done
43.49974 -+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
43.49975 -+			 $SED -e 10q |
43.49976 -+			 $EGREP "$file_magic_regex" > /dev/null; then
43.49977 -+			newdeplibs="$newdeplibs $a_deplib"
43.49978 -+			a_deplib=""
43.49979 -+			break 2
43.49980 -+		      fi
43.49981 -+		  done
43.49982 -+		done
43.49983 -+	      fi
43.49984 -+	      if test -n "$a_deplib" ; then
43.49985 -+		droppeddeps=yes
43.49986 -+		$ECHO
43.49987 -+		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
43.49988 -+		$ECHO "*** I have the capability to make that library automatically link in when"
43.49989 -+		$ECHO "*** you link to this library.  But I can only do this if you have a"
43.49990 -+		$ECHO "*** shared version of the library, which you do not appear to have"
43.49991 -+		$ECHO "*** because I did check the linker path looking for a file starting"
43.49992 -+		if test -z "$potlib" ; then
43.49993 -+		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
43.49994 -+		else
43.49995 -+		  $ECHO "*** with $libname and none of the candidates passed a file format test"
43.49996 -+		  $ECHO "*** using a file magic. Last file checked: $potlib"
43.49997 -+		fi
43.49998 -+	      fi
43.49999 -+	    else
43.50000 -+	      # Add a -L argument.
43.50001 -+	      newdeplibs="$newdeplibs $a_deplib"
43.50002 -+	    fi
43.50003 -+	  done # Gone through all deplibs.
43.50004 -+	  ;;
43.50005 -+	match_pattern*)
43.50006 -+	  set dummy $deplibs_check_method; shift
43.50007 -+	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
43.50008 -+	  for a_deplib in $deplibs; do
43.50009 -+	    name=`expr $a_deplib : '-l\(.*\)'`
43.50010 -+	    # If $name is empty we are operating on a -L argument.
43.50011 -+	    if test -n "$name" && test "$name" != "0"; then
43.50012 -+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
43.50013 -+		case " $predeps $postdeps " in
43.50014 -+		*" $a_deplib "*)
43.50015 -+		  newdeplibs="$newdeplibs $a_deplib"
43.50016 -+		  a_deplib=""
43.50017 -+		  ;;
43.50018 -+		esac
43.50019 -+	      fi
43.50020 -+	      if test -n "$a_deplib" ; then
43.50021 -+		libname=`eval "\\$ECHO \"$libname_spec\""`
43.50022 -+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
43.50023 -+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
43.50024 -+		  for potent_lib in $potential_libs; do
43.50025 -+		    potlib="$potent_lib" # see symlink-check above in file_magic test
43.50026 -+		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
43.50027 -+		       $EGREP "$match_pattern_regex" > /dev/null; then
43.50028 -+		      newdeplibs="$newdeplibs $a_deplib"
43.50029 -+		      a_deplib=""
43.50030 -+		      break 2
43.50031 -+		    fi
43.50032 -+		  done
43.50033 -+		done
43.50034 -+	      fi
43.50035 -+	      if test -n "$a_deplib" ; then
43.50036 -+		droppeddeps=yes
43.50037 -+		$ECHO
43.50038 -+		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
43.50039 -+		$ECHO "*** I have the capability to make that library automatically link in when"
43.50040 -+		$ECHO "*** you link to this library.  But I can only do this if you have a"
43.50041 -+		$ECHO "*** shared version of the library, which you do not appear to have"
43.50042 -+		$ECHO "*** because I did check the linker path looking for a file starting"
43.50043 -+		if test -z "$potlib" ; then
43.50044 -+		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
43.50045 -+		else
43.50046 -+		  $ECHO "*** with $libname and none of the candidates passed a file format test"
43.50047 -+		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
43.50048 -+		fi
43.50049 -+	      fi
43.50050 -+	    else
43.50051 -+	      # Add a -L argument.
43.50052 -+	      newdeplibs="$newdeplibs $a_deplib"
43.50053 -+	    fi
43.50054 -+	  done # Gone through all deplibs.
43.50055 -+	  ;;
43.50056 -+	none | unknown | *)
43.50057 -+	  newdeplibs=""
43.50058 -+	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
43.50059 -+	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
43.50060 -+	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
43.50061 -+	    for i in $predeps $postdeps ; do
43.50062 -+	      # can't use Xsed below, because $i might contain '/'
43.50063 -+	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
43.50064 -+	    done
43.50065 -+	  fi
43.50066 -+	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' |
43.50067 -+	     $GREP . >/dev/null; then
43.50068 -+	    $ECHO
43.50069 -+	    if test "X$deplibs_check_method" = "Xnone"; then
43.50070 -+	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
43.50071 -+	    else
43.50072 -+	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
43.50073 -+	    fi
43.50074 -+	    $ECHO "*** All declared inter-library dependencies are being dropped."
43.50075 -+	    droppeddeps=yes
43.50076 -+	  fi
43.50077 -+	  ;;
43.50078 -+	esac
43.50079 -+	versuffix=$versuffix_save
43.50080 -+	major=$major_save
43.50081 -+	release=$release_save
43.50082 -+	libname=$libname_save
43.50083 -+	name=$name_save
43.50084 -+
43.50085 -+	case $host in
43.50086 -+	*-*-rhapsody* | *-*-darwin1.[012])
43.50087 -+	  # On Rhapsody replace the C library with the System framework
43.50088 -+	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
43.50089 -+	  ;;
43.50090 -+	esac
43.50091 -+
43.50092 -+	if test "$droppeddeps" = yes; then
43.50093 -+	  if test "$module" = yes; then
43.50094 -+	    $ECHO
43.50095 -+	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
43.50096 -+	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
43.50097 -+	    $ECHO "*** a static module, that should work as long as the dlopening"
43.50098 -+	    $ECHO "*** application is linked with the -dlopen flag."
43.50099 -+	    if test -z "$global_symbol_pipe"; then
43.50100 -+	      $ECHO
43.50101 -+	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
43.50102 -+	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
43.50103 -+	      $ECHO "*** not find such a program.  So, this module is probably useless."
43.50104 -+	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
43.50105 -+	    fi
43.50106 -+	    if test "$build_old_libs" = no; then
43.50107 -+	      oldlibs="$output_objdir/$libname.$libext"
43.50108 -+	      build_libtool_libs=module
43.50109 -+	      build_old_libs=yes
43.50110 -+	    else
43.50111 -+	      build_libtool_libs=no
43.50112 -+	    fi
43.50113 -+	  else
43.50114 -+	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
43.50115 -+	    $ECHO "*** automatically added whenever a program is linked with this library"
43.50116 -+	    $ECHO "*** or is declared to -dlopen it."
43.50117 -+
43.50118 -+	    if test "$allow_undefined" = no; then
43.50119 -+	      $ECHO
43.50120 -+	      $ECHO "*** Since this library must not contain undefined symbols,"
43.50121 -+	      $ECHO "*** because either the platform does not support them or"
43.50122 -+	      $ECHO "*** it was explicitly requested with -no-undefined,"
43.50123 -+	      $ECHO "*** libtool will only create a static version of it."
43.50124 -+	      if test "$build_old_libs" = no; then
43.50125 -+		oldlibs="$output_objdir/$libname.$libext"
43.50126 -+		build_libtool_libs=module
43.50127 -+		build_old_libs=yes
43.50128 -+	      else
43.50129 -+		build_libtool_libs=no
43.50130 -+	      fi
43.50131 -+	    fi
43.50132 -+	  fi
43.50133 -+	fi
43.50134 -+	# Done checking deplibs!
43.50135 -+	deplibs=$newdeplibs
43.50136 -+      fi
43.50137 -+      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
43.50138 -+      case $host in
43.50139 -+	*-*-darwin*)
43.50140 -+	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
43.50141 -+	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
43.50142 -+	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
43.50143 -+	  ;;
43.50144 -+      esac
43.50145 -+
43.50146 -+      # move library search paths that coincide with paths to not yet
43.50147 -+      # installed libraries to the beginning of the library search list
43.50148 -+      new_libs=
43.50149 -+      for path in $notinst_path; do
43.50150 -+	case " $new_libs " in
43.50151 -+	*" -L$path/$objdir "*) ;;
43.50152 -+	*)
43.50153 -+	  case " $deplibs " in
43.50154 -+	  *" -L$path/$objdir "*)
43.50155 -+	    new_libs="$new_libs -L$path/$objdir" ;;
43.50156 -+	  esac
43.50157 -+	  ;;
43.50158 -+	esac
43.50159 -+      done
43.50160 -+      for deplib in $deplibs; do
43.50161 -+	case $deplib in
43.50162 -+	-L*)
43.50163 -+	  case " $new_libs " in
43.50164 -+	  *" $deplib "*) ;;
43.50165 -+	  *) new_libs="$new_libs $deplib" ;;
43.50166 -+	  esac
43.50167 -+	  ;;
43.50168 -+	*) new_libs="$new_libs $deplib" ;;
43.50169 -+	esac
43.50170 -+      done
43.50171 -+      deplibs="$new_libs"
43.50172 -+
43.50173 -+      # All the library-specific variables (install_libdir is set above).
43.50174 -+      library_names=
43.50175 -+      old_library=
43.50176 -+      dlname=
43.50177 -+
43.50178 -+      # Test again, we may have decided not to build it any more
43.50179 -+      if test "$build_libtool_libs" = yes; then
43.50180 -+	if test "$hardcode_into_libs" = yes; then
43.50181 -+	  # Hardcode the library paths
43.50182 -+	  hardcode_libdirs=
43.50183 -+	  dep_rpath=
43.50184 -+	  rpath="$finalize_rpath"
43.50185 -+	  test "$mode" != relink && rpath="$compile_rpath$rpath"
43.50186 -+	  for libdir in $rpath; do
43.50187 -+	    if test -n "$hardcode_libdir_flag_spec"; then
43.50188 -+	      if test -n "$hardcode_libdir_separator"; then
43.50189 -+		if test -z "$hardcode_libdirs"; then
43.50190 -+		  hardcode_libdirs="$libdir"
43.50191 -+		else
43.50192 -+		  # Just accumulate the unique libdirs.
43.50193 -+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
43.50194 -+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
43.50195 -+		    ;;
43.50196 -+		  *)
43.50197 -+		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
43.50198 -+		    ;;
43.50199 -+		  esac
43.50200 -+		fi
43.50201 -+	      else
43.50202 -+		eval flag=\"$hardcode_libdir_flag_spec\"
43.50203 -+		dep_rpath="$dep_rpath $flag"
43.50204 -+	      fi
43.50205 -+	    elif test -n "$runpath_var"; then
43.50206 -+	      case "$perm_rpath " in
43.50207 -+	      *" $libdir "*) ;;
43.50208 -+	      *) perm_rpath="$perm_rpath $libdir" ;;
43.50209 -+	      esac
43.50210 -+	    fi
43.50211 -+	  done
43.50212 -+	  # Substitute the hardcoded libdirs into the rpath.
43.50213 -+	  if test -n "$hardcode_libdir_separator" &&
43.50214 -+	     test -n "$hardcode_libdirs"; then
43.50215 -+	    libdir="$hardcode_libdirs"
43.50216 -+	    if test -n "$hardcode_libdir_flag_spec_ld"; then
43.50217 -+	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
43.50218 -+	    else
43.50219 -+	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
43.50220 -+	    fi
43.50221 -+	  fi
43.50222 -+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
43.50223 -+	    # We should set the runpath_var.
43.50224 -+	    rpath=
43.50225 -+	    for dir in $perm_rpath; do
43.50226 -+	      rpath="$rpath$dir:"
43.50227 -+	    done
43.50228 -+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
43.50229 -+	  fi
43.50230 -+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
43.50231 -+	fi
43.50232 -+
43.50233 -+	shlibpath="$finalize_shlibpath"
43.50234 -+	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
43.50235 -+	if test -n "$shlibpath"; then
43.50236 -+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
43.50237 -+	fi
43.50238 -+
43.50239 -+	# Get the real and link names of the library.
43.50240 -+	eval shared_ext=\"$shrext_cmds\"
43.50241 -+	eval library_names=\"$library_names_spec\"
43.50242 -+	set dummy $library_names
43.50243 -+	shift
43.50244 -+	realname="$1"
43.50245 -+	shift
43.50246 -+
43.50247 -+	if test -n "$soname_spec"; then
43.50248 -+	  eval soname=\"$soname_spec\"
43.50249 -+	else
43.50250 -+	  soname="$realname"
43.50251 -+	fi
43.50252 -+	if test -z "$dlname"; then
43.50253 -+	  dlname=$soname
43.50254 -+	fi
43.50255 -+
43.50256 -+	lib="$output_objdir/$realname"
43.50257 -+	linknames=
43.50258 -+	for link
43.50259 -+	do
43.50260 -+	  linknames="$linknames $link"
43.50261 -+	done
43.50262 -+
43.50263 -+	# Use standard objects if they are pic
43.50264 -+	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
43.50265 -+	test "X$libobjs" = "X " && libobjs=
43.50266 -+
43.50267 -+	delfiles=
43.50268 -+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
43.50269 -+	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
43.50270 -+	  export_symbols="$output_objdir/$libname.uexp"
43.50271 -+	  delfiles="$delfiles $export_symbols"
43.50272 -+	fi
43.50273 -+
43.50274 -+	orig_export_symbols=
43.50275 -+	case $host_os in
43.50276 -+	cygwin* | mingw*)
43.50277 -+	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
43.50278 -+	    # exporting using user supplied symfile
43.50279 -+	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
43.50280 -+	      # and it's NOT already a .def file. Must figure out
43.50281 -+	      # which of the given symbols are data symbols and tag
43.50282 -+	      # them as such. So, trigger use of export_symbols_cmds.
43.50283 -+	      # export_symbols gets reassigned inside the "prepare
43.50284 -+	      # the list of exported symbols" if statement, so the
43.50285 -+	      # include_expsyms logic still works.
43.50286 -+	      orig_export_symbols="$export_symbols"
43.50287 -+	      export_symbols=
43.50288 -+	      always_export_symbols=yes
43.50289 -+	    fi
43.50290 -+	  fi
43.50291 -+	  ;;
43.50292 -+	esac
43.50293 -+
43.50294 -+	# Prepare the list of exported symbols
43.50295 -+	if test -z "$export_symbols"; then
43.50296 -+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
43.50297 -+	    func_echo "generating symbol list for \`$libname.la'"
43.50298 -+	    export_symbols="$output_objdir/$libname.exp"
43.50299 -+	    $opt_dry_run || $RM $export_symbols
43.50300 -+	    cmds=$export_symbols_cmds
43.50301 -+	    save_ifs="$IFS"; IFS='~'
43.50302 -+	    for cmd in $cmds; do
43.50303 -+	      IFS="$save_ifs"
43.50304 -+	      eval cmd=\"$cmd\"
43.50305 -+	      if len=`expr "X$cmd" : ".*"` &&
43.50306 -+	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
43.50307 -+		func_show_eval "$cmd" 'exit $?'
43.50308 -+		skipped_export=false
43.50309 -+	      else
43.50310 -+		# The command line is too long to execute in one step.
43.50311 -+		func_echo "using reloadable object file for export list..."
43.50312 -+		skipped_export=:
43.50313 -+		# Break out early, otherwise skipped_export may be
43.50314 -+		# set to false by a later but shorter cmd.
43.50315 -+		break
43.50316 -+	      fi
43.50317 -+	    done
43.50318 -+	    IFS="$save_ifs"
43.50319 -+	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
43.50320 -+	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
43.50321 -+	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
43.50322 -+	    fi
43.50323 -+	  fi
43.50324 -+	fi
43.50325 -+
43.50326 -+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
43.50327 -+	  tmp_export_symbols="$export_symbols"
43.50328 -+	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
43.50329 -+	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
43.50330 -+	fi
43.50331 -+
43.50332 -+	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
43.50333 -+	  # The given exports_symbols file has to be filtered, so filter it.
43.50334 -+	  func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
43.50335 -+	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
43.50336 -+	  # 's' commands which not all seds can handle. GNU sed should be fine
43.50337 -+	  # though. Also, the filter scales superlinearly with the number of
43.50338 -+	  # global variables. join(1) would be nice here, but unfortunately
43.50339 -+	  # isn't a blessed tool.
43.50340 -+	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
43.50341 -+	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
43.50342 -+	  export_symbols=$output_objdir/$libname.def
43.50343 -+	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
43.50344 -+	fi
43.50345 -+
43.50346 -+	tmp_deplibs=
43.50347 -+	for test_deplib in $deplibs; do
43.50348 -+	  case " $convenience " in
43.50349 -+	  *" $test_deplib "*) ;;
43.50350 -+	  *)
43.50351 -+	    tmp_deplibs="$tmp_deplibs $test_deplib"
43.50352 -+	    ;;
43.50353 -+	  esac
43.50354 -+	done
43.50355 -+	deplibs="$tmp_deplibs"
43.50356 -+
43.50357 -+	if test -n "$convenience"; then
43.50358 -+	  if test -n "$whole_archive_flag_spec" &&
43.50359 -+	    test "$compiler_needs_object" = yes &&
43.50360 -+	    test -z "$libobjs"; then
43.50361 -+	    # extract the archives, so we have objects to list.
43.50362 -+	    # TODO: could optimize this to just extract one archive.
43.50363 -+	    whole_archive_flag_spec=
43.50364 -+	  fi
43.50365 -+	  if test -n "$whole_archive_flag_spec"; then
43.50366 -+	    save_libobjs=$libobjs
43.50367 -+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
43.50368 -+	    test "X$libobjs" = "X " && libobjs=
43.50369 -+	  else
43.50370 -+	    gentop="$output_objdir/${outputname}x"
43.50371 -+	    generated="$generated $gentop"
43.50372 -+
43.50373 -+	    func_extract_archives $gentop $convenience
43.50374 -+	    libobjs="$libobjs $func_extract_archives_result"
43.50375 -+	    test "X$libobjs" = "X " && libobjs=
43.50376 -+	  fi
43.50377 -+	fi
43.50378 -+
43.50379 -+	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
43.50380 -+	  eval flag=\"$thread_safe_flag_spec\"
43.50381 -+	  linker_flags="$linker_flags $flag"
43.50382 -+	fi
43.50383 -+
43.50384 -+	# Make a backup of the uninstalled library when relinking
43.50385 -+	if test "$mode" = relink; then
43.50386 -+	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
43.50387 -+	fi
43.50388 -+
43.50389 -+	# Do each of the archive commands.
43.50390 -+	if test "$module" = yes && test -n "$module_cmds" ; then
43.50391 -+	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
43.50392 -+	    eval test_cmds=\"$module_expsym_cmds\"
43.50393 -+	    cmds=$module_expsym_cmds
43.50394 -+	  else
43.50395 -+	    eval test_cmds=\"$module_cmds\"
43.50396 -+	    cmds=$module_cmds
43.50397 -+	  fi
43.50398 -+	else
43.50399 -+	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
43.50400 -+	    eval test_cmds=\"$archive_expsym_cmds\"
43.50401 -+	    cmds=$archive_expsym_cmds
43.50402 -+	  else
43.50403 -+	    eval test_cmds=\"$archive_cmds\"
43.50404 -+	    cmds=$archive_cmds
43.50405 -+	  fi
43.50406 -+	fi
43.50407 -+
43.50408 -+	if test "X$skipped_export" != "X:" &&
43.50409 -+	   len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
43.50410 -+	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
43.50411 -+	  :
43.50412 -+	else
43.50413 -+	  # The command line is too long to link in one step, link piecewise
43.50414 -+	  # or, if using GNU ld and skipped_export is not :, use a linker
43.50415 -+	  # script.
43.50416 -+
43.50417 -+	  # Save the value of $output and $libobjs because we want to
43.50418 -+	  # use them later.  If we have whole_archive_flag_spec, we
43.50419 -+	  # want to use save_libobjs as it was before
43.50420 -+	  # whole_archive_flag_spec was expanded, because we can't
43.50421 -+	  # assume the linker understands whole_archive_flag_spec.
43.50422 -+	  # This may have to be revisited, in case too many
43.50423 -+	  # convenience libraries get linked in and end up exceeding
43.50424 -+	  # the spec.
43.50425 -+	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
43.50426 -+	    save_libobjs=$libobjs
43.50427 -+	  fi
43.50428 -+	  save_output=$output
43.50429 -+	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
43.50430 -+
43.50431 -+	  # Clear the reloadable object creation command queue and
43.50432 -+	  # initialize k to one.
43.50433 -+	  test_cmds=
43.50434 -+	  concat_cmds=
43.50435 -+	  objlist=
43.50436 -+	  last_robj=
43.50437 -+	  k=1
43.50438 -+
43.50439 -+	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
43.50440 -+	    output=${output_objdir}/${output_la}.lnkscript
43.50441 -+	    func_echo "creating GNU ld script: $output"
43.50442 -+	    $ECHO 'INPUT (' > $output
43.50443 -+	    for obj in $save_libobjs
43.50444 -+	    do
43.50445 -+	      $ECHO "$obj" >> $output
43.50446 -+	    done
43.50447 -+	    $ECHO ')' >> $output
43.50448 -+	    delfiles="$delfiles $output"
43.50449 -+	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
43.50450 -+	    output=${output_objdir}/${output_la}.lnk
43.50451 -+	    func_echo "creating linker input file list: $output"
43.50452 -+	    : > $output
43.50453 -+	    set x $save_libobjs
43.50454 -+	    shift
43.50455 -+	    firstobj=
43.50456 -+	    if test "$compiler_needs_object" = yes; then
43.50457 -+	      firstobj="$1 "
43.50458 -+	      shift
43.50459 -+	    fi
43.50460 -+	    for obj
43.50461 -+	    do
43.50462 -+	      $ECHO "$obj" >> $output
43.50463 -+	    done
43.50464 -+	    delfiles="$delfiles $output"
43.50465 -+	    output=$firstobj\"$file_list_spec$output\"
43.50466 -+	  else
43.50467 -+	    if test -n "$save_libobjs"; then
43.50468 -+	      func_echo "creating reloadable object files..."
43.50469 -+	      output=$output_objdir/$output_la-${k}.$objext
43.50470 -+	      # Loop over the list of objects to be linked.
43.50471 -+	      for obj in $save_libobjs
43.50472 -+	      do
43.50473 -+		eval test_cmds=\"$reload_cmds $objlist $last_robj\"
43.50474 -+		if test "X$objlist" = X ||
43.50475 -+		   { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
43.50476 -+		     test "$len" -le "$max_cmd_len"; }; then
43.50477 -+		  objlist="$objlist $obj"
43.50478 -+		else
43.50479 -+		  # The command $test_cmds is almost too long, add a
43.50480 -+		  # command to the queue.
43.50481 -+		  if test "$k" -eq 1 ; then
43.50482 -+		    # The first file doesn't have a previous command to add.
43.50483 -+		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
43.50484 -+		  else
43.50485 -+		    # All subsequent reloadable object files will link in
43.50486 -+		    # the last one created.
43.50487 -+		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
43.50488 -+		  fi
43.50489 -+		  last_robj=$output_objdir/$output_la-${k}.$objext
43.50490 -+		  k=`expr $k + 1`
43.50491 -+		  output=$output_objdir/$output_la-${k}.$objext
43.50492 -+		  objlist=$obj
43.50493 -+		  len=1
43.50494 -+		fi
43.50495 -+	      done
43.50496 -+	      # Handle the remaining objects by creating one last
43.50497 -+	      # reloadable object file.  All subsequent reloadable object
43.50498 -+	      # files will link in the last one created.
43.50499 -+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
43.50500 -+	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
43.50501 -+
43.50502 -+	      # Set up a command to remove the reloadable object files
43.50503 -+	      # after they are used.
43.50504 -+	      i=0
43.50505 -+	      while test "$i" -lt "$k"
43.50506 -+	      do
43.50507 -+		i=`expr $i + 1`
43.50508 -+		delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
43.50509 -+	      done
43.50510 -+	    else
43.50511 -+	      output=
43.50512 -+	    fi
43.50513 -+
43.50514 -+	    if ${skipped_export-false}; then
43.50515 -+	      func_echo "generating symbol list for \`$libname.la'"
43.50516 -+	      export_symbols="$output_objdir/$libname.exp"
43.50517 -+	      $opt_dry_run || $RM $export_symbols
43.50518 -+	      libobjs=$output
43.50519 -+	      # Append the command to create the export file.
43.50520 -+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
43.50521 -+	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
43.50522 -+	    fi
43.50523 -+
43.50524 -+	    test -n "$save_libobjs" &&
43.50525 -+	      func_echo "creating a temporary reloadable object file: $output"
43.50526 -+
43.50527 -+	    # Loop through the commands generated above and execute them.
43.50528 -+	    save_ifs="$IFS"; IFS='~'
43.50529 -+	    for cmd in $concat_cmds; do
43.50530 -+	      IFS="$save_ifs"
43.50531 -+	      $opt_silent || {
43.50532 -+		  func_quote_for_expand "$cmd"
43.50533 -+		  eval "func_echo $func_quote_for_expand_result"
43.50534 -+	      }
43.50535 -+	      $opt_dry_run || eval "$cmd" || {
43.50536 -+		lt_exit=$?
43.50537 -+
43.50538 -+		# Restore the uninstalled library and exit
43.50539 -+		if test "$mode" = relink; then
43.50540 -+		  ( cd "$output_objdir" && \
43.50541 -+		    $RM "${realname}T" && \
43.50542 -+		    $MV "${realname}U" "$realname" )
43.50543 -+		fi
43.50544 -+
43.50545 -+		exit $lt_exit
43.50546 -+	      }
43.50547 -+	    done
43.50548 -+	    IFS="$save_ifs"
43.50549 -+
43.50550 -+	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
43.50551 -+	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
43.50552 -+	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
43.50553 -+	    fi
43.50554 -+	  fi
43.50555 -+
43.50556 -+          if ${skipped_export-false}; then
43.50557 -+	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
43.50558 -+	      tmp_export_symbols="$export_symbols"
43.50559 -+	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
43.50560 -+	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
43.50561 -+	    fi
43.50562 -+
43.50563 -+	    if test -n "$orig_export_symbols"; then
43.50564 -+	      # The given exports_symbols file has to be filtered, so filter it.
43.50565 -+	      func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
43.50566 -+	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
43.50567 -+	      # 's' commands which not all seds can handle. GNU sed should be fine
43.50568 -+	      # though. Also, the filter scales superlinearly with the number of
43.50569 -+	      # global variables. join(1) would be nice here, but unfortunately
43.50570 -+	      # isn't a blessed tool.
43.50571 -+	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
43.50572 -+	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
43.50573 -+	      export_symbols=$output_objdir/$libname.def
43.50574 -+	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
43.50575 -+	    fi
43.50576 -+	  fi
43.50577 -+
43.50578 -+	  libobjs=$output
43.50579 -+	  # Restore the value of output.
43.50580 -+	  output=$save_output
43.50581 -+
43.50582 -+	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
43.50583 -+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
43.50584 -+	    test "X$libobjs" = "X " && libobjs=
43.50585 -+	  fi
43.50586 -+	  # Expand the library linking commands again to reset the
43.50587 -+	  # value of $libobjs for piecewise linking.
43.50588 -+
43.50589 -+	  # Do each of the archive commands.
43.50590 -+	  if test "$module" = yes && test -n "$module_cmds" ; then
43.50591 -+	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
43.50592 -+	      cmds=$module_expsym_cmds
43.50593 -+	    else
43.50594 -+	      cmds=$module_cmds
43.50595 -+	    fi
43.50596 -+	  else
43.50597 -+	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
43.50598 -+	      cmds=$archive_expsym_cmds
43.50599 -+	    else
43.50600 -+	      cmds=$archive_cmds
43.50601 -+	    fi
43.50602 -+	  fi
43.50603 -+	fi
43.50604 -+
43.50605 -+	if test -n "$delfiles"; then
43.50606 -+	  # Append the command to remove temporary files to $cmds.
43.50607 -+	  eval cmds=\"\$cmds~\$RM $delfiles\"
43.50608 -+	fi
43.50609 -+
43.50610 -+	# Add any objects from preloaded convenience libraries
43.50611 -+	if test -n "$dlprefiles"; then
43.50612 -+	  gentop="$output_objdir/${outputname}x"
43.50613 -+	  generated="$generated $gentop"
43.50614 -+
43.50615 -+	  func_extract_archives $gentop $dlprefiles
43.50616 -+	  libobjs="$libobjs $func_extract_archives_result"
43.50617 -+	  test "X$libobjs" = "X " && libobjs=
43.50618 -+	fi
43.50619 -+
43.50620 -+	save_ifs="$IFS"; IFS='~'
43.50621 -+	for cmd in $cmds; do
43.50622 -+	  IFS="$save_ifs"
43.50623 -+	  eval cmd=\"$cmd\"
43.50624 -+	  $opt_silent || {
43.50625 -+	    func_quote_for_expand "$cmd"
43.50626 -+	    eval "func_echo $func_quote_for_expand_result"
43.50627 -+	  }
43.50628 -+	  $opt_dry_run || eval "$cmd" || {
43.50629 -+	    lt_exit=$?
43.50630 -+
43.50631 -+	    # Restore the uninstalled library and exit
43.50632 -+	    if test "$mode" = relink; then
43.50633 -+	      ( cd "$output_objdir" && \
43.50634 -+	        $RM "${realname}T" && \
43.50635 -+		$MV "${realname}U" "$realname" )
43.50636 -+	    fi
43.50637 -+
43.50638 -+	    exit $lt_exit
43.50639 -+	  }
43.50640 -+	done
43.50641 -+	IFS="$save_ifs"
43.50642 -+
43.50643 -+	# Restore the uninstalled library and exit
43.50644 -+	if test "$mode" = relink; then
43.50645 -+	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
43.50646 -+
43.50647 -+	  if test -n "$convenience"; then
43.50648 -+	    if test -z "$whole_archive_flag_spec"; then
43.50649 -+	      func_show_eval '${RM}r "$gentop"'
43.50650 -+	    fi
43.50651 -+	  fi
43.50652 -+
43.50653 -+	  exit $EXIT_SUCCESS
43.50654 -+	fi
43.50655 -+
43.50656 -+	# Create links to the real library.
43.50657 -+	for linkname in $linknames; do
43.50658 -+	  if test "$realname" != "$linkname"; then
43.50659 -+	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
43.50660 -+	  fi
43.50661 -+	done
43.50662 -+
43.50663 -+	# If -module or -export-dynamic was specified, set the dlname.
43.50664 -+	if test "$module" = yes || test "$export_dynamic" = yes; then
43.50665 -+	  # On all known operating systems, these are identical.
43.50666 -+	  dlname="$soname"
43.50667 -+	fi
43.50668 -+      fi
43.50669 -+      ;;
43.50670 -+
43.50671 -+    obj)
43.50672 -+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
43.50673 -+	func_warning "\`-dlopen' is ignored for objects"
43.50674 -+      fi
43.50675 -+
43.50676 -+      test -n "$deplibs" && \
43.50677 -+	func_warning "\`-l' and \`-L' are ignored for objects"
43.50678 -+
43.50679 -+      test -n "$rpath" && \
43.50680 -+	func_warning "\`-rpath' is ignored for objects"
43.50681 -+
43.50682 -+      test -n "$xrpath" && \
43.50683 -+	func_warning "\`-R' is ignored for objects"
43.50684 -+
43.50685 -+      test -n "$vinfo" && \
43.50686 -+	func_warning "\`-version-info' is ignored for objects"
43.50687 -+
43.50688 -+      test -n "$release" && \
43.50689 -+	func_warning "\`-release' is ignored for objects"
43.50690 -+
43.50691 -+      case $output in
43.50692 -+      *.lo)
43.50693 -+	test -n "$objs$old_deplibs" && \
43.50694 -+	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
43.50695 -+
43.50696 -+	libobj=$output
43.50697 -+	func_lo2o "$libobj"
43.50698 -+	obj=$func_lo2o_result
43.50699 -+	;;
43.50700 -+      *)
43.50701 -+	libobj=
43.50702 -+	obj="$output"
43.50703 -+	;;
43.50704 -+      esac
43.50705 -+
43.50706 -+      # Delete the old objects.
43.50707 -+      $opt_dry_run || $RM $obj $libobj
43.50708 -+
43.50709 -+      # Objects from convenience libraries.  This assumes
43.50710 -+      # single-version convenience libraries.  Whenever we create
43.50711 -+      # different ones for PIC/non-PIC, this we'll have to duplicate
43.50712 -+      # the extraction.
43.50713 -+      reload_conv_objs=
43.50714 -+      gentop=
43.50715 -+      # reload_cmds runs $LD directly, so let us get rid of
43.50716 -+      # -Wl from whole_archive_flag_spec and hope we can get by with
43.50717 -+      # turning comma into space..
43.50718 -+      wl=
43.50719 -+
43.50720 -+      if test -n "$convenience"; then
43.50721 -+	if test -n "$whole_archive_flag_spec"; then
43.50722 -+	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
43.50723 -+	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
43.50724 -+	else
43.50725 -+	  gentop="$output_objdir/${obj}x"
43.50726 -+	  generated="$generated $gentop"
43.50727 -+
43.50728 -+	  func_extract_archives $gentop $convenience
43.50729 -+	  reload_conv_objs="$reload_objs $func_extract_archives_result"
43.50730 -+	fi
43.50731 -+      fi
43.50732 -+
43.50733 -+      # Create the old-style object.
43.50734 -+      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
43.50735 -+
43.50736 -+      output="$obj"
43.50737 -+      func_execute_cmds "$reload_cmds" 'exit $?'
43.50738 -+
43.50739 -+      # Exit if we aren't doing a library object file.
43.50740 -+      if test -z "$libobj"; then
43.50741 -+	if test -n "$gentop"; then
43.50742 -+	  func_show_eval '${RM}r "$gentop"'
43.50743 -+	fi
43.50744 -+
43.50745 -+	exit $EXIT_SUCCESS
43.50746 -+      fi
43.50747 -+
43.50748 -+      if test "$build_libtool_libs" != yes; then
43.50749 -+	if test -n "$gentop"; then
43.50750 -+	  func_show_eval '${RM}r "$gentop"'
43.50751 -+	fi
43.50752 -+
43.50753 -+	# Create an invalid libtool object if no PIC, so that we don't
43.50754 -+	# accidentally link it into a program.
43.50755 -+	# $show "echo timestamp > $libobj"
43.50756 -+	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
43.50757 -+	exit $EXIT_SUCCESS
43.50758 -+      fi
43.50759 -+
43.50760 -+      if test -n "$pic_flag" || test "$pic_mode" != default; then
43.50761 -+	# Only do commands if we really have different PIC objects.
43.50762 -+	reload_objs="$libobjs $reload_conv_objs"
43.50763 -+	output="$libobj"
43.50764 -+	func_execute_cmds "$reload_cmds" 'exit $?'
43.50765 -+      fi
43.50766 -+
43.50767 -+      if test -n "$gentop"; then
43.50768 -+	func_show_eval '${RM}r "$gentop"'
43.50769 -+      fi
43.50770 -+
43.50771 -+      exit $EXIT_SUCCESS
43.50772 -+      ;;
43.50773 -+
43.50774 -+    prog)
43.50775 -+      case $host in
43.50776 -+	*cygwin*) func_stripname '' '.exe' "$output"
43.50777 -+	          output=$func_stripname_result.exe;;
43.50778 -+      esac
43.50779 -+      test -n "$vinfo" && \
43.50780 -+	func_warning "\`-version-info' is ignored for programs"
43.50781 -+
43.50782 -+      test -n "$release" && \
43.50783 -+	func_warning "\`-release' is ignored for programs"
43.50784 -+
43.50785 -+      test "$preload" = yes \
43.50786 -+        && test "$dlopen_support" = unknown \
43.50787 -+	&& test "$dlopen_self" = unknown \
43.50788 -+	&& test "$dlopen_self_static" = unknown && \
43.50789 -+	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
43.50790 -+
43.50791 -+      case $host in
43.50792 -+      *-*-rhapsody* | *-*-darwin1.[012])
43.50793 -+	# On Rhapsody replace the C library is the System framework
43.50794 -+	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
43.50795 -+	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
43.50796 -+	;;
43.50797 -+      esac
43.50798 -+
43.50799 -+      case $host in
43.50800 -+      *-*-darwin*)
43.50801 -+	# Don't allow lazy linking, it breaks C++ global constructors
43.50802 -+	# But is supposedly fixed on 10.4 or later (yay!).
43.50803 -+	if test "$tagname" = CXX ; then
43.50804 -+	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
43.50805 -+	    10.[0123])
43.50806 -+	      compile_command="$compile_command ${wl}-bind_at_load"
43.50807 -+	      finalize_command="$finalize_command ${wl}-bind_at_load"
43.50808 -+	    ;;
43.50809 -+	  esac
43.50810 -+	fi
43.50811 -+	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
43.50812 -+	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
43.50813 -+	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
43.50814 -+	;;
43.50815 -+      esac
43.50816 -+
43.50817 -+
43.50818 -+      # move library search paths that coincide with paths to not yet
43.50819 -+      # installed libraries to the beginning of the library search list
43.50820 -+      new_libs=
43.50821 -+      for path in $notinst_path; do
43.50822 -+	case " $new_libs " in
43.50823 -+	*" -L$path/$objdir "*) ;;
43.50824 -+	*)
43.50825 -+	  case " $compile_deplibs " in
43.50826 -+	  *" -L$path/$objdir "*)
43.50827 -+	    new_libs="$new_libs -L$path/$objdir" ;;
43.50828 -+	  esac
43.50829 -+	  ;;
43.50830 -+	esac
43.50831 -+      done
43.50832 -+      for deplib in $compile_deplibs; do
43.50833 -+	case $deplib in
43.50834 -+	-L*)
43.50835 -+	  case " $new_libs " in
43.50836 -+	  *" $deplib "*) ;;
43.50837 -+	  *) new_libs="$new_libs $deplib" ;;
43.50838 -+	  esac
43.50839 -+	  ;;
43.50840 -+	*) new_libs="$new_libs $deplib" ;;
43.50841 -+	esac
43.50842 -+      done
43.50843 -+      compile_deplibs="$new_libs"
43.50844 -+
43.50845 -+
43.50846 -+      compile_command="$compile_command $compile_deplibs"
43.50847 -+      finalize_command="$finalize_command $finalize_deplibs"
43.50848 -+
43.50849 -+      if test -n "$rpath$xrpath"; then
43.50850 -+	# If the user specified any rpath flags, then add them.
43.50851 -+	for libdir in $rpath $xrpath; do
43.50852 -+	  # This is the magic to use -rpath.
43.50853 -+	  case "$finalize_rpath " in
43.50854 -+	  *" $libdir "*) ;;
43.50855 -+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
43.50856 -+	  esac
43.50857 -+	done
43.50858 -+      fi
43.50859 -+
43.50860 -+      # Now hardcode the library paths
43.50861 -+      rpath=
43.50862 -+      hardcode_libdirs=
43.50863 -+      for libdir in $compile_rpath $finalize_rpath; do
43.50864 -+	if test -n "$hardcode_libdir_flag_spec"; then
43.50865 -+	  if test -n "$hardcode_libdir_separator"; then
43.50866 -+	    if test -z "$hardcode_libdirs"; then
43.50867 -+	      hardcode_libdirs="$libdir"
43.50868 -+	    else
43.50869 -+	      # Just accumulate the unique libdirs.
43.50870 -+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
43.50871 -+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
43.50872 -+		;;
43.50873 -+	      *)
43.50874 -+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
43.50875 -+		;;
43.50876 -+	      esac
43.50877 -+	    fi
43.50878 -+	  else
43.50879 -+	    eval flag=\"$hardcode_libdir_flag_spec\"
43.50880 -+	    rpath="$rpath $flag"
43.50881 -+	  fi
43.50882 -+	elif test -n "$runpath_var"; then
43.50883 -+	  case "$perm_rpath " in
43.50884 -+	  *" $libdir "*) ;;
43.50885 -+	  *) perm_rpath="$perm_rpath $libdir" ;;
43.50886 -+	  esac
43.50887 -+	fi
43.50888 -+	case $host in
43.50889 -+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
43.50890 -+	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
43.50891 -+	  case :$dllsearchpath: in
43.50892 -+	  *":$libdir:"*) ;;
43.50893 -+	  *) dllsearchpath="$dllsearchpath:$libdir";;
43.50894 -+	  esac
43.50895 -+	  case :$dllsearchpath: in
43.50896 -+	  *":$testbindir:"*) ;;
43.50897 -+	  *) dllsearchpath="$dllsearchpath:$testbindir";;
43.50898 -+	  esac
43.50899 -+	  ;;
43.50900 -+	esac
43.50901 -+      done
43.50902 -+      # Substitute the hardcoded libdirs into the rpath.
43.50903 -+      if test -n "$hardcode_libdir_separator" &&
43.50904 -+	 test -n "$hardcode_libdirs"; then
43.50905 -+	libdir="$hardcode_libdirs"
43.50906 -+	eval rpath=\" $hardcode_libdir_flag_spec\"
43.50907 -+      fi
43.50908 -+      compile_rpath="$rpath"
43.50909 -+
43.50910 -+      rpath=
43.50911 -+      hardcode_libdirs=
43.50912 -+      for libdir in $finalize_rpath; do
43.50913 -+	if test -n "$hardcode_libdir_flag_spec"; then
43.50914 -+	  if test -n "$hardcode_libdir_separator"; then
43.50915 -+	    if test -z "$hardcode_libdirs"; then
43.50916 -+	      hardcode_libdirs="$libdir"
43.50917 -+	    else
43.50918 -+	      # Just accumulate the unique libdirs.
43.50919 -+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
43.50920 -+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
43.50921 -+		;;
43.50922 -+	      *)
43.50923 -+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
43.50924 -+		;;
43.50925 -+	      esac
43.50926 -+	    fi
43.50927 -+	  else
43.50928 -+	    eval flag=\"$hardcode_libdir_flag_spec\"
43.50929 -+	    rpath="$rpath $flag"
43.50930 -+	  fi
43.50931 -+	elif test -n "$runpath_var"; then
43.50932 -+	  case "$finalize_perm_rpath " in
43.50933 -+	  *" $libdir "*) ;;
43.50934 -+	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
43.50935 -+	  esac
43.50936 -+	fi
43.50937 -+      done
43.50938 -+      # Substitute the hardcoded libdirs into the rpath.
43.50939 -+      if test -n "$hardcode_libdir_separator" &&
43.50940 -+	 test -n "$hardcode_libdirs"; then
43.50941 -+	libdir="$hardcode_libdirs"
43.50942 -+	eval rpath=\" $hardcode_libdir_flag_spec\"
43.50943 -+      fi
43.50944 -+      finalize_rpath="$rpath"
43.50945 -+
43.50946 -+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
43.50947 -+	# Transform all the library objects into standard objects.
43.50948 -+	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
43.50949 -+	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
43.50950 -+      fi
43.50951 -+
43.50952 -+      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
43.50953 -+
43.50954 -+      # template prelinking step
43.50955 -+      if test -n "$prelink_cmds"; then
43.50956 -+	func_execute_cmds "$prelink_cmds" 'exit $?'
43.50957 -+      fi
43.50958 -+
43.50959 -+      wrappers_required=yes
43.50960 -+      case $host in
43.50961 -+      *cygwin* | *mingw* )
43.50962 -+        if test "$build_libtool_libs" != yes; then
43.50963 -+          wrappers_required=no
43.50964 -+        fi
43.50965 -+        ;;
43.50966 -+      *)
43.50967 -+        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
43.50968 -+          wrappers_required=no
43.50969 -+        fi
43.50970 -+        ;;
43.50971 -+      esac
43.50972 -+      if test "$wrappers_required" = no; then
43.50973 -+	# Replace the output file specification.
43.50974 -+	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
43.50975 -+	link_command="$compile_command$compile_rpath"
43.50976 -+
43.50977 -+	# We have no uninstalled library dependencies, so finalize right now.
43.50978 -+	exit_status=0
43.50979 -+	func_show_eval "$link_command" 'exit_status=$?'
43.50980 -+
43.50981 -+	# Delete the generated files.
43.50982 -+	if test -f "$output_objdir/${outputname}S.${objext}"; then
43.50983 -+	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
43.50984 -+	fi
43.50985 -+
43.50986 -+	exit $exit_status
43.50987 -+      fi
43.50988 -+
43.50989 -+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
43.50990 -+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
43.50991 -+      fi
43.50992 -+      if test -n "$finalize_shlibpath"; then
43.50993 -+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
43.50994 -+      fi
43.50995 -+
43.50996 -+      compile_var=
43.50997 -+      finalize_var=
43.50998 -+      if test -n "$runpath_var"; then
43.50999 -+	if test -n "$perm_rpath"; then
43.51000 -+	  # We should set the runpath_var.
43.51001 -+	  rpath=
43.51002 -+	  for dir in $perm_rpath; do
43.51003 -+	    rpath="$rpath$dir:"
43.51004 -+	  done
43.51005 -+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
43.51006 -+	fi
43.51007 -+	if test -n "$finalize_perm_rpath"; then
43.51008 -+	  # We should set the runpath_var.
43.51009 -+	  rpath=
43.51010 -+	  for dir in $finalize_perm_rpath; do
43.51011 -+	    rpath="$rpath$dir:"
43.51012 -+	  done
43.51013 -+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
43.51014 -+	fi
43.51015 -+      fi
43.51016 -+
43.51017 -+      if test "$no_install" = yes; then
43.51018 -+	# We don't need to create a wrapper script.
43.51019 -+	link_command="$compile_var$compile_command$compile_rpath"
43.51020 -+	# Replace the output file specification.
43.51021 -+	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
43.51022 -+	# Delete the old output file.
43.51023 -+	$opt_dry_run || $RM $output
43.51024 -+	# Link the executable and exit
43.51025 -+	func_show_eval "$link_command" 'exit $?'
43.51026 -+	exit $EXIT_SUCCESS
43.51027 -+      fi
43.51028 -+
43.51029 -+      if test "$hardcode_action" = relink; then
43.51030 -+	# Fast installation is not supported
43.51031 -+	link_command="$compile_var$compile_command$compile_rpath"
43.51032 -+	relink_command="$finalize_var$finalize_command$finalize_rpath"
43.51033 -+
43.51034 -+	func_warning "this platform does not like uninstalled shared libraries"
43.51035 -+	func_warning "\`$output' will be relinked during installation"
43.51036 -+      else
43.51037 -+	if test "$fast_install" != no; then
43.51038 -+	  link_command="$finalize_var$compile_command$finalize_rpath"
43.51039 -+	  if test "$fast_install" = yes; then
43.51040 -+	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
43.51041 -+	  else
43.51042 -+	    # fast_install is set to needless
43.51043 -+	    relink_command=
43.51044 -+	  fi
43.51045 -+	else
43.51046 -+	  link_command="$compile_var$compile_command$compile_rpath"
43.51047 -+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
43.51048 -+	fi
43.51049 -+      fi
43.51050 -+
43.51051 -+      # Replace the output file specification.
43.51052 -+      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
43.51053 -+
43.51054 -+      # Delete the old output files.
43.51055 -+      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
43.51056 -+
43.51057 -+      func_show_eval "$link_command" 'exit $?'
43.51058 -+
43.51059 -+      # Now create the wrapper script.
43.51060 -+      func_echo "creating $output"
43.51061 -+
43.51062 -+      # Quote the relink command for shipping.
43.51063 -+      if test -n "$relink_command"; then
43.51064 -+	# Preserve any variables that may affect compiler behavior
43.51065 -+	for var in $variables_saved_for_relink; do
43.51066 -+	  if eval test -z \"\${$var+set}\"; then
43.51067 -+	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
43.51068 -+	  elif eval var_value=\$$var; test -z "$var_value"; then
43.51069 -+	    relink_command="$var=; export $var; $relink_command"
43.51070 -+	  else
43.51071 -+	    func_quote_for_eval "$var_value"
43.51072 -+	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
43.51073 -+	  fi
43.51074 -+	done
43.51075 -+	relink_command="(cd `pwd`; $relink_command)"
43.51076 -+	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
43.51077 -+      fi
43.51078 -+
43.51079 -+      # Quote $ECHO for shipping.
43.51080 -+      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
43.51081 -+	case $progpath in
43.51082 -+	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
43.51083 -+	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
43.51084 -+	esac
43.51085 -+	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
43.51086 -+      else
43.51087 -+	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
43.51088 -+      fi
43.51089 -+
43.51090 -+      # Only actually do things if not in dry run mode.
43.51091 -+      $opt_dry_run || {
43.51092 -+	# win32 will think the script is a binary if it has
43.51093 -+	# a .exe suffix, so we strip it off here.
43.51094 -+	case $output in
43.51095 -+	  *.exe) func_stripname '' '.exe' "$output"
43.51096 -+	         output=$func_stripname_result ;;
43.51097 -+	esac
43.51098 -+	# test for cygwin because mv fails w/o .exe extensions
43.51099 -+	case $host in
43.51100 -+	  *cygwin*)
43.51101 -+	    exeext=.exe
43.51102 -+	    func_stripname '' '.exe' "$outputname"
43.51103 -+	    outputname=$func_stripname_result ;;
43.51104 -+	  *) exeext= ;;
43.51105 -+	esac
43.51106 -+	case $host in
43.51107 -+	  *cygwin* | *mingw* )
43.51108 -+	    output_name=`basename $output`
43.51109 -+	    output_path=`dirname $output`
43.51110 -+	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
43.51111 -+	    cwrapper="$output_path/$output_name.exe"
43.51112 -+	    $RM $cwrappersource $cwrapper
43.51113 -+	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
43.51114 -+
43.51115 -+	    cat > $cwrappersource <<EOF
43.51116 -+
43.51117 -+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
43.51118 -+   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
43.51119 -+
43.51120 -+   The $output program cannot be directly executed until all the libtool
43.51121 -+   libraries that it depends on are installed.
43.51122 -+
43.51123 -+   This wrapper executable should never be moved out of the build directory.
43.51124 -+   If it is, it will not operate correctly.
43.51125 -+
43.51126 -+   Currently, it simply execs the wrapper *script* "/bin/sh $output",
43.51127 -+   but could eventually absorb all of the scripts functionality and
43.51128 -+   exec $objdir/$outputname directly.
43.51129 -+*/
43.51130 -+EOF
43.51131 -+	    cat >> $cwrappersource<<"EOF"
43.51132 -+#include <stdio.h>
43.51133 -+#include <stdlib.h>
43.51134 -+#include <unistd.h>
43.51135 -+#include <malloc.h>
43.51136 -+#include <stdarg.h>
43.51137 -+#include <assert.h>
43.51138 -+#include <string.h>
43.51139 -+#include <ctype.h>
43.51140 -+#include <sys/stat.h>
43.51141 -+
43.51142 -+#if defined(PATH_MAX)
43.51143 -+# define LT_PATHMAX PATH_MAX
43.51144 -+#elif defined(MAXPATHLEN)
43.51145 -+# define LT_PATHMAX MAXPATHLEN
43.51146 -+#else
43.51147 -+# define LT_PATHMAX 1024
43.51148 -+#endif
43.51149 -+
43.51150 -+#ifndef DIR_SEPARATOR
43.51151 -+# define DIR_SEPARATOR '/'
43.51152 -+# define PATH_SEPARATOR ':'
43.51153 -+#endif
43.51154 -+
43.51155 -+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
43.51156 -+  defined (__OS2__)
43.51157 -+# define HAVE_DOS_BASED_FILE_SYSTEM
43.51158 -+# ifndef DIR_SEPARATOR_2
43.51159 -+#  define DIR_SEPARATOR_2 '\\'
43.51160 -+# endif
43.51161 -+# ifndef PATH_SEPARATOR_2
43.51162 -+#  define PATH_SEPARATOR_2 ';'
43.51163 -+# endif
43.51164 -+#endif
43.51165 -+
43.51166 -+#ifndef DIR_SEPARATOR_2
43.51167 -+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
43.51168 -+#else /* DIR_SEPARATOR_2 */
43.51169 -+# define IS_DIR_SEPARATOR(ch) \
43.51170 -+	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
43.51171 -+#endif /* DIR_SEPARATOR_2 */
43.51172 -+
43.51173 -+#ifndef PATH_SEPARATOR_2
43.51174 -+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
43.51175 -+#else /* PATH_SEPARATOR_2 */
43.51176 -+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
43.51177 -+#endif /* PATH_SEPARATOR_2 */
43.51178 -+
43.51179 -+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
43.51180 -+#define XFREE(stale) do { \
43.51181 -+  if (stale) { free ((void *) stale); stale = 0; } \
43.51182 -+} while (0)
43.51183 -+
43.51184 -+/* -DDEBUG is fairly common in CFLAGS.  */
43.51185 -+#undef DEBUG
43.51186 -+#if defined DEBUGWRAPPER
43.51187 -+# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
43.51188 -+#else
43.51189 -+# define DEBUG(format, ...)
43.51190 -+#endif
43.51191 -+
43.51192 -+const char *program_name = NULL;
43.51193 -+
43.51194 -+void * xmalloc (size_t num);
43.51195 -+char * xstrdup (const char *string);
43.51196 -+const char * base_name (const char *name);
43.51197 -+char * find_executable(const char *wrapper);
43.51198 -+int    check_executable(const char *path);
43.51199 -+char * strendzap(char *str, const char *pat);
43.51200 -+void lt_fatal (const char *message, ...);
43.51201 -+
43.51202 -+int
43.51203 -+main (int argc, char *argv[])
43.51204 -+{
43.51205 -+  char **newargz;
43.51206 -+  int i;
43.51207 -+
43.51208 -+  program_name = (char *) xstrdup (base_name (argv[0]));
43.51209 -+  DEBUG("(main) argv[0]      : %s\n",argv[0]);
43.51210 -+  DEBUG("(main) program_name : %s\n",program_name);
43.51211 -+  newargz = XMALLOC(char *, argc+2);
43.51212 -+EOF
43.51213 -+
43.51214 -+	    cat >> $cwrappersource <<EOF
43.51215 -+  newargz[0] = (char *) xstrdup("$SHELL");
43.51216 -+EOF
43.51217 -+
43.51218 -+	    cat >> $cwrappersource <<"EOF"
43.51219 -+  newargz[1] = find_executable(argv[0]);
43.51220 -+  if (newargz[1] == NULL)
43.51221 -+    lt_fatal("Couldn't find %s", argv[0]);
43.51222 -+  DEBUG("(main) found exe at : %s\n",newargz[1]);
43.51223 -+  /* we know the script has the same name, without the .exe */
43.51224 -+  /* so make sure newargz[1] doesn't end in .exe */
43.51225 -+  strendzap(newargz[1],".exe");
43.51226 -+  for (i = 1; i < argc; i++)
43.51227 -+    newargz[i+1] = xstrdup(argv[i]);
43.51228 -+  newargz[argc+1] = NULL;
43.51229 -+
43.51230 -+  for (i=0; i<argc+1; i++)
43.51231 -+  {
43.51232 -+    DEBUG("(main) newargz[%d]   : %s\n",i,newargz[i]);
43.51233 -+    ;
43.51234 -+  }
43.51235 -+
43.51236 -+EOF
43.51237 -+
43.51238 -+	    case $host_os in
43.51239 -+	      mingw*)
43.51240 -+		cat >> $cwrappersource <<EOF
43.51241 -+  execv("$SHELL",(char const **)newargz);
43.51242 -+EOF
43.51243 -+	      ;;
43.51244 -+	      *)
43.51245 -+		cat >> $cwrappersource <<EOF
43.51246 -+  execv("$SHELL",newargz);
43.51247 -+EOF
43.51248 -+	      ;;
43.51249 -+	    esac
43.51250 -+
43.51251 -+	    cat >> $cwrappersource <<"EOF"
43.51252 -+  return 127;
43.51253 -+}
43.51254 -+
43.51255 -+void *
43.51256 -+xmalloc (size_t num)
43.51257 -+{
43.51258 -+  void * p = (void *) malloc (num);
43.51259 -+  if (!p)
43.51260 -+    lt_fatal ("Memory exhausted");
43.51261 -+
43.51262 -+  return p;
43.51263 -+}
43.51264 -+
43.51265 -+char *
43.51266 -+xstrdup (const char *string)
43.51267 -+{
43.51268 -+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
43.51269 -+;
43.51270 -+}
43.51271 -+
43.51272 -+const char *
43.51273 -+base_name (const char *name)
43.51274 -+{
43.51275 -+  const char *base;
43.51276 -+
43.51277 -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
43.51278 -+  /* Skip over the disk name in MSDOS pathnames. */
43.51279 -+  if (isalpha ((unsigned char)name[0]) && name[1] == ':')
43.51280 -+    name += 2;
43.51281 -+#endif
43.51282 -+
43.51283 -+  for (base = name; *name; name++)
43.51284 -+    if (IS_DIR_SEPARATOR (*name))
43.51285 -+      base = name + 1;
43.51286 -+  return base;
43.51287 -+}
43.51288 -+
43.51289 -+int
43.51290 -+check_executable(const char * path)
43.51291 -+{
43.51292 -+  struct stat st;
43.51293 -+
43.51294 -+  DEBUG("(check_executable)  : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
43.51295 -+  if ((!path) || (!*path))
43.51296 -+    return 0;
43.51297 -+
43.51298 -+  if ((stat (path, &st) >= 0) &&
43.51299 -+      (
43.51300 -+	/* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
43.51301 -+#if defined (S_IXOTH)
43.51302 -+       ((st.st_mode & S_IXOTH) == S_IXOTH) ||
43.51303 -+#endif
43.51304 -+#if defined (S_IXGRP)
43.51305 -+       ((st.st_mode & S_IXGRP) == S_IXGRP) ||
43.51306 -+#endif
43.51307 -+       ((st.st_mode & S_IXUSR) == S_IXUSR))
43.51308 -+      )
43.51309 -+    return 1;
43.51310 -+  else
43.51311 -+    return 0;
43.51312 -+}
43.51313 -+
43.51314 -+/* Searches for the full path of the wrapper.  Returns
43.51315 -+   newly allocated full path name if found, NULL otherwise */
43.51316 -+char *
43.51317 -+find_executable (const char* wrapper)
43.51318 -+{
43.51319 -+  int has_slash = 0;
43.51320 -+  const char* p;
43.51321 -+  const char* p_next;
43.51322 -+  /* static buffer for getcwd */
43.51323 -+  char tmp[LT_PATHMAX + 1];
43.51324 -+  int tmp_len;
43.51325 -+  char* concat_name;
43.51326 -+
43.51327 -+  DEBUG("(find_executable)  : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
43.51328 -+
43.51329 -+  if ((wrapper == NULL) || (*wrapper == '\0'))
43.51330 -+    return NULL;
43.51331 -+
43.51332 -+  /* Absolute path? */
43.51333 -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
43.51334 -+  if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
43.51335 -+  {
43.51336 -+    concat_name = xstrdup (wrapper);
43.51337 -+    if (check_executable(concat_name))
43.51338 -+      return concat_name;
43.51339 -+    XFREE(concat_name);
43.51340 -+  }
43.51341 -+  else
43.51342 -+  {
43.51343 -+#endif
43.51344 -+    if (IS_DIR_SEPARATOR (wrapper[0]))
43.51345 -+    {
43.51346 -+      concat_name = xstrdup (wrapper);
43.51347 -+      if (check_executable(concat_name))
43.51348 -+	return concat_name;
43.51349 -+      XFREE(concat_name);
43.51350 -+    }
43.51351 -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
43.51352 -+  }
43.51353 -+#endif
43.51354 -+
43.51355 -+  for (p = wrapper; *p; p++)
43.51356 -+    if (*p == '/')
43.51357 -+    {
43.51358 -+      has_slash = 1;
43.51359 -+      break;
43.51360 -+    }
43.51361 -+  if (!has_slash)
43.51362 -+  {
43.51363 -+    /* no slashes; search PATH */
43.51364 -+    const char* path = getenv ("PATH");
43.51365 -+    if (path != NULL)
43.51366 -+    {
43.51367 -+      for (p = path; *p; p = p_next)
43.51368 -+      {
43.51369 -+	const char* q;
43.51370 -+	size_t p_len;
43.51371 -+	for (q = p; *q; q++)
43.51372 -+	  if (IS_PATH_SEPARATOR(*q))
43.51373 -+	    break;
43.51374 -+	p_len = q - p;
43.51375 -+	p_next = (*q == '\0' ? q : q + 1);
43.51376 -+	if (p_len == 0)
43.51377 -+	{
43.51378 -+	  /* empty path: current directory */
43.51379 -+	  if (getcwd (tmp, LT_PATHMAX) == NULL)
43.51380 -+	    lt_fatal ("getcwd failed");
43.51381 -+	  tmp_len = strlen(tmp);
43.51382 -+	  concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
43.51383 -+	  memcpy (concat_name, tmp, tmp_len);
43.51384 -+	  concat_name[tmp_len] = '/';
43.51385 -+	  strcpy (concat_name + tmp_len + 1, wrapper);
43.51386 -+	}
43.51387 -+	else
43.51388 -+	{
43.51389 -+	  concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
43.51390 -+	  memcpy (concat_name, p, p_len);
43.51391 -+	  concat_name[p_len] = '/';
43.51392 -+	  strcpy (concat_name + p_len + 1, wrapper);
43.51393 -+	}
43.51394 -+	if (check_executable(concat_name))
43.51395 -+	  return concat_name;
43.51396 -+	XFREE(concat_name);
43.51397 -+      }
43.51398 -+    }
43.51399 -+    /* not found in PATH; assume curdir */
43.51400 -+  }
43.51401 -+  /* Relative path | not found in path: prepend cwd */
43.51402 -+  if (getcwd (tmp, LT_PATHMAX) == NULL)
43.51403 -+    lt_fatal ("getcwd failed");
43.51404 -+  tmp_len = strlen(tmp);
43.51405 -+  concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
43.51406 -+  memcpy (concat_name, tmp, tmp_len);
43.51407 -+  concat_name[tmp_len] = '/';
43.51408 -+  strcpy (concat_name + tmp_len + 1, wrapper);
43.51409 -+
43.51410 -+  if (check_executable(concat_name))
43.51411 -+    return concat_name;
43.51412 -+  XFREE(concat_name);
43.51413 -+  return NULL;
43.51414 -+}
43.51415 -+
43.51416 -+char *
43.51417 -+strendzap(char *str, const char *pat)
43.51418 -+{
43.51419 -+  size_t len, patlen;
43.51420 -+
43.51421 -+  assert(str != NULL);
43.51422 -+  assert(pat != NULL);
43.51423 -+
43.51424 -+  len = strlen(str);
43.51425 -+  patlen = strlen(pat);
43.51426 -+
43.51427 -+  if (patlen <= len)
43.51428 -+  {
43.51429 -+    str += len - patlen;
43.51430 -+    if (strcmp(str, pat) == 0)
43.51431 -+      *str = '\0';
43.51432 -+  }
43.51433 -+  return str;
43.51434 -+}
43.51435 -+
43.51436 -+static void
43.51437 -+lt_error_core (int exit_status, const char * mode,
43.51438 -+	  const char * message, va_list ap)
43.51439 -+{
43.51440 -+  fprintf (stderr, "%s: %s: ", program_name, mode);
43.51441 -+  vfprintf (stderr, message, ap);
43.51442 -+  fprintf (stderr, ".\n");
43.51443 -+
43.51444 -+  if (exit_status >= 0)
43.51445 -+    exit (exit_status);
43.51446 -+}
43.51447 -+
43.51448 -+void
43.51449 -+lt_fatal (const char *message, ...)
43.51450 -+{
43.51451 -+  va_list ap;
43.51452 -+  va_start (ap, message);
43.51453 -+  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
43.51454 -+  va_end (ap);
43.51455 -+}
43.51456 -+EOF
43.51457 -+	  # we should really use a build-platform specific compiler
43.51458 -+	  # here, but OTOH, the wrappers (shell script and this C one)
43.51459 -+	  # are only useful if you want to execute the "real" binary.
43.51460 -+	  # Since the "real" binary is built for $host, then this
43.51461 -+	  # wrapper might as well be built for $host, too.
43.51462 -+	  $opt_dry_run || $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
43.51463 -+	  ;;
43.51464 -+	esac
43.51465 -+	$RM $output
43.51466 -+	trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
43.51467 -+
43.51468 -+	$ECHO > $output "\
43.51469 -+#! $SHELL
43.51470 -+
43.51471 -+# $output - temporary wrapper script for $objdir/$outputname
43.51472 -+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
43.51473 -+#
43.51474 -+# The $output program cannot be directly executed until all the libtool
43.51475 -+# libraries that it depends on are installed.
43.51476 -+#
43.51477 -+# This wrapper script should never be moved out of the build directory.
43.51478 -+# If it is, it will not operate correctly.
43.51479 -+
43.51480 -+# Sed substitution that helps us do robust quoting.  It backslashifies
43.51481 -+# metacharacters that are still active within double-quoted strings.
43.51482 -+Xsed='${SED} -e 1s/^X//'
43.51483 -+sed_quote_subst='$sed_quote_subst'
43.51484 -+
43.51485 -+# Be Bourne compatible
43.51486 -+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
43.51487 -+  emulate sh
43.51488 -+  NULLCMD=:
43.51489 -+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
43.51490 -+  # is contrary to our usage.  Disable this feature.
43.51491 -+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
43.51492 -+  setopt NO_GLOB_SUBST
43.51493 -+else
43.51494 -+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
43.51495 -+fi
43.51496 -+BIN_SH=xpg4; export BIN_SH # for Tru64
43.51497 -+DUALCASE=1; export DUALCASE # for MKS sh
43.51498 -+
43.51499 -+# The HP-UX ksh and POSIX shell print the target directory to stdout
43.51500 -+# if CDPATH is set.
43.51501 -+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
43.51502 -+
43.51503 -+relink_command=\"$relink_command\"
43.51504 -+
43.51505 -+# This environment variable determines our operation mode.
43.51506 -+if test \"\$libtool_install_magic\" = \"$magic\"; then
43.51507 -+  # install mode needs the following variables:
43.51508 -+  generated_by_libtool_version='$macro_version'
43.51509 -+  notinst_deplibs='$notinst_deplibs'
43.51510 -+else
43.51511 -+  # When we are sourced in execute mode, \$file and \$ECHO are already set.
43.51512 -+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
43.51513 -+    ECHO=\"$qecho\"
43.51514 -+    file=\"\$0\"
43.51515 -+    # Make sure echo works.
43.51516 -+    if test \"X\$1\" = X--no-reexec; then
43.51517 -+      # Discard the --no-reexec flag, and continue.
43.51518 -+      shift
43.51519 -+    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
43.51520 -+      # Yippee, \$ECHO works!
43.51521 -+      :
43.51522 -+    else
43.51523 -+      # Restart under the correct shell, and then maybe \$ECHO will work.
43.51524 -+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
43.51525 -+    fi
43.51526 -+  fi\
43.51527 -+"
43.51528 -+	$ECHO >> $output "\
43.51529 -+
43.51530 -+  # Find the directory that this script lives in.
43.51531 -+  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
43.51532 -+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
43.51533 -+
43.51534 -+  # Follow symbolic links until we get to the real thisdir.
43.51535 -+  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
43.51536 -+  while test -n \"\$file\"; do
43.51537 -+    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
43.51538 -+
43.51539 -+    # If there was a directory component, then change thisdir.
43.51540 -+    if test \"x\$destdir\" != \"x\$file\"; then
43.51541 -+      case \"\$destdir\" in
43.51542 -+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
43.51543 -+      *) thisdir=\"\$thisdir/\$destdir\" ;;
43.51544 -+      esac
43.51545 -+    fi
43.51546 -+
43.51547 -+    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
43.51548 -+    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
43.51549 -+  done
43.51550 -+
43.51551 -+  # Try to get the absolute directory name.
43.51552 -+  absdir=\`cd \"\$thisdir\" && pwd\`
43.51553 -+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
43.51554 -+"
43.51555 -+
43.51556 -+	if test "$fast_install" = yes; then
43.51557 -+	  $ECHO >> $output "\
43.51558 -+  program=lt-'$outputname'$exeext
43.51559 -+  progdir=\"\$thisdir/$objdir\"
43.51560 -+
43.51561 -+  if test ! -f \"\$progdir/\$program\" ||
43.51562 -+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
43.51563 -+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
43.51564 -+
43.51565 -+    file=\"\$\$-\$program\"
43.51566 -+
43.51567 -+    if test ! -d \"\$progdir\"; then
43.51568 -+      $MKDIR \"\$progdir\"
43.51569 -+    else
43.51570 -+      $RM \"\$progdir/\$file\"
43.51571 -+    fi"
43.51572 -+
43.51573 -+	  $ECHO >> $output "\
43.51574 -+
43.51575 -+    # relink executable if necessary
43.51576 -+    if test -n \"\$relink_command\"; then
43.51577 -+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
43.51578 -+      else
43.51579 -+	$ECHO \"\$relink_command_output\" >&2
43.51580 -+	$RM \"\$progdir/\$file\"
43.51581 -+	exit 1
43.51582 -+      fi
43.51583 -+    fi
43.51584 -+
43.51585 -+    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
43.51586 -+    { $RM \"\$progdir/\$program\";
43.51587 -+      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
43.51588 -+    $RM \"\$progdir/\$file\"
43.51589 -+  fi"
43.51590 -+	else
43.51591 -+	  $ECHO >> $output "\
43.51592 -+  program='$outputname'
43.51593 -+  progdir=\"\$thisdir/$objdir\"
43.51594 -+"
43.51595 -+	fi
43.51596 -+
43.51597 -+	$ECHO >> $output "\
43.51598 -+
43.51599 -+  if test -f \"\$progdir/\$program\"; then"
43.51600 -+
43.51601 -+	# Export our shlibpath_var if we have one.
43.51602 -+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
43.51603 -+	  $ECHO >> $output "\
43.51604 -+    # Add our own library path to $shlibpath_var
43.51605 -+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
43.51606 -+
43.51607 -+    # Some systems cannot cope with colon-terminated $shlibpath_var
43.51608 -+    # The second colon is a workaround for a bug in BeOS R4 sed
43.51609 -+    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
43.51610 -+
43.51611 -+    export $shlibpath_var
43.51612 -+"
43.51613 -+	fi
43.51614 -+
43.51615 -+	# fixup the dll searchpath if we need to.
43.51616 -+	if test -n "$dllsearchpath"; then
43.51617 -+	  $ECHO >> $output "\
43.51618 -+    # Add the dll search path components to the executable PATH
43.51619 -+    PATH=$dllsearchpath:\$PATH
43.51620 -+"
43.51621 -+	fi
43.51622 -+
43.51623 -+	$ECHO >> $output "\
43.51624 -+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
43.51625 -+      # Run the actual program with our arguments.
43.51626 -+"
43.51627 -+	case $host in
43.51628 -+	# Backslashes separate directories on plain windows
43.51629 -+	*-*-mingw | *-*-os2*)
43.51630 -+	  $ECHO >> $output "\
43.51631 -+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
43.51632 -+"
43.51633 -+	  ;;
43.51634 -+
43.51635 -+	*)
43.51636 -+	  $ECHO >> $output "\
43.51637 -+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
43.51638 -+"
43.51639 -+	  ;;
43.51640 -+	esac
43.51641 -+	$ECHO >> $output "\
43.51642 -+      \$ECHO \"\$0: cannot exec \$program \$*\"
43.51643 -+      exit 1
43.51644 -+    fi
43.51645 -+  else
43.51646 -+    # The program doesn't exist.
43.51647 -+    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
43.51648 -+    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
43.51649 -+    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
43.51650 -+    exit 1
43.51651 -+  fi
43.51652 -+fi\
43.51653 -+"
43.51654 -+	chmod +x $output
43.51655 -+      }
43.51656 -+      exit $EXIT_SUCCESS
43.51657 -+      ;;
43.51658 -+    esac
43.51659 -+
43.51660 -+    # See if we need to build an old-fashioned archive.
43.51661 -+    for oldlib in $oldlibs; do
43.51662 -+
43.51663 -+      if test "$build_libtool_libs" = convenience; then
43.51664 -+	oldobjs="$libobjs_save $symfileobj"
43.51665 -+	addlibs="$convenience"
43.51666 -+	build_libtool_libs=no
43.51667 -+      else
43.51668 -+	if test "$build_libtool_libs" = module; then
43.51669 -+	  oldobjs="$libobjs_save"
43.51670 -+	  build_libtool_libs=no
43.51671 -+	else
43.51672 -+	  oldobjs="$old_deplibs $non_pic_objects"
43.51673 -+	  if test "$preload" = yes && test -f "$symfileobj"; then
43.51674 -+	    oldobjs="$oldobjs $symfileobj"
43.51675 -+	  fi
43.51676 -+	fi
43.51677 -+	addlibs="$old_convenience"
43.51678 -+      fi
43.51679 -+
43.51680 -+      if test -n "$addlibs"; then
43.51681 -+	gentop="$output_objdir/${outputname}x"
43.51682 -+	generated="$generated $gentop"
43.51683 -+
43.51684 -+	func_extract_archives $gentop $addlibs
43.51685 -+	oldobjs="$oldobjs $func_extract_archives_result"
43.51686 -+      fi
43.51687 -+
43.51688 -+      # Do each command in the archive commands.
43.51689 -+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
43.51690 -+	cmds=$old_archive_from_new_cmds
43.51691 -+      else
43.51692 -+
43.51693 -+	# Add any objects from preloaded convenience libraries
43.51694 -+	if test -n "$dlprefiles"; then
43.51695 -+	  gentop="$output_objdir/${outputname}x"
43.51696 -+	  generated="$generated $gentop"
43.51697 -+
43.51698 -+	  func_extract_archives $gentop $dlprefiles
43.51699 -+	  oldobjs="$oldobjs $func_extract_archives_result"
43.51700 -+	fi
43.51701 -+
43.51702 -+	# POSIX demands no paths to be encoded in archives.  We have
43.51703 -+	# to avoid creating archives with duplicate basenames if we
43.51704 -+	# might have to extract them afterwards, e.g., when creating a
43.51705 -+	# static archive out of a convenience library, or when linking
43.51706 -+	# the entirety of a libtool archive into another (currently
43.51707 -+	# not supported by libtool).
43.51708 -+	if (for obj in $oldobjs
43.51709 -+	    do
43.51710 -+	      func_basename "$obj"
43.51711 -+	      $ECHO "$func_basename_result"
43.51712 -+	    done | sort | sort -uc >/dev/null 2>&1); then
43.51713 -+	  :
43.51714 -+	else
43.51715 -+	  $ECHO "copying selected object files to avoid basename conflicts..."
43.51716 -+	  gentop="$output_objdir/${outputname}x"
43.51717 -+	  generated="$generated $gentop"
43.51718 -+	  func_mkdir_p "$gentop"
43.51719 -+	  save_oldobjs=$oldobjs
43.51720 -+	  oldobjs=
43.51721 -+	  counter=1
43.51722 -+	  for obj in $save_oldobjs
43.51723 -+	  do
43.51724 -+	    func_basename "$obj"
43.51725 -+	    objbase="$func_basename_result"
43.51726 -+	    case " $oldobjs " in
43.51727 -+	    " ") oldobjs=$obj ;;
43.51728 -+	    *[\ /]"$objbase "*)
43.51729 -+	      while :; do
43.51730 -+		# Make sure we don't pick an alternate name that also
43.51731 -+		# overlaps.
43.51732 -+		newobj=lt$counter-$objbase
43.51733 -+		counter=`expr $counter + 1`
43.51734 -+		case " $oldobjs " in
43.51735 -+		*[\ /]"$newobj "*) ;;
43.51736 -+		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
43.51737 -+		esac
43.51738 -+	      done
43.51739 -+	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
43.51740 -+	      oldobjs="$oldobjs $gentop/$newobj"
43.51741 -+	      ;;
43.51742 -+	    *) oldobjs="$oldobjs $obj" ;;
43.51743 -+	    esac
43.51744 -+	  done
43.51745 -+	fi
43.51746 -+	eval cmds=\"$old_archive_cmds\"
43.51747 -+
43.51748 -+	if len=`expr "X$cmds" : ".*" 2>/dev/null` &&
43.51749 -+	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
43.51750 -+	  cmds=$old_archive_cmds
43.51751 -+	else
43.51752 -+	  # the command line is too long to link in one step, link in parts
43.51753 -+	  func_echo "using piecewise archive linking..."
43.51754 -+	  save_RANLIB=$RANLIB
43.51755 -+	  RANLIB=:
43.51756 -+	  objlist=
43.51757 -+	  concat_cmds=
43.51758 -+	  save_oldobjs=$oldobjs
43.51759 -+	  # Is there a better way of finding the last object in the list?
43.51760 -+	  for obj in $save_oldobjs
43.51761 -+	  do
43.51762 -+	    last_oldobj=$obj
43.51763 -+	  done
43.51764 -+	  for obj in $save_oldobjs
43.51765 -+	  do
43.51766 -+	    oldobjs="$objlist $obj"
43.51767 -+	    objlist="$objlist $obj"
43.51768 -+	    eval test_cmds=\"$old_archive_cmds\"
43.51769 -+	    if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
43.51770 -+	       test "$len" -le "$max_cmd_len"; then
43.51771 -+	      :
43.51772 -+	    else
43.51773 -+	      # the above command should be used before it gets too long
43.51774 -+	      oldobjs=$objlist
43.51775 -+	      if test "$obj" = "$last_oldobj" ; then
43.51776 -+		RANLIB=$save_RANLIB
43.51777 -+	      fi
43.51778 -+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
43.51779 -+	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
43.51780 -+	      objlist=
43.51781 -+	    fi
43.51782 -+	  done
43.51783 -+	  RANLIB=$save_RANLIB
43.51784 -+	  oldobjs=$objlist
43.51785 -+	  if test "X$oldobjs" = "X" ; then
43.51786 -+	    eval cmds=\"\$concat_cmds\"
43.51787 -+	  else
43.51788 -+	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
43.51789 -+	  fi
43.51790 -+	fi
43.51791 -+      fi
43.51792 -+      func_execute_cmds "$cmds" 'exit $?'
43.51793 -+    done
43.51794 -+
43.51795 -+    test -n "$generated" && \
43.51796 -+      func_show_eval "${RM}r$generated"
43.51797 -+
43.51798 -+    # Now create the libtool archive.
43.51799 -+    case $output in
43.51800 -+    *.la)
43.51801 -+      old_library=
43.51802 -+      test "$build_old_libs" = yes && old_library="$libname.$libext"
43.51803 -+      func_echo "creating $output"
43.51804 -+
43.51805 -+      # Preserve any variables that may affect compiler behavior
43.51806 -+      for var in $variables_saved_for_relink; do
43.51807 -+	if eval test -z \"\${$var+set}\"; then
43.51808 -+	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
43.51809 -+	elif eval var_value=\$$var; test -z "$var_value"; then
43.51810 -+	  relink_command="$var=; export $var; $relink_command"
43.51811 -+	else
43.51812 -+	  func_quote_for_eval "$var_value"
43.51813 -+	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
43.51814 -+	fi
43.51815 -+      done
43.51816 -+      # Quote the link command for shipping.
43.51817 -+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
43.51818 -+      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
43.51819 -+      if test "$hardcode_automatic" = yes ; then
43.51820 -+	relink_command=
43.51821 -+      fi
43.51822 -+
43.51823 -+      # Only create the output if not a dry run.
43.51824 -+      $opt_dry_run || {
43.51825 -+	for installed in no yes; do
43.51826 -+	  if test "$installed" = yes; then
43.51827 -+	    if test -z "$install_libdir"; then
43.51828 -+	      break
43.51829 -+	    fi
43.51830 -+	    output="$output_objdir/$outputname"i
43.51831 -+	    # Replace all uninstalled libtool libraries with the installed ones
43.51832 -+	    newdependency_libs=
43.51833 -+	    for deplib in $dependency_libs; do
43.51834 -+	      case $deplib in
43.51835 -+	      *.la)
43.51836 -+		func_basename "$deplib"
43.51837 -+		name="$func_basename_result"
43.51838 -+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
43.51839 -+		test -z "$libdir" && \
43.51840 -+		  func_fatal_error "\`$deplib' is not a valid libtool archive"
43.51841 -+		newdependency_libs="$newdependency_libs $libdir/$name"
43.51842 -+		;;
43.51843 -+	      *) newdependency_libs="$newdependency_libs $deplib" ;;
43.51844 -+	      esac
43.51845 -+	    done
43.51846 -+	    dependency_libs="$newdependency_libs"
43.51847 -+	    newdlfiles=
43.51848 -+
43.51849 -+	    for lib in $dlfiles; do
43.51850 -+	      case $lib in
43.51851 -+	      *.la)
43.51852 -+	        func_basename "$lib"
43.51853 -+		name="$func_basename_result"
43.51854 -+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
43.51855 -+		test -z "$libdir" && \
43.51856 -+		  func_fatal_error "\`$lib' is not a valid libtool archive"
43.51857 -+		newdlfiles="$newdlfiles $libdir/$name"
43.51858 -+		;;
43.51859 -+	      *) newdlfiles="$newdlfiles $lib" ;;
43.51860 -+	      esac
43.51861 -+	    done
43.51862 -+	    dlfiles="$newdlfiles"
43.51863 -+	    newdlprefiles=
43.51864 -+	    for lib in $dlprefiles; do
43.51865 -+	      case $lib in
43.51866 -+	      *.la)
43.51867 -+		# Only pass preopened files to the pseudo-archive (for
43.51868 -+		# eventual linking with the app. that links it) if we
43.51869 -+		# didn't already link the preopened objects directly into
43.51870 -+		# the library:
43.51871 -+		func_basename "$lib"
43.51872 -+		name="$func_basename_result"
43.51873 -+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
43.51874 -+		test -z "$libdir" && \
43.51875 -+		  func_fatal_error "\`$lib' is not a valid libtool archive"
43.51876 -+		newdlprefiles="$newdlprefiles $libdir/$name"
43.51877 -+		;;
43.51878 -+	      esac
43.51879 -+	    done
43.51880 -+	    dlprefiles="$newdlprefiles"
43.51881 -+	  else
43.51882 -+	    newdlfiles=
43.51883 -+	    for lib in $dlfiles; do
43.51884 -+	      case $lib in
43.51885 -+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
43.51886 -+		*) abs=`pwd`"/$lib" ;;
43.51887 -+	      esac
43.51888 -+	      newdlfiles="$newdlfiles $abs"
43.51889 -+	    done
43.51890 -+	    dlfiles="$newdlfiles"
43.51891 -+	    newdlprefiles=
43.51892 -+	    for lib in $dlprefiles; do
43.51893 -+	      case $lib in
43.51894 -+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
43.51895 -+		*) abs=`pwd`"/$lib" ;;
43.51896 -+	      esac
43.51897 -+	      newdlprefiles="$newdlprefiles $abs"
43.51898 -+	    done
43.51899 -+	    dlprefiles="$newdlprefiles"
43.51900 -+	  fi
43.51901 -+	  $RM $output
43.51902 -+	  # place dlname in correct position for cygwin
43.51903 -+	  tdlname=$dlname
43.51904 -+	  case $host,$output,$installed,$module,$dlname in
43.51905 -+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
43.51906 -+	  esac
43.51907 -+	  $ECHO > $output "\
43.51908 -+# $outputname - a libtool library file
43.51909 -+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
43.51910 -+#
43.51911 -+# Please DO NOT delete this file!
43.51912 -+# It is necessary for linking the library.
43.51913 -+
43.51914 -+# The name that we can dlopen(3).
43.51915 -+dlname='$tdlname'
43.51916 -+
43.51917 -+# Names of this library.
43.51918 -+library_names='$library_names'
43.51919 -+
43.51920 -+# The name of the static archive.
43.51921 -+old_library='$old_library'
43.51922 -+
43.51923 -+# Linker flags that can not go in dependency_libs.
43.51924 -+inherited_linker_flags='$new_inherited_linker_flags'
43.51925 -+
43.51926 -+# Libraries that this one depends upon.
43.51927 -+dependency_libs='$dependency_libs'
43.51928 -+
43.51929 -+# Names of additional weak libraries provided by this library
43.51930 -+weak_library_names='$weak_libs'
43.51931 -+
43.51932 -+# Version information for $libname.
43.51933 -+current=$current
43.51934 -+age=$age
43.51935 -+revision=$revision
43.51936 -+
43.51937 -+# Is this an already installed library?
43.51938 -+installed=$installed
43.51939 -+
43.51940 -+# Should we warn about portability when linking against -modules?
43.51941 -+shouldnotlink=$module
43.51942 -+
43.51943 -+# Files to dlopen/dlpreopen
43.51944 -+dlopen='$dlfiles'
43.51945 -+dlpreopen='$dlprefiles'
43.51946 -+
43.51947 -+# Directory that this library needs to be installed in:
43.51948 -+libdir='$install_libdir'"
43.51949 -+	  if test "$installed" = no && test "$need_relink" = yes; then
43.51950 -+	    $ECHO >> $output "\
43.51951 -+relink_command=\"$relink_command\""
43.51952 -+	  fi
43.51953 -+	done
43.51954 -+      }
43.51955 -+
43.51956 -+      # Do a symbolic link so that the libtool archive can be found in
43.51957 -+      # LD_LIBRARY_PATH before the program is installed.
43.51958 -+      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
43.51959 -+      ;;
43.51960 -+    esac
43.51961 -+    exit $EXIT_SUCCESS
43.51962 -+}
43.51963 -+
43.51964 -+{ test "$mode" = link || test "$mode" = relink; } &&
43.51965 -+    func_mode_link ${1+"$@"}
43.51966 -+
43.51967 -+
43.51968 -+# func_mode_uninstall arg...
43.51969 -+func_mode_uninstall ()
43.51970 -+{
43.51971 -+    $opt_debug
43.51972 -+    RM="$nonopt"
43.51973 -+    files=
43.51974 -+    rmforce=
43.51975 -+    exit_status=0
43.51976 -+
43.51977 -+    # This variable tells wrapper scripts just to set variables rather
43.51978 -+    # than running their programs.
43.51979 -+    libtool_install_magic="$magic"
43.51980 -+
43.51981 -+    for arg
43.51982 -+    do
43.51983 -+      case $arg in
43.51984 -+      -f) RM="$RM $arg"; rmforce=yes ;;
43.51985 -+      -*) RM="$RM $arg" ;;
43.51986 -+      *) files="$files $arg" ;;
43.51987 -+      esac
43.51988 -+    done
43.51989 -+
43.51990 -+    test -z "$RM" && \
43.51991 -+      func_fatal_help "you must specify an RM program"
43.51992 -+
43.51993 -+    rmdirs=
43.51994 -+
43.51995 -+    origobjdir="$objdir"
43.51996 -+    for file in $files; do
43.51997 -+      func_dirname "$file" "" "."
43.51998 -+      dir="$func_dirname_result"
43.51999 -+      if test "X$dir" = X.; then
43.52000 -+	objdir="$origobjdir"
43.52001 -+      else
43.52002 -+	objdir="$dir/$origobjdir"
43.52003 -+      fi
43.52004 -+      func_basename "$file"
43.52005 -+      name="$func_basename_result"
43.52006 -+      test "$mode" = uninstall && objdir="$dir"
43.52007 -+
43.52008 -+      # Remember objdir for removal later, being careful to avoid duplicates
43.52009 -+      if test "$mode" = clean; then
43.52010 -+	case " $rmdirs " in
43.52011 -+	  *" $objdir "*) ;;
43.52012 -+	  *) rmdirs="$rmdirs $objdir" ;;
43.52013 -+	esac
43.52014 -+      fi
43.52015 -+
43.52016 -+      # Don't error if the file doesn't exist and rm -f was used.
43.52017 -+      if { test -L "$file"; } >/dev/null 2>&1 ||
43.52018 -+	 { test -h "$file"; } >/dev/null 2>&1 ||
43.52019 -+	 test -f "$file"; then
43.52020 -+	:
43.52021 -+      elif test -d "$file"; then
43.52022 -+	exit_status=1
43.52023 -+	continue
43.52024 -+      elif test "$rmforce" = yes; then
43.52025 -+	continue
43.52026 -+      fi
43.52027 -+
43.52028 -+      rmfiles="$file"
43.52029 -+
43.52030 -+      case $name in
43.52031 -+      *.la)
43.52032 -+	# Possibly a libtool archive, so verify it.
43.52033 -+	if func_lalib_p "$file"; then
43.52034 -+	  func_source $dir/$name
43.52035 -+
43.52036 -+	  # Delete the libtool libraries and symlinks.
43.52037 -+	  for n in $library_names; do
43.52038 -+	    rmfiles="$rmfiles $objdir/$n"
43.52039 -+	  done
43.52040 -+	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
43.52041 -+
43.52042 -+	  case "$mode" in
43.52043 -+	  clean)
43.52044 -+	    case "  $library_names " in
43.52045 -+	    # "  " in the beginning catches empty $dlname
43.52046 -+	    *" $dlname "*) ;;
43.52047 -+	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
43.52048 -+	    esac
43.52049 -+	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
43.52050 -+	    ;;
43.52051 -+	  uninstall)
43.52052 -+	    if test -n "$library_names"; then
43.52053 -+	      # Do each command in the postuninstall commands.
43.52054 -+	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
43.52055 -+	    fi
43.52056 -+
43.52057 -+	    if test -n "$old_library"; then
43.52058 -+	      # Do each command in the old_postuninstall commands.
43.52059 -+	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
43.52060 -+	    fi
43.52061 -+	    # FIXME: should reinstall the best remaining shared library.
43.52062 -+	    ;;
43.52063 -+	  esac
43.52064 -+	fi
43.52065 -+	;;
43.52066 -+
43.52067 -+      *.lo)
43.52068 -+	# Possibly a libtool object, so verify it.
43.52069 -+	if func_lalib_p "$file"; then
43.52070 -+
43.52071 -+	  # Read the .lo file
43.52072 -+	  func_source $dir/$name
43.52073 -+
43.52074 -+	  # Add PIC object to the list of files to remove.
43.52075 -+	  if test -n "$pic_object" &&
43.52076 -+	     test "$pic_object" != none; then
43.52077 -+	    rmfiles="$rmfiles $dir/$pic_object"
43.52078 -+	  fi
43.52079 -+
43.52080 -+	  # Add non-PIC object to the list of files to remove.
43.52081 -+	  if test -n "$non_pic_object" &&
43.52082 -+	     test "$non_pic_object" != none; then
43.52083 -+	    rmfiles="$rmfiles $dir/$non_pic_object"
43.52084 -+	  fi
43.52085 -+	fi
43.52086 -+	;;
43.52087 -+
43.52088 -+      *)
43.52089 -+	if test "$mode" = clean ; then
43.52090 -+	  noexename=$name
43.52091 -+	  case $file in
43.52092 -+	  *.exe)
43.52093 -+	    func_stripname '' '.exe' "$file"
43.52094 -+	    file=$func_stripname_result
43.52095 -+	    func_stripname '' '.exe' "$name"
43.52096 -+	    noexename=$func_stripname_result
43.52097 -+	    # $file with .exe has already been added to rmfiles,
43.52098 -+	    # add $file without .exe
43.52099 -+	    rmfiles="$rmfiles $file"
43.52100 -+	    ;;
43.52101 -+	  esac
43.52102 -+	  # Do a test to see if this is a libtool program.
43.52103 -+	  if func_ltwrapper_p "$file"; then
43.52104 -+	    relink_command=
43.52105 -+	    func_source $dir/$noexename
43.52106 -+
43.52107 -+	    # note $name still contains .exe if it was in $file originally
43.52108 -+	    # as does the version of $file that was added into $rmfiles
43.52109 -+	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
43.52110 -+	    if test "$fast_install" = yes && test -n "$relink_command"; then
43.52111 -+	      rmfiles="$rmfiles $objdir/lt-$name"
43.52112 -+	    fi
43.52113 -+	    if test "X$noexename" != "X$name" ; then
43.52114 -+	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
43.52115 -+	    fi
43.52116 -+	  fi
43.52117 -+	fi
43.52118 -+	;;
43.52119 -+      esac
43.52120 -+      func_show_eval "$RM $rmfiles" 'exit_status=1'
43.52121 -+    done
43.52122 -+    objdir="$origobjdir"
43.52123 -+
43.52124 -+    # Try to remove the ${objdir}s in the directories where we deleted files
43.52125 -+    for dir in $rmdirs; do
43.52126 -+      if test -d "$dir"; then
43.52127 -+	func_show_eval "rmdir $dir >/dev/null 2>&1"
43.52128 -+      fi
43.52129 -+    done
43.52130 -+
43.52131 -+    exit $exit_status
43.52132 -+}
43.52133 -+
43.52134 -+{ test "$mode" = uninstall || test "$mode" = clean; } &&
43.52135 -+    func_mode_uninstall ${1+"$@"}
43.52136 -+
43.52137 -+test -z "$mode" && {
43.52138 -+  help="$generic_help"
43.52139 -+  func_fatal_help "you must specify a MODE"
43.52140 -+}
43.52141 -+
43.52142 -+test -z "$exec_cmd" && \
43.52143 -+  func_fatal_help "invalid operation mode \`$mode'"
43.52144 -+
43.52145 -+if test -n "$exec_cmd"; then
43.52146 -+  eval exec "$exec_cmd"
43.52147 -+  exit $EXIT_FAILURE
43.52148 -+fi
43.52149 -+
43.52150 -+exit $exit_status
43.52151 -+
43.52152 -+
43.52153 -+# The TAGs below are defined such that we never get into a situation
43.52154 -+# in which we disable both kinds of libraries.  Given conflicting
43.52155 -+# choices, we go for a static library, that is the most portable,
43.52156 -+# since we can't tell whether shared libraries were disabled because
43.52157 -+# the user asked for that or because the platform doesn't support
43.52158 -+# them.  This is particularly important on AIX, because we don't
43.52159 -+# support having both static and shared libraries enabled at the same
43.52160 -+# time on that platform, so we default to a shared-only configuration.
43.52161 -+# If a disable-shared tag is given, we'll fallback to a static-only
43.52162 -+# configuration.  But we'll never go from static-only to shared-only.
43.52163 -+
43.52164 -+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
43.52165 -+build_libtool_libs=no
43.52166 -+build_old_libs=yes
43.52167 -+# ### END LIBTOOL TAG CONFIG: disable-shared
43.52168 -+
43.52169 -+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
43.52170 -+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
43.52171 -+# ### END LIBTOOL TAG CONFIG: disable-static
43.52172 -+
43.52173 -+# Local Variables:
43.52174 -+# mode:shell-script
43.52175 -+# sh-indentation:2
43.52176 -+# End:
43.52177 -+# vi:sw=2
43.52178 ---- a/bfd/Makefile.in
43.52179 -+++ b/bfd/Makefile.in
43.52180 -@@ -312,6 +312,7 @@ ALL_MACHINES = \
43.52181 - 	cpu-arc.lo \
43.52182 - 	cpu-arm.lo \
43.52183 - 	cpu-avr.lo \
43.52184 -+	cpu-avr32.lo \
43.52185 - 	cpu-bfin.lo \
43.52186 - 	cpu-cr16.lo \
43.52187 - 	cpu-cr16c.lo \
43.52188 -@@ -493,6 +494,7 @@ BFD32_BACKENDS = \
43.52189 - 	elf32-arc.lo \
43.52190 - 	elf32-arm.lo \
43.52191 - 	elf32-avr.lo \
43.52192 -+	elf32-avr32.lo \
43.52193 - 	elf32-bfin.lo \
43.52194 - 	elf32-cr16.lo \
43.52195 - 	elf32-cr16c.lo \
43.52196 -@@ -1908,6 +1910,10 @@ elf32-cr16.lo: elf32-cr16.c $(INCDIR)/fi
43.52197 -   $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h elf-bfd.h \
43.52198 -   $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
43.52199 -   $(INCDIR)/elf/cr16.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
43.52200 -+elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \
43.52201 -+  $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
43.52202 -+  $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \
43.52203 -+  elf32-target.h
43.52204 - elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \
43.52205 -   $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \
43.52206 -   $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
43.52207 ---- /dev/null
43.52208 -+++ b/bfd/po/Makefile.in
43.52209 -@@ -0,0 +1,297 @@
43.52210 -+# Makefile for program source directory in GNU NLS utilities package.
43.52211 -+# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
43.52212 -+# Copyright 2001, 2003, 2006 Free Software Foundation, Inc.
43.52213 -+#
43.52214 -+# This file may be copied and used freely without restrictions.  It can
43.52215 -+# be used in projects which are not available under the GNU Public License
43.52216 -+# but which still want to provide support for the GNU gettext functionality.
43.52217 -+# Please note that the actual code is *not* freely available.
43.52218 -+
43.52219 -+PACKAGE = bfd
43.52220 -+VERSION = 2.18.atmel.1.0.1.avr32linux.1
43.52221 -+
43.52222 -+SHELL = /bin/sh
43.52223 -+
43.52224 -+
43.52225 -+srcdir = .
43.52226 -+top_srcdir = ..
43.52227 -+
43.52228 -+top_builddir = ..
43.52229 -+
43.52230 -+prefix = /usr
43.52231 -+exec_prefix = ${prefix}
43.52232 -+datadir = $(prefix)/share
43.52233 -+localedir = $(datadir)/locale
43.52234 -+gnulocaledir = $(prefix)/share/locale
43.52235 -+gettextsrcdir = $(prefix)/share/gettext/po
43.52236 -+subdir = po
43.52237 -+
43.52238 -+DESTDIR =
43.52239 -+
43.52240 -+INSTALL = /usr/bin/install -c
43.52241 -+INSTALL_DATA = ${INSTALL} -m 644
43.52242 -+MKINSTALLDIRS = $(top_builddir)/./../mkinstalldirs
43.52243 -+
43.52244 -+CC = gcc
43.52245 -+GENCAT = gencat
43.52246 -+GMSGFMT = PATH=../src:$$PATH /usr/bin/msgfmt
43.52247 -+MSGFMT = /usr/bin/msgfmt
43.52248 -+XGETTEXT = PATH=../src:$$PATH /usr/bin/xgettext
43.52249 -+MSGMERGE = PATH=../src:$$PATH msgmerge
43.52250 -+
43.52251 -+DEFS = -DHAVE_CONFIG_H
43.52252 -+CFLAGS = -g -O2
43.52253 -+CPPFLAGS = 
43.52254 -+
43.52255 -+INCLUDES = -I.. -I$(top_srcdir)/intl
43.52256 -+
43.52257 -+COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
43.52258 -+
43.52259 -+SOURCES = cat-id-tbl.c
43.52260 -+POFILES = @POFILES@
43.52261 -+GMOFILES = @GMOFILES@
43.52262 -+DISTFILES = ChangeLog Makefile.in.in SRC-POTFILES.in BLD-POTFILES.in $(PACKAGE).pot \
43.52263 -+stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
43.52264 -+
43.52265 -+# Note - the following line gets processed by bfd/configure and amended
43.52266 -+# to contain the full list of source dir POTFILES.
43.52267 -+SRC-POTFILES = \
43.52268 -+
43.52269 -+# Note - the following line gets processed by bfd/configure and amended
43.52270 -+# to contain the full list of build dir POTFILES.
43.52271 -+BLD-POTFILES = \
43.52272 -+
43.52273 -+CATALOGS =  da.gmo es.gmo fr.gmo ja.gmo ro.gmo rw.gmo sv.gmo tr.gmo vi.gmo zh_CN.gmo da.gmo es.gmo fr.gmo ja.gmo ro.gmo rw.gmo sv.gmo tr.gmo vi.gmo zh_CN.gmo
43.52274 -+CATOBJEXT = .gmo
43.52275 -+INSTOBJEXT = .mo
43.52276 -+
43.52277 -+.SUFFIXES:
43.52278 -+.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
43.52279 -+
43.52280 -+.c.o:
43.52281 -+	$(COMPILE) $<
43.52282 -+
43.52283 -+.po.pox:
43.52284 -+	$(MAKE) $(PACKAGE).pot
43.52285 -+	$(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
43.52286 -+
43.52287 -+.po.mo:
43.52288 -+	$(MSGFMT) -o $@ $<
43.52289 -+
43.52290 -+.po.gmo:
43.52291 -+	file=`echo $* | sed 's,.*/,,'`.gmo \
43.52292 -+	  && rm -f $$file && $(GMSGFMT) -o $$file $<
43.52293 -+
43.52294 -+.po.cat:
43.52295 -+	sed -f ../intl/po2msg.sed < $< > $*.msg \
43.52296 -+	  && rm -f $@ && $(GENCAT) $@ $*.msg
43.52297 -+
43.52298 -+
43.52299 -+all: all-yes
43.52300 -+
43.52301 -+all-yes: $(CATALOGS) # $(PACKAGE).pot
43.52302 -+all-no:
43.52303 -+
43.52304 -+$(srcdir)/$(PACKAGE).pot: $(SRC-POTFILES) $(BLD-POTFILES)
43.52305 -+	$(XGETTEXT) --default-domain=$(PACKAGE) \
43.52306 -+	  --directory=$(top_srcdir) \
43.52307 -+	  --add-comments --keyword=_ --keyword=N_ \
43.52308 -+	  --msgid-bugs-address=bug-binutils@gnu.org \
43.52309 -+	  --files-from=$(srcdir)/SRC-POTFILES.in 
43.52310 -+	$(XGETTEXT) --default-domain=$(PACKAGE) \
43.52311 -+	  --directory=.. \
43.52312 -+	  --directory=. \
43.52313 -+	  --add-comments --keyword=_ --keyword=N_ \
43.52314 -+	  --join-existing \
43.52315 -+	  --msgid-bugs-address=bug-binutils@gnu.org \
43.52316 -+	  --files-from=$(srcdir)/BLD-POTFILES.in
43.52317 -+	rm -f $(srcdir)/$(PACKAGE).pot
43.52318 -+	mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot
43.52319 -+
43.52320 -+$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
43.52321 -+$(srcdir)/stamp-cat-id: $(PACKAGE).pot
43.52322 -+	rm -f cat-id-tbl.tmp
43.52323 -+	sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
43.52324 -+		| sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
43.52325 -+	if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
43.52326 -+	  rm cat-id-tbl.tmp; \
43.52327 -+	else \
43.52328 -+	  echo cat-id-tbl.c changed; \
43.52329 -+	  rm -f $(srcdir)/cat-id-tbl.c; \
43.52330 -+	  mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
43.52331 -+	fi
43.52332 -+	cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
43.52333 -+
43.52334 -+
43.52335 -+install: install-exec install-data
43.52336 -+install-exec:
43.52337 -+install-info:
43.52338 -+install-html:
43.52339 -+install-data: install-data-yes
43.52340 -+install-data-no: all
43.52341 -+install-data-yes: all
43.52342 -+	if test -r $(MKINSTALLDIRS); then \
43.52343 -+	  $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
43.52344 -+	else \
43.52345 -+	  $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
43.52346 -+	fi
43.52347 -+	@catalogs='$(CATALOGS)'; \
43.52348 -+	for cat in $$catalogs; do \
43.52349 -+	  cat=`basename $$cat`; \
43.52350 -+	  case "$$cat" in \
43.52351 -+	    *.gmo) destdir=$(gnulocaledir);; \
43.52352 -+	    *)     destdir=$(localedir);; \
43.52353 -+	  esac; \
43.52354 -+	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
43.52355 -+	  dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
43.52356 -+	  if test -r $(MKINSTALLDIRS); then \
43.52357 -+	    $(MKINSTALLDIRS) $$dir; \
43.52358 -+	  else \
43.52359 -+	    $(top_srcdir)/mkinstalldirs $$dir; \
43.52360 -+	  fi; \
43.52361 -+	  if test -r $$cat; then \
43.52362 -+	    $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
43.52363 -+	    echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
43.52364 -+	  else \
43.52365 -+	    $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
43.52366 -+	    echo "installing $(srcdir)/$$cat as" \
43.52367 -+		 "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
43.52368 -+	  fi; \
43.52369 -+	  if test -r $$cat.m; then \
43.52370 -+	    $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
43.52371 -+	    echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
43.52372 -+	  else \
43.52373 -+	    if test -r $(srcdir)/$$cat.m ; then \
43.52374 -+	      $(INSTALL_DATA) $(srcdir)/$$cat.m \
43.52375 -+		$$dir/$(PACKAGE)$(INSTOBJEXT).m; \
43.52376 -+	      echo "installing $(srcdir)/$$cat as" \
43.52377 -+		   "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
43.52378 -+	    else \
43.52379 -+	      true; \
43.52380 -+	    fi; \
43.52381 -+	  fi; \
43.52382 -+	done
43.52383 -+	if test "$(PACKAGE)" = "gettext"; then \
43.52384 -+	  if test -r $(MKINSTALLDIRS); then \
43.52385 -+	    $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
43.52386 -+	  else \
43.52387 -+	    $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
43.52388 -+	  fi; \
43.52389 -+	  $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
43.52390 -+			  $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
43.52391 -+	else \
43.52392 -+	  : ; \
43.52393 -+	fi
43.52394 -+
43.52395 -+# Define this as empty until I found a useful application.
43.52396 -+installcheck:
43.52397 -+
43.52398 -+uninstall:
43.52399 -+	catalogs='$(CATALOGS)'; \
43.52400 -+	for cat in $$catalogs; do \
43.52401 -+	  cat=`basename $$cat`; \
43.52402 -+	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
43.52403 -+	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
43.52404 -+	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
43.52405 -+	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
43.52406 -+	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
43.52407 -+	done
43.52408 -+	rm -f $(DESTDIR)$(gettextsrcdir)/po-Makefile.in.in
43.52409 -+
43.52410 -+check: all
43.52411 -+
43.52412 -+cat-id-tbl.o: ../intl/libgettext.h
43.52413 -+
43.52414 -+html dvi pdf ps info tags TAGS ID:
43.52415 -+
43.52416 -+mostlyclean:
43.52417 -+	rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
43.52418 -+	rm -fr *.o
43.52419 -+
43.52420 -+clean: mostlyclean
43.52421 -+
43.52422 -+distclean: clean
43.52423 -+	rm -f Makefile Makefile.in *.mo *.msg *.cat *.cat.m
43.52424 -+	rm -f SRC-POTFILES BLD-POTFILES 
43.52425 -+
43.52426 -+maintainer-clean: distclean
43.52427 -+	@echo "This command is intended for maintainers to use;"
43.52428 -+	@echo "it deletes files that may require special tools to rebuild."
43.52429 -+	rm -f $(GMOFILES) SRC-POTFILES.in BLD-POTFILES.in
43.52430 -+
43.52431 -+distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
43.52432 -+dist distdir: update-po $(DISTFILES)
43.52433 -+	dists="$(DISTFILES)"; \
43.52434 -+	for file in $$dists; do \
43.52435 -+	  ln $(srcdir)/$$file $(distdir) 2> /dev/null \
43.52436 -+	    || cp -p $(srcdir)/$$file $(distdir); \
43.52437 -+	done
43.52438 -+
43.52439 -+update-po: Makefile
43.52440 -+	$(MAKE) $(PACKAGE).pot
43.52441 -+	PATH=`pwd`/../src:$$PATH; \
43.52442 -+	cd $(srcdir); \
43.52443 -+	catalogs='$(CATALOGS)'; \
43.52444 -+	for cat in $$catalogs; do \
43.52445 -+	  cat=`basename $$cat`; \
43.52446 -+	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
43.52447 -+	  mv $$lang.po $$lang.old.po; \
43.52448 -+	  echo "$$lang:"; \
43.52449 -+	  if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
43.52450 -+	    rm -f $$lang.old.po; \
43.52451 -+	  else \
43.52452 -+	    echo "msgmerge for $$cat failed!"; \
43.52453 -+	    rm -f $$lang.po; \
43.52454 -+	    mv $$lang.old.po $$lang.po; \
43.52455 -+	  fi; \
43.52456 -+	done
43.52457 -+
43.52458 -+SRC-POTFILES: SRC-POTFILES.in
43.52459 -+	( if test 'x$(srcdir)' != 'x.'; then \
43.52460 -+	    posrcprefix='$(top_srcdir)/'; \
43.52461 -+	  else \
43.52462 -+	    posrcprefix="../"; \
43.52463 -+	  fi; \
43.52464 -+	  rm -f $@-t $@ \
43.52465 -+	    && (sed -e '/^#/d' \
43.52466 -+	            -e '/^[ 	]*$$/d' \
43.52467 -+		    -e "s@.*@	$$posrcprefix& \\\\@" < $(srcdir)/$@.in \
43.52468 -+		| sed -e '$$s/\\$$//') > $@-t \
43.52469 -+	    && chmod a-w $@-t \
43.52470 -+	    && mv $@-t $@ )
43.52471 -+
43.52472 -+BLD-POTFILES: BLD-POTFILES.in
43.52473 -+	  ( rm -f $@-t $@ \
43.52474 -+	    && (sed -e '/^#/d' \
43.52475 -+	            -e '/^[ 	]*$$/d' \
43.52476 -+		    -e "s@.*@	../& \\\\@" < $(srcdir)/$@.in \
43.52477 -+		| sed -e '$$s/\\$$//') > $@-t \
43.52478 -+	    && chmod a-w $@-t \
43.52479 -+	    && mv $@-t $@ )
43.52480 -+
43.52481 -+SRC-POTFILES.in: # ../Makefile
43.52482 -+	cd .. && $(MAKE) po/SRC-POTFILES.in
43.52483 -+
43.52484 -+BLD-POTFILES.in: # ../Makefile
43.52485 -+	cd .. && $(MAKE) po/BLD-POTFILES.in
43.52486 -+
43.52487 -+# Note - The presence of SRC-POTFILES and BLD-POTFILES as dependencies
43.52488 -+# here breaks the implementation of the 'distclean' rule for maintainers.
43.52489 -+# This is because if 'make distclean' is run in the BFD directory, the
43.52490 -+# Makefile there will be deleted before 'distclean' is made here, and so
43.52491 -+# the dependency SRC-POTFILES -> SRC-POTFILES.in -> ../Makefile cannot
43.52492 -+# be satisfied.
43.52493 -+#
43.52494 -+# The SRC-POTFILES and BLD-POTFILES dependencies cannot be removed,
43.52495 -+# however since it is necessary that these files be built during
43.52496 -+# *configure* time, so that configure can insert them into the
43.52497 -+# po/Makefile that it is creating, so that the Makefile will have
43.52498 -+# the correct dependencies.
43.52499 -+Makefile: Make-in ../config.status SRC-POTFILES BLD-POTFILES
43.52500 -+	cd .. \
43.52501 -+	  && CONFIG_FILES=$(subdir)/Makefile.in:$(subdir)/Make-in \
43.52502 -+	     CONFIG_HEADERS= $(SHELL) ./config.status
43.52503 -+
43.52504 -+# Tell versions [3.59,3.63) of GNU make not to export all variables.
43.52505 -+# Otherwise a system limit (for SysV at least) may be exceeded.
43.52506 -+.NOEXPORT:
43.52507 ---- a/binutils/Makefile.in
43.52508 -+++ b/binutils/Makefile.in
43.52509 -@@ -1327,7 +1327,7 @@ readelf.o: readelf.c sysdep.h $(INCDIR)/
43.52510 -   $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h dwarf.h \
43.52511 -   $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
43.52512 -   $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/alpha.h \
43.52513 --  $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h \
43.52514 -+  $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h\
43.52515 -   $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/crx.h \
43.52516 -   $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \
43.52517 -   $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/hppa.h \
43.52518 ---- a/ld/Makefile.in
43.52519 -+++ b/ld/Makefile.in
43.52520 -@@ -384,7 +384,34 @@ ALL_EMULATIONS = \
43.52521 - 	eavr3.o \
43.52522 - 	eavr4.o \
43.52523 - 	eavr5.o \
43.52524 --	eavr6.o \
43.52525 -+    eavr6.o \
43.52526 -+	eavr32elf_ap7000.o \
43.52527 -+	eavr32elf_ap7001.o \
43.52528 -+	eavr32elf_ap7002.o \
43.52529 -+	eavr32elf_ap7200.o \
43.52530 -+	eavr32elf_uc3a0128.o \
43.52531 -+	eavr32elf_uc3a0256.o \
43.52532 -+	eavr32elf_uc3a0512.o \
43.52533 -+	eavr32elf_uc3a0512es.o \
43.52534 -+	eavr32elf_uc3a1128.o \
43.52535 -+	eavr32elf_uc3a1256.o \
43.52536 -+	eavr32elf_uc3a1512es.o \
43.52537 -+	eavr32elf_uc3a1512.o \
43.52538 -+	eavr32elf_uc3a364.o \
43.52539 -+	eavr32elf_uc3a364s.o \
43.52540 -+	eavr32elf_uc3a3128.o \
43.52541 -+	eavr32elf_uc3a3128s.o \
43.52542 -+	eavr32elf_uc3a3256.o \
43.52543 -+	eavr32elf_uc3a3256s.o \
43.52544 -+	eavr32elf_uc3b064.o \
43.52545 -+	eavr32elf_uc3b0128.o \
43.52546 -+	eavr32elf_uc3b0256es.o \
43.52547 -+	eavr32elf_uc3b0256.o \
43.52548 -+	eavr32elf_uc3b164.o \
43.52549 -+	eavr32elf_uc3b1128.o \
43.52550 -+	eavr32elf_uc3b1256es.o \
43.52551 -+	eavr32elf_uc3b1256.o \
43.52552 -+	eavr32linux.o \
43.52553 - 	ecoff_i860.o \
43.52554 - 	ecoff_sparc.o \
43.52555 - 	eelf32_spu.o \
43.52556 -@@ -1448,6 +1475,114 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
43.52557 -   $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
43.52558 -   ${GEN_DEPENDS}
43.52559 - 	${GENSCRIPTS} avr6 "$(tdir_avr2)"
43.52560 -+eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf.sh \
43.52561 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52562 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52563 -+	${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" avr32elf
43.52564 -+eavr32elf_ap7001.c: $(srcdir)/emulparams/avr32elf.sh \
43.52565 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52566 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52567 -+	${GENSCRIPTS} avr32elf_ap7001 "$(tdir_avr32)" avr32elf
43.52568 -+eavr32elf_ap7002.c: $(srcdir)/emulparams/avr32elf.sh \
43.52569 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52570 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52571 -+	${GENSCRIPTS} avr32elf_ap7002 "$(tdir_avr32)" avr32elf
43.52572 -+eavr32elf_ap7200.c: $(srcdir)/emulparams/avr32elf.sh \
43.52573 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52574 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52575 -+	${GENSCRIPTS} avr32elf_ap7200 "$(tdir_avr32)" avr32elf
43.52576 -+eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf.sh \
43.52577 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52578 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52579 -+	${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)" avr32elf
43.52580 -+eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf.sh \
43.52581 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52582 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52583 -+	${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)" avr32elf
43.52584 -+eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf.sh \
43.52585 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52586 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52587 -+	${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" avr32elf
43.52588 -+eavr32elf_uc3a0512es.c: $(srcdir)/emulparams/avr32elf.sh \
43.52589 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52590 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52591 -+	${GENSCRIPTS} avr32elf_uc3a0512es "$(tdir_avr32)" avr32elf
43.52592 -+eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf.sh \
43.52593 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52594 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52595 -+	${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)" avr32elf
43.52596 -+eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf.sh \
43.52597 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52598 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52599 -+	${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)" avr32elf
43.52600 -+eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf.sh \
43.52601 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52602 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52603 -+	${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)" avr32elf
43.52604 -+eavr32elf_uc3a1512es.c: $(srcdir)/emulparams/avr32elf.sh \
43.52605 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52606 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52607 -+	${GENSCRIPTS} avr32elf_uc3a1512es "$(tdir_avr32)" avr32elf
43.52608 -+eavr32elf_uc3a364.c: $(srcdir)/emulparams/avr32elf.sh \
43.52609 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52610 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52611 -+	${GENSCRIPTS} avr32elf_uc3a364 "$(tdir_avr32)" avr32elf
43.52612 -+eavr32elf_uc3a364s.c: $(srcdir)/emulparams/avr32elf.sh \
43.52613 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52614 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52615 -+	${GENSCRIPTS} avr32elf_uc3a364s "$(tdir_avr32)" avr32elf
43.52616 -+eavr32elf_uc3a3128.c: $(srcdir)/emulparams/avr32elf.sh \
43.52617 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52618 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52619 -+	${GENSCRIPTS} avr32elf_uc3a3128 "$(tdir_avr32)" avr32elf
43.52620 -+eavr32elf_uc3a3128s.c: $(srcdir)/emulparams/avr32elf.sh \
43.52621 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52622 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52623 -+	${GENSCRIPTS} avr32elf_uc3a3128s "$(tdir_avr32)" avr32elf
43.52624 -+eavr32elf_uc3a3256.c: $(srcdir)/emulparams/avr32elf.sh \
43.52625 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52626 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52627 -+	${GENSCRIPTS} avr32elf_uc3a3256 "$(tdir_avr32)" avr32elf
43.52628 -+eavr32elf_uc3a3256s.c: $(srcdir)/emulparams/avr32elf.sh \
43.52629 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52630 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52631 -+	${GENSCRIPTS} avr32elf_uc3a3256s "$(tdir_avr32)" avr32elf
43.52632 -+eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf.sh \
43.52633 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52634 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52635 -+	${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)" avr32elf
43.52636 -+eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf.sh \
43.52637 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52638 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52639 -+	${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)" avr32elf
43.52640 -+eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf.sh \
43.52641 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52642 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52643 -+	${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)" avr32elf
43.52644 -+eavr32elf_uc3b0256es.c: $(srcdir)/emulparams/avr32elf.sh \
43.52645 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52646 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52647 -+	${GENSCRIPTS} avr32elf_uc3b0256es "$(tdir_avr32)" avr32elf
43.52648 -+eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf.sh \
43.52649 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52650 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52651 -+	${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)" avr32elf
43.52652 -+eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf.sh \
43.52653 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52654 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52655 -+	${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)" avr32elf
43.52656 -+eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf.sh \
43.52657 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52658 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52659 -+	${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)" avr32elf
43.52660 -+eavr32elf_uc3b1256es.c: $(srcdir)/emulparams/avr32elf.sh \
43.52661 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52662 -+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
43.52663 -+	${GENSCRIPTS} avr32elf_uc3b1256es "$(tdir_avr32)" avr32elf
43.52664 -+eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
43.52665 -+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
43.52666 -+  $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
43.52667 -+	${GENSCRIPTS} avr32linux "$(tdir_avr32)"
43.52668 - ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
43.52669 -   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
43.52670 - 	${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
43.52671 -@@ -2679,7 +2814,9 @@ install-exec-local: ld-new$(EXEEXT)
43.52672 - 	  || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
43.52673 - 	fi
43.52674 - 
43.52675 --install-data-local:
43.52676 -+# We want install to imply install-info as per GNU standards, despite the
43.52677 -+# cygnus option.
43.52678 -+install-data-local: install-info
43.52679 - 	$(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
43.52680 - 	for f in ldscripts/*; do \
43.52681 - 	  $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
43.52682 ---- /dev/null
43.52683 -+++ b/libiberty/required-list
43.52684 -@@ -0,0 +1 @@
43.52685 -+./regex.o ./cplus-dem.o ./cp-demangle.o ./md5.o ./alloca.o ./argv.o ./choose-temp.o ./concat.o ./cp-demint.o ./dyn-string.o ./fdmatch.o ./fibheap.o ./filename_cmp.o ./floatformat.o ./fnmatch.o ./fopen_unlocked.o ./getopt.o ./getopt1.o ./getpwd.o ./getruntime.o ./hashtab.o ./hex.o ./lbasename.o ./lrealpath.o ./make-relative-prefix.o ./make-temp-file.o ./objalloc.o ./obstack.o ./partition.o ./pexecute.o ./physmem.o ./pex-common.o ./pex-one.o ./pex-unix.o ./safe-ctype.o ./sort.o ./spaces.o ./splay-tree.o ./strerror.o ./strsignal.o ./unlink-if-ordinary.o ./xatexit.o ./xexit.o ./xmalloc.o ./xmemdup.o ./xstrdup.o ./xstrerror.o ./xstrndup.o
43.52686 ---- a/opcodes/configure
43.52687 -+++ b/opcodes/configure
43.52688 -@@ -11418,6 +11418,7 @@ if test x${all_targets} = xfalse ; then
43.52689 - 	bfd_arc_arch)		ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
43.52690 - 	bfd_arm_arch)		ta="$ta arm-dis.lo" ;;
43.52691 - 	bfd_avr_arch)		ta="$ta avr-dis.lo" ;;
43.52692 -+	bfd_avr32_arch)		ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
43.52693 - 	bfd_bfin_arch)		ta="$ta bfin-dis.lo" ;;
43.52694 - 	bfd_cr16_arch)    	ta="$ta cr16-dis.lo cr16-opc.lo" ;;
43.52695 - 	bfd_cris_arch)		ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
43.52696 -@@ -11476,7 +11477,7 @@ if test x${all_targets} = xfalse ; then
43.52697 - 				ta="$ta sh64-dis.lo sh64-opc.lo"
43.52698 - 				archdefs="$archdefs -DINCLUDE_SHMEDIA"
43.52699 - 				break;;
43.52700 --	    esac;
43.52701 -+	    esac
43.52702 - 	  done
43.52703 - 				ta="$ta sh-dis.lo cgen-bitset.lo" ;;
43.52704 - 	bfd_sparc_arch)		ta="$ta sparc-dis.lo sparc-opc.lo" ;;
43.52705 ---- a/opcodes/Makefile.in
43.52706 -+++ b/opcodes/Makefile.in
43.52707 -@@ -257,6 +257,7 @@ LIBIBERTY = ../libiberty/libiberty.a
43.52708 - # Header files.
43.52709 - HFILES = \
43.52710 - 	cgen-ops.h cgen-types.h \
43.52711 -+	avr32-asm.h avr32-opc.h \
43.52712 - 	fr30-desc.h fr30-opc.h \
43.52713 - 	frv-desc.h frv-opc.h \
43.52714 - 	h8500-opc.h \
43.52715 -@@ -291,6 +292,9 @@ CFILES = \
43.52716 - 	arc-ext.c \
43.52717 - 	arm-dis.c \
43.52718 - 	avr-dis.c \
43.52719 -+	avr32-asm.c \
43.52720 -+	avr32-dis.c \
43.52721 -+	avr32-opc.c \
43.52722 - 	bfin-dis.c \
43.52723 - 	cgen-asm.c \
43.52724 - 	cgen-bitset.c \
43.52725 -@@ -445,6 +449,9 @@ ALL_MACHINES = \
43.52726 - 	arc-ext.lo \
43.52727 - 	arm-dis.lo \
43.52728 - 	avr-dis.lo \
43.52729 -+	avr32-asm.lo \
43.52730 -+	avr32-dis.lo \
43.52731 -+	avr32-opc.lo \
43.52732 - 	bfin-dis.lo \
43.52733 - 	cgen-asm.lo \
43.52734 - 	cgen-bitset.lo \
43.52735 -@@ -1225,6 +1232,15 @@ avr-dis.lo: avr-dis.c sysdep.h config.h 
43.52736 -   $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
43.52737 -   opintl.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \
43.52738 -   $(INCDIR)/opcode/avr.h
43.52739 -+avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
43.52740 -+  $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
43.52741 -+  $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
43.52742 -+  $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
43.52743 -+avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
43.52744 -+  $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
43.52745 -+  avr32-opc.h opintl.h
43.52746 -+avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
43.52747 -+  $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
43.52748 - bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
43.52749 -   $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
43.52750 - cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
    44.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    44.2 +++ b/patches/binutils/2.18a/100-makeinfo-version.patch	Sun Sep 11 18:18:53 2011 +0200
    44.3 @@ -0,0 +1,32 @@
    44.4 +diff -u binutils-2.18-orig/configure binutils-2.18/configure
    44.5 +--- binutils-2.18-orig/configure	2007-08-06 16:29:40.000000000 -0400
    44.6 ++++ binutils-2.18/configure	2007-09-27 22:41:51.000000000 -0400
    44.7 +@@ -6125,10 +6125,10 @@
    44.8 +   *" texinfo "*) MAKEINFO='$$r/$(BUILD_SUBDIR)/texinfo/makeinfo/makeinfo' ;;
    44.9 +   *)
   44.10 + 
   44.11 +-    # For an installed makeinfo, we require it to be from texinfo 4.4 or
   44.12 ++    # For an installed makeinfo, we require it to be from texinfo 4.6 or
   44.13 +     # higher, else we use the "missing" dummy.
   44.14 +     if ${MAKEINFO} --version \
   44.15 +-       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
   44.16 ++       | egrep 'texinfo[^0-9]*(4\.([6-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
   44.17 +       :
   44.18 +     else
   44.19 +       MAKEINFO="$MISSING makeinfo"
   44.20 +diff -u binutils-2.18-orig/configure.ac binutils-2.18/configure.ac
   44.21 +--- binutils-2.18-orig/configure.ac	2007-08-28 16:24:26.000000000 -0400
   44.22 ++++ binutils-2.18/configure.ac	2007-09-27 22:41:00.000000000 -0400
   44.23 +@@ -2400,10 +2400,10 @@
   44.24 +   *" texinfo "*) MAKEINFO='$$r/$(BUILD_SUBDIR)/texinfo/makeinfo/makeinfo' ;;
   44.25 +   *)
   44.26 + changequote(,)
   44.27 +-    # For an installed makeinfo, we require it to be from texinfo 4.4 or
   44.28 ++    # For an installed makeinfo, we require it to be from texinfo 4.6 or
   44.29 +     # higher, else we use the "missing" dummy.
   44.30 +     if ${MAKEINFO} --version \
   44.31 +-       | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
   44.32 ++       | egrep 'texinfo[^0-9]*(4\.([6-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
   44.33 +       :
   44.34 +     else
   44.35 +       MAKEINFO="$MISSING makeinfo"
    45.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    45.2 +++ b/patches/binutils/2.18a/110-enable-dash-v2.patch	Sun Sep 11 18:18:53 2011 +0200
    45.3 @@ -0,0 +1,20 @@
    45.4 +Enable using a shell other than bash.
    45.5 +Courtesy "Martin Guy" <martinwguy@yahoo.it>
    45.6 +http://sourceware.org/ml/crossgcc/2008-08/msg00037.html
    45.7 +
    45.8 +--- binutils-2.18.orig/ld/genscripts.sh	2007-08-12 20:00:07.000000000 +0100
    45.9 ++++ binutils-2.18/ld/genscripts.sh	2008-08-25 16:09:54.000000000 +0100
   45.10 +@@ -398,9 +398,11 @@
   45.11 +     . $em_script
   45.12 +     em_script=$current_script
   45.13 +   }
   45.14 +-  fragment()
   45.15 ++  
   45.16 ++  alias fragment='em_lineno=$LINENO; fragment_em'
   45.17 ++  fragment_em()
   45.18 +   {
   45.19 +-    local lineno=$[${BASH_LINENO[0]} + 1]
   45.20 ++    local lineno=$[$em_lineno + 1]
   45.21 +     echo >> e${EMULATION_NAME}.c "#line $lineno \"$em_script\""
   45.22 +     cat >> e${EMULATION_NAME}.c
   45.23 +   }
    46.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    46.2 +++ b/patches/binutils/2.18a/120-i386-no-divide-comment.patch	Sun Sep 11 18:18:53 2011 +0200
    46.3 @@ -0,0 +1,64 @@
    46.4 +diff -durN binutils-2.18.orig/gas/config/tc-i386.c binutils-2.18/gas/config/tc-i386.c
    46.5 +--- binutils-2.18.orig/gas/config/tc-i386.c	2007-08-24 16:01:22.000000000 +0200
    46.6 ++++ binutils-2.18/gas/config/tc-i386.c	2008-09-22 08:11:42.000000000 +0200
    46.7 +@@ -180,24 +180,10 @@
    46.8 + #endif
    46.9 + 	;
   46.10 + 
   46.11 +-#if (defined (TE_I386AIX)				\
   46.12 +-     || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF))	\
   46.13 +-	 && !defined (TE_GNU)				\
   46.14 +-	 && !defined (TE_LINUX)				\
   46.15 +- 	 && !defined (TE_NETWARE)			\
   46.16 +-	 && !defined (TE_FreeBSD)			\
   46.17 +-	 && !defined (TE_NetBSD)))
   46.18 + /* This array holds the chars that always start a comment.  If the
   46.19 +-   pre-processor is disabled, these aren't very useful.  The option
   46.20 +-   --divide will remove '/' from this list.  */
   46.21 +-const char *i386_comment_chars = "#/";
   46.22 +-#define SVR4_COMMENT_CHARS 1
   46.23 +-#define PREFIX_SEPARATOR '\\'
   46.24 +-
   46.25 +-#else
   46.26 ++   pre-processor is disabled, these aren't very useful.  */
   46.27 + const char *i386_comment_chars = "#";
   46.28 + #define PREFIX_SEPARATOR '/'
   46.29 +-#endif
   46.30 + 
   46.31 + /* This array holds the chars that only start a comment at the beginning of
   46.32 +    a line.  If the line seems to have the form '# 123 filename'
   46.33 +@@ -6061,20 +6047,6 @@
   46.34 +       break;
   46.35 + 
   46.36 +     case OPTION_DIVIDE:
   46.37 +-#ifdef SVR4_COMMENT_CHARS
   46.38 +-      {
   46.39 +-	char *n, *t;
   46.40 +-	const char *s;
   46.41 +-
   46.42 +-	n = (char *) xmalloc (strlen (i386_comment_chars) + 1);
   46.43 +-	t = n;
   46.44 +-	for (s = i386_comment_chars; *s != '\0'; s++)
   46.45 +-	  if (*s != '/')
   46.46 +-	    *t++ = *s;
   46.47 +-	*t = '\0';
   46.48 +-	i386_comment_chars = n;
   46.49 +-      }
   46.50 +-#endif
   46.51 +       break;
   46.52 + 
   46.53 +     case OPTION_MARCH:
   46.54 +@@ -6142,13 +6114,8 @@
   46.55 +   fprintf (stream, _("\
   46.56 +   --32/--64               generate 32bit/64bit code\n"));
   46.57 + #endif
   46.58 +-#ifdef SVR4_COMMENT_CHARS
   46.59 +-  fprintf (stream, _("\
   46.60 +-  --divide                do not treat `/' as a comment character\n"));
   46.61 +-#else
   46.62 +   fprintf (stream, _("\
   46.63 +   --divide                ignored\n"));
   46.64 +-#endif
   46.65 +   fprintf (stream, _("\
   46.66 +   -march=CPU/-mtune=CPU   generate code/optimize for CPU, where CPU is one of:\n\
   46.67 +                            i386, i486, pentium, pentiumpro, pentium4, nocona,\n\
    47.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    47.2 +++ b/patches/binutils/2.18a/130-avr32-atmel-v1.0.1.patch	Sun Sep 11 18:18:53 2011 +0200
    47.3 @@ -0,0 +1,52747 @@
    47.4 +--- a/bfd/archures.c
    47.5 ++++ b/bfd/archures.c
    47.6 +@@ -346,6 +346,11 @@ DESCRIPTION
    47.7 + .#define bfd_mach_avr4		4
    47.8 + .#define bfd_mach_avr5		5
    47.9 + .#define bfd_mach_avr6		6
   47.10 ++.  bfd_arch_avr32,     {* Atmel AVR32 *}
   47.11 ++.#define bfd_mach_avr32_ap	7000
   47.12 ++.#define bfd_mach_avr32_uc	3000
   47.13 ++.#define bfd_mach_avr32_ucr1    3001
   47.14 ++.#define bfd_mach_avr32_ucr2    3002
   47.15 + .  bfd_arch_bfin,        {* ADI Blackfin *}
   47.16 + .#define bfd_mach_bfin          1
   47.17 + .  bfd_arch_cr16,       {* National Semiconductor CompactRISC (ie CR16). *}
   47.18 +@@ -438,6 +443,7 @@ extern const bfd_arch_info_type bfd_alph
   47.19 + extern const bfd_arch_info_type bfd_arc_arch;
   47.20 + extern const bfd_arch_info_type bfd_arm_arch;
   47.21 + extern const bfd_arch_info_type bfd_avr_arch;
   47.22 ++extern const bfd_arch_info_type bfd_avr32_arch;
   47.23 + extern const bfd_arch_info_type bfd_bfin_arch;
   47.24 + extern const bfd_arch_info_type bfd_cr16_arch;
   47.25 + extern const bfd_arch_info_type bfd_cr16c_arch;
   47.26 +@@ -509,6 +515,7 @@ static const bfd_arch_info_type * const 
   47.27 +     &bfd_arc_arch,
   47.28 +     &bfd_arm_arch,
   47.29 +     &bfd_avr_arch,
   47.30 ++    &bfd_avr32_arch,
   47.31 +     &bfd_bfin_arch,
   47.32 +     &bfd_cr16_arch,
   47.33 +     &bfd_cr16c_arch,
   47.34 +--- a/bfd/config.bfd
   47.35 ++++ b/bfd/config.bfd
   47.36 +@@ -335,6 +335,10 @@ case "${targ}" in
   47.37 +     targ_underscore=yes
   47.38 +     ;;
   47.39 + 
   47.40 ++  avr32-*-*)
   47.41 ++    targ_defvec=bfd_elf32_avr32_vec
   47.42 ++    ;;
   47.43 ++
   47.44 +   c30-*-*aout* | tic30-*-*aout*)
   47.45 +     targ_defvec=tic30_aout_vec
   47.46 +     ;;
   47.47 +--- a/bfd/configure.in
   47.48 ++++ b/bfd/configure.in
   47.49 +@@ -8,7 +8,7 @@ AC_CONFIG_SRCDIR([libbfd.c])
   47.50 + AC_CANONICAL_TARGET
   47.51 + AC_ISC_POSIX
   47.52 + 
   47.53 +-AM_INIT_AUTOMAKE(bfd, 2.18)
   47.54 ++AM_INIT_AUTOMAKE(bfd, 2.18.atmel.1.0.1.avr32linux.1)
   47.55 + 
   47.56 + dnl These must be called before AM_PROG_LIBTOOL, because it may want
   47.57 + dnl to call AC_CHECK_PROG.
   47.58 +@@ -619,6 +619,7 @@ do
   47.59 +     bfd_efi_app_ia64_vec)	tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
   47.60 +     bfd_elf32_am33lin_vec)	tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
   47.61 +     bfd_elf32_avr_vec)		tb="$tb elf32-avr.lo elf32.lo $elf" ;;
   47.62 ++    bfd_elf32_avr32_vec)	tb="$tb elf32-avr32.lo elf32.lo $elf" ;;
   47.63 +     bfd_elf32_bfin_vec)		tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
   47.64 +     bfd_elf32_bfinfdpic_vec)	tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
   47.65 +     bfd_elf32_big_generic_vec) 	tb="$tb elf32-gen.lo elf32.lo $elf" ;;
   47.66 +--- /dev/null
   47.67 ++++ b/bfd/cpu-avr32.c
   47.68 +@@ -0,0 +1,51 @@
   47.69 ++/* BFD library support routines for AVR32.
   47.70 ++   Copyright 2003-2006 Atmel Corporation.
   47.71 ++
   47.72 ++   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
   47.73 ++
   47.74 ++   This is part of BFD, the Binary File Descriptor library.
   47.75 ++
   47.76 ++   This program is free software; you can redistribute it and/or modify
   47.77 ++   it under the terms of the GNU General Public License as published by
   47.78 ++   the Free Software Foundation; either version 2 of the License, or
   47.79 ++   (at your option) any later version.
   47.80 ++
   47.81 ++   This program is distributed in the hope that it will be useful,
   47.82 ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
   47.83 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   47.84 ++   GNU General Public License for more details.
   47.85 ++
   47.86 ++   You should have received a copy of the GNU General Public License
   47.87 ++   along with this program; if not, write to the Free Software
   47.88 ++   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
   47.89 ++
   47.90 ++#include "bfd.h"
   47.91 ++#include "sysdep.h"
   47.92 ++#include "libbfd.h"
   47.93 ++
   47.94 ++#define N(machine, print, default, next)			\
   47.95 ++  {								\
   47.96 ++    32,				/* 32 bits in a word */		\
   47.97 ++    32,				/* 32 bits in an address */	\
   47.98 ++    8,				/* 8 bits in a byte */		\
   47.99 ++    bfd_arch_avr32,		/* architecture */		\
  47.100 ++    machine,			/* machine */			\
  47.101 ++    "avr32",			/* arch name */			\
  47.102 ++    print,			/* printable name */		\
  47.103 ++    1,				/* section align power */	\
  47.104 ++    default,			/* the default machine? */	\
  47.105 ++    bfd_default_compatible,					\
  47.106 ++    bfd_default_scan,						\
  47.107 ++    next,							\
  47.108 ++  }
  47.109 ++
  47.110 ++static const bfd_arch_info_type cpu_info[] =
  47.111 ++{
  47.112 ++  N(bfd_mach_avr32_ap, "avr32:ap", FALSE, &cpu_info[1]),
  47.113 ++  N(bfd_mach_avr32_uc, "avr32:uc", FALSE, &cpu_info[2]),
  47.114 ++  N(bfd_mach_avr32_ucr1, "avr32:ucr1", FALSE, &cpu_info[3]),
  47.115 ++  N(bfd_mach_avr32_ucr2, "avr32:ucr2", FALSE, NULL),
  47.116 ++};
  47.117 ++
  47.118 ++const bfd_arch_info_type bfd_avr32_arch =
  47.119 ++  N(bfd_mach_avr32_ap, "avr32", TRUE, &cpu_info[0]);
  47.120 +--- /dev/null
  47.121 ++++ b/bfd/elf32-avr32.c
  47.122 +@@ -0,0 +1,3915 @@
  47.123 ++/* AVR32-specific support for 32-bit ELF.
  47.124 ++   Copyright 2003-2006 Atmel Corporation.
  47.125 ++
  47.126 ++   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
  47.127 ++
  47.128 ++   This file is part of BFD, the Binary File Descriptor library.
  47.129 ++
  47.130 ++   This program is free software; you can redistribute it and/or modify
  47.131 ++   it under the terms of the GNU General Public License as published by
  47.132 ++   the Free Software Foundation; either version 2 of the License, or
  47.133 ++   (at your option) any later version.
  47.134 ++
  47.135 ++   This program is distributed in the hope that it will be useful,
  47.136 ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
  47.137 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  47.138 ++   GNU General Public License for more details.
  47.139 ++
  47.140 ++   You should have received a copy of the GNU General Public License
  47.141 ++   along with this program; if not, write to the Free Software
  47.142 ++   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  47.143 ++
  47.144 ++#include "bfd.h"
  47.145 ++#include "sysdep.h"
  47.146 ++#include "bfdlink.h"
  47.147 ++#include "libbfd.h"
  47.148 ++#include "elf-bfd.h"
  47.149 ++#include "elf/avr32.h"
  47.150 ++#include "elf32-avr32.h"
  47.151 ++
  47.152 ++#define xDEBUG
  47.153 ++#define xRELAX_DEBUG
  47.154 ++
  47.155 ++#ifdef DEBUG
  47.156 ++# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
  47.157 ++#else
  47.158 ++# define pr_debug(fmt, args...) do { } while (0)
  47.159 ++#endif
  47.160 ++
  47.161 ++#ifdef RELAX_DEBUG
  47.162 ++# define RDBG(fmt, args...) fprintf(stderr, fmt, ##args)
  47.163 ++#else
  47.164 ++# define RDBG(fmt, args...) do { } while (0)
  47.165 ++#endif
  47.166 ++
  47.167 ++/* When things go wrong, we want it to blow up, damnit! */
  47.168 ++#undef BFD_ASSERT
  47.169 ++#undef abort
  47.170 ++#define BFD_ASSERT(expr)					\
  47.171 ++  do								\
  47.172 ++    {								\
  47.173 ++      if (!(expr))						\
  47.174 ++	{							\
  47.175 ++	  bfd_assert(__FILE__, __LINE__);			\
  47.176 ++	  abort();						\
  47.177 ++	}							\
  47.178 ++    }								\
  47.179 ++  while (0)
  47.180 ++
  47.181 ++/* The name of the dynamic interpreter. This is put in the .interp section. */
  47.182 ++#define ELF_DYNAMIC_INTERPRETER		"/lib/ld.so.1"
  47.183 ++
  47.184 ++#define AVR32_GOT_HEADER_SIZE		8
  47.185 ++#define AVR32_FUNCTION_STUB_SIZE	8
  47.186 ++
  47.187 ++#define ELF_R_INFO(x, y) ELF32_R_INFO(x, y)
  47.188 ++#define ELF_R_TYPE(x) ELF32_R_TYPE(x)
  47.189 ++#define ELF_R_SYM(x) ELF32_R_SYM(x)
  47.190 ++
  47.191 ++#define NOP_OPCODE 0xd703
  47.192 ++
  47.193 ++
  47.194 ++/* Mapping between BFD relocations and ELF relocations */
  47.195 ++
  47.196 ++static reloc_howto_type *
  47.197 ++bfd_elf32_bfd_reloc_type_lookup(bfd *abfd, bfd_reloc_code_real_type code);
  47.198 ++
  47.199 ++static reloc_howto_type *
  47.200 ++bfd_elf32_bfd_reloc_name_lookup(bfd *abfd, const char *r_name);
  47.201 ++
  47.202 ++static void
  47.203 ++avr32_info_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst);
  47.204 ++
  47.205 ++/* Generic HOWTO */
  47.206 ++#define GENH(name, align, size, bitsize, pcrel, bitpos, complain, mask)	\
  47.207 ++  HOWTO(name, align, size, bitsize, pcrel, bitpos,			\
  47.208 ++	complain_overflow_##complain, bfd_elf_generic_reloc, #name,	\
  47.209 ++	FALSE, 0, mask, pcrel)
  47.210 ++
  47.211 ++static reloc_howto_type elf_avr32_howto_table[] = {
  47.212 ++  /*   NAME		 ALN SZ BSZ PCREL  BP COMPLAIN  MASK	    */
  47.213 ++  GENH(R_AVR32_NONE,	  0, 0, 0,  FALSE, 0, dont,	0x00000000),
  47.214 ++
  47.215 ++  GENH(R_AVR32_32,	  0, 2, 32, FALSE, 0, dont,	0xffffffff),
  47.216 ++  GENH(R_AVR32_16,	  0, 1, 16, FALSE, 0, bitfield,	0x0000ffff),
  47.217 ++  GENH(R_AVR32_8,	  0, 0,  8, FALSE, 0, bitfield,	0x000000ff),
  47.218 ++  GENH(R_AVR32_32_PCREL,  0, 2, 32, TRUE,  0, signed,   0xffffffff),
  47.219 ++  GENH(R_AVR32_16_PCREL,  0, 1, 16, TRUE,  0, signed,   0x0000ffff),
  47.220 ++  GENH(R_AVR32_8_PCREL,	  0, 0,  8, TRUE,  0, signed,   0x000000ff),
  47.221 ++
  47.222 ++  /* Difference between two symbol (sym2 - sym1).  The reloc encodes
  47.223 ++     the value of sym1.  The field contains the difference before any
  47.224 ++     relaxing is done.  */
  47.225 ++  GENH(R_AVR32_DIFF32,	  0, 2, 32, FALSE, 0, dont,	0xffffffff),
  47.226 ++  GENH(R_AVR32_DIFF16,	  0, 1, 16, FALSE, 0, signed,	0x0000ffff),
  47.227 ++  GENH(R_AVR32_DIFF8,	  0, 0,  8, FALSE, 0, signed,	0x000000ff),
  47.228 ++
  47.229 ++  GENH(R_AVR32_GOT32,	  0, 2, 32, FALSE, 0, signed,	0xffffffff),
  47.230 ++  GENH(R_AVR32_GOT16,	  0, 1, 16, FALSE, 0, signed,	0x0000ffff),
  47.231 ++  GENH(R_AVR32_GOT8,	  0, 0,  8, FALSE, 0, signed,	0x000000ff),
  47.232 ++
  47.233 ++  GENH(R_AVR32_21S,	  0, 2, 21, FALSE, 0, signed,	0x1e10ffff),
  47.234 ++  GENH(R_AVR32_16U,	  0, 2, 16, FALSE, 0, unsigned,	0x0000ffff),
  47.235 ++  GENH(R_AVR32_16S,	  0, 2, 16, FALSE, 0, signed,	0x0000ffff),
  47.236 ++  GENH(R_AVR32_8S,	  0, 1,  8, FALSE, 4, signed,	0x00000ff0),
  47.237 ++  GENH(R_AVR32_8S_EXT,	  0, 2,  8, FALSE, 0, signed,	0x000000ff),
  47.238 ++
  47.239 ++  GENH(R_AVR32_22H_PCREL, 1, 2, 21, TRUE,  0, signed,	0x1e10ffff),
  47.240 ++  GENH(R_AVR32_18W_PCREL, 2, 2, 16, TRUE,  0, signed,	0x0000ffff),
  47.241 ++  GENH(R_AVR32_16B_PCREL, 0, 2, 16, TRUE,  0, signed,	0x0000ffff),
  47.242 ++  GENH(R_AVR32_16N_PCREL, 0, 2, 16, TRUE,  0, signed,	0x0000ffff),
  47.243 ++  GENH(R_AVR32_14UW_PCREL, 2, 2, 12, TRUE, 0, unsigned, 0x0000f0ff),
  47.244 ++  GENH(R_AVR32_11H_PCREL, 1, 1, 10, TRUE,  4, signed,	0x00000ff3),
  47.245 ++  GENH(R_AVR32_10UW_PCREL, 2, 2, 8, TRUE,  0, unsigned, 0x000000ff),
  47.246 ++  GENH(R_AVR32_9H_PCREL,  1, 1,  8, TRUE,  4, signed,	0x00000ff0),
  47.247 ++  GENH(R_AVR32_9UW_PCREL, 2, 1,  7, TRUE,  4, unsigned,	0x000007f0),
  47.248 ++
  47.249 ++  GENH(R_AVR32_HI16,	 16, 2, 16, FALSE, 0, dont,	0x0000ffff),
  47.250 ++  GENH(R_AVR32_LO16,	  0, 2, 16, FALSE, 0, dont,	0x0000ffff),
  47.251 ++
  47.252 ++  GENH(R_AVR32_GOTPC,	  0, 2, 32, FALSE, 0, dont,	0xffffffff),
  47.253 ++  GENH(R_AVR32_GOTCALL,   2, 2, 21, FALSE, 0, signed,	0x1e10ffff),
  47.254 ++  GENH(R_AVR32_LDA_GOT,	  2, 2, 21, FALSE, 0, signed,	0x1e10ffff),
  47.255 ++  GENH(R_AVR32_GOT21S,	  0, 2, 21, FALSE, 0, signed,	0x1e10ffff),
  47.256 ++  GENH(R_AVR32_GOT18SW,	  2, 2, 16, FALSE, 0, signed,	0x0000ffff),
  47.257 ++  GENH(R_AVR32_GOT16S,	  0, 2, 16, FALSE, 0, signed,	0x0000ffff),
  47.258 ++  GENH(R_AVR32_GOT7UW,	  2, 1,  5, FALSE, 4, unsigned, 0x000001f0),
  47.259 ++
  47.260 ++  GENH(R_AVR32_32_CPENT,  0, 2, 32, FALSE, 0, dont,	0xffffffff),
  47.261 ++  GENH(R_AVR32_CPCALL,	  2, 2, 16, TRUE,  0, signed,	0x0000ffff),
  47.262 ++  GENH(R_AVR32_16_CP,	  0, 2, 16, TRUE,  0, signed,	0x0000ffff),
  47.263 ++  GENH(R_AVR32_9W_CP,	  2, 1,  7, TRUE,  4, unsigned, 0x000007f0),
  47.264 ++
  47.265 ++  GENH(R_AVR32_RELATIVE,  0, 2, 32, FALSE, 0, signed,	0xffffffff),
  47.266 ++  GENH(R_AVR32_GLOB_DAT,  0, 2, 32, FALSE, 0, dont,	0xffffffff),
  47.267 ++  GENH(R_AVR32_JMP_SLOT,  0, 2, 32, FALSE, 0, dont,	0xffffffff),
  47.268 ++
  47.269 ++  GENH(R_AVR32_ALIGN,	  0, 1, 0,  FALSE, 0, unsigned, 0x00000000),
  47.270 ++
  47.271 ++  GENH(R_AVR32_15S,	  2, 2, 15, FALSE, 0, signed,	0x00007fff),
  47.272 ++};
  47.273 ++
  47.274 ++struct elf_reloc_map
  47.275 ++{
  47.276 ++  bfd_reloc_code_real_type bfd_reloc_val;
  47.277 ++  unsigned char elf_reloc_val;
  47.278 ++};
  47.279 ++
  47.280 ++static const struct elf_reloc_map avr32_reloc_map[] =
  47.281 ++{
  47.282 ++  { BFD_RELOC_NONE,			R_AVR32_NONE },
  47.283 ++
  47.284 ++  { BFD_RELOC_32,			R_AVR32_32 },
  47.285 ++  { BFD_RELOC_16,			R_AVR32_16 },
  47.286 ++  { BFD_RELOC_8,			R_AVR32_8 },
  47.287 ++  { BFD_RELOC_32_PCREL,			R_AVR32_32_PCREL },
  47.288 ++  { BFD_RELOC_16_PCREL,			R_AVR32_16_PCREL },
  47.289 ++  { BFD_RELOC_8_PCREL,			R_AVR32_8_PCREL },
  47.290 ++  { BFD_RELOC_AVR32_DIFF32,		R_AVR32_DIFF32 },
  47.291 ++  { BFD_RELOC_AVR32_DIFF16,		R_AVR32_DIFF16 },
  47.292 ++  { BFD_RELOC_AVR32_DIFF8,		R_AVR32_DIFF8 },
  47.293 ++  { BFD_RELOC_AVR32_GOT32,		R_AVR32_GOT32 },
  47.294 ++  { BFD_RELOC_AVR32_GOT16,		R_AVR32_GOT16 },
  47.295 ++  { BFD_RELOC_AVR32_GOT8,		R_AVR32_GOT8 },
  47.296 ++
  47.297 ++  { BFD_RELOC_AVR32_21S,		R_AVR32_21S },
  47.298 ++  { BFD_RELOC_AVR32_16U,		R_AVR32_16U },
  47.299 ++  { BFD_RELOC_AVR32_16S,		R_AVR32_16S },
  47.300 ++  { BFD_RELOC_AVR32_SUB5,		R_AVR32_16S },
  47.301 ++  { BFD_RELOC_AVR32_8S_EXT,		R_AVR32_8S_EXT },
  47.302 ++  { BFD_RELOC_AVR32_8S,			R_AVR32_8S },
  47.303 ++
  47.304 ++  { BFD_RELOC_AVR32_22H_PCREL,		R_AVR32_22H_PCREL },
  47.305 ++  { BFD_RELOC_AVR32_18W_PCREL,		R_AVR32_18W_PCREL },
  47.306 ++  { BFD_RELOC_AVR32_16B_PCREL,		R_AVR32_16B_PCREL },
  47.307 ++  { BFD_RELOC_AVR32_16N_PCREL,		R_AVR32_16N_PCREL },
  47.308 ++  { BFD_RELOC_AVR32_11H_PCREL,		R_AVR32_11H_PCREL },
  47.309 ++  { BFD_RELOC_AVR32_10UW_PCREL,		R_AVR32_10UW_PCREL },
  47.310 ++  { BFD_RELOC_AVR32_9H_PCREL,		R_AVR32_9H_PCREL },
  47.311 ++  { BFD_RELOC_AVR32_9UW_PCREL,		R_AVR32_9UW_PCREL },
  47.312 ++
  47.313 ++  { BFD_RELOC_HI16,			R_AVR32_HI16 },
  47.314 ++  { BFD_RELOC_LO16,			R_AVR32_LO16 },
  47.315 ++
  47.316 ++  { BFD_RELOC_AVR32_GOTPC,		R_AVR32_GOTPC },
  47.317 ++  { BFD_RELOC_AVR32_GOTCALL,		R_AVR32_GOTCALL },
  47.318 ++  { BFD_RELOC_AVR32_LDA_GOT,		R_AVR32_LDA_GOT },
  47.319 ++  { BFD_RELOC_AVR32_GOT21S,		R_AVR32_GOT21S },
  47.320 ++  { BFD_RELOC_AVR32_GOT18SW,		R_AVR32_GOT18SW },
  47.321 ++  { BFD_RELOC_AVR32_GOT16S,		R_AVR32_GOT16S },
  47.322 ++  /* GOT7UW should never be generated by the assembler */
  47.323 ++
  47.324 ++  { BFD_RELOC_AVR32_32_CPENT,		R_AVR32_32_CPENT },
  47.325 ++  { BFD_RELOC_AVR32_CPCALL,		R_AVR32_CPCALL },
  47.326 ++  { BFD_RELOC_AVR32_16_CP,		R_AVR32_16_CP },
  47.327 ++  { BFD_RELOC_AVR32_9W_CP,		R_AVR32_9W_CP },
  47.328 ++
  47.329 ++  { BFD_RELOC_AVR32_ALIGN,		R_AVR32_ALIGN },
  47.330 ++
  47.331 ++  { BFD_RELOC_AVR32_15S,		R_AVR32_15S },
  47.332 ++};
  47.333 ++
  47.334 ++static reloc_howto_type *
  47.335 ++bfd_elf32_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
  47.336 ++				 bfd_reloc_code_real_type code)
  47.337 ++{
  47.338 ++  unsigned int i;
  47.339 ++
  47.340 ++  for (i = 0; i < sizeof(avr32_reloc_map) / sizeof(struct elf_reloc_map); i++)
  47.341 ++    {
  47.342 ++      if (avr32_reloc_map[i].bfd_reloc_val == code)
  47.343 ++	return &elf_avr32_howto_table[avr32_reloc_map[i].elf_reloc_val];
  47.344 ++    }
  47.345 ++
  47.346 ++  return NULL;
  47.347 ++}
  47.348 ++
  47.349 ++static reloc_howto_type *
  47.350 ++bfd_elf32_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
  47.351 ++                 const char *r_name)
  47.352 ++{
  47.353 ++  unsigned int i;
  47.354 ++
  47.355 ++  for (i = 0;
  47.356 ++       i < sizeof (elf_avr32_howto_table) / sizeof (elf_avr32_howto_table[0]);
  47.357 ++       i++)
  47.358 ++    if (elf_avr32_howto_table[i].name != NULL
  47.359 ++    && strcasecmp (elf_avr32_howto_table[i].name, r_name) == 0)
  47.360 ++      return &elf_avr32_howto_table[i];
  47.361 ++
  47.362 ++  return NULL;
  47.363 ++}
  47.364 ++
  47.365 ++/* Set the howto pointer for an AVR32 ELF reloc.  */
  47.366 ++static void
  47.367 ++avr32_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
  47.368 ++		     arelent *cache_ptr,
  47.369 ++		     Elf_Internal_Rela *dst)
  47.370 ++{
  47.371 ++  unsigned int r_type;
  47.372 ++
  47.373 ++  r_type = ELF32_R_TYPE (dst->r_info);
  47.374 ++  BFD_ASSERT (r_type < (unsigned int) R_AVR32_max);
  47.375 ++  cache_ptr->howto = &elf_avr32_howto_table[r_type];
  47.376 ++}
  47.377 ++
  47.378 ++
  47.379 ++/* AVR32 ELF linker hash table and associated hash entries. */
  47.380 ++
  47.381 ++static struct bfd_hash_entry *
  47.382 ++avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
  47.383 ++			    struct bfd_hash_table *table,
  47.384 ++			    const char *string);
  47.385 ++static void
  47.386 ++avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
  47.387 ++			       struct elf_link_hash_entry *dir,
  47.388 ++			       struct elf_link_hash_entry *ind);
  47.389 ++static struct bfd_link_hash_table *
  47.390 ++avr32_elf_link_hash_table_create(bfd *abfd);
  47.391 ++
  47.392 ++/*
  47.393 ++  Try to limit memory usage to something reasonable when sorting the
  47.394 ++  GOT.  If just a couple of entries end up getting more references
  47.395 ++  than this, it won't affect performance at all, but if there are many
  47.396 ++  of them, we could end up with the wrong symbols being assigned the
  47.397 ++  first GOT entries.
  47.398 ++*/
  47.399 ++#define MAX_NR_GOT_HOLES	2048
  47.400 ++
  47.401 ++/*
  47.402 ++  AVR32 GOT entry.  We need to keep track of refcounts and offsets
  47.403 ++  simultaneously, since we need the offsets during relaxation, and we
  47.404 ++  also want to be able to drop GOT entries during relaxation. In
  47.405 ++  addition to this, we want to keep the list of GOT entries sorted so
  47.406 ++  that we can keep the most-used entries at the lowest offsets.
  47.407 ++*/
  47.408 ++struct got_entry
  47.409 ++{
  47.410 ++  struct got_entry *next;
  47.411 ++  struct got_entry **pprev;
  47.412 ++  int refcount;
  47.413 ++  bfd_signed_vma offset;
  47.414 ++};
  47.415 ++
  47.416 ++struct elf_avr32_link_hash_entry
  47.417 ++{
  47.418 ++  struct elf_link_hash_entry root;
  47.419 ++
  47.420 ++  /* Number of runtime relocations against this symbol.  */
  47.421 ++  unsigned int possibly_dynamic_relocs;
  47.422 ++
  47.423 ++  /* If there are anything but R_AVR32_GOT18 relocations against this
  47.424 ++     symbol, it means that someone may be taking the address of the
  47.425 ++     function, and we should therefore not create a stub.  */
  47.426 ++  bfd_boolean no_fn_stub;
  47.427 ++
  47.428 ++  /* If there is a R_AVR32_32 relocation in a read-only section
  47.429 ++     against this symbol, we could be in trouble. If we're linking a
  47.430 ++     shared library or this symbol is defined in one, it means we must
  47.431 ++     emit a run-time reloc for it and that's not allowed in read-only
  47.432 ++     sections.  */
  47.433 ++  asection *readonly_reloc_sec;
  47.434 ++  bfd_vma readonly_reloc_offset;
  47.435 ++
  47.436 ++  /* Record which frag (if any) contains the symbol.  This is used
  47.437 ++     during relaxation in order to avoid having to update all symbols
  47.438 ++     whenever we move something.  For local symbols, this information
  47.439 ++     is in the local_sym_frag member of struct elf_obj_tdata.  */
  47.440 ++  struct fragment *sym_frag;
  47.441 ++};
  47.442 ++#define avr32_elf_hash_entry(ent) ((struct elf_avr32_link_hash_entry *)(ent))
  47.443 ++
  47.444 ++struct elf_avr32_link_hash_table
  47.445 ++{
  47.446 ++  struct elf_link_hash_table root;
  47.447 ++
  47.448 ++  /* Shortcuts to get to dynamic linker sections.  */
  47.449 ++  asection *sgot;
  47.450 ++  asection *srelgot;
  47.451 ++  asection *sstub;
  47.452 ++
  47.453 ++  /* We use a variation of Pigeonhole Sort to sort the GOT.  After the
  47.454 ++     initial refcounts have been determined, we initialize
  47.455 ++     nr_got_holes to the highest refcount ever seen and allocate an
  47.456 ++     array of nr_got_holes entries for got_hole.  Each GOT entry is
  47.457 ++     then stored in this array at the index given by its refcount.
  47.458 ++
  47.459 ++     When a GOT entry has its refcount decremented during relaxation,
  47.460 ++     it is moved to a lower index in the got_hole array.
  47.461 ++   */
  47.462 ++  struct got_entry **got_hole;
  47.463 ++  int nr_got_holes;
  47.464 ++
  47.465 ++  /* Dynamic relocations to local symbols.  Only used when linking a
  47.466 ++     shared library and -Bsymbolic is not given.  */
  47.467 ++  unsigned int local_dynamic_relocs;
  47.468 ++
  47.469 ++  bfd_boolean relocations_analyzed;
  47.470 ++  bfd_boolean symbols_adjusted;
  47.471 ++  bfd_boolean repeat_pass;
  47.472 ++  bfd_boolean direct_data_refs;
  47.473 ++  unsigned int relax_iteration;
  47.474 ++  unsigned int relax_pass;
  47.475 ++};
  47.476 ++#define avr32_elf_hash_table(p)				\
  47.477 ++  ((struct elf_avr32_link_hash_table *)((p)->hash))
  47.478 ++
  47.479 ++static struct bfd_hash_entry *
  47.480 ++avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
  47.481 ++			    struct bfd_hash_table *table,
  47.482 ++			    const char *string)
  47.483 ++{
  47.484 ++  struct elf_avr32_link_hash_entry *ret = avr32_elf_hash_entry(entry);
  47.485 ++
  47.486 ++  /* Allocate the structure if it hasn't already been allocated by a
  47.487 ++     subclass */
  47.488 ++  if (ret == NULL)
  47.489 ++    ret = (struct elf_avr32_link_hash_entry *)
  47.490 ++      bfd_hash_allocate(table, sizeof(struct elf_avr32_link_hash_entry));
  47.491 ++
  47.492 ++  if (ret == NULL)
  47.493 ++    return NULL;
  47.494 ++
  47.495 ++  memset(ret, 0, sizeof(struct elf_avr32_link_hash_entry));
  47.496 ++
  47.497 ++  /* Give the superclass a chance */
  47.498 ++  ret = (struct elf_avr32_link_hash_entry *)
  47.499 ++    _bfd_elf_link_hash_newfunc((struct bfd_hash_entry *)ret, table, string);
  47.500 ++
  47.501 ++  return (struct bfd_hash_entry *)ret;
  47.502 ++}
  47.503 ++
  47.504 ++/* Copy data from an indirect symbol to its direct symbol, hiding the
  47.505 ++   old indirect symbol.  Process additional relocation information.
  47.506 ++   Also called for weakdefs, in which case we just let
  47.507 ++   _bfd_elf_link_hash_copy_indirect copy the flags for us.  */
  47.508 ++
  47.509 ++static void
  47.510 ++avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
  47.511 ++			       struct elf_link_hash_entry *dir,
  47.512 ++			       struct elf_link_hash_entry *ind)
  47.513 ++{
  47.514 ++  struct elf_avr32_link_hash_entry *edir, *eind;
  47.515 ++
  47.516 ++  _bfd_elf_link_hash_copy_indirect (info, dir, ind);
  47.517 ++
  47.518 ++  if (ind->root.type != bfd_link_hash_indirect)
  47.519 ++    return;
  47.520 ++
  47.521 ++  edir = (struct elf_avr32_link_hash_entry *)dir;
  47.522 ++  eind = (struct elf_avr32_link_hash_entry *)ind;
  47.523 ++
  47.524 ++  edir->possibly_dynamic_relocs += eind->possibly_dynamic_relocs;
  47.525 ++  edir->no_fn_stub = edir->no_fn_stub || eind->no_fn_stub;
  47.526 ++}
  47.527 ++
  47.528 ++static struct bfd_link_hash_table *
  47.529 ++avr32_elf_link_hash_table_create(bfd *abfd)
  47.530 ++{
  47.531 ++  struct elf_avr32_link_hash_table *ret;
  47.532 ++
  47.533 ++  ret = bfd_zmalloc(sizeof(*ret));
  47.534 ++  if (ret == NULL)
  47.535 ++    return NULL;
  47.536 ++
  47.537 ++  if (! _bfd_elf_link_hash_table_init(&ret->root, abfd,
  47.538 ++				      avr32_elf_link_hash_newfunc,
  47.539 ++                      sizeof (struct elf_avr32_link_hash_entry)))
  47.540 ++    {
  47.541 ++      free(ret);
  47.542 ++      return NULL;
  47.543 ++    }
  47.544 ++
  47.545 ++  /* Prevent the BFD core from creating bogus got_entry pointers */
  47.546 ++  ret->root.init_got_refcount.glist = NULL;
  47.547 ++  ret->root.init_plt_refcount.glist = NULL;
  47.548 ++  ret->root.init_got_offset.glist = NULL;
  47.549 ++  ret->root.init_plt_offset.glist = NULL;
  47.550 ++
  47.551 ++  return &ret->root.root;
  47.552 ++}
  47.553 ++
  47.554 ++
  47.555 ++/* Initial analysis and creation of dynamic sections and symbols */
  47.556 ++
  47.557 ++static asection *
  47.558 ++create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
  47.559 ++		       unsigned int align_power);
  47.560 ++static struct elf_link_hash_entry *
  47.561 ++create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
  47.562 ++		      const char *name, asection *sec,
  47.563 ++		      bfd_vma offset);
  47.564 ++static bfd_boolean
  47.565 ++avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info);
  47.566 ++static bfd_boolean
  47.567 ++avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info);
  47.568 ++static bfd_boolean
  47.569 ++avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
  47.570 ++		    const Elf_Internal_Rela *relocs);
  47.571 ++static bfd_boolean
  47.572 ++avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
  47.573 ++				struct elf_link_hash_entry *h);
  47.574 ++
  47.575 ++static asection *
  47.576 ++create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
  47.577 ++		       unsigned int align_power)
  47.578 ++{
  47.579 ++  asection *sec;
  47.580 ++
  47.581 ++  sec = bfd_make_section(dynobj, name);
  47.582 ++  if (!sec
  47.583 ++      || !bfd_set_section_flags(dynobj, sec, flags)
  47.584 ++      || !bfd_set_section_alignment(dynobj, sec, align_power))
  47.585 ++    return NULL;
  47.586 ++
  47.587 ++  return sec;
  47.588 ++}
  47.589 ++
  47.590 ++static struct elf_link_hash_entry *
  47.591 ++create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
  47.592 ++		      const char *name, asection *sec,
  47.593 ++		      bfd_vma offset)
  47.594 ++{
  47.595 ++  struct bfd_link_hash_entry *bh = NULL;
  47.596 ++  struct elf_link_hash_entry *h;
  47.597 ++  const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
  47.598 ++
  47.599 ++  if (!(_bfd_generic_link_add_one_symbol
  47.600 ++	(info, dynobj, name, BSF_GLOBAL, sec, offset, NULL, FALSE,
  47.601 ++	 bed->collect, &bh)))
  47.602 ++    return NULL;
  47.603 ++
  47.604 ++  h = (struct elf_link_hash_entry *)bh;
  47.605 ++  h->def_regular = 1;
  47.606 ++  h->type = STT_OBJECT;
  47.607 ++  h->other = STV_HIDDEN;
  47.608 ++
  47.609 ++  return h;
  47.610 ++}
  47.611 ++
  47.612 ++static bfd_boolean
  47.613 ++avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info)
  47.614 ++{
  47.615 ++  struct elf_avr32_link_hash_table *htab;
  47.616 ++  flagword flags;
  47.617 ++  const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
  47.618 ++
  47.619 ++  htab = avr32_elf_hash_table(info);
  47.620 ++  flags = bed->dynamic_sec_flags;
  47.621 ++
  47.622 ++  if (htab->sgot)
  47.623 ++    return TRUE;
  47.624 ++
  47.625 ++  htab->sgot = create_dynamic_section(dynobj, ".got", flags, 2);
  47.626 ++  if (!htab->srelgot)
  47.627 ++    htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
  47.628 ++					   flags | SEC_READONLY, 2);
  47.629 ++
  47.630 ++  if (!htab->sgot || !htab->srelgot)
  47.631 ++    return FALSE;
  47.632 ++
  47.633 ++  htab->root.hgot = create_dynamic_symbol(dynobj, info, "_GLOBAL_OFFSET_TABLE_",
  47.634 ++					  htab->sgot, 0);
  47.635 ++  if (!htab->root.hgot)
  47.636 ++    return FALSE;
  47.637 ++
  47.638 ++  /* Make room for the GOT header */
  47.639 ++  htab->sgot->size += bed->got_header_size;
  47.640 ++
  47.641 ++  return TRUE;
  47.642 ++}
  47.643 ++
  47.644 ++/* (1) Create all dynamic (i.e. linker generated) sections that we may
  47.645 ++   need during the link */
  47.646 ++
  47.647 ++static bfd_boolean
  47.648 ++avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
  47.649 ++{
  47.650 ++  struct elf_avr32_link_hash_table *htab;
  47.651 ++  flagword flags;
  47.652 ++  const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
  47.653 ++
  47.654 ++  pr_debug("(1) create dynamic sections\n");
  47.655 ++
  47.656 ++  htab = avr32_elf_hash_table(info);
  47.657 ++  flags = bed->dynamic_sec_flags;
  47.658 ++
  47.659 ++  if (!avr32_elf_create_got_section (dynobj, info))
  47.660 ++    return FALSE;
  47.661 ++
  47.662 ++  if (!htab->sstub)
  47.663 ++    htab->sstub = create_dynamic_section(dynobj, ".stub",
  47.664 ++					 flags | SEC_READONLY | SEC_CODE, 2);
  47.665 ++
  47.666 ++  if (!htab->sstub)
  47.667 ++    return FALSE;
  47.668 ++
  47.669 ++  return TRUE;
  47.670 ++}
  47.671 ++
  47.672 ++/* (2) Go through all the relocs and count any potential GOT- or
  47.673 ++   PLT-references to each symbol */
  47.674 ++
  47.675 ++static bfd_boolean
  47.676 ++avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
  47.677 ++		    const Elf_Internal_Rela *relocs)
  47.678 ++{
  47.679 ++  Elf_Internal_Shdr *symtab_hdr;
  47.680 ++  struct elf_avr32_link_hash_table *htab;
  47.681 ++  struct elf_link_hash_entry **sym_hashes;
  47.682 ++  const Elf_Internal_Rela *rel, *rel_end;
  47.683 ++  struct got_entry **local_got_ents;
  47.684 ++  struct got_entry *got;
  47.685 ++  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
  47.686 ++  asection *sgot;
  47.687 ++  bfd *dynobj;
  47.688 ++
  47.689 ++  pr_debug("(2) check relocs for %s:<%s> (size 0x%lx)\n",
  47.690 ++	   abfd->filename, sec->name, sec->size);
  47.691 ++
  47.692 ++  if (info->relocatable)
  47.693 ++    return TRUE;
  47.694 ++
  47.695 ++  dynobj = elf_hash_table(info)->dynobj;
  47.696 ++  symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
  47.697 ++  sym_hashes = elf_sym_hashes(abfd);
  47.698 ++  htab = avr32_elf_hash_table(info);
  47.699 ++  local_got_ents = elf_local_got_ents(abfd);
  47.700 ++  sgot = htab->sgot;
  47.701 ++
  47.702 ++  rel_end = relocs + sec->reloc_count;
  47.703 ++  for (rel = relocs; rel < rel_end; rel++)
  47.704 ++    {
  47.705 ++      unsigned long r_symndx, r_type;
  47.706 ++      struct elf_avr32_link_hash_entry *h;
  47.707 ++
  47.708 ++      r_symndx = ELF32_R_SYM(rel->r_info);
  47.709 ++      r_type = ELF32_R_TYPE(rel->r_info);
  47.710 ++
  47.711 ++      /* Local symbols use local_got_ents, while others store the same
  47.712 ++	 information in the hash entry */
  47.713 ++      if (r_symndx < symtab_hdr->sh_info)
  47.714 ++	{
  47.715 ++	  pr_debug("  (2a) processing local symbol %lu\n", r_symndx);
  47.716 ++	  h = NULL;
  47.717 ++	}
  47.718 ++      else
  47.719 ++	{
  47.720 ++	  h = (struct elf_avr32_link_hash_entry *)
  47.721 ++	    sym_hashes[r_symndx - symtab_hdr->sh_info];
  47.722 ++	  while (h->root.type == bfd_link_hash_indirect
  47.723 ++		 || h->root.type == bfd_link_hash_warning)
  47.724 ++	    h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
  47.725 ++	  pr_debug("  (2a) processing symbol %s\n", h->root.root.root.string);
  47.726 ++	}
  47.727 ++
  47.728 ++      /* Some relocs require special sections to be created.  */
  47.729 ++      switch (r_type)
  47.730 ++	{
  47.731 ++	case R_AVR32_GOT32:
  47.732 ++	case R_AVR32_GOT16:
  47.733 ++	case R_AVR32_GOT8:
  47.734 ++	case R_AVR32_GOT21S:
  47.735 ++	case R_AVR32_GOT18SW:
  47.736 ++	case R_AVR32_GOT16S:
  47.737 ++	case R_AVR32_GOT7UW:
  47.738 ++	case R_AVR32_LDA_GOT:
  47.739 ++	case R_AVR32_GOTCALL:
  47.740 ++	  if (rel->r_addend)
  47.741 ++	    {
  47.742 ++	      if (info->callbacks->reloc_dangerous
  47.743 ++		  (info, _("Non-zero addend on GOT-relative relocation"),
  47.744 ++		   abfd, sec, rel->r_offset) == FALSE)
  47.745 ++		return FALSE;
  47.746 ++	    }
  47.747 ++	  /* fall through */
  47.748 ++	case R_AVR32_GOTPC:
  47.749 ++	  if (dynobj == NULL)
  47.750 ++	    elf_hash_table(info)->dynobj = dynobj = abfd;
  47.751 ++	  if (sgot == NULL && !avr32_elf_create_got_section(dynobj, info))
  47.752 ++	    return FALSE;
  47.753 ++	  break;
  47.754 ++	case R_AVR32_32:
  47.755 ++	  /* We may need to create .rela.dyn later on.  */
  47.756 ++	  if (dynobj == NULL
  47.757 ++	      && (info->shared || h != NULL)
  47.758 ++	      && (sec->flags & SEC_ALLOC))
  47.759 ++	    elf_hash_table(info)->dynobj = dynobj = abfd;
  47.760 ++	  break;
  47.761 ++	}
  47.762 ++
  47.763 ++      if (h != NULL && r_type != R_AVR32_GOT18SW)
  47.764 ++	h->no_fn_stub = TRUE;
  47.765 ++
  47.766 ++      switch (r_type)
  47.767 ++	{
  47.768 ++	case R_AVR32_GOT32:
  47.769 ++	case R_AVR32_GOT16:
  47.770 ++	case R_AVR32_GOT8:
  47.771 ++	case R_AVR32_GOT21S:
  47.772 ++	case R_AVR32_GOT18SW:
  47.773 ++	case R_AVR32_GOT16S:
  47.774 ++	case R_AVR32_GOT7UW:
  47.775 ++	case R_AVR32_LDA_GOT:
  47.776 ++	case R_AVR32_GOTCALL:
  47.777 ++	  if (h != NULL)
  47.778 ++	    {
  47.779 ++	      got = h->root.got.glist;
  47.780 ++	      if (!got)
  47.781 ++		{
  47.782 ++		  got = bfd_zalloc(abfd, sizeof(struct got_entry));
  47.783 ++		  if (!got)
  47.784 ++		    return FALSE;
  47.785 ++		  h->root.got.glist = got;
  47.786 ++		}
  47.787 ++	    }
  47.788 ++	  else
  47.789 ++	    {
  47.790 ++	      if (!local_got_ents)
  47.791 ++		{
  47.792 ++		  bfd_size_type size;
  47.793 ++		  bfd_size_type i;
  47.794 ++		  struct got_entry *tmp_entry;
  47.795 ++
  47.796 ++		  size = symtab_hdr->sh_info;
  47.797 ++		  size *= sizeof(struct got_entry *) + sizeof(struct got_entry);
  47.798 ++		  local_got_ents = bfd_zalloc(abfd, size);
  47.799 ++		  if (!local_got_ents)
  47.800 ++		    return FALSE;
  47.801 ++
  47.802 ++		  elf_local_got_ents(abfd) = local_got_ents;
  47.803 ++
  47.804 ++		  tmp_entry = (struct got_entry *)(local_got_ents
  47.805 ++						   + symtab_hdr->sh_info);
  47.806 ++		  for (i = 0; i < symtab_hdr->sh_info; i++)
  47.807 ++		    local_got_ents[i] = &tmp_entry[i];
  47.808 ++		}
  47.809 ++
  47.810 ++	      got = local_got_ents[r_symndx];
  47.811 ++	    }
  47.812 ++
  47.813 ++	  got->refcount++;
  47.814 ++	  if (got->refcount > htab->nr_got_holes)
  47.815 ++	    htab->nr_got_holes = got->refcount;
  47.816 ++	  break;
  47.817 ++
  47.818 ++	case R_AVR32_32:
  47.819 ++	  if ((info->shared || h != NULL)
  47.820 ++	      && (sec->flags & SEC_ALLOC))
  47.821 ++	    {
  47.822 ++	      if (htab->srelgot == NULL)
  47.823 ++		{
  47.824 ++		  htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
  47.825 ++							 bed->dynamic_sec_flags
  47.826 ++							 | SEC_READONLY, 2);
  47.827 ++		  if (htab->srelgot == NULL)
  47.828 ++		    return FALSE;
  47.829 ++		}
  47.830 ++
  47.831 ++	      if (sec->flags & SEC_READONLY
  47.832 ++		  && !h->readonly_reloc_sec)
  47.833 ++		{
  47.834 ++		  h->readonly_reloc_sec = sec;
  47.835 ++		  h->readonly_reloc_offset = rel->r_offset;
  47.836 ++		}
  47.837 ++
  47.838 ++	      if (h != NULL)
  47.839 ++		{
  47.840 ++		  pr_debug("Non-GOT reference to symbol %s\n",
  47.841 ++			   h->root.root.root.string);
  47.842 ++		  h->possibly_dynamic_relocs++;
  47.843 ++		}
  47.844 ++	      else
  47.845 ++		{
  47.846 ++		  pr_debug("Non-GOT reference to local symbol %lu\n",
  47.847 ++			   r_symndx);
  47.848 ++		  htab->local_dynamic_relocs++;
  47.849 ++		}
  47.850 ++	    }
  47.851 ++
  47.852 ++	  break;
  47.853 ++
  47.854 ++	  /* TODO: GNU_VTINHERIT and GNU_VTENTRY */
  47.855 ++	}
  47.856 ++    }
  47.857 ++
  47.858 ++  return TRUE;
  47.859 ++}
  47.860 ++
  47.861 ++/* (3) Adjust a symbol defined by a dynamic object and referenced by a
  47.862 ++   regular object.  The current definition is in some section of the
  47.863 ++   dynamic object, but we're not including those sections.  We have to
  47.864 ++   change the definition to something the rest of the link can
  47.865 ++   understand.  */
  47.866 ++
  47.867 ++static bfd_boolean
  47.868 ++avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
  47.869 ++				struct elf_link_hash_entry *h)
  47.870 ++{
  47.871 ++  struct elf_avr32_link_hash_table *htab;
  47.872 ++  struct elf_avr32_link_hash_entry *havr;
  47.873 ++  bfd *dynobj;
  47.874 ++
  47.875 ++  pr_debug("(3) adjust dynamic symbol %s\n", h->root.root.string);
  47.876 ++
  47.877 ++  htab = avr32_elf_hash_table(info);
  47.878 ++  havr = (struct elf_avr32_link_hash_entry *)h;
  47.879 ++  dynobj = elf_hash_table(info)->dynobj;
  47.880 ++
  47.881 ++  /* Make sure we know what is going on here.  */
  47.882 ++  BFD_ASSERT (dynobj != NULL
  47.883 ++	      && (h->u.weakdef != NULL
  47.884 ++		  || (h->def_dynamic
  47.885 ++		      && h->ref_regular
  47.886 ++		      && !h->def_regular)));
  47.887 ++
  47.888 ++  /* We don't want dynamic relocations in read-only sections. */
  47.889 ++  if (havr->readonly_reloc_sec)
  47.890 ++    {
  47.891 ++      if (info->callbacks->reloc_dangerous
  47.892 ++	  (info, _("dynamic relocation in read-only section"),
  47.893 ++	   havr->readonly_reloc_sec->owner, havr->readonly_reloc_sec,
  47.894 ++	   havr->readonly_reloc_offset) == FALSE)
  47.895 ++	return FALSE;
  47.896 ++    }
  47.897 ++
  47.898 ++  /* If this is a function, create a stub if possible and set the
  47.899 ++     symbol to the stub location.  */
  47.900 ++  if (0 && !havr->no_fn_stub)
  47.901 ++    {
  47.902 ++      if (!h->def_regular)
  47.903 ++	{
  47.904 ++	  asection *s = htab->sstub;
  47.905 ++
  47.906 ++	  BFD_ASSERT(s != NULL);
  47.907 ++
  47.908 ++	  h->root.u.def.section = s;
  47.909 ++	  h->root.u.def.value = s->size;
  47.910 ++	  h->plt.offset = s->size;
  47.911 ++	  s->size += AVR32_FUNCTION_STUB_SIZE;
  47.912 ++
  47.913 ++	  return TRUE;
  47.914 ++	}
  47.915 ++    }
  47.916 ++  else if (h->type == STT_FUNC)
  47.917 ++    {
  47.918 ++      /* This will set the entry for this symbol in the GOT to 0, and
  47.919 ++	 the dynamic linker will take care of this. */
  47.920 ++      h->root.u.def.value = 0;
  47.921 ++      return TRUE;
  47.922 ++    }
  47.923 ++
  47.924 ++  /* If this is a weak symbol, and there is a real definition, the
  47.925 ++     processor independent code will have arranged for us to see the
  47.926 ++     real definition first, and we can just use the same value.  */
  47.927 ++  if (h->u.weakdef != NULL)
  47.928 ++    {
  47.929 ++      BFD_ASSERT(h->u.weakdef->root.type == bfd_link_hash_defined
  47.930 ++		 || h->u.weakdef->root.type == bfd_link_hash_defweak);
  47.931 ++      h->root.u.def.section = h->u.weakdef->root.u.def.section;
  47.932 ++      h->root.u.def.value = h->u.weakdef->root.u.def.value;
  47.933 ++      return TRUE;
  47.934 ++    }
  47.935 ++
  47.936 ++  /* This is a reference to a symbol defined by a dynamic object which
  47.937 ++     is not a function.  */
  47.938 ++
  47.939 ++  return TRUE;
  47.940 ++}
  47.941 ++
  47.942 ++
  47.943 ++/* Garbage-collection of unused sections */
  47.944 ++
  47.945 ++static asection *
  47.946 ++avr32_elf_gc_mark_hook(asection *sec,
  47.947 ++		       struct bfd_link_info *info ATTRIBUTE_UNUSED,
  47.948 ++		       Elf_Internal_Rela *rel,
  47.949 ++		       struct elf_link_hash_entry *h,
  47.950 ++		       Elf_Internal_Sym *sym)
  47.951 ++{
  47.952 ++  if (h)
  47.953 ++    {
  47.954 ++      switch (ELF32_R_TYPE(rel->r_info))
  47.955 ++	{
  47.956 ++	  /* TODO: VTINHERIT/VTENTRY */
  47.957 ++	default:
  47.958 ++	  switch (h->root.type)
  47.959 ++	    {
  47.960 ++	    case bfd_link_hash_defined:
  47.961 ++	    case bfd_link_hash_defweak:
  47.962 ++	      return h->root.u.def.section;
  47.963 ++
  47.964 ++	    case bfd_link_hash_common:
  47.965 ++	      return h->root.u.c.p->section;
  47.966 ++
  47.967 ++	    default:
  47.968 ++	      break;
  47.969 ++	    }
  47.970 ++	}
  47.971 ++    }
  47.972 ++  else
  47.973 ++    return bfd_section_from_elf_index(sec->owner, sym->st_shndx);
  47.974 ++
  47.975 ++  return NULL;
  47.976 ++}
  47.977 ++
  47.978 ++/* Update the GOT entry reference counts for the section being removed. */
  47.979 ++static bfd_boolean
  47.980 ++avr32_elf_gc_sweep_hook(bfd *abfd,
  47.981 ++			struct bfd_link_info *info ATTRIBUTE_UNUSED,
  47.982 ++			asection *sec,
  47.983 ++			const Elf_Internal_Rela *relocs)
  47.984 ++{
  47.985 ++  Elf_Internal_Shdr *symtab_hdr;
  47.986 ++  struct elf_avr32_link_hash_entry **sym_hashes;
  47.987 ++  struct got_entry **local_got_ents;
  47.988 ++  const Elf_Internal_Rela *rel, *relend;
  47.989 ++
  47.990 ++  if (!(sec->flags & SEC_ALLOC))
  47.991 ++    return TRUE;
  47.992 ++
  47.993 ++  symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
  47.994 ++  sym_hashes = (struct elf_avr32_link_hash_entry **)elf_sym_hashes(abfd);
  47.995 ++  local_got_ents = elf_local_got_ents(abfd);
  47.996 ++
  47.997 ++  relend = relocs + sec->reloc_count;
  47.998 ++  for (rel = relocs; rel < relend; rel++)
  47.999 ++    {
 47.1000 ++      unsigned long r_symndx;
 47.1001 ++      unsigned int r_type;
 47.1002 ++      struct elf_avr32_link_hash_entry *h = NULL;
 47.1003 ++
 47.1004 ++      r_symndx = ELF32_R_SYM(rel->r_info);
 47.1005 ++      if (r_symndx >= symtab_hdr->sh_info)
 47.1006 ++	{
 47.1007 ++	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
 47.1008 ++	  while (h->root.root.type == bfd_link_hash_indirect
 47.1009 ++		 || h->root.root.type == bfd_link_hash_warning)
 47.1010 ++	    h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
 47.1011 ++	}
 47.1012 ++
 47.1013 ++      r_type = ELF32_R_TYPE(rel->r_info);
 47.1014 ++
 47.1015 ++      switch (r_type)
 47.1016 ++	{
 47.1017 ++	case R_AVR32_GOT32:
 47.1018 ++	case R_AVR32_GOT16:
 47.1019 ++	case R_AVR32_GOT8:
 47.1020 ++	case R_AVR32_GOT21S:
 47.1021 ++	case R_AVR32_GOT18SW:
 47.1022 ++	case R_AVR32_GOT16S:
 47.1023 ++	case R_AVR32_GOT7UW:
 47.1024 ++	case R_AVR32_LDA_GOT:
 47.1025 ++	case R_AVR32_GOTCALL:
 47.1026 ++	  if (h)
 47.1027 ++	    h->root.got.glist->refcount--;
 47.1028 ++	  else
 47.1029 ++	    local_got_ents[r_symndx]->refcount--;
 47.1030 ++	  break;
 47.1031 ++
 47.1032 ++	case R_AVR32_32:
 47.1033 ++	  if (info->shared || h)
 47.1034 ++	    {
 47.1035 ++	      if (h)
 47.1036 ++		h->possibly_dynamic_relocs--;
 47.1037 ++	      else
 47.1038 ++		avr32_elf_hash_table(info)->local_dynamic_relocs--;
 47.1039 ++	    }
 47.1040 ++
 47.1041 ++	default:
 47.1042 ++	  break;
 47.1043 ++	}
 47.1044 ++    }
 47.1045 ++
 47.1046 ++  return TRUE;
 47.1047 ++}
 47.1048 ++
 47.1049 ++/* Sizing and refcounting of dynamic sections */
 47.1050 ++
 47.1051 ++static void
 47.1052 ++insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
 47.1053 ++static void
 47.1054 ++unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
 47.1055 ++static void
 47.1056 ++ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
 47.1057 ++static bfd_boolean
 47.1058 ++assign_got_offsets(struct elf_avr32_link_hash_table *htab);
 47.1059 ++static bfd_boolean
 47.1060 ++allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info);
 47.1061 ++static bfd_boolean
 47.1062 ++avr32_elf_size_dynamic_sections (bfd *output_bfd,
 47.1063 ++				 struct bfd_link_info *info);
 47.1064 ++
 47.1065 ++static void
 47.1066 ++insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
 47.1067 ++{
 47.1068 ++  /* Any entries with got_refcount > htab->nr_got_holes end up in the
 47.1069 ++   * last pigeonhole without any sorting. We expect the number of such
 47.1070 ++   * entries to be small, so it is very unlikely to affect
 47.1071 ++   * performance.  */
 47.1072 ++  int entry = got->refcount;
 47.1073 ++
 47.1074 ++  if (entry > htab->nr_got_holes)
 47.1075 ++    entry = htab->nr_got_holes;
 47.1076 ++
 47.1077 ++  got->pprev = &htab->got_hole[entry];
 47.1078 ++  got->next = htab->got_hole[entry];
 47.1079 ++
 47.1080 ++  if (got->next)
 47.1081 ++    got->next->pprev = &got->next;
 47.1082 ++
 47.1083 ++  htab->got_hole[entry] = got;
 47.1084 ++}
 47.1085 ++
 47.1086 ++/* Decrement the refcount of a GOT entry and update its position in
 47.1087 ++   the pigeonhole array.  */
 47.1088 ++static void
 47.1089 ++unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
 47.1090 ++{
 47.1091 ++  BFD_ASSERT(got->refcount > 0);
 47.1092 ++
 47.1093 ++  if (got->next)
 47.1094 ++    got->next->pprev = got->pprev;
 47.1095 ++
 47.1096 ++  *(got->pprev) = got->next;
 47.1097 ++  got->refcount--;
 47.1098 ++  insert_got_entry(htab, got);
 47.1099 ++}
 47.1100 ++
 47.1101 ++static void
 47.1102 ++ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
 47.1103 ++{
 47.1104 ++  if (got->next)
 47.1105 ++    got->next->pprev = got->pprev;
 47.1106 ++
 47.1107 ++  *(got->pprev) = got->next;
 47.1108 ++  got->refcount++;
 47.1109 ++  insert_got_entry(htab, got);
 47.1110 ++
 47.1111 ++  BFD_ASSERT(got->refcount > 0);
 47.1112 ++}
 47.1113 ++
 47.1114 ++/* Assign offsets to all GOT entries we intend to keep.  The entries
 47.1115 ++   that are referenced most often are placed at low offsets so that we
 47.1116 ++   can use compact instructions as much as possible.
 47.1117 ++
 47.1118 ++   Returns TRUE if any offsets or the total size of the GOT changed.  */
 47.1119 ++
 47.1120 ++static bfd_boolean
 47.1121 ++assign_got_offsets(struct elf_avr32_link_hash_table *htab)
 47.1122 ++{
 47.1123 ++  struct got_entry *got;
 47.1124 ++  bfd_size_type got_size = 0;
 47.1125 ++  bfd_boolean changed = FALSE;
 47.1126 ++  bfd_signed_vma offset;
 47.1127 ++  int i;
 47.1128 ++
 47.1129 ++  /* The GOT header provides the address of the DYNAMIC segment, so
 47.1130 ++     we need that even if the GOT is otherwise empty.  */
 47.1131 ++  if (htab->root.dynamic_sections_created)
 47.1132 ++    got_size = AVR32_GOT_HEADER_SIZE;
 47.1133 ++
 47.1134 ++  for (i = htab->nr_got_holes; i > 0; i--)
 47.1135 ++    {
 47.1136 ++      got = htab->got_hole[i];
 47.1137 ++      while (got)
 47.1138 ++	{
 47.1139 ++	  if (got->refcount > 0)
 47.1140 ++	    {
 47.1141 ++	      offset = got_size;
 47.1142 ++	      if (got->offset != offset)
 47.1143 ++		{
 47.1144 ++		  RDBG("GOT offset changed: %ld -> %ld\n",
 47.1145 ++		       got->offset, offset);
 47.1146 ++		  changed = TRUE;
 47.1147 ++		}
 47.1148 ++	      got->offset = offset;
 47.1149 ++	      got_size += 4;
 47.1150 ++	    }
 47.1151 ++	  got = got->next;
 47.1152 ++	}
 47.1153 ++    }
 47.1154 ++
 47.1155 ++  if (htab->sgot->size != got_size)
 47.1156 ++    {
 47.1157 ++      RDBG("GOT size changed: %lu -> %lu\n", htab->sgot->size,
 47.1158 ++	   got_size);
 47.1159 ++      changed = TRUE;
 47.1160 ++    }
 47.1161 ++  htab->sgot->size = got_size;
 47.1162 ++
 47.1163 ++  RDBG("assign_got_offsets: total size %lu (%s)\n",
 47.1164 ++       got_size, changed ? "changed" : "no change");
 47.1165 ++
 47.1166 ++  return changed;
 47.1167 ++}
 47.1168 ++
 47.1169 ++static bfd_boolean
 47.1170 ++allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info)
 47.1171 ++{
 47.1172 ++  struct bfd_link_info *info = _info;
 47.1173 ++  struct elf_avr32_link_hash_table *htab;
 47.1174 ++  struct elf_avr32_link_hash_entry *havr;
 47.1175 ++  struct got_entry *got;
 47.1176 ++
 47.1177 ++  pr_debug("  (4b) allocate_dynrelocs: %s\n", h->root.root.string);
 47.1178 ++
 47.1179 ++  if (h->root.type == bfd_link_hash_indirect)
 47.1180 ++    return TRUE;
 47.1181 ++
 47.1182 ++  if (h->root.type == bfd_link_hash_warning)
 47.1183 ++    /* When warning symbols are created, they **replace** the "real"
 47.1184 ++       entry in the hash table, thus we never get to see the real
 47.1185 ++       symbol in a hash traversal.  So look at it now.  */
 47.1186 ++    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 47.1187 ++
 47.1188 ++  htab = avr32_elf_hash_table(info);
 47.1189 ++  havr = (struct elf_avr32_link_hash_entry *)h;
 47.1190 ++
 47.1191 ++  got = h->got.glist;
 47.1192 ++
 47.1193 ++  /* If got is NULL, the symbol is never referenced through the GOT */
 47.1194 ++  if (got && got->refcount > 0)
 47.1195 ++    {
 47.1196 ++      insert_got_entry(htab, got);
 47.1197 ++
 47.1198 ++      /* Shared libraries need relocs for all GOT entries unless the
 47.1199 ++	 symbol is forced local or -Bsymbolic is used.  Others need
 47.1200 ++	 relocs for everything that is not guaranteed to be defined in
 47.1201 ++	 a regular object.  */
 47.1202 ++      if ((info->shared
 47.1203 ++	   && !info->symbolic
 47.1204 ++	   && h->dynindx != -1)
 47.1205 ++	  || (htab->root.dynamic_sections_created
 47.1206 ++	      && h->def_dynamic
 47.1207 ++	      && !h->def_regular))
 47.1208 ++	htab->srelgot->size += sizeof(Elf32_External_Rela);
 47.1209 ++    }
 47.1210 ++
 47.1211 ++  if (havr->possibly_dynamic_relocs
 47.1212 ++      && (info->shared
 47.1213 ++	  || (elf_hash_table(info)->dynamic_sections_created
 47.1214 ++	      && h->def_dynamic
 47.1215 ++	      && !h->def_regular)))
 47.1216 ++    {
 47.1217 ++      pr_debug("Allocating %d dynamic reloc against symbol %s...\n",
 47.1218 ++	       havr->possibly_dynamic_relocs, h->root.root.string);
 47.1219 ++      htab->srelgot->size += (havr->possibly_dynamic_relocs
 47.1220 ++			      * sizeof(Elf32_External_Rela));
 47.1221 ++    }
 47.1222 ++
 47.1223 ++  return TRUE;
 47.1224 ++}
 47.1225 ++
 47.1226 ++/* (4) Calculate the sizes of the linker-generated sections and
 47.1227 ++   allocate memory for them.  */
 47.1228 ++
 47.1229 ++static bfd_boolean
 47.1230 ++avr32_elf_size_dynamic_sections (bfd *output_bfd,
 47.1231 ++				 struct bfd_link_info *info)
 47.1232 ++{
 47.1233 ++  struct elf_avr32_link_hash_table *htab;
 47.1234 ++  bfd *dynobj;
 47.1235 ++  asection *s;
 47.1236 ++  bfd *ibfd;
 47.1237 ++  bfd_boolean relocs;
 47.1238 ++
 47.1239 ++  pr_debug("(4) size dynamic sections\n");
 47.1240 ++
 47.1241 ++  htab = avr32_elf_hash_table(info);
 47.1242 ++  dynobj = htab->root.dynobj;
 47.1243 ++  BFD_ASSERT(dynobj != NULL);
 47.1244 ++
 47.1245 ++  if (htab->root.dynamic_sections_created)
 47.1246 ++    {
 47.1247 ++      /* Initialize the contents of the .interp section to the name of
 47.1248 ++	 the dynamic loader */
 47.1249 ++      if (info->executable)
 47.1250 ++	{
 47.1251 ++	  s = bfd_get_section_by_name(dynobj, ".interp");
 47.1252 ++	  BFD_ASSERT(s != NULL);
 47.1253 ++	  s->size = sizeof(ELF_DYNAMIC_INTERPRETER);
 47.1254 ++	  s->contents = (unsigned char *)ELF_DYNAMIC_INTERPRETER;
 47.1255 ++	}
 47.1256 ++    }
 47.1257 ++
 47.1258 ++  if (htab->nr_got_holes > 0)
 47.1259 ++    {
 47.1260 ++      /* Allocate holes for the pigeonhole sort algorithm */
 47.1261 ++      pr_debug("Highest GOT refcount: %d\n", htab->nr_got_holes);
 47.1262 ++
 47.1263 ++      /* Limit the memory usage by clipping the number of pigeonholes
 47.1264 ++       * at a predefined maximum. All entries with a higher refcount
 47.1265 ++       * will end up in the last pigeonhole.  */
 47.1266 ++    if (htab->nr_got_holes >= MAX_NR_GOT_HOLES)
 47.1267 ++    {
 47.1268 ++        htab->nr_got_holes = MAX_NR_GOT_HOLES - 1;
 47.1269 ++
 47.1270 ++        pr_debug("Limiting maximum number of GOT pigeonholes to %u\n",
 47.1271 ++                    htab->nr_got_holes);
 47.1272 ++    }
 47.1273 ++      htab->got_hole = bfd_zalloc(output_bfd,
 47.1274 ++				  sizeof(struct got_entry *)
 47.1275 ++				  * (htab->nr_got_holes + 1));
 47.1276 ++      if (!htab->got_hole)
 47.1277 ++	return FALSE;
 47.1278 ++
 47.1279 ++      /* Set up .got offsets for local syms.  */
 47.1280 ++      for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next)
 47.1281 ++	{
 47.1282 ++	  struct got_entry **local_got;
 47.1283 ++	  struct got_entry **end_local_got;
 47.1284 ++	  Elf_Internal_Shdr *symtab_hdr;
 47.1285 ++	  bfd_size_type locsymcount;
 47.1286 ++
 47.1287 ++	  pr_debug("  (4a) processing file %s...\n", ibfd->filename);
 47.1288 ++
 47.1289 ++	  BFD_ASSERT(bfd_get_flavour(ibfd) == bfd_target_elf_flavour);
 47.1290 ++
 47.1291 ++	  local_got = elf_local_got_ents(ibfd);
 47.1292 ++	  if (!local_got)
 47.1293 ++	    continue;
 47.1294 ++
 47.1295 ++	  symtab_hdr = &elf_tdata(ibfd)->symtab_hdr;
 47.1296 ++	  locsymcount = symtab_hdr->sh_info;
 47.1297 ++	  end_local_got = local_got + locsymcount;
 47.1298 ++
 47.1299 ++	  for (; local_got < end_local_got; ++local_got)
 47.1300 ++	    insert_got_entry(htab, *local_got);
 47.1301 ++	}
 47.1302 ++    }
 47.1303 ++
 47.1304 ++  /* Allocate global sym .got entries and space for global sym
 47.1305 ++     dynamic relocs */
 47.1306 ++  elf_link_hash_traverse(&htab->root, allocate_dynrelocs, info);
 47.1307 ++
 47.1308 ++  /* Now that we have sorted the GOT entries, we are ready to
 47.1309 ++     assign offsets and determine the initial size of the GOT. */
 47.1310 ++  if (htab->sgot)
 47.1311 ++    assign_got_offsets(htab);
 47.1312 ++
 47.1313 ++  /* Allocate space for local sym dynamic relocs */
 47.1314 ++  BFD_ASSERT(htab->local_dynamic_relocs == 0 || info->shared);
 47.1315 ++  if (htab->local_dynamic_relocs)
 47.1316 ++    htab->srelgot->size += (htab->local_dynamic_relocs
 47.1317 ++			    * sizeof(Elf32_External_Rela));
 47.1318 ++
 47.1319 ++  /* We now have determined the sizes of the various dynamic
 47.1320 ++     sections. Allocate memory for them. */
 47.1321 ++  relocs = FALSE;
 47.1322 ++  for (s = dynobj->sections; s; s = s->next)
 47.1323 ++    {
 47.1324 ++      if ((s->flags & SEC_LINKER_CREATED) == 0)
 47.1325 ++	continue;
 47.1326 ++
 47.1327 ++      if (s == htab->sgot
 47.1328 ++	  || s == htab->sstub)
 47.1329 ++	{
 47.1330 ++	  /* Strip this section if we don't need it */
 47.1331 ++	}
 47.1332 ++      else if (strncmp (bfd_get_section_name(dynobj, s), ".rela", 5) == 0)
 47.1333 ++	{
 47.1334 ++	  if (s->size != 0)
 47.1335 ++	    relocs = TRUE;
 47.1336 ++
 47.1337 ++	  s->reloc_count = 0;
 47.1338 ++	}
 47.1339 ++      else
 47.1340 ++	{
 47.1341 ++	  /* It's not one of our sections */
 47.1342 ++	  continue;
 47.1343 ++	}
 47.1344 ++
 47.1345 ++      if (s->size == 0)
 47.1346 ++	{
 47.1347 ++	  /* Strip unneeded sections */
 47.1348 ++	  pr_debug("Stripping section %s from output...\n", s->name);
 47.1349 ++	  /* deleted function in 2.17
 47.1350 ++      _bfd_strip_section_from_output(info, s);
 47.1351 ++      */
 47.1352 ++	  continue;
 47.1353 ++	}
 47.1354 ++
 47.1355 ++      s->contents = bfd_zalloc(dynobj, s->size);
 47.1356 ++      if (s->contents == NULL)
 47.1357 ++	return FALSE;
 47.1358 ++    }
 47.1359 ++
 47.1360 ++  if (htab->root.dynamic_sections_created)
 47.1361 ++    {
 47.1362 ++      /* Add some entries to the .dynamic section.  We fill in the
 47.1363 ++	 values later, in sh_elf_finish_dynamic_sections, but we
 47.1364 ++	 must add the entries now so that we get the correct size for
 47.1365 ++	 the .dynamic section.  The DT_DEBUG entry is filled in by the
 47.1366 ++	 dynamic linker and used by the debugger.  */
 47.1367 ++#define add_dynamic_entry(TAG, VAL) _bfd_elf_add_dynamic_entry(info, TAG, VAL)
 47.1368 ++
 47.1369 ++      if (!add_dynamic_entry(DT_PLTGOT, 0))
 47.1370 ++	return FALSE;
 47.1371 ++      if (!add_dynamic_entry(DT_AVR32_GOTSZ, 0))
 47.1372 ++	return FALSE;
 47.1373 ++
 47.1374 ++      if (info->executable)
 47.1375 ++	{
 47.1376 ++	  if (!add_dynamic_entry(DT_DEBUG, 0))
 47.1377 ++	    return FALSE;
 47.1378 ++	}
 47.1379 ++      if (relocs)
 47.1380 ++	{
 47.1381 ++	  if (!add_dynamic_entry(DT_RELA, 0)
 47.1382 ++	      || !add_dynamic_entry(DT_RELASZ, 0)
 47.1383 ++	      || !add_dynamic_entry(DT_RELAENT,
 47.1384 ++				    sizeof(Elf32_External_Rela)))
 47.1385 ++	    return FALSE;
 47.1386 ++	}
 47.1387 ++    }
 47.1388 ++#undef add_dynamic_entry
 47.1389 ++
 47.1390 ++  return TRUE;
 47.1391 ++}
 47.1392 ++
 47.1393 ++
 47.1394 ++/* Access to internal relocations, section contents and symbols.
 47.1395 ++   (stolen from the xtensa port)  */
 47.1396 ++
 47.1397 ++static Elf_Internal_Rela *
 47.1398 ++retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory);
 47.1399 ++static void
 47.1400 ++pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
 47.1401 ++static void
 47.1402 ++release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
 47.1403 ++static bfd_byte *
 47.1404 ++retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory);
 47.1405 ++/*
 47.1406 ++static void
 47.1407 ++pin_contents (asection *sec, bfd_byte *contents);
 47.1408 ++*/
 47.1409 ++static void
 47.1410 ++release_contents (asection *sec, bfd_byte *contents);
 47.1411 ++static Elf_Internal_Sym *
 47.1412 ++retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory);
 47.1413 ++/*
 47.1414 ++static void
 47.1415 ++pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
 47.1416 ++*/
 47.1417 ++static void
 47.1418 ++release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
 47.1419 ++
 47.1420 ++/* During relaxation, we need to modify relocations, section contents,
 47.1421 ++   and symbol definitions, and we need to keep the original values from
 47.1422 ++   being reloaded from the input files, i.e., we need to "pin" the
 47.1423 ++   modified values in memory.  We also want to continue to observe the
 47.1424 ++   setting of the "keep-memory" flag.  The following functions wrap the
 47.1425 ++   standard BFD functions to take care of this for us.  */
 47.1426 ++
 47.1427 ++static Elf_Internal_Rela *
 47.1428 ++retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory)
 47.1429 ++{
 47.1430 ++  /* _bfd_elf_link_read_relocs knows about caching, so no need for us
 47.1431 ++     to be clever here.  */
 47.1432 ++  return _bfd_elf_link_read_relocs(abfd, sec, NULL, NULL, keep_memory);
 47.1433 ++}
 47.1434 ++
 47.1435 ++static void
 47.1436 ++pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
 47.1437 ++{
 47.1438 ++  elf_section_data (sec)->relocs = internal_relocs;
 47.1439 ++}
 47.1440 ++
 47.1441 ++static void
 47.1442 ++release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
 47.1443 ++{
 47.1444 ++  if (internal_relocs
 47.1445 ++      && elf_section_data (sec)->relocs != internal_relocs)
 47.1446 ++    free (internal_relocs);
 47.1447 ++}
 47.1448 ++
 47.1449 ++static bfd_byte *
 47.1450 ++retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory)
 47.1451 ++{
 47.1452 ++  bfd_byte *contents;
 47.1453 ++  bfd_size_type sec_size;
 47.1454 ++
 47.1455 ++  sec_size = bfd_get_section_limit (abfd, sec);
 47.1456 ++  contents = elf_section_data (sec)->this_hdr.contents;
 47.1457 ++
 47.1458 ++  if (contents == NULL && sec_size != 0)
 47.1459 ++    {
 47.1460 ++      if (!bfd_malloc_and_get_section (abfd, sec, &contents))
 47.1461 ++	{
 47.1462 ++	  if (contents)
 47.1463 ++	    free (contents);
 47.1464 ++	  return NULL;
 47.1465 ++	}
 47.1466 ++      if (keep_memory)
 47.1467 ++	elf_section_data (sec)->this_hdr.contents = contents;
 47.1468 ++    }
 47.1469 ++  return contents;
 47.1470 ++}
 47.1471 ++
 47.1472 ++/*
 47.1473 ++static void
 47.1474 ++pin_contents (asection *sec, bfd_byte *contents)
 47.1475 ++{
 47.1476 ++  elf_section_data (sec)->this_hdr.contents = contents;
 47.1477 ++}
 47.1478 ++*/
 47.1479 ++static void
 47.1480 ++release_contents (asection *sec, bfd_byte *contents)
 47.1481 ++{
 47.1482 ++  if (contents && elf_section_data (sec)->this_hdr.contents != contents)
 47.1483 ++    free (contents);
 47.1484 ++}
 47.1485 ++
 47.1486 ++static Elf_Internal_Sym *
 47.1487 ++retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory)
 47.1488 ++{
 47.1489 ++  Elf_Internal_Shdr *symtab_hdr;
 47.1490 ++  Elf_Internal_Sym *isymbuf;
 47.1491 ++  size_t locsymcount;
 47.1492 ++
 47.1493 ++  symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
 47.1494 ++  locsymcount = symtab_hdr->sh_info;
 47.1495 ++
 47.1496 ++  isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
 47.1497 ++  if (isymbuf == NULL && locsymcount != 0)
 47.1498 ++    {
 47.1499 ++      isymbuf = bfd_elf_get_elf_syms (input_bfd, symtab_hdr, locsymcount, 0,
 47.1500 ++				      NULL, NULL, NULL);
 47.1501 ++      if (isymbuf && keep_memory)
 47.1502 ++	symtab_hdr->contents = (unsigned char *) isymbuf;
 47.1503 ++    }
 47.1504 ++
 47.1505 ++  return isymbuf;
 47.1506 ++}
 47.1507 ++
 47.1508 ++/*
 47.1509 ++static void
 47.1510 ++pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
 47.1511 ++{
 47.1512 ++  elf_tdata (input_bfd)->symtab_hdr.contents = (unsigned char *)isymbuf;
 47.1513 ++}
 47.1514 ++
 47.1515 ++*/
 47.1516 ++static void
 47.1517 ++release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
 47.1518 ++{
 47.1519 ++  if (isymbuf && (elf_tdata (input_bfd)->symtab_hdr.contents
 47.1520 ++		  != (unsigned char *)isymbuf))
 47.1521 ++    free (isymbuf);
 47.1522 ++}
 47.1523 ++
 47.1524 ++/* Data structures used during relaxation. */
 47.1525 ++
 47.1526 ++enum relax_state_id {
 47.1527 ++  RS_ERROR = -1,
 47.1528 ++  RS_NONE = 0,
 47.1529 ++  RS_ALIGN,
 47.1530 ++  RS_CPENT,
 47.1531 ++  RS_PIC_CALL,
 47.1532 ++  RS_PIC_MCALL,
 47.1533 ++  RS_PIC_RCALL2,
 47.1534 ++  RS_PIC_RCALL1,
 47.1535 ++  RS_PIC_LDA,
 47.1536 ++  RS_PIC_LDW4,
 47.1537 ++  RS_PIC_LDW3,
 47.1538 ++  RS_PIC_SUB5,
 47.1539 ++  RS_NOPIC_MCALL,
 47.1540 ++  RS_NOPIC_RCALL2,
 47.1541 ++  RS_NOPIC_RCALL1,
 47.1542 ++  RS_NOPIC_LDW4,
 47.1543 ++  RS_NOPIC_LDDPC,
 47.1544 ++  RS_NOPIC_SUB5,
 47.1545 ++  RS_NOPIC_MOV2,
 47.1546 ++  RS_NOPIC_MOV1,
 47.1547 ++  RS_RCALL2,
 47.1548 ++  RS_RCALL1,
 47.1549 ++  RS_BRC2,
 47.1550 ++  RS_BRC1,
 47.1551 ++  RS_BRAL,
 47.1552 ++  RS_RJMP,
 47.1553 ++  RS_MAX,
 47.1554 ++};
 47.1555 ++
 47.1556 ++enum reference_type {
 47.1557 ++  REF_ABSOLUTE,
 47.1558 ++  REF_PCREL,
 47.1559 ++  REF_CPOOL,
 47.1560 ++  REF_GOT,
 47.1561 ++};
 47.1562 ++
 47.1563 ++struct relax_state
 47.1564 ++{
 47.1565 ++  const char *name;
 47.1566 ++  enum relax_state_id id;
 47.1567 ++  enum relax_state_id direct;
 47.1568 ++  enum relax_state_id next;
 47.1569 ++  enum relax_state_id prev;
 47.1570 ++
 47.1571 ++  enum reference_type reftype;
 47.1572 ++
 47.1573 ++  unsigned int r_type;
 47.1574 ++
 47.1575 ++  bfd_vma opcode;
 47.1576 ++  bfd_vma opcode_mask;
 47.1577 ++
 47.1578 ++  bfd_signed_vma range_min;
 47.1579 ++  bfd_signed_vma range_max;
 47.1580 ++
 47.1581 ++  bfd_size_type size;
 47.1582 ++};
 47.1583 ++
 47.1584 ++/*
 47.1585 ++ * This is for relocs that
 47.1586 ++ *   a) has an addend or is of type R_AVR32_DIFF32, and
 47.1587 ++ *   b) references a different section than it's in, and
 47.1588 ++ *   c) references a section that is relaxable
 47.1589 ++ *
 47.1590 ++ * as well as relocs that references the constant pool, in which case
 47.1591 ++ * the add_frag member points to the frag containing the constant pool
 47.1592 ++ * entry.
 47.1593 ++ *
 47.1594 ++ * Such relocs must be fixed up whenever we delete any code. Sections
 47.1595 ++ * that don't have any relocs with all of the above properties don't
 47.1596 ++ * have any additional reloc data, but sections that do will have
 47.1597 ++ * additional data for all its relocs.
 47.1598 ++ */
 47.1599 ++struct avr32_reloc_data
 47.1600 ++{
 47.1601 ++  struct fragment *add_frag;
 47.1602 ++  struct fragment *sub_frag;
 47.1603 ++};
 47.1604 ++
 47.1605 ++/*
 47.1606 ++ * A 'fragment' is a relaxable entity, that is, code may be added or
 47.1607 ++ * deleted at the end of a fragment. When this happens, all subsequent
 47.1608 ++ * fragments in the list will have their offsets updated.
 47.1609 ++ */
 47.1610 ++struct fragment
 47.1611 ++{
 47.1612 ++  enum relax_state_id state;
 47.1613 ++  enum relax_state_id initial_state;
 47.1614 ++
 47.1615 ++  Elf_Internal_Rela *rela;
 47.1616 ++  bfd_size_type size;
 47.1617 ++  bfd_vma offset;
 47.1618 ++  int size_adjust;
 47.1619 ++  int offset_adjust;
 47.1620 ++  bfd_boolean has_grown;
 47.1621 ++
 47.1622 ++  /* Only used by constant pool entries.  When this drops to zero, the
 47.1623 ++     frag is discarded (i.e. size_adjust is set to -4.)  */
 47.1624 ++  int refcount;
 47.1625 ++};
 47.1626 ++
 47.1627 ++struct avr32_relax_data
 47.1628 ++{
 47.1629 ++  unsigned int frag_count;
 47.1630 ++  struct fragment *frag;
 47.1631 ++  struct avr32_reloc_data *reloc_data;
 47.1632 ++
 47.1633 ++  /* TRUE if this section has one or more relaxable relocations */
 47.1634 ++  bfd_boolean is_relaxable;
 47.1635 ++  unsigned int iteration;
 47.1636 ++};
 47.1637 ++
 47.1638 ++struct avr32_section_data
 47.1639 ++{
 47.1640 ++  struct bfd_elf_section_data elf;
 47.1641 ++  struct avr32_relax_data relax_data;
 47.1642 ++};
 47.1643 ++
 47.1644 ++/* Relax state definitions */
 47.1645 ++
 47.1646 ++#define PIC_MOV2_OPCODE		0xe0600000
 47.1647 ++#define PIC_MOV2_MASK		0xe1e00000
 47.1648 ++#define PIC_MOV2_RANGE_MIN	(-1048576 * 4)
 47.1649 ++#define PIC_MOV2_RANGE_MAX	(1048575 * 4)
 47.1650 ++#define PIC_MCALL_OPCODE	0xf0160000
 47.1651 ++#define PIC_MCALL_MASK		0xffff0000
 47.1652 ++#define PIC_MCALL_RANGE_MIN	(-131072)
 47.1653 ++#define PIC_MCALL_RANGE_MAX	(131068)
 47.1654 ++#define RCALL2_OPCODE		0xe0a00000
 47.1655 ++#define RCALL2_MASK		0xe1ef0000
 47.1656 ++#define RCALL2_RANGE_MIN	(-2097152)
 47.1657 ++#define RCALL2_RANGE_MAX	(2097150)
 47.1658 ++#define RCALL1_OPCODE		0xc00c0000
 47.1659 ++#define RCALL1_MASK		0xf00c0000
 47.1660 ++#define RCALL1_RANGE_MIN	(-1024)
 47.1661 ++#define RCALL1_RANGE_MAX	(1022)
 47.1662 ++#define PIC_LDW4_OPCODE		0xecf00000
 47.1663 ++#define PIC_LDW4_MASK		0xfff00000
 47.1664 ++#define PIC_LDW4_RANGE_MIN	(-32768)
 47.1665 ++#define PIC_LDW4_RANGE_MAX	(32767)
 47.1666 ++#define PIC_LDW3_OPCODE		0x6c000000
 47.1667 ++#define PIC_LDW3_MASK		0xfe000000
 47.1668 ++#define PIC_LDW3_RANGE_MIN	(0)
 47.1669 ++#define PIC_LDW3_RANGE_MAX	(124)
 47.1670 ++#define SUB5_PC_OPCODE		0xfec00000
 47.1671 ++#define SUB5_PC_MASK		0xfff00000
 47.1672 ++#define SUB5_PC_RANGE_MIN	(-32768)
 47.1673 ++#define SUB5_PC_RANGE_MAX	(32767)
 47.1674 ++#define NOPIC_MCALL_OPCODE	0xf01f0000
 47.1675 ++#define NOPIC_MCALL_MASK	0xffff0000
 47.1676 ++#define NOPIC_MCALL_RANGE_MIN	PIC_MCALL_RANGE_MIN
 47.1677 ++#define NOPIC_MCALL_RANGE_MAX	PIC_MCALL_RANGE_MAX
 47.1678 ++#define NOPIC_LDW4_OPCODE	0xfef00000
 47.1679 ++#define NOPIC_LDW4_MASK		0xfff00000
 47.1680 ++#define NOPIC_LDW4_RANGE_MIN	PIC_LDW4_RANGE_MIN
 47.1681 ++#define NOPIC_LDW4_RANGE_MAX	PIC_LDW4_RANGE_MAX
 47.1682 ++#define LDDPC_OPCODE		0x48000000
 47.1683 ++#define LDDPC_MASK		0xf8000000
 47.1684 ++#define LDDPC_RANGE_MIN		0
 47.1685 ++#define LDDPC_RANGE_MAX		508
 47.1686 ++
 47.1687 ++#define NOPIC_MOV2_OPCODE  0xe0600000
 47.1688 ++#define NOPIC_MOV2_MASK        0xe1e00000
 47.1689 ++#define NOPIC_MOV2_RANGE_MIN   (-1048576)
 47.1690 ++#define NOPIC_MOV2_RANGE_MAX   (1048575)
 47.1691 ++#define NOPIC_MOV1_OPCODE  0x30000000
 47.1692 ++#define NOPIC_MOV1_MASK        0xf0000000
 47.1693 ++#define NOPIC_MOV1_RANGE_MIN   (-128)
 47.1694 ++#define NOPIC_MOV1_RANGE_MAX   (127)
 47.1695 ++
 47.1696 ++/* Only brc2 variants with cond[3] == 0 is considered, since the
 47.1697 ++   others are not relaxable.  bral is a special case and is handled
 47.1698 ++   separately.  */
 47.1699 ++#define BRC2_OPCODE		0xe0800000
 47.1700 ++#define BRC2_MASK		0xe1e80000
 47.1701 ++#define BRC2_RANGE_MIN		(-2097152)
 47.1702 ++#define BRC2_RANGE_MAX		(2097150)
 47.1703 ++#define BRC1_OPCODE		0xc0000000
 47.1704 ++#define BRC1_MASK		0xf0080000
 47.1705 ++#define BRC1_RANGE_MIN		(-256)
 47.1706 ++#define BRC1_RANGE_MAX		(254)
 47.1707 ++#define BRAL_OPCODE		0xe08f0000
 47.1708 ++#define BRAL_MASK		0xe1ef0000
 47.1709 ++#define BRAL_RANGE_MIN		BRC2_RANGE_MIN
 47.1710 ++#define BRAL_RANGE_MAX		BRC2_RANGE_MAX
 47.1711 ++#define RJMP_OPCODE		0xc0080000
 47.1712 ++#define RJMP_MASK		0xf00c0000
 47.1713 ++#define RJMP_RANGE_MIN		(-1024)
 47.1714 ++#define RJMP_RANGE_MAX		(1022)
 47.1715 ++
 47.1716 ++/* Define a relax state using the GOT  */
 47.1717 ++#define RG(id, dir, next, prev, r_type, opc, size)			\
 47.1718 ++  { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_GOT,		\
 47.1719 ++      R_AVR32_##r_type,	opc##_OPCODE, opc##_MASK,			\
 47.1720 ++      opc##_RANGE_MIN, opc##_RANGE_MAX, size }
 47.1721 ++/* Define a relax state using the Constant Pool  */
 47.1722 ++#define RC(id, dir, next, prev, r_type, opc, size)			\
 47.1723 ++  { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_CPOOL,	\
 47.1724 ++      R_AVR32_##r_type,	opc##_OPCODE, opc##_MASK,			\
 47.1725 ++      opc##_RANGE_MIN, opc##_RANGE_MAX, size }
 47.1726 ++
 47.1727 ++/* Define a relax state using pc-relative direct reference  */
 47.1728 ++#define RP(id, dir, next, prev, r_type, opc, size)			\
 47.1729 ++  { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_PCREL,	\
 47.1730 ++      R_AVR32_##r_type,	opc##_OPCODE, opc##_MASK,			\
 47.1731 ++      opc##_RANGE_MIN, opc##_RANGE_MAX, size }
 47.1732 ++
 47.1733 ++/* Define a relax state using non-pc-relative direct reference */
 47.1734 ++#define RD(id, dir, next, prev, r_type, opc, size)         \
 47.1735 ++  { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_ABSOLUTE,   \
 47.1736 ++      R_AVR32_##r_type,    opc##_OPCODE, opc##_MASK,           \
 47.1737 ++      opc##_RANGE_MIN, opc##_RANGE_MAX, size }
 47.1738 ++
 47.1739 ++/* Define a relax state that will be handled specially  */
 47.1740 ++#define RS(id, r_type, size)						\
 47.1741 ++  { "RS_"#id, RS_##id, RS_NONE, RS_NONE, RS_NONE, REF_ABSOLUTE,		\
 47.1742 ++      R_AVR32_##r_type, 0, 0, 0, 0, size }
 47.1743 ++
 47.1744 ++const struct relax_state relax_state[RS_MAX] = {
 47.1745 ++  RS(NONE, NONE, 0),
 47.1746 ++  RS(ALIGN, ALIGN, 0),
 47.1747 ++  RS(CPENT, 32_CPENT, 4),
 47.1748 ++
 47.1749 ++  RG(PIC_CALL, PIC_RCALL1, PIC_MCALL, NONE, GOTCALL, PIC_MOV2, 10),
 47.1750 ++  RG(PIC_MCALL, PIC_RCALL1, NONE, PIC_CALL, GOT18SW, PIC_MCALL, 4),
 47.1751 ++  RP(PIC_RCALL2, NONE, PIC_RCALL1, PIC_MCALL, 22H_PCREL, RCALL2, 4),
 47.1752 ++  RP(PIC_RCALL1, NONE, NONE, PIC_RCALL2, 11H_PCREL, RCALL1, 2),
 47.1753 ++
 47.1754 ++  RG(PIC_LDA, PIC_SUB5, PIC_LDW4, NONE, LDA_GOT, PIC_MOV2, 8),
 47.1755 ++  RG(PIC_LDW4, PIC_SUB5, PIC_LDW3, PIC_LDA, GOT16S, PIC_LDW4, 4),
 47.1756 ++  RG(PIC_LDW3, PIC_SUB5, NONE, PIC_LDW4, GOT7UW, PIC_LDW3, 2),
 47.1757 ++  RP(PIC_SUB5, NONE, NONE, PIC_LDW3, 16N_PCREL, SUB5_PC, 4),
 47.1758 ++
 47.1759 ++  RC(NOPIC_MCALL, NOPIC_RCALL1, NONE, NONE, CPCALL, NOPIC_MCALL, 4),
 47.1760 ++  RP(NOPIC_RCALL2, NONE, NOPIC_RCALL1, NOPIC_MCALL, 22H_PCREL, RCALL2, 4),
 47.1761 ++  RP(NOPIC_RCALL1, NONE, NONE, NOPIC_RCALL2, 11H_PCREL, RCALL1, 2),
 47.1762 ++
 47.1763 ++  RC(NOPIC_LDW4, NOPIC_MOV1, NOPIC_LDDPC, NONE, 16_CP, NOPIC_LDW4, 4),
 47.1764 ++  RC(NOPIC_LDDPC, NOPIC_MOV1, NONE, NOPIC_LDW4, 9W_CP, LDDPC, 2),
 47.1765 ++  RP(NOPIC_SUB5, NOPIC_MOV1, NONE, NOPIC_LDDPC, 16N_PCREL, SUB5_PC, 4),
 47.1766 ++  RD(NOPIC_MOV2, NONE, NOPIC_MOV1, NOPIC_SUB5, 21S, NOPIC_MOV2, 4),
 47.1767 ++  RD(NOPIC_MOV1, NONE, NONE, NOPIC_MOV2, 8S, NOPIC_MOV1, 2),
 47.1768 ++
 47.1769 ++  RP(RCALL2, NONE, RCALL1, NONE, 22H_PCREL, RCALL2, 4),
 47.1770 ++  RP(RCALL1, NONE, NONE, RCALL2, 11H_PCREL, RCALL1, 2),
 47.1771 ++  RP(BRC2, NONE, BRC1, NONE, 22H_PCREL, BRC2, 4),
 47.1772 ++  RP(BRC1, NONE, NONE, BRC2, 9H_PCREL, BRC1, 2),
 47.1773 ++  RP(BRAL, NONE, RJMP, NONE, 22H_PCREL, BRAL, 4),
 47.1774 ++  RP(RJMP, NONE, NONE, BRAL, 11H_PCREL, RJMP, 2),
 47.1775 ++};
 47.1776 ++
 47.1777 ++static bfd_boolean
 47.1778 ++avr32_elf_new_section_hook(bfd *abfd, asection *sec)
 47.1779 ++{
 47.1780 ++  struct avr32_section_data *sdata;
 47.1781 ++
 47.1782 ++  sdata = bfd_zalloc(abfd, sizeof(struct avr32_section_data));
 47.1783 ++  if (!sdata)
 47.1784 ++    return FALSE;
 47.1785 ++
 47.1786 ++  sec->used_by_bfd = sdata;
 47.1787 ++  return _bfd_elf_new_section_hook(abfd, sec);
 47.1788 ++}
 47.1789 ++
 47.1790 ++static struct avr32_relax_data *
 47.1791 ++avr32_relax_data(asection *sec)
 47.1792 ++{
 47.1793 ++  struct avr32_section_data *sdata;
 47.1794 ++
 47.1795 ++  BFD_ASSERT(sec->used_by_bfd);
 47.1796 ++
 47.1797 ++  sdata = (struct avr32_section_data *)elf_section_data(sec);
 47.1798 ++  return &sdata->relax_data;
 47.1799 ++}
 47.1800 ++
 47.1801 ++/* Link-time relaxation */
 47.1802 ++
 47.1803 ++static bfd_boolean
 47.1804 ++avr32_elf_relax_section(bfd *abfd, asection *sec,
 47.1805 ++			struct bfd_link_info *info, bfd_boolean *again);
 47.1806 ++
 47.1807 ++enum relax_pass_id {
 47.1808 ++  RELAX_PASS_SIZE_FRAGS,
 47.1809 ++  RELAX_PASS_MOVE_DATA,
 47.1810 ++};
 47.1811 ++
 47.1812 ++/* Stolen from the xtensa port */
 47.1813 ++static int
 47.1814 ++internal_reloc_compare (const void *ap, const void *bp)
 47.1815 ++{
 47.1816 ++  const Elf_Internal_Rela *a = (const Elf_Internal_Rela *) ap;
 47.1817 ++  const Elf_Internal_Rela *b = (const Elf_Internal_Rela *) bp;
 47.1818 ++
 47.1819 ++  if (a->r_offset != b->r_offset)
 47.1820 ++    return (a->r_offset - b->r_offset);
 47.1821 ++
 47.1822 ++  /* We don't need to sort on these criteria for correctness,
 47.1823 ++     but enforcing a more strict ordering prevents unstable qsort
 47.1824 ++     from behaving differently with different implementations.
 47.1825 ++     Without the code below we get correct but different results
 47.1826 ++     on Solaris 2.7 and 2.8.  We would like to always produce the
 47.1827 ++     same results no matter the host.  */
 47.1828 ++
 47.1829 ++  if (a->r_info != b->r_info)
 47.1830 ++    return (a->r_info - b->r_info);
 47.1831 ++
 47.1832 ++  return (a->r_addend - b->r_addend);
 47.1833 ++}
 47.1834 ++
 47.1835 ++static enum relax_state_id
 47.1836 ++get_pcrel22_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
 47.1837 ++			const Elf_Internal_Rela *rela)
 47.1838 ++{
 47.1839 ++  bfd_byte *contents;
 47.1840 ++  bfd_vma insn;
 47.1841 ++  enum relax_state_id rs = RS_NONE;
 47.1842 ++
 47.1843 ++  contents = retrieve_contents(abfd, sec, info->keep_memory);
 47.1844 ++  if (!contents)
 47.1845 ++    return RS_ERROR;
 47.1846 ++
 47.1847 ++  insn = bfd_get_32(abfd, contents + rela->r_offset);
 47.1848 ++  if ((insn & RCALL2_MASK) == RCALL2_OPCODE)
 47.1849 ++    rs = RS_RCALL2;
 47.1850 ++  else if ((insn & BRAL_MASK) == BRAL_OPCODE)
 47.1851 ++    /* Optimizing bral -> rjmp gets us into all kinds of
 47.1852 ++       trouble with jump tables. Better not do it.  */
 47.1853 ++    rs = RS_NONE;
 47.1854 ++  else if ((insn & BRC2_MASK) == BRC2_OPCODE)
 47.1855 ++    rs = RS_BRC2;
 47.1856 ++
 47.1857 ++  release_contents(sec, contents);
 47.1858 ++
 47.1859 ++  return rs;
 47.1860 ++}
 47.1861 ++
 47.1862 ++static enum relax_state_id
 47.1863 ++get_initial_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
 47.1864 ++			const Elf_Internal_Rela *rela)
 47.1865 ++{
 47.1866 ++  switch (ELF_R_TYPE(rela->r_info))
 47.1867 ++    {
 47.1868 ++    case R_AVR32_GOTCALL:
 47.1869 ++      return RS_PIC_CALL;
 47.1870 ++    case R_AVR32_GOT18SW:
 47.1871 ++      return RS_PIC_MCALL;
 47.1872 ++    case R_AVR32_LDA_GOT:
 47.1873 ++      return RS_PIC_LDA;
 47.1874 ++    case R_AVR32_GOT16S:
 47.1875 ++      return RS_PIC_LDW4;
 47.1876 ++    case R_AVR32_CPCALL:
 47.1877 ++      return RS_NOPIC_MCALL;
 47.1878 ++    case R_AVR32_16_CP:
 47.1879 ++      return RS_NOPIC_LDW4;
 47.1880 ++    case R_AVR32_9W_CP:
 47.1881 ++      return RS_NOPIC_LDDPC;
 47.1882 ++    case R_AVR32_ALIGN:
 47.1883 ++      return RS_ALIGN;
 47.1884 ++    case R_AVR32_32_CPENT:
 47.1885 ++      return RS_CPENT;
 47.1886 ++    case R_AVR32_22H_PCREL:
 47.1887 ++      return get_pcrel22_relax_state(abfd, sec, info, rela);
 47.1888 ++    case R_AVR32_9H_PCREL:
 47.1889 ++      return RS_BRC1;
 47.1890 ++    default:
 47.1891 ++      return RS_NONE;
 47.1892 ++    }
 47.1893 ++}
 47.1894 ++
 47.1895 ++static bfd_boolean
 47.1896 ++reloc_is_cpool_ref(const Elf_Internal_Rela *rela)
 47.1897 ++{
 47.1898 ++  switch (ELF_R_TYPE(rela->r_info))
 47.1899 ++    {
 47.1900 ++    case R_AVR32_CPCALL:
 47.1901 ++    case R_AVR32_16_CP:
 47.1902 ++    case R_AVR32_9W_CP:
 47.1903 ++      return TRUE;
 47.1904 ++    default:
 47.1905 ++      return FALSE;
 47.1906 ++    }
 47.1907 ++}
 47.1908 ++
 47.1909 ++static struct fragment *
 47.1910 ++new_frag(bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
 47.1911 ++	 struct avr32_relax_data *rd, enum relax_state_id state,
 47.1912 ++	 Elf_Internal_Rela *rela)
 47.1913 ++{
 47.1914 ++  struct fragment *frag;
 47.1915 ++  bfd_size_type r_size;
 47.1916 ++  bfd_vma r_offset;
 47.1917 ++  unsigned int i = rd->frag_count;
 47.1918 ++
 47.1919 ++  BFD_ASSERT(state >= RS_NONE && state < RS_MAX);
 47.1920 ++
 47.1921 ++  rd->frag_count++;
 47.1922 ++  frag = bfd_realloc(rd->frag, sizeof(struct fragment) * rd->frag_count);
 47.1923 ++  if (!frag)
 47.1924 ++    return NULL;
 47.1925 ++  rd->frag = frag;
 47.1926 ++
 47.1927 ++  frag += i;
 47.1928 ++  memset(frag, 0, sizeof(struct fragment));
 47.1929 ++
 47.1930 ++  if (state == RS_ALIGN)
 47.1931 ++    r_size = (((rela->r_offset + (1 << rela->r_addend) - 1)
 47.1932 ++	       & ~((1 << rela->r_addend) - 1)) - rela->r_offset);
 47.1933 ++  else
 47.1934 ++    r_size = relax_state[state].size;
 47.1935 ++
 47.1936 ++  if (rela)
 47.1937 ++    r_offset = rela->r_offset;
 47.1938 ++  else
 47.1939 ++    r_offset = sec->size;
 47.1940 ++
 47.1941 ++  if (i == 0)
 47.1942 ++    {
 47.1943 ++      frag->offset = 0;
 47.1944 ++      frag->size = r_offset + r_size;
 47.1945 ++    }
 47.1946 ++  else
 47.1947 ++    {
 47.1948 ++      frag->offset = rd->frag[i - 1].offset + rd->frag[i - 1].size;
 47.1949 ++      frag->size = r_offset + r_size - frag->offset;
 47.1950 ++    }
 47.1951 ++
 47.1952 ++  if (state != RS_CPENT)
 47.1953 ++    /* Make sure we don't discard this frag */
 47.1954 ++    frag->refcount = 1;
 47.1955 ++
 47.1956 ++  frag->initial_state = frag->state = state;
 47.1957 ++  frag->rela = rela;
 47.1958 ++
 47.1959 ++  return frag;
 47.1960 ++}
 47.1961 ++
 47.1962 ++static struct fragment *
 47.1963 ++find_frag(asection *sec, bfd_vma offset)
 47.1964 ++{
 47.1965 ++  struct fragment *first, *last;
 47.1966 ++  struct avr32_relax_data *rd = avr32_relax_data(sec);
 47.1967 ++
 47.1968 ++  if (rd->frag_count == 0)
 47.1969 ++    return NULL;
 47.1970 ++
 47.1971 ++  first = &rd->frag[0];
 47.1972 ++  last = &rd->frag[rd->frag_count - 1];
 47.1973 ++
 47.1974 ++  /* This may be a reloc referencing the end of a section.  The last
 47.1975 ++     frag will never have a reloc associated with it, so its size will
 47.1976 ++     never change, thus the offset adjustment of the last frag will
 47.1977 ++     always be the same as the offset adjustment of the end of the
 47.1978 ++     section.  */
 47.1979 ++  if (offset == sec->size)
 47.1980 ++    {
 47.1981 ++      BFD_ASSERT(last->offset + last->size == sec->size);
 47.1982 ++      BFD_ASSERT(!last->rela);
 47.1983 ++      return last;
 47.1984 ++    }
 47.1985 ++
 47.1986 ++  while (first <= last)
 47.1987 ++    {
 47.1988 ++      struct fragment *mid;
 47.1989 ++
 47.1990 ++      mid = (last - first) / 2 + first;
 47.1991 ++      if ((mid->offset + mid->size) <= offset)
 47.1992 ++	first = mid + 1;
 47.1993 ++      else if (mid->offset > offset)
 47.1994 ++	last = mid - 1;
 47.1995 ++      else
 47.1996 ++	return mid;
 47.1997 ++    }
 47.1998 ++
 47.1999 ++  return NULL;
 47.2000 ++}
 47.2001 ++
 47.2002 ++/* Look through all relocs in a section and determine if any relocs
 47.2003 ++   may be affected by relaxation in other sections.  If so, allocate
 47.2004 ++   an array of additional relocation data which links the affected
 47.2005 ++   relocations to the frag(s) where the relaxation may occur.
 47.2006 ++
 47.2007 ++   This function also links cpool references to cpool entries and
 47.2008 ++   increments the refcount of the latter when this happens.  */
 47.2009 ++
 47.2010 ++static bfd_boolean
 47.2011 ++allocate_reloc_data(bfd *abfd, asection *sec, Elf_Internal_Rela *relocs,
 47.2012 ++		    struct bfd_link_info *info)
 47.2013 ++{
 47.2014 ++  Elf_Internal_Shdr *symtab_hdr;
 47.2015 ++  Elf_Internal_Sym *isymbuf = NULL;
 47.2016 ++  struct avr32_relax_data *rd;
 47.2017 ++  unsigned int i;
 47.2018 ++  bfd_boolean ret = FALSE;
 47.2019 ++
 47.2020 ++  symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
 47.2021 ++  rd = avr32_relax_data(sec);
 47.2022 ++
 47.2023 ++  RDBG("%s<%s>: allocate_reloc_data\n", abfd->filename, sec->name);
 47.2024 ++
 47.2025 ++  for (i = 0; i < sec->reloc_count; i++)
 47.2026 ++    {
 47.2027 ++      Elf_Internal_Rela *rel = &relocs[i];
 47.2028 ++      asection *sym_sec;
 47.2029 ++      unsigned long r_symndx;
 47.2030 ++      bfd_vma sym_value;
 47.2031 ++
 47.2032 ++      if (!rel->r_addend && ELF_R_TYPE(rel->r_info) != R_AVR32_DIFF32
 47.2033 ++	  && !reloc_is_cpool_ref(rel))
 47.2034 ++	continue;
 47.2035 ++
 47.2036 ++      r_symndx = ELF_R_SYM(rel->r_info);
 47.2037 ++
 47.2038 ++      if (r_symndx < symtab_hdr->sh_info)
 47.2039 ++	{
 47.2040 ++	  Elf_Internal_Sym *isym;
 47.2041 ++
 47.2042 ++	  if (!isymbuf)
 47.2043 ++	    isymbuf = retrieve_local_syms(abfd, info->keep_memory);
 47.2044 ++	  if (!isymbuf)
 47.2045 ++	    return FALSE;
 47.2046 ++
 47.2047 ++	  isym = &isymbuf[r_symndx];
 47.2048 ++	  sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
 47.2049 ++	  sym_value = isym->st_value;
 47.2050 ++	}
 47.2051 ++      else
 47.2052 ++	{
 47.2053 ++	  struct elf_link_hash_entry *h;
 47.2054 ++
 47.2055 ++	  h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
 47.2056 ++
 47.2057 ++	  while (h->root.type == bfd_link_hash_indirect
 47.2058 ++		 || h->root.type == bfd_link_hash_warning)
 47.2059 ++	    h = (struct elf_link_hash_entry *)h->root.u.i.link;
 47.2060 ++
 47.2061 ++	  if (h->root.type != bfd_link_hash_defined
 47.2062 ++	      && h->root.type != bfd_link_hash_defweak)
 47.2063 ++	    continue;
 47.2064 ++
 47.2065 ++	  sym_sec = h->root.u.def.section;
 47.2066 ++	  sym_value = h->root.u.def.value;
 47.2067 ++	}
 47.2068 ++
 47.2069 ++      if (sym_sec && avr32_relax_data(sym_sec)->is_relaxable)
 47.2070 ++	{
 47.2071 ++	  bfd_size_type size;
 47.2072 ++	  struct fragment *frag;
 47.2073 ++
 47.2074 ++	  if (!rd->reloc_data)
 47.2075 ++	    {
 47.2076 ++	      size = sizeof(struct avr32_reloc_data) * sec->reloc_count;
 47.2077 ++	      rd->reloc_data = bfd_zalloc(abfd, size);
 47.2078 ++	      if (!rd->reloc_data)
 47.2079 ++		goto out;
 47.2080 ++	    }
 47.2081 ++
 47.2082 ++	  RDBG("[%3d] 0x%04lx: target: 0x%lx + 0x%lx",
 47.2083 ++	       i, rel->r_offset, sym_value, rel->r_addend);
 47.2084 ++
 47.2085 ++	  frag = find_frag(sym_sec, sym_value + rel->r_addend);
 47.2086 ++	  BFD_ASSERT(frag);
 47.2087 ++	  rd->reloc_data[i].add_frag = frag;
 47.2088 ++
 47.2089 ++	  RDBG(" -> %s<%s>:%04lx\n", sym_sec->owner->filename, sym_sec->name,
 47.2090 ++	       frag->rela ? frag->rela->r_offset : sym_sec->size);
 47.2091 ++
 47.2092 ++	  if (reloc_is_cpool_ref(rel))
 47.2093 ++	    {
 47.2094 ++	      BFD_ASSERT(ELF_R_TYPE(frag->rela->r_info) == R_AVR32_32_CPENT);
 47.2095 ++	      frag->refcount++;
 47.2096 ++	    }
 47.2097 ++
 47.2098 ++	  if (ELF_R_TYPE(rel->r_info) == R_AVR32_DIFF32)
 47.2099 ++	    {
 47.2100 ++	      bfd_byte *contents;
 47.2101 ++	      bfd_signed_vma diff;
 47.2102 ++
 47.2103 ++	      contents = retrieve_contents(abfd, sec, info->keep_memory);
 47.2104 ++	      if (!contents)
 47.2105 ++		goto out;
 47.2106 ++
 47.2107 ++	      diff = bfd_get_signed_32(abfd, contents + rel->r_offset);
 47.2108 ++	      frag = find_frag(sym_sec, sym_value + rel->r_addend + diff);
 47.2109 ++	      BFD_ASSERT(frag);
 47.2110 ++	      rd->reloc_data[i].sub_frag = frag;
 47.2111 ++
 47.2112 ++	      release_contents(sec, contents);
 47.2113 ++	    }
 47.2114 ++	}
 47.2115 ++    }
 47.2116 ++
 47.2117 ++  ret = TRUE;
 47.2118 ++
 47.2119 ++ out:
 47.2120 ++  release_local_syms(abfd, isymbuf);
 47.2121 ++  return ret;
 47.2122 ++}
 47.2123 ++
 47.2124 ++static bfd_boolean
 47.2125 ++global_sym_set_frag(struct elf_avr32_link_hash_entry *havr,
 47.2126 ++		    struct bfd_link_info *info ATTRIBUTE_UNUSED)
 47.2127 ++{
 47.2128 ++  struct fragment *frag;
 47.2129 ++  asection *sec;
 47.2130 ++
 47.2131 ++  if (havr->root.root.type != bfd_link_hash_defined
 47.2132 ++      && havr->root.root.type != bfd_link_hash_defweak)
 47.2133 ++    return TRUE;
 47.2134 ++
 47.2135 ++  sec = havr->root.root.u.def.section;
 47.2136 ++  if (bfd_is_const_section(sec)
 47.2137 ++      || !avr32_relax_data(sec)->is_relaxable)
 47.2138 ++    return TRUE;
 47.2139 ++
 47.2140 ++  frag = find_frag(sec, havr->root.root.u.def.value);
 47.2141 ++  if (!frag)
 47.2142 ++    {
 47.2143 ++      unsigned int i;
 47.2144 ++      struct avr32_relax_data *rd = avr32_relax_data(sec);
 47.2145 ++
 47.2146 ++      RDBG("In %s: No frag for %s <%s+%lu> (limit %lu)\n",
 47.2147 ++	   sec->owner->filename, havr->root.root.root.string,
 47.2148 ++	   sec->name, havr->root.root.u.def.value, sec->size);
 47.2149 ++      for (i = 0; i < rd->frag_count; i++)
 47.2150 ++	RDBG("    %8lu - %8lu\n", rd->frag[i].offset,
 47.2151 ++	     rd->frag[i].offset + rd->frag[i].size);
 47.2152 ++    }
 47.2153 ++  BFD_ASSERT(frag);
 47.2154 ++
 47.2155 ++  havr->sym_frag = frag;
 47.2156 ++  return TRUE;
 47.2157 ++}
 47.2158 ++
 47.2159 ++static bfd_boolean
 47.2160 ++analyze_relocations(struct bfd_link_info *info)
 47.2161 ++{
 47.2162 ++  bfd *abfd;
 47.2163 ++  asection *sec;
 47.2164 ++
 47.2165 ++  /* Divide all relaxable sections into fragments */
 47.2166 ++  for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
 47.2167 ++    {
 47.2168 ++      if (!(elf_elfheader(abfd)->e_flags & EF_AVR32_LINKRELAX))
 47.2169 ++	{
 47.2170 ++	  if (!(*info->callbacks->warning)
 47.2171 ++	      (info, _("input is not relaxable"), NULL, abfd, NULL, 0))
 47.2172 ++	    return FALSE;
 47.2173 ++	  continue;
 47.2174 ++	}
 47.2175 ++
 47.2176 ++      for (sec = abfd->sections; sec; sec = sec->next)
 47.2177 ++	{
 47.2178 ++	  struct avr32_relax_data *rd;
 47.2179 ++	  struct fragment *frag;
 47.2180 ++	  Elf_Internal_Rela *relocs;
 47.2181 ++	  unsigned int i;
 47.2182 ++	  bfd_boolean ret = TRUE;
 47.2183 ++
 47.2184 ++	  if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
 47.2185 ++	    continue;
 47.2186 ++
 47.2187 ++	  rd = avr32_relax_data(sec);
 47.2188 ++
 47.2189 ++	  relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
 47.2190 ++	  if (!relocs)
 47.2191 ++	    return FALSE;
 47.2192 ++
 47.2193 ++	  qsort(relocs, sec->reloc_count, sizeof(Elf_Internal_Rela),
 47.2194 ++		internal_reloc_compare);
 47.2195 ++
 47.2196 ++	  for (i = 0; i < sec->reloc_count; i++)
 47.2197 ++	    {
 47.2198 ++	      enum relax_state_id state;
 47.2199 ++
 47.2200 ++	      ret = FALSE;
 47.2201 ++	      state = get_initial_relax_state(abfd, sec, info, &relocs[i]);
 47.2202 ++	      if (state == RS_ERROR)
 47.2203 ++		break;
 47.2204 ++
 47.2205 ++	      if (state)
 47.2206 ++		{
 47.2207 ++		  frag = new_frag(abfd, sec, rd, state, &relocs[i]);
 47.2208 ++		  if (!frag)
 47.2209 ++		    break;
 47.2210 ++
 47.2211 ++		  pin_internal_relocs(sec, relocs);
 47.2212 ++		  rd->is_relaxable = TRUE;
 47.2213 ++		}
 47.2214 ++
 47.2215 ++	      ret = TRUE;
 47.2216 ++	    }
 47.2217 ++
 47.2218 ++	  release_internal_relocs(sec, relocs);
 47.2219 ++	  if (!ret)
 47.2220 ++	    return ret;
 47.2221 ++
 47.2222 ++	  if (rd->is_relaxable)
 47.2223 ++	    {
 47.2224 ++	      frag = new_frag(abfd, sec, rd, RS_NONE, NULL);
 47.2225 ++	      if (!frag)
 47.2226 ++		return FALSE;
 47.2227 ++	    }
 47.2228 ++	}
 47.2229 ++    }
 47.2230 ++
 47.2231 ++  /* Link each global symbol to the fragment where it's defined.  */
 47.2232 ++  elf_link_hash_traverse(elf_hash_table(info), global_sym_set_frag, info);
 47.2233 ++
 47.2234 ++  /* Do the same for local symbols. */
 47.2235 ++  for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
 47.2236 ++    {
 47.2237 ++      Elf_Internal_Sym *isymbuf, *isym;
 47.2238 ++      struct fragment **local_sym_frag;
 47.2239 ++      unsigned int i, sym_count;
 47.2240 ++
 47.2241 ++      sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
 47.2242 ++      if (sym_count == 0)
 47.2243 ++	continue;
 47.2244 ++
 47.2245 ++      local_sym_frag = bfd_zalloc(abfd, sym_count * sizeof(struct fragment *));
 47.2246 ++      if (!local_sym_frag)
 47.2247 ++	return FALSE;
 47.2248 ++      elf_tdata(abfd)->local_sym_frag = local_sym_frag;
 47.2249 ++
 47.2250 ++      isymbuf = retrieve_local_syms(abfd, info->keep_memory);
 47.2251 ++      if (!isymbuf)
 47.2252 ++	return FALSE;
 47.2253 ++
 47.2254 ++      for (i = 0; i < sym_count; i++)
 47.2255 ++	{
 47.2256 ++	  struct avr32_relax_data *rd;
 47.2257 ++	  struct fragment *frag;
 47.2258 ++	  asection *sec;
 47.2259 ++
 47.2260 ++	  isym = &isymbuf[i];
 47.2261 ++
 47.2262 ++	  sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
 47.2263 ++	  if (!sec)
 47.2264 ++	    continue;
 47.2265 ++
 47.2266 ++	  rd = avr32_relax_data(sec);
 47.2267 ++	  if (!rd->is_relaxable)
 47.2268 ++	    continue;
 47.2269 ++
 47.2270 ++	  frag = find_frag(sec, isym->st_value);
 47.2271 ++	  BFD_ASSERT(frag);
 47.2272 ++
 47.2273 ++	  local_sym_frag[i] = frag;
 47.2274 ++	}
 47.2275 ++
 47.2276 ++      release_local_syms(abfd, isymbuf);
 47.2277 ++    }
 47.2278 ++
 47.2279 ++  /* And again for relocs with addends and constant pool references */
 47.2280 ++  for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
 47.2281 ++    for (sec = abfd->sections; sec; sec = sec->next)
 47.2282 ++      {
 47.2283 ++	Elf_Internal_Rela *relocs;
 47.2284 ++	bfd_boolean ret;
 47.2285 ++
 47.2286 ++	if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
 47.2287 ++	  continue;
 47.2288 ++
 47.2289 ++	relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
 47.2290 ++	if (!relocs)
 47.2291 ++	  return FALSE;
 47.2292 ++
 47.2293 ++	ret = allocate_reloc_data(abfd, sec, relocs, info);
 47.2294 ++
 47.2295 ++	release_internal_relocs(sec, relocs);
 47.2296 ++	if (ret == FALSE)
 47.2297 ++	  return ret;
 47.2298 ++      }
 47.2299 ++
 47.2300 ++  return TRUE;
 47.2301 ++}
 47.2302 ++
 47.2303 ++static bfd_boolean
 47.2304 ++rs_is_good_enough(const struct relax_state *rs, struct fragment *frag,
 47.2305 ++		  bfd_vma symval, bfd_vma addr, struct got_entry *got,
 47.2306 ++		  struct avr32_reloc_data *ind_data,
 47.2307 ++		  bfd_signed_vma offset_adjust)
 47.2308 ++{
 47.2309 ++  bfd_signed_vma target = 0;
 47.2310 ++
 47.2311 ++  switch (rs->reftype)
 47.2312 ++    {
 47.2313 ++    case REF_ABSOLUTE:
 47.2314 ++      target = symval;
 47.2315 ++      break;
 47.2316 ++    case REF_PCREL:
 47.2317 ++      target = symval - addr;
 47.2318 ++      break;
 47.2319 ++    case REF_CPOOL:
 47.2320 ++      /* cpool frags are always in the same section and always after
 47.2321 ++	 all frags referring to it.  So it's always correct to add in
 47.2322 ++	 offset_adjust here.  */
 47.2323 ++      target = (ind_data->add_frag->offset + ind_data->add_frag->offset_adjust
 47.2324 ++		+ offset_adjust - frag->offset - frag->offset_adjust);
 47.2325 ++      break;
 47.2326 ++    case REF_GOT:
 47.2327 ++      target = got->offset;
 47.2328 ++      break;
 47.2329 ++    default:
 47.2330 ++      abort();
 47.2331 ++    }
 47.2332 ++
 47.2333 ++  if (target >= rs->range_min && target <= rs->range_max)
 47.2334 ++    return TRUE;
 47.2335 ++  else
 47.2336 ++    return FALSE;
 47.2337 ++}
 47.2338 ++
 47.2339 ++static bfd_boolean
 47.2340 ++avr32_size_frags(bfd *abfd, asection *sec, struct bfd_link_info *info)
 47.2341 ++{
 47.2342 ++  struct elf_avr32_link_hash_table *htab;
 47.2343 ++  struct avr32_relax_data *rd;
 47.2344 ++  Elf_Internal_Shdr *symtab_hdr;
 47.2345 ++  Elf_Internal_Rela *relocs = NULL;
 47.2346 ++  Elf_Internal_Sym *isymbuf = NULL;
 47.2347 ++  struct got_entry **local_got_ents;
 47.2348 ++  struct fragment **local_sym_frag;
 47.2349 ++  bfd_boolean ret = FALSE;
 47.2350 ++  bfd_signed_vma delta = 0;
 47.2351 ++  unsigned int i;
 47.2352 ++
 47.2353 ++  htab = avr32_elf_hash_table(info);
 47.2354 ++  rd = avr32_relax_data(sec);
 47.2355 ++
 47.2356 ++  if (sec == htab->sgot)
 47.2357 ++    {
 47.2358 ++      RDBG("Relaxing GOT section (vma: 0x%lx)\n",
 47.2359 ++	   sec->output_section->vma + sec->output_offset);
 47.2360 ++      if (assign_got_offsets(htab))
 47.2361 ++	htab->repeat_pass = TRUE;
 47.2362 ++      return TRUE;
 47.2363 ++    }
 47.2364 ++
 47.2365 ++  if (!rd->is_relaxable)
 47.2366 ++    return TRUE;
 47.2367 ++
 47.2368 ++  if (!sec->rawsize)
 47.2369 ++    sec->rawsize = sec->size;
 47.2370 ++
 47.2371 ++  symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
 47.2372 ++  relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
 47.2373 ++  if (!relocs)
 47.2374 ++    goto out;
 47.2375 ++
 47.2376 ++  isymbuf = retrieve_local_syms(abfd, info->keep_memory);
 47.2377 ++  if (!isymbuf)
 47.2378 ++    goto out;
 47.2379 ++
 47.2380 ++  local_got_ents = elf_local_got_ents(abfd);
 47.2381 ++  local_sym_frag = elf_tdata(abfd)->local_sym_frag;
 47.2382 ++
 47.2383 ++  RDBG("size_frags: %s<%s>\n  vma: 0x%08lx, size: 0x%08lx\n",
 47.2384 ++       abfd->filename, sec->name,
 47.2385 ++       sec->output_section->vma + sec->output_offset, sec->size);
 47.2386 ++
 47.2387 ++  for (i = 0; i < rd->frag_count; i++)
 47.2388 ++    {
 47.2389 ++      struct fragment *frag = &rd->frag[i];
 47.2390 ++      struct avr32_reloc_data *r_data = NULL, *ind_data = NULL;
 47.2391 ++      const struct relax_state *state, *next_state;
 47.2392 ++      struct fragment *target_frag = NULL;
 47.2393 ++      asection *sym_sec = NULL;
 47.2394 ++      Elf_Internal_Rela *rela;
 47.2395 ++      struct got_entry *got;
 47.2396 ++      bfd_vma symval, r_offset, addend, addr;
 47.2397 ++      bfd_signed_vma size_adjust = 0, distance;
 47.2398 ++      unsigned long r_symndx;
 47.2399 ++      bfd_boolean defined = TRUE, dynamic = FALSE;
 47.2400 ++      unsigned char sym_type;
 47.2401 ++
 47.2402 ++      frag->offset_adjust += delta;
 47.2403 ++      state = next_state = &relax_state[frag->state];
 47.2404 ++      rela = frag->rela;
 47.2405 ++
 47.2406 ++      BFD_ASSERT(state->id == frag->state);
 47.2407 ++
 47.2408 ++      RDBG("  0x%04lx%c%d: %s [size %ld]", rela ? rela->r_offset : sec->rawsize,
 47.2409 ++	   (frag->offset_adjust < 0)?'-':'+',
 47.2410 ++	   abs(frag->offset_adjust), state->name, state->size);
 47.2411 ++
 47.2412 ++      if (!rela)
 47.2413 ++	{
 47.2414 ++	  RDBG(": no reloc, ignoring\n");
 47.2415 ++	  continue;
 47.2416 ++	}
 47.2417 ++
 47.2418 ++      BFD_ASSERT((unsigned int)(rela - relocs) < sec->reloc_count);
 47.2419 ++      BFD_ASSERT(state != RS_NONE);
 47.2420 ++
 47.2421 ++      r_offset = rela->r_offset + frag->offset_adjust;
 47.2422 ++      addr = sec->output_section->vma + sec->output_offset + r_offset;
 47.2423 ++
 47.2424 ++      switch (frag->state)
 47.2425 ++	{
 47.2426 ++	case RS_ALIGN:
 47.2427 ++	  size_adjust = ((addr + (1 << rela->r_addend) - 1)
 47.2428 ++			 & ~((1 << rela->r_addend) - 1));
 47.2429 ++	  size_adjust -= (sec->output_section->vma + sec->output_offset
 47.2430 ++			  + frag->offset + frag->offset_adjust
 47.2431 ++			  + frag->size + frag->size_adjust);
 47.2432 ++
 47.2433 ++	  RDBG(": adjusting size %lu -> %lu\n", frag->size + frag->size_adjust,
 47.2434 ++	       frag->size + frag->size_adjust + size_adjust);
 47.2435 ++	  break;
 47.2436 ++
 47.2437 ++	case RS_CPENT:
 47.2438 ++	  if (frag->refcount == 0 && frag->size_adjust == 0)
 47.2439 ++	    {
 47.2440 ++	      RDBG(": discarding frag\n");
 47.2441 ++	      size_adjust = -4;
 47.2442 ++	    }
 47.2443 ++	  else if (frag->refcount > 0 && frag->size_adjust < 0)
 47.2444 ++	    {
 47.2445 ++	      RDBG(": un-discarding frag\n");
 47.2446 ++	      size_adjust = 4;
 47.2447 ++	    }
 47.2448 ++	  break;
 47.2449 ++
 47.2450 ++	default:
 47.2451 ++	  if (rd->reloc_data)
 47.2452 ++	    r_data = &rd->reloc_data[frag->rela - relocs];
 47.2453 ++
 47.2454 ++	  /* If this is a cpool reference, we want the symbol that the
 47.2455 ++	     cpool entry refers to, not the symbol for the cpool entry
 47.2456 ++	     itself, as we already know what frag it's in.  */
 47.2457 ++	  if (relax_state[frag->initial_state].reftype == REF_CPOOL)
 47.2458 ++	    {
 47.2459 ++	      Elf_Internal_Rela *irela = r_data->add_frag->rela;
 47.2460 ++
 47.2461 ++	      r_symndx = ELF_R_SYM(irela->r_info);
 47.2462 ++	      addend = irela->r_addend;
 47.2463 ++
 47.2464 ++	      /* The constant pool must be in the same section as the
 47.2465 ++		 reloc referring to it.  */
 47.2466 ++	      BFD_ASSERT((unsigned long)(irela - relocs) < sec->reloc_count);
 47.2467 ++
 47.2468 ++	      ind_data = r_data;
 47.2469 ++	      r_data = &rd->reloc_data[irela - relocs];
 47.2470 ++	    }
 47.2471 ++	  else
 47.2472 ++	    {
 47.2473 ++	      r_symndx = ELF_R_SYM(rela->r_info);
 47.2474 ++	      addend = rela->r_addend;
 47.2475 ++	    }
 47.2476 ++
 47.2477 ++	  /* Get the value of the symbol referred to by the reloc.  */
 47.2478 ++	  if (r_symndx < symtab_hdr->sh_info)
 47.2479 ++	    {
 47.2480 ++	      Elf_Internal_Sym *isym;
 47.2481 ++
 47.2482 ++	      isym = isymbuf + r_symndx;
 47.2483 ++	      symval = 0;
 47.2484 ++
 47.2485 ++	      RDBG(" local sym %lu: ", r_symndx);
 47.2486 ++
 47.2487 ++	      if (isym->st_shndx == SHN_UNDEF)
 47.2488 ++		defined = FALSE;
 47.2489 ++	      else if (isym->st_shndx == SHN_ABS)
 47.2490 ++		sym_sec = bfd_abs_section_ptr;
 47.2491 ++	      else if (isym->st_shndx == SHN_COMMON)
 47.2492 ++		sym_sec = bfd_com_section_ptr;
 47.2493 ++	      else
 47.2494 ++		sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
 47.2495 ++
 47.2496 ++	      symval = isym->st_value;
 47.2497 ++	      sym_type = ELF_ST_TYPE(isym->st_info);
 47.2498 ++	      target_frag = local_sym_frag[r_symndx];
 47.2499 ++
 47.2500 ++	      if (local_got_ents)
 47.2501 ++		got = local_got_ents[r_symndx];
 47.2502 ++	      else
 47.2503 ++		got = NULL;
 47.2504 ++	    }
 47.2505 ++	  else
 47.2506 ++	    {
 47.2507 ++	      /* Global symbol */
 47.2508 ++	      unsigned long index;
 47.2509 ++	      struct elf_link_hash_entry *h;
 47.2510 ++	      struct elf_avr32_link_hash_entry *havr;
 47.2511 ++
 47.2512 ++	      index = r_symndx - symtab_hdr->sh_info;
 47.2513 ++	      h = elf_sym_hashes(abfd)[index];
 47.2514 ++	      BFD_ASSERT(h != NULL);
 47.2515 ++
 47.2516 ++	      while (h->root.type == bfd_link_hash_indirect
 47.2517 ++		     || h->root.type == bfd_link_hash_warning)
 47.2518 ++		h = (struct elf_link_hash_entry *)h->root.u.i.link;
 47.2519 ++
 47.2520 ++	      havr = (struct elf_avr32_link_hash_entry *)h;
 47.2521 ++	      got = h->got.glist;
 47.2522 ++
 47.2523 ++	      symval = 0;
 47.2524 ++
 47.2525 ++	      RDBG(" %s: ", h->root.root.string);
 47.2526 ++
 47.2527 ++	      if (h->root.type != bfd_link_hash_defined
 47.2528 ++		  && h->root.type != bfd_link_hash_defweak)
 47.2529 ++		{
 47.2530 ++		  RDBG("(undef)");
 47.2531 ++		  defined = FALSE;
 47.2532 ++		}
 47.2533 ++	      else if ((info->shared && !info->symbolic && h->dynindx != -1)
 47.2534 ++		       || (htab->root.dynamic_sections_created
 47.2535 ++			   && h->def_dynamic && !h->def_regular))
 47.2536 ++		{
 47.2537 ++		  RDBG("(dynamic)");
 47.2538 ++		  dynamic = TRUE;
 47.2539 ++		  sym_sec = h->root.u.def.section;
 47.2540 ++		}
 47.2541 ++	      else
 47.2542 ++		{
 47.2543 ++		  sym_sec = h->root.u.def.section;
 47.2544 ++		  symval = h->root.u.def.value;
 47.2545 ++		  target_frag = havr->sym_frag;
 47.2546 ++		}
 47.2547 ++
 47.2548 ++	      sym_type = h->type;
 47.2549 ++	    }
 47.2550 ++
 47.2551 ++	  /* Thanks to elf32-ppc for this one.  */
 47.2552 ++	  if (sym_sec && sym_sec->sec_info_type == ELF_INFO_TYPE_MERGE)
 47.2553 ++	    {
 47.2554 ++	      /* At this stage in linking, no SEC_MERGE symbol has been
 47.2555 ++		 adjusted, so all references to such symbols need to be
 47.2556 ++		 passed through _bfd_merged_section_offset.  (Later, in
 47.2557 ++		 relocate_section, all SEC_MERGE symbols *except* for
 47.2558 ++		 section symbols have been adjusted.)
 47.2559 ++
 47.2560 ++	         SEC_MERGE sections are not relaxed by us, as they
 47.2561 ++	         shouldn't contain any code.  */
 47.2562 ++
 47.2563 ++	      BFD_ASSERT(!target_frag && !(r_data && r_data->add_frag));
 47.2564 ++
 47.2565 ++	      /* gas may reduce relocations against symbols in SEC_MERGE
 47.2566 ++		 sections to a relocation against the section symbol when
 47.2567 ++		 the original addend was zero.  When the reloc is against
 47.2568 ++		 a section symbol we should include the addend in the
 47.2569 ++		 offset passed to _bfd_merged_section_offset, since the
 47.2570 ++		 location of interest is the original symbol.  On the
 47.2571 ++		 other hand, an access to "sym+addend" where "sym" is not
 47.2572 ++		 a section symbol should not include the addend;  Such an
 47.2573 ++		 access is presumed to be an offset from "sym";  The
 47.2574 ++		 location of interest is just "sym".  */
 47.2575 ++	      RDBG("\n    MERGE: %s: 0x%lx+0x%lx+0x%lx -> ",
 47.2576 ++		   (sym_type == STT_SECTION)?"section":"not section",
 47.2577 ++		   sym_sec->output_section->vma + sym_sec->output_offset,
 47.2578 ++		   symval, addend);
 47.2579 ++
 47.2580 ++	      if (sym_type == STT_SECTION)
 47.2581 ++		symval += addend;
 47.2582 ++
 47.2583 ++	      symval = (_bfd_merged_section_offset
 47.2584 ++			(abfd, &sym_sec,
 47.2585 ++			 elf_section_data(sym_sec)->sec_info, symval));
 47.2586 ++
 47.2587 ++	      if (sym_type != STT_SECTION)
 47.2588 ++		symval += addend;
 47.2589 ++	    }
 47.2590 ++	  else
 47.2591 ++	    symval += addend;
 47.2592 ++
 47.2593 ++	  if (defined && !dynamic)
 47.2594 ++	    {
 47.2595 ++	      RDBG("0x%lx+0x%lx",
 47.2596 ++		   sym_sec->output_section->vma + sym_sec->output_offset,
 47.2597 ++		   symval);
 47.2598 ++	      symval += sym_sec->output_section->vma + sym_sec->output_offset;
 47.2599 ++	    }
 47.2600 ++
 47.2601 ++	  if (r_data && r_data->add_frag)
 47.2602 ++	    /* If the add_frag pointer is set, it means that this reloc
 47.2603 ++	       has an addend that may be affected by relaxation.  */
 47.2604 ++	    target_frag = r_data->add_frag;
 47.2605 ++
 47.2606 ++	  if (target_frag)
 47.2607 ++	    {
 47.2608 ++	      symval += target_frag->offset_adjust;
 47.2609 ++
 47.2610 ++	      /* If target_frag comes after this frag in the same
 47.2611 ++		 section, we should assume that it will be moved by
 47.2612 ++		 the same amount we are.  */
 47.2613 ++	      if ((target_frag - rd->frag) < (int)rd->frag_count
 47.2614 ++		  && target_frag > frag)
 47.2615 ++		symval += delta;
 47.2616 ++	    }
 47.2617 ++
 47.2618 ++	  distance = symval - addr;
 47.2619 ++
 47.2620 ++	  /* First, try to make a direct reference.  If the symbol is
 47.2621 ++	     dynamic or undefined, we must take care not to change its
 47.2622 ++	     reference type, that is, we can't make it direct.
 47.2623 ++
 47.2624 ++	     Also, it seems like some sections may actually be resized
 47.2625 ++	     after the relaxation code is done, so we can't really
 47.2626 ++	     trust that our "distance" is correct.  There's really no
 47.2627 ++	     easy solution to this problem, so we'll just disallow
 47.2628 ++	     direct references to SEC_DATA sections.
 47.2629 ++
 47.2630 ++	     Oh, and .bss isn't actually SEC_DATA, so we disallow
 47.2631 ++	     !SEC_HAS_CONTENTS as well. */
 47.2632 ++	  if (!dynamic && defined
 47.2633 ++	      && (htab->direct_data_refs
 47.2634 ++		  || (!(sym_sec->flags & SEC_DATA)
 47.2635 ++		      && (sym_sec->flags & SEC_HAS_CONTENTS)))
 47.2636 ++	      && next_state->direct)
 47.2637 ++	    {
 47.2638 ++	      next_state = &relax_state[next_state->direct];
 47.2639 ++	      RDBG(" D-> %s", next_state->name);
 47.2640 ++	    }
 47.2641 ++
 47.2642 ++	  /* Iterate backwards until we find a state that fits.  */
 47.2643 ++	  while (next_state->prev
 47.2644 ++		 && !rs_is_good_enough(next_state, frag, symval, addr,
 47.2645 ++				       got, ind_data, delta))
 47.2646 ++	    {
 47.2647 ++	      next_state = &relax_state[next_state->prev];
 47.2648 ++	      RDBG(" P-> %s", next_state->name);
 47.2649 ++	    }
 47.2650 ++
 47.2651 ++	  /* Then try to find the best possible state.  */
 47.2652 ++	  while (next_state->next)
 47.2653 ++	    {
 47.2654 ++	      const struct relax_state *candidate;
 47.2655 ++
 47.2656 ++	      candidate = &relax_state[next_state->next];
 47.2657 ++	      if (!rs_is_good_enough(candidate, frag, symval, addr, got,
 47.2658 ++				     ind_data, delta))
 47.2659 ++		break;
 47.2660 ++
 47.2661 ++	      next_state = candidate;
 47.2662 ++	      RDBG(" N-> %s", next_state->name);
 47.2663 ++	    }
 47.2664 ++
 47.2665 ++	  RDBG(" [size %ld]\n", next_state->size);
 47.2666 ++
 47.2667 ++	  BFD_ASSERT(next_state->id);
 47.2668 ++	  BFD_ASSERT(!dynamic || next_state->reftype == REF_GOT);
 47.2669 ++
 47.2670 ++	  size_adjust = next_state->size - state->size;
 47.2671 ++
 47.2672 ++	  /* There's a theoretical possibility that shrinking one frag
 47.2673 ++	     may cause another to grow, which may cause the first one to
 47.2674 ++	     grow as well, and we're back where we started.  Avoid this
 47.2675 ++	     scenario by disallowing a frag that has grown to ever
 47.2676 ++	     shrink again.  */
 47.2677 ++	  if (state->reftype == REF_GOT && next_state->reftype != REF_GOT)
 47.2678 ++	    {
 47.2679 ++	      if (frag->has_grown)
 47.2680 ++		next_state = state;
 47.2681 ++	      else
 47.2682 ++		unref_got_entry(htab, got);
 47.2683 ++	    }
 47.2684 ++	  else if (state->reftype != REF_GOT && next_state->reftype == REF_GOT)
 47.2685 ++	    {
 47.2686 ++	      ref_got_entry(htab, got);
 47.2687 ++	      frag->has_grown = TRUE;
 47.2688 ++	    }
 47.2689 ++	  else if (state->reftype == REF_CPOOL
 47.2690 ++		   && next_state->reftype != REF_CPOOL)
 47.2691 ++	    {
 47.2692 ++	      if (frag->has_grown)
 47.2693 ++		next_state = state;
 47.2694 ++	      else
 47.2695 ++		ind_data->add_frag->refcount--;
 47.2696 ++	    }
 47.2697 ++	  else if (state->reftype != REF_CPOOL
 47.2698 ++		   && next_state->reftype == REF_CPOOL)
 47.2699 ++	    {
 47.2700 ++	      ind_data->add_frag->refcount++;
 47.2701 ++	      frag->has_grown = TRUE;
 47.2702 ++	    }
 47.2703 ++	  else
 47.2704 ++	    {
 47.2705 ++	      if (frag->has_grown && size_adjust < 0)
 47.2706 ++		next_state = state;
 47.2707 ++	      else if (size_adjust > 0)
 47.2708 ++		frag->has_grown = TRUE;
 47.2709 ++	    }
 47.2710 ++
 47.2711 ++	  size_adjust = next_state->size - state->size;
 47.2712 ++	  frag->state = next_state->id;
 47.2713 ++
 47.2714 ++	  break;
 47.2715 ++	}
 47.2716 ++
 47.2717 ++      if (size_adjust)
 47.2718 ++	htab->repeat_pass = TRUE;
 47.2719 ++
 47.2720 ++      frag->size_adjust += size_adjust;
 47.2721 ++      sec->size += size_adjust;
 47.2722 ++      delta += size_adjust;
 47.2723 ++
 47.2724 ++      BFD_ASSERT((frag->offset + frag->offset_adjust
 47.2725 ++		  + frag->size + frag->size_adjust)
 47.2726 ++		 == (frag[1].offset + frag[1].offset_adjust + delta));
 47.2727 ++    }
 47.2728 ++
 47.2729 ++  ret = TRUE;
 47.2730 ++
 47.2731 ++ out:
 47.2732 ++  release_local_syms(abfd, isymbuf);
 47.2733 ++  release_internal_relocs(sec, relocs);
 47.2734 ++  return ret;
 47.2735 ++}
 47.2736 ++
 47.2737 ++static bfd_boolean
 47.2738 ++adjust_global_symbol(struct elf_avr32_link_hash_entry *havr,
 47.2739 ++		     struct bfd_link_info *info ATTRIBUTE_UNUSED)
 47.2740 ++{
 47.2741 ++  struct elf_link_hash_entry *h = &havr->root;
 47.2742 ++
 47.2743 ++  if (havr->sym_frag && (h->root.type == bfd_link_hash_defined
 47.2744 ++			 || h->root.type == bfd_link_hash_defweak))
 47.2745 ++    {
 47.2746 ++      RDBG("adjust_global_symbol: %s 0x%08lx -> 0x%08lx\n",
 47.2747 ++	   h->root.root.string, h->root.u.def.value,
 47.2748 ++	   h->root.u.def.value + havr->sym_frag->offset_adjust);
 47.2749 ++      h->root.u.def.value += havr->sym_frag->offset_adjust;
 47.2750 ++    }
 47.2751 ++  return TRUE;
 47.2752 ++}
 47.2753 ++
 47.2754 ++static bfd_boolean
 47.2755 ++adjust_syms(struct bfd_link_info *info)
 47.2756 ++{
 47.2757 ++  struct elf_avr32_link_hash_table *htab;
 47.2758 ++  bfd *abfd;
 47.2759 ++
 47.2760 ++  htab = avr32_elf_hash_table(info);
 47.2761 ++  elf_link_hash_traverse(&htab->root, adjust_global_symbol, info);
 47.2762 ++
 47.2763 ++  for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
 47.2764 ++    {
 47.2765 ++      Elf_Internal_Sym *isymbuf;
 47.2766 ++      struct fragment **local_sym_frag, *frag;
 47.2767 ++      unsigned int i, sym_count;
 47.2768 ++
 47.2769 ++      sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
 47.2770 ++      if (sym_count == 0)
 47.2771 ++	continue;
 47.2772 ++
 47.2773 ++      isymbuf = retrieve_local_syms(abfd, info->keep_memory);
 47.2774 ++      if (!isymbuf)
 47.2775 ++	return FALSE;
 47.2776 ++
 47.2777 ++      local_sym_frag = elf_tdata(abfd)->local_sym_frag;
 47.2778 ++
 47.2779 ++      for (i = 0; i < sym_count; i++)
 47.2780 ++	{
 47.2781 ++	  frag = local_sym_frag[i];
 47.2782 ++	  if (frag)
 47.2783 ++	    {
 47.2784 ++	      RDBG("adjust_local_symbol: %s[%u] 0x%08lx -> 0x%08lx\n",
 47.2785 ++		   abfd->filename, i, isymbuf[i].st_value,
 47.2786 ++		   isymbuf[i].st_value + frag->offset_adjust);
 47.2787 ++	      isymbuf[i].st_value += frag->offset_adjust;
 47.2788 ++	    }
 47.2789 ++	}
 47.2790 ++
 47.2791 ++      release_local_syms(abfd, isymbuf);
 47.2792 ++    }
 47.2793 ++
 47.2794 ++  htab->symbols_adjusted = TRUE;
 47.2795 ++  return TRUE;
 47.2796 ++}
 47.2797 ++
 47.2798 ++static bfd_boolean
 47.2799 ++adjust_relocs(bfd *abfd, asection *sec, struct bfd_link_info *info)
 47.2800 ++{
 47.2801 ++  struct avr32_relax_data *rd;
 47.2802 ++  Elf_Internal_Rela *relocs;
 47.2803 ++  Elf_Internal_Shdr *symtab_hdr;
 47.2804 ++  unsigned int i;
 47.2805 ++  bfd_boolean ret = FALSE;
 47.2806 ++
 47.2807 ++  rd = avr32_relax_data(sec);
 47.2808 ++  if (!rd->reloc_data)
 47.2809 ++    return TRUE;
 47.2810 ++
 47.2811 ++  RDBG("adjust_relocs: %s<%s> (count: %u)\n", abfd->filename, sec->name,
 47.2812 ++       sec->reloc_count);
 47.2813 ++
 47.2814 ++  relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
 47.2815 ++  if (!relocs)
 47.2816 ++    return FALSE;
 47.2817 ++
 47.2818 ++  symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
 47.2819 ++
 47.2820 ++  for (i = 0; i < sec->reloc_count; i++)
 47.2821 ++    {
 47.2822 ++      Elf_Internal_Rela *rela = &relocs[i];
 47.2823 ++      struct avr32_reloc_data *r_data = &rd->reloc_data[i];
 47.2824 ++      struct fragment *sym_frag;
 47.2825 ++      unsigned long r_symndx;
 47.2826 ++
 47.2827 ++      if (r_data->add_frag)
 47.2828 ++	{
 47.2829 ++	  r_symndx = ELF_R_SYM(rela->r_info);
 47.2830 ++
 47.2831 ++	  if (r_symndx < symtab_hdr->sh_info)
 47.2832 ++	    sym_frag = elf_tdata(abfd)->local_sym_frag[r_symndx];
 47.2833 ++	  else
 47.2834 ++	    {
 47.2835 ++	      struct elf_link_hash_entry *h;
 47.2836 ++
 47.2837 ++	      h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
 47.2838 ++
 47.2839 ++	      while (h->root.type == bfd_link_hash_indirect
 47.2840 ++		     || h->root.type == bfd_link_hash_warning)
 47.2841 ++		h = (struct elf_link_hash_entry *)h->root.u.i.link;
 47.2842 ++
 47.2843 ++	      BFD_ASSERT(h->root.type == bfd_link_hash_defined
 47.2844 ++			 || h->root.type == bfd_link_hash_defweak);
 47.2845 ++
 47.2846 ++	      sym_frag = ((struct elf_avr32_link_hash_entry *)h)->sym_frag;
 47.2847 ++	    }
 47.2848 ++
 47.2849 ++	  RDBG("    addend: 0x%08lx -> 0x%08lx\n",
 47.2850 ++	       rela->r_addend,
 47.2851 ++	       rela->r_addend + r_data->add_frag->offset_adjust
 47.2852 ++	       - (sym_frag ? sym_frag->offset_adjust : 0));
 47.2853 ++
 47.2854 ++	  /* If this is against a section symbol, we won't find any
 47.2855 ++	     sym_frag, so we'll just adjust the addend.  */
 47.2856 ++	  rela->r_addend += r_data->add_frag->offset_adjust;
 47.2857 ++	  if (sym_frag)
 47.2858 ++	    rela->r_addend -= sym_frag->offset_adjust;
 47.2859 ++
 47.2860 ++	  if (r_data->sub_frag)
 47.2861 ++	    {
 47.2862 ++	      bfd_byte *contents;
 47.2863 ++	      bfd_signed_vma diff;
 47.2864 ++
 47.2865 ++	      contents = retrieve_contents(abfd, sec, info->keep_memory);
 47.2866 ++	      if (!contents)
 47.2867 ++		goto out;
 47.2868 ++
 47.2869 ++	      /* I realize now that sub_frag is misnamed.  It's
 47.2870 ++		 actually add_frag which is subtracted in this
 47.2871 ++		 case...  */
 47.2872 ++	      diff = bfd_get_signed_32(abfd, contents + rela->r_offset);
 47.2873 ++	      diff += (r_data->sub_frag->offset_adjust
 47.2874 ++		       - r_data->add_frag->offset_adjust);
 47.2875 ++	      bfd_put_32(abfd, diff, contents + rela->r_offset);
 47.2876 ++
 47.2877 ++	      RDBG("   0x%lx: DIFF32 updated: 0x%lx\n", rela->r_offset, diff);
 47.2878 ++
 47.2879 ++	      release_contents(sec, contents);
 47.2880 ++	    }
 47.2881 ++	}
 47.2882 ++      else
 47.2883 ++	BFD_ASSERT(!r_data->sub_frag);
 47.2884 ++    }
 47.2885 ++
 47.2886 ++  ret = TRUE;
 47.2887 ++
 47.2888 ++ out:
 47.2889 ++  release_internal_relocs(sec, relocs);
 47.2890 ++  return ret;
 47.2891 ++}
 47.2892 ++
 47.2893 ++static bfd_boolean
 47.2894 ++avr32_move_data(bfd *abfd, asection *sec, struct bfd_link_info *info)
 47.2895 ++{
 47.2896 ++  struct elf_avr32_link_hash_table *htab;
 47.2897 ++  struct avr32_relax_data *rd;
 47.2898 ++  struct fragment *frag, *fragend;
 47.2899 ++  Elf_Internal_Rela *relocs = NULL;
 47.2900 ++  bfd_byte *contents = NULL;
 47.2901 ++  unsigned int i;
 47.2902 ++  bfd_boolean ret = FALSE;
 47.2903 ++
 47.2904 ++  htab = avr32_elf_hash_table(info);
 47.2905 ++  rd = avr32_relax_data(sec);
 47.2906 ++
 47.2907 ++  if (!htab->symbols_adjusted)
 47.2908 ++    if (!adjust_syms(info))
 47.2909 ++      return FALSE;
 47.2910 ++
 47.2911 ++  if (rd->is_relaxable)
 47.2912 ++    {
 47.2913 ++      /* Resize the section first, so that we can be sure that enough
 47.2914 ++	 memory is allocated in case the section has grown.  */
 47.2915 ++      if (sec->size > sec->rawsize
 47.2916 ++	  && elf_section_data(sec)->this_hdr.contents)
 47.2917 ++	{
 47.2918 ++	  /* We must not use cached data if the section has grown.  */
 47.2919 ++	  free(elf_section_data(sec)->this_hdr.contents);
 47.2920 ++	  elf_section_data(sec)->this_hdr.contents = NULL;
 47.2921 ++	}
 47.2922 ++
 47.2923 ++      relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
 47.2924 ++      if (!relocs)
 47.2925 ++	goto out;
 47.2926 ++      contents = retrieve_contents(abfd, sec, info->keep_memory);
 47.2927 ++      if (!contents)
 47.2928 ++	goto out;
 47.2929 ++
 47.2930 ++      fragend = rd->frag + rd->frag_count;
 47.2931 ++
 47.2932 ++      RDBG("move_data: %s<%s>: relocs=%p, contents=%p\n",
 47.2933 ++	   abfd->filename, sec->name, relocs, contents);
 47.2934 ++
 47.2935 ++      /* First, move the data into place. We must take care to move
 47.2936 ++	 frags in the right order so that we don't accidentally
 47.2937 ++	 overwrite parts of the next frag.  */
 47.2938 ++      for (frag = rd->frag; frag < fragend; frag++)
 47.2939 ++	{
 47.2940 ++	  RDBG("    0x%08lx%c0x%x: size 0x%lx%c0x%x\n",
 47.2941 ++	       frag->offset, frag->offset_adjust >= 0 ? '+' : '-',
 47.2942 ++	       abs(frag->offset_adjust),
 47.2943 ++	       frag->size, frag->size_adjust >= 0 ? '+' : '-',
 47.2944 ++	       abs(frag->size_adjust));
 47.2945 ++	  if (frag->offset_adjust > 0)
 47.2946 ++	    {
 47.2947 ++	      struct fragment *prev = frag - 1;
 47.2948 ++	      struct fragment *last;
 47.2949 ++
 47.2950 ++	      for (last = frag; last < fragend && last->offset_adjust > 0;
 47.2951 ++		   last++) ;
 47.2952 ++
 47.2953 ++	      if (last == fragend)
 47.2954 ++		last--;
 47.2955 ++
 47.2956 ++	      for (frag = last; frag != prev; frag--)
 47.2957 ++		{
 47.2958 ++		  if (frag->offset_adjust
 47.2959 ++		      && frag->size + frag->size_adjust > 0)
 47.2960 ++		    {
 47.2961 ++		      RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
 47.2962 ++			   frag->offset, frag->offset + frag->offset_adjust,
 47.2963 ++			   frag->size + frag->size_adjust);
 47.2964 ++		      memmove(contents + frag->offset + frag->offset_adjust,
 47.2965 ++			      contents + frag->offset,
 47.2966 ++			      frag->size + frag->size_adjust);
 47.2967 ++		    }
 47.2968 ++		}
 47.2969 ++	      frag = last;
 47.2970 ++	    }
 47.2971 ++	  else if (frag->offset_adjust && frag->size + frag->size_adjust > 0)
 47.2972 ++	    {
 47.2973 ++	      RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
 47.2974 ++		   frag->offset, frag->offset + frag->offset_adjust,
 47.2975 ++		   frag->size + frag->size_adjust);
 47.2976 ++	      memmove(contents + frag->offset + frag->offset_adjust,
 47.2977 ++		      contents + frag->offset,
 47.2978 ++		      frag->size + frag->size_adjust);
 47.2979 ++	    }
 47.2980 ++	}
 47.2981 ++
 47.2982 ++      i = 0;
 47.2983 ++
 47.2984 ++      for (frag = rd->frag; frag < fragend; frag++)
 47.2985 ++	{
 47.2986 ++	  const struct relax_state *state, *istate;
 47.2987 ++	  struct avr32_reloc_data *r_data = NULL;
 47.2988 ++
 47.2989 ++	  istate = &relax_state[frag->initial_state];
 47.2990 ++	  state = &relax_state[frag->state];
 47.2991 ++
 47.2992 ++	  if (rd->reloc_data)
 47.2993 ++	    r_data = &rd->reloc_data[frag->rela - relocs];
 47.2994 ++
 47.2995 ++	  BFD_ASSERT((long)(frag->size + frag->size_adjust) >= 0);
 47.2996 ++	  BFD_ASSERT(state->reftype != REF_CPOOL
 47.2997 ++		     || r_data->add_frag->refcount > 0);
 47.2998 ++
 47.2999 ++	  if (istate->reftype == REF_CPOOL && state->reftype != REF_CPOOL)
 47.3000 ++	    {
 47.3001 ++	      struct fragment *ifrag;
 47.3002 ++
 47.3003 ++	      /* An indirect reference through the cpool has been
 47.3004 ++		 converted to a direct reference.  We must update the
 47.3005 ++		 reloc to point to the symbol itself instead of the
 47.3006 ++		 constant pool entry.  The reloc type will be updated
 47.3007 ++		 later.  */
 47.3008 ++	      ifrag = r_data->add_frag;
 47.3009 ++	      frag->rela->r_info = ifrag->rela->r_info;
 47.3010 ++	      frag->rela->r_addend = ifrag->rela->r_addend;
 47.3011 ++
 47.3012 ++	      /* Copy the reloc data so the addend will be adjusted
 47.3013 ++		 correctly later.  */
 47.3014 ++	      *r_data = rd->reloc_data[ifrag->rela - relocs];
 47.3015 ++	    }
 47.3016 ++
 47.3017 ++	  /* Move all relocs covered by this frag.  */
 47.3018 ++	  if (frag->rela)
 47.3019 ++	    BFD_ASSERT(&relocs[i] <= frag->rela);
 47.3020 ++	  else
 47.3021 ++	    BFD_ASSERT((frag + 1) == fragend && frag->state == RS_NONE);
 47.3022 ++
 47.3023 ++	  if (frag == rd->frag)
 47.3024 ++	    BFD_ASSERT(i == 0);
 47.3025 ++	  else
 47.3026 ++	    BFD_ASSERT(&relocs[i] > frag[-1].rela);
 47.3027 ++
 47.3028 ++	  /* If non-null, frag->rela is the last relocation in the
 47.3029 ++	     fragment.  frag->rela can only be null in the last
 47.3030 ++	     fragment, so in that case, we'll just do the rest.  */
 47.3031 ++	  for (; (i < sec->reloc_count
 47.3032 ++		  && (!frag->rela || &relocs[i] <= frag->rela)); i++)
 47.3033 ++	    {
 47.3034 ++	      RDBG("[%4u] r_offset 0x%08lx -> 0x%08lx\n", i, relocs[i].r_offset,
 47.3035 ++		   relocs[i].r_offset + frag->offset_adjust);
 47.3036 ++	      relocs[i].r_offset += frag->offset_adjust;
 47.3037 ++	    }
 47.3038 ++
 47.3039 ++	  if (frag->refcount == 0)
 47.3040 ++	    {
 47.3041 ++	      /* If this frag is to be discarded, make sure we won't
 47.3042 ++		 relocate it later on.  */
 47.3043 ++	      BFD_ASSERT(frag->state == RS_CPENT);
 47.3044 ++	      frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
 47.3045 ++					    R_AVR32_NONE);
 47.3046 ++	    }
 47.3047 ++	  else if (frag->state == RS_ALIGN)
 47.3048 ++	    {
 47.3049 ++	      bfd_vma addr, addr_end;
 47.3050 ++
 47.3051 ++	      addr = frag->rela->r_offset;
 47.3052 ++	      addr_end = (frag->offset + frag->offset_adjust
 47.3053 ++			  + frag->size + frag->size_adjust);
 47.3054 ++
 47.3055 ++	      /* If the section is executable, insert NOPs.
 47.3056 ++		 Otherwise, insert zeroes.  */
 47.3057 ++	      if (sec->flags & SEC_CODE)
 47.3058 ++		{
 47.3059 ++		  if (addr & 1)
 47.3060 ++		    {
 47.3061 ++		      bfd_put_8(abfd, 0, contents + addr);
 47.3062 ++		      addr++;
 47.3063 ++		    }
 47.3064 ++
 47.3065 ++		  BFD_ASSERT(!((addr_end - addr) & 1));
 47.3066 ++
 47.3067 ++		  while (addr < addr_end)
 47.3068 ++		    {
 47.3069 ++		      bfd_put_16(abfd, NOP_OPCODE, contents + addr);
 47.3070 ++		      addr += 2;
 47.3071 ++		    }
 47.3072 ++		}
 47.3073 ++	      else
 47.3074 ++		memset(contents + addr, 0, addr_end - addr);
 47.3075 ++	    }
 47.3076 ++	  else if (state->opcode_mask)
 47.3077 ++	    {
 47.3078 ++	      bfd_vma insn;
 47.3079 ++
 47.3080 ++	      /* Update the opcode and the relocation type unless it's a
 47.3081 ++		 "special" relax state (i.e. RS_NONE, RS_ALIGN or
 47.3082 ++		 RS_CPENT.), in which case the opcode mask is zero.  */
 47.3083 ++	      insn = bfd_get_32(abfd, contents + frag->rela->r_offset);
 47.3084 ++	      insn &= ~state->opcode_mask;
 47.3085 ++	      insn |= state->opcode;
 47.3086 ++	      RDBG("    0x%lx: inserting insn %08lx\n",
 47.3087 ++		   frag->rela->r_offset, insn);
 47.3088 ++	      bfd_put_32(abfd, insn, contents + frag->rela->r_offset);
 47.3089 ++
 47.3090 ++	      frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
 47.3091 ++					      state->r_type);
 47.3092 ++	    }
 47.3093 ++
 47.3094 ++	  if ((frag + 1) == fragend)
 47.3095 ++	    BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
 47.3096 ++			+ frag->size_adjust) == sec->size);
 47.3097 ++	  else
 47.3098 ++	    BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
 47.3099 ++			+ frag->size_adjust)
 47.3100 ++		       == (frag[1].offset + frag[1].offset_adjust));
 47.3101 ++	}
 47.3102 ++    }
 47.3103 ++
 47.3104 ++  /* Adjust reloc addends and DIFF32 differences */
 47.3105 ++  if (!adjust_relocs(abfd, sec, info))
 47.3106 ++    return FALSE;
 47.3107 ++
 47.3108 ++  ret = TRUE;
 47.3109 ++
 47.3110 ++ out:
 47.3111 ++  release_contents(sec, contents);
 47.3112 ++  release_internal_relocs(sec, relocs);
 47.3113 ++  return ret;
 47.3114 ++}
 47.3115 ++
 47.3116 ++static bfd_boolean
 47.3117 ++avr32_elf_relax_section(bfd *abfd, asection *sec,
 47.3118 ++			struct bfd_link_info *info, bfd_boolean *again)
 47.3119 ++{
 47.3120 ++  struct elf_avr32_link_hash_table *htab;
 47.3121 ++  struct avr32_relax_data *rd;
 47.3122 ++
 47.3123 ++  *again = FALSE;
 47.3124 ++  if (info->relocatable)
 47.3125 ++    return TRUE;
 47.3126 ++
 47.3127 ++  htab = avr32_elf_hash_table(info);
 47.3128 ++  if ((!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
 47.3129 ++      && sec != htab->sgot)
 47.3130 ++    return TRUE;
 47.3131 ++
 47.3132 ++  if (!htab->relocations_analyzed)
 47.3133 ++    {
 47.3134 ++      if (!analyze_relocations(info))
 47.3135 ++	return FALSE;
 47.3136 ++      htab->relocations_analyzed = TRUE;
 47.3137 ++    }
 47.3138 ++
 47.3139 ++  rd = avr32_relax_data(sec);
 47.3140 ++
 47.3141 ++  if (rd->iteration != htab->relax_iteration)
 47.3142 ++    {
 47.3143 ++      if (!htab->repeat_pass)
 47.3144 ++	htab->relax_pass++;
 47.3145 ++      htab->relax_iteration++;
 47.3146 ++      htab->repeat_pass = FALSE;
 47.3147 ++    }
 47.3148 ++
 47.3149 ++  rd->iteration++;
 47.3150 ++
 47.3151 ++  switch (htab->relax_pass)
 47.3152 ++    {
 47.3153 ++    case RELAX_PASS_SIZE_FRAGS:
 47.3154 ++      if (!avr32_size_frags(abfd, sec, info))
 47.3155 ++	return FALSE;
 47.3156 ++      *again = TRUE;
 47.3157 ++      break;
 47.3158 ++    case RELAX_PASS_MOVE_DATA:
 47.3159 ++      if (!avr32_move_data(abfd, sec, info))
 47.3160 ++	return FALSE;
 47.3161 ++      break;
 47.3162 ++  }
 47.3163 ++
 47.3164 ++  return TRUE;
 47.3165 ++}
 47.3166 ++
 47.3167 ++
 47.3168 ++/* Relocation */
 47.3169 ++
 47.3170 ++static bfd_reloc_status_type
 47.3171 ++avr32_check_reloc_value(asection *sec, Elf_Internal_Rela *rela,
 47.3172 ++			bfd_signed_vma relocation, reloc_howto_type *howto);
 47.3173 ++static bfd_reloc_status_type
 47.3174 ++avr32_final_link_relocate(reloc_howto_type *howto, bfd *input_bfd,
 47.3175 ++			  asection *input_section, bfd_byte *contents,
 47.3176 ++			  Elf_Internal_Rela *rel, bfd_vma value);
 47.3177 ++static bfd_boolean
 47.3178 ++avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
 47.3179 ++			   bfd *input_bfd, asection *input_section,
 47.3180 ++			   bfd_byte *contents, Elf_Internal_Rela *relocs,
 47.3181 ++			   Elf_Internal_Sym *local_syms,
 47.3182 ++			   asection **local_sections);
 47.3183 ++
 47.3184 ++
 47.3185 ++#define symbol_address(symbol) \
 47.3186 ++  symbol->value + symbol->section->output_section->vma \
 47.3187 ++  + symbol->section->output_offset
 47.3188 ++
 47.3189 ++#define avr32_elf_insert_field(size, field, abfd, reloc_entry, data)	\
 47.3190 ++  do									\
 47.3191 ++    {									\
 47.3192 ++      unsigned long x;							\
 47.3193 ++      x = bfd_get_##size (abfd, data + reloc_entry->address);		\
 47.3194 ++      x &= ~reloc_entry->howto->dst_mask;				\
 47.3195 ++      x |= field & reloc_entry->howto->dst_mask;			\
 47.3196 ++      bfd_put_##size (abfd, (bfd_vma) x, data + reloc_entry->address);	\
 47.3197 ++    }									\
 47.3198 ++  while(0)
 47.3199 ++
 47.3200 ++static bfd_reloc_status_type
 47.3201 ++avr32_check_reloc_value(asection *sec ATTRIBUTE_UNUSED,
 47.3202 ++			Elf_Internal_Rela *rela ATTRIBUTE_UNUSED,
 47.3203 ++			bfd_signed_vma relocation,
 47.3204 ++			reloc_howto_type *howto)
 47.3205 ++{
 47.3206 ++  bfd_vma reloc_u;
 47.3207 ++
 47.3208 ++  /* We take "complain_overflow_dont" to mean "don't complain on
 47.3209 ++     alignment either". This way, we don't have to special-case
 47.3210 ++     R_AVR32_HI16 */
 47.3211 ++  if (howto->complain_on_overflow == complain_overflow_dont)
 47.3212 ++    return bfd_reloc_ok;
 47.3213 ++
 47.3214 ++  /* Check if the value is correctly aligned */
 47.3215 ++  if (relocation & ((1 << howto->rightshift) - 1))
 47.3216 ++    {
 47.3217 ++      RDBG("misaligned: %s<%s+%lx>: %s: 0x%lx (align %u)\n",
 47.3218 ++	   sec->owner->filename, sec->name, rela->r_offset,
 47.3219 ++	   howto->name, relocation, howto->rightshift);
 47.3220 ++      return bfd_reloc_overflow;
 47.3221 ++    }
 47.3222 ++
 47.3223 ++  /* Now, get rid of the unnecessary bits */
 47.3224 ++  relocation >>= howto->rightshift;
 47.3225 ++  reloc_u = (bfd_vma)relocation;
 47.3226 ++
 47.3227 ++  switch (howto->complain_on_overflow)
 47.3228 ++    {
 47.3229 ++    case complain_overflow_unsigned:
 47.3230 ++    case complain_overflow_bitfield:
 47.3231 ++      if (reloc_u > (unsigned long)((1 << howto->bitsize) - 1))
 47.3232 ++	{
 47.3233 ++	  RDBG("unsigned overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n",
 47.3234 ++	       sec->owner->filename, sec->name, rela->r_offset,
 47.3235 ++	       howto->name, reloc_u, howto->bitsize);
 47.3236 ++	  RDBG("reloc vma: 0x%lx\n",
 47.3237 ++	       sec->output_section->vma + sec->output_offset + rela->r_offset);
 47.3238 ++
 47.3239 ++	  return bfd_reloc_overflow;
 47.3240 ++	}
 47.3241 ++      break;
 47.3242 ++    case complain_overflow_signed:
 47.3243 ++      if (relocation > (1 << (howto->bitsize - 1)) - 1)
 47.3244 ++	{
 47.3245 ++	  RDBG("signed overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n",
 47.3246 ++	       sec->owner->filename, sec->name, rela->r_offset,
 47.3247 ++	       howto->name, reloc_u, howto->bitsize);
 47.3248 ++	  RDBG("reloc vma: 0x%lx\n",
 47.3249 ++	       sec->output_section->vma + sec->output_offset + rela->r_offset);
 47.3250 ++
 47.3251 ++	  return bfd_reloc_overflow;
 47.3252 ++	}
 47.3253 ++      if (relocation < -(1 << (howto->bitsize - 1)))
 47.3254 ++	{
 47.3255 ++	  RDBG("signed overflow: %s<%s+%lx>: %s: -0x%lx (size %u)\n",
 47.3256 ++	       sec->owner->filename, sec->name, rela->r_offset,
 47.3257 ++	       howto->name, -relocation, howto->bitsize);
 47.3258 ++	  RDBG("reloc vma: 0x%lx\n",
 47.3259 ++	       sec->output_section->vma + sec->output_offset + rela->r_offset);
 47.3260 ++
 47.3261 ++	  return bfd_reloc_overflow;
 47.3262 ++	}
 47.3263 ++      break;
 47.3264 ++    default:
 47.3265 ++      abort();
 47.3266 ++    }
 47.3267 ++
 47.3268 ++  return bfd_reloc_ok;
 47.3269 ++}
 47.3270 ++
 47.3271 ++
 47.3272 ++static bfd_reloc_status_type
 47.3273 ++avr32_final_link_relocate(reloc_howto_type *howto,
 47.3274 ++			  bfd *input_bfd,
 47.3275 ++			  asection *input_section,
 47.3276 ++			  bfd_byte *contents,
 47.3277 ++			  Elf_Internal_Rela *rel,
 47.3278 ++			  bfd_vma value)
 47.3279 ++{
 47.3280 ++  bfd_vma field;
 47.3281 ++  bfd_vma relocation;
 47.3282 ++  bfd_reloc_status_type status;
 47.3283 ++  bfd_byte *p = contents + rel->r_offset;
 47.3284 ++  unsigned long x;
 47.3285 ++
 47.3286 ++  pr_debug("  (6b) final link relocate\n");
 47.3287 ++
 47.3288 ++  /* Sanity check the address */
 47.3289 ++  if (rel->r_offset > input_section->size)
 47.3290 ++    {
 47.3291 ++      (*_bfd_error_handler)
 47.3292 ++	("%B: %A+0x%lx: offset out of range (section size: 0x%lx)",
 47.3293 ++	 input_bfd, input_section, rel->r_offset, input_section->size);
 47.3294 ++      return bfd_reloc_outofrange;
 47.3295 ++    }
 47.3296 ++
 47.3297 ++  relocation = value + rel->r_addend;
 47.3298 ++
 47.3299 ++  if (howto->pc_relative)
 47.3300 ++    {
 47.3301 ++      bfd_vma addr;
 47.3302 ++
 47.3303 ++      addr = input_section->output_section->vma
 47.3304 ++	+ input_section->output_offset + rel->r_offset;
 47.3305 ++      addr &= ~0UL << howto->rightshift;
 47.3306 ++      relocation -= addr;
 47.3307 ++    }
 47.3308 ++
 47.3309 ++  switch (ELF32_R_TYPE(rel->r_info))
 47.3310 ++    {
 47.3311 ++    case R_AVR32_16N_PCREL:
 47.3312 ++      /* sub reg, pc, . - (sym + addend) */
 47.3313 ++      relocation = -relocation;
 47.3314 ++      break;
 47.3315 ++    }
 47.3316 ++
 47.3317 ++  status = avr32_check_reloc_value(input_section, rel, relocation, howto);
 47.3318 ++
 47.3319 ++  relocation >>= howto->rightshift;
 47.3320 ++  if (howto->bitsize == 21)
 47.3321 ++    field = (relocation & 0xffff)
 47.3322 ++      | ((relocation & 0x10000) << 4)
 47.3323 ++      | ((relocation & 0x1e0000) << 8);
 47.3324 ++  else if (howto->bitsize == 12)
 47.3325 ++    field = (relocation & 0xff) | ((relocation & 0xf00) << 4);
 47.3326 ++  else if (howto->bitsize == 10)
 47.3327 ++    field = ((relocation & 0xff) << 4)
 47.3328 ++      | ((relocation & 0x300) >> 8);
 47.3329 ++  else
 47.3330 ++    field = relocation << howto->bitpos;
 47.3331 ++
 47.3332 ++  switch (howto->size)
 47.3333 ++    {
 47.3334 ++    case 0:
 47.3335 ++      x = bfd_get_8 (input_bfd, p);
 47.3336 ++      x &= ~howto->dst_mask;
 47.3337 ++      x |= field & howto->dst_mask;
 47.3338 ++      bfd_put_8 (input_bfd, (bfd_vma) x, p);
 47.3339 ++      break;
 47.3340 ++    case 1:
 47.3341 ++      x = bfd_get_16 (input_bfd, p);
 47.3342 ++      x &= ~howto->dst_mask;
 47.3343 ++      x |= field & howto->dst_mask;
 47.3344 ++      bfd_put_16 (input_bfd, (bfd_vma) x, p);
 47.3345 ++      break;
 47.3346 ++    case 2:
 47.3347 ++      x = bfd_get_32 (input_bfd, p);
 47.3348 ++      x &= ~howto->dst_mask;
 47.3349 ++      x |= field & howto->dst_mask;
 47.3350 ++      bfd_put_32 (input_bfd, (bfd_vma) x, p);
 47.3351 ++      break;
 47.3352 ++    default:
 47.3353 ++      abort();
 47.3354 ++    }
 47.3355 ++
 47.3356 ++  return status;
 47.3357 ++}
 47.3358 ++
 47.3359 ++/* (6) Apply relocations to the normal (non-dynamic) sections */
 47.3360 ++
 47.3361 ++static bfd_boolean
 47.3362 ++avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
 47.3363 ++			   bfd *input_bfd, asection *input_section,
 47.3364 ++			   bfd_byte *contents, Elf_Internal_Rela *relocs,
 47.3365 ++			   Elf_Internal_Sym *local_syms,
 47.3366 ++			   asection **local_sections)
 47.3367 ++{
 47.3368 ++  struct elf_avr32_link_hash_table *htab;
 47.3369 ++  Elf_Internal_Shdr *symtab_hdr;
 47.3370 ++  Elf_Internal_Rela *rel, *relend;
 47.3371 ++  struct elf_link_hash_entry **sym_hashes;
 47.3372 ++  struct got_entry **local_got_ents;
 47.3373 ++  asection *sgot;
 47.3374 ++  asection *srelgot;
 47.3375 ++
 47.3376 ++  pr_debug("(6) relocate section %s:<%s> (size 0x%lx)\n",
 47.3377 ++	   input_bfd->filename, input_section->name, input_section->size);
 47.3378 ++
 47.3379 ++  /* If we're doing a partial link, we don't have to do anything since
 47.3380 ++     we're using RELA relocations */
 47.3381 ++  if (info->relocatable)
 47.3382 ++    return TRUE;
 47.3383 ++
 47.3384 ++  htab = avr32_elf_hash_table(info);
 47.3385 ++  symtab_hdr = &elf_tdata(input_bfd)->symtab_hdr;
 47.3386 ++  sym_hashes = elf_sym_hashes(input_bfd);
 47.3387 ++  local_got_ents = elf_local_got_ents(input_bfd);
 47.3388 ++  sgot = htab->sgot;
 47.3389 ++  srelgot = htab->srelgot;
 47.3390 ++
 47.3391 ++  relend = relocs + input_section->reloc_count;
 47.3392 ++  for (rel = relocs; rel < relend; rel++)
 47.3393 ++    {
 47.3394 ++      unsigned long r_type, r_symndx;
 47.3395 ++      reloc_howto_type *howto;
 47.3396 ++      Elf_Internal_Sym *sym = NULL;
 47.3397 ++      struct elf_link_hash_entry *h = NULL;
 47.3398 ++      asection *sec = NULL;
 47.3399 ++      bfd_vma value;
 47.3400 ++      bfd_vma offset;
 47.3401 ++      bfd_reloc_status_type status;
 47.3402 ++
 47.3403 ++      r_type = ELF32_R_TYPE(rel->r_info);
 47.3404 ++      r_symndx = ELF32_R_SYM(rel->r_info);
 47.3405 ++
 47.3406 ++      if (r_type == R_AVR32_NONE
 47.3407 ++	  || r_type == R_AVR32_ALIGN
 47.3408 ++	  || r_type == R_AVR32_DIFF32
 47.3409 ++	  || r_type == R_AVR32_DIFF16
 47.3410 ++	  || r_type == R_AVR32_DIFF8)
 47.3411 ++	continue;
 47.3412 ++
 47.3413 ++      /* Sanity check */
 47.3414 ++      if (r_type > R_AVR32_max)
 47.3415 ++	{
 47.3416 ++	  bfd_set_error(bfd_error_bad_value);
 47.3417 ++	  return FALSE;
 47.3418 ++	}
 47.3419 ++
 47.3420 ++      howto = &elf_avr32_howto_table[r_type];
 47.3421 ++
 47.3422 ++      if (r_symndx < symtab_hdr->sh_info)
 47.3423 ++	{
 47.3424 ++	  sym = local_syms + r_symndx;
 47.3425 ++	  sec = local_sections[r_symndx];
 47.3426 ++
 47.3427 ++	  pr_debug("  (6a) processing %s against local symbol %lu\n",
 47.3428 ++		   howto->name, r_symndx);
 47.3429 ++
 47.3430 ++	  /* The following function changes rel->r_addend behind our back. */
 47.3431 ++	  value = _bfd_elf_rela_local_sym(output_bfd, sym, &sec, rel);
 47.3432 ++	  pr_debug("    => value: %lx, addend: %lx\n", value, rel->r_addend);
 47.3433 ++	}
 47.3434 ++      else
 47.3435 ++	{
 47.3436 ++	  if (sym_hashes == NULL)
 47.3437 ++	    return FALSE;
 47.3438 ++
 47.3439 ++	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
 47.3440 ++	  while (h->root.type == bfd_link_hash_indirect
 47.3441 ++		 || h->root.type == bfd_link_hash_warning)
 47.3442 ++	    h = (struct elf_link_hash_entry *)h->root.u.i.link;
 47.3443 ++
 47.3444 ++	  pr_debug("  (6a) processing %s against symbol %s\n",
 47.3445 ++		   howto->name, h->root.root.string);
 47.3446 ++
 47.3447 ++	  if (h->root.type == bfd_link_hash_defined
 47.3448 ++	      || h->root.type == bfd_link_hash_defweak)
 47.3449 ++	    {
 47.3450 ++	      bfd_boolean dyn;
 47.3451 ++
 47.3452 ++	      dyn = htab->root.dynamic_sections_created;
 47.3453 ++	      sec = h->root.u.def.section;
 47.3454 ++
 47.3455 ++	      if (sec->output_section)
 47.3456 ++		value = (h->root.u.def.value
 47.3457 ++			 + sec->output_section->vma
 47.3458 ++			 + sec->output_offset);
 47.3459 ++	      else
 47.3460 ++		value = h->root.u.def.value;
 47.3461 ++	    }
 47.3462 ++	  else if (h->root.type == bfd_link_hash_undefweak)
 47.3463 ++	    value = 0;
 47.3464 ++	  else if (info->unresolved_syms_in_objects == RM_IGNORE
 47.3465 ++		   && ELF_ST_VISIBILITY(h->other) == STV_DEFAULT)
 47.3466 ++	    value = 0;
 47.3467 ++	  else
 47.3468 ++	    {
 47.3469 ++	      bfd_boolean err;
 47.3470 ++	      err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
 47.3471 ++		     || ELF_ST_VISIBILITY(h->other) != STV_DEFAULT);
 47.3472 ++	      if (!info->callbacks->undefined_symbol
 47.3473 ++		  (info, h->root.root.string, input_bfd,
 47.3474 ++		   input_section, rel->r_offset, err))
 47.3475 ++		return FALSE;
 47.3476 ++	      value = 0;
 47.3477 ++	    }
 47.3478 ++
 47.3479 ++	  pr_debug("    => value: %lx, addend: %lx\n", value, rel->r_addend);
 47.3480 ++	}
 47.3481 ++
 47.3482 ++      switch (r_type)
 47.3483 ++	{
 47.3484 ++	case R_AVR32_GOT32:
 47.3485 ++	case R_AVR32_GOT16:
 47.3486 ++	case R_AVR32_GOT8:
 47.3487 ++	case R_AVR32_GOT21S:
 47.3488 ++	case R_AVR32_GOT18SW:
 47.3489 ++	case R_AVR32_GOT16S:
 47.3490 ++	case R_AVR32_GOT7UW:
 47.3491 ++	case R_AVR32_LDA_GOT:
 47.3492 ++	case R_AVR32_GOTCALL:
 47.3493 ++	  BFD_ASSERT(sgot != NULL);
 47.3494 ++
 47.3495 ++	  if (h != NULL)
 47.3496 ++	    {
 47.3497 ++	      BFD_ASSERT(h->got.glist->refcount > 0);
 47.3498 ++	      offset = h->got.glist->offset;
 47.3499 ++
 47.3500 ++	      BFD_ASSERT(offset < sgot->size);
 47.3501 ++	      if (!elf_hash_table(info)->dynamic_sections_created
 47.3502 ++		  || (h->def_regular
 47.3503 ++		      && (!info->shared
 47.3504 ++			  || info->symbolic
 47.3505 ++			  || h->dynindx == -1)))
 47.3506 ++		{
 47.3507 ++		  /* This is actually a static link, or it is a
 47.3508 ++		     -Bsymbolic link and the symbol is defined
 47.3509 ++		     locally, or the symbol was forced to be local.  */
 47.3510 ++		  bfd_put_32(output_bfd, value, sgot->contents + offset);
 47.3511 ++		}
 47.3512 ++	    }
 47.3513 ++	  else
 47.3514 ++	    {
 47.3515 ++	      BFD_ASSERT(local_got_ents &&
 47.3516 ++			 local_got_ents[r_symndx]->refcount > 0);
 47.3517 ++	      offset = local_got_ents[r_symndx]->offset;
 47.3518 ++
 47.3519 ++	      /* Local GOT entries don't have relocs.  If this is a
 47.3520 ++		 shared library, the dynamic linker will add the load
 47.3521 ++		 address to the initial value at startup.  */
 47.3522 ++	      BFD_ASSERT(offset < sgot->size);
 47.3523 ++	      pr_debug("Initializing GOT entry at offset %lu: 0x%lx\n",
 47.3524 ++		       offset, value);
 47.3525 ++	      bfd_put_32 (output_bfd, value, sgot->contents + offset);
 47.3526 ++	    }
 47.3527 ++
 47.3528 ++	  value = sgot->output_offset + offset;
 47.3529 ++	  pr_debug("GOT reference: New value %lx\n", value);
 47.3530 ++	  break;
 47.3531 ++
 47.3532 ++	case R_AVR32_GOTPC:
 47.3533 ++	  /* This relocation type is for constant pool entries used in
 47.3534 ++	     the calculation "Rd = PC - (PC - GOT)", where the
 47.3535 ++	     constant pool supplies the constant (PC - GOT)
 47.3536 ++	     offset. The symbol value + addend indicates where the
 47.3537 ++	     value of PC is taken. */
 47.3538 ++	  value -= sgot->output_section->vma;
 47.3539 ++	  break;
 47.3540 ++
 47.3541 ++	case R_AVR32_32_PCREL:
 47.3542 ++	  /* We must adjust r_offset to account for discarded data in
 47.3543 ++	     the .eh_frame section.  This is probably not the right
 47.3544 ++	     way to do this, since AFAICS all other architectures do
 47.3545 ++	     it some other way.  I just can't figure out how...  */
 47.3546 ++	  {
 47.3547 ++	    bfd_vma r_offset;
 47.3548 ++
 47.3549 ++	    r_offset = _bfd_elf_section_offset(output_bfd, info,
 47.3550 ++					       input_section,
 47.3551 ++					       rel->r_offset);
 47.3552 ++	    if (r_offset == (bfd_vma)-1
 47.3553 ++		|| r_offset == (bfd_vma)-2)
 47.3554 ++	      continue;
 47.3555 ++	    rel->r_offset = r_offset;
 47.3556 ++	  }
 47.3557 ++	  break;
 47.3558 ++
 47.3559 ++	case R_AVR32_32:
 47.3560 ++	  /* We need to emit a run-time relocation in the following cases:
 47.3561 ++	       - we're creating a shared library
 47.3562 ++	       - the symbol is not defined in any regular objects
 47.3563 ++
 47.3564 ++	     Of course, sections that aren't going to be part of the
 47.3565 ++	     run-time image will not get any relocs, and undefined
 47.3566 ++	     symbols won't have any either (only weak undefined
 47.3567 ++	     symbols should get this far).  */
 47.3568 ++	  if ((info->shared
 47.3569 ++	       || (elf_hash_table(info)->dynamic_sections_created
 47.3570 ++		   && h != NULL
 47.3571 ++		   && h->def_dynamic
 47.3572 ++		   && !h->def_regular))
 47.3573 ++	      && r_symndx != 0
 47.3574 ++	      && (input_section->flags & SEC_ALLOC))
 47.3575 ++	    {
 47.3576 ++	      Elf_Internal_Rela outrel;
 47.3577 ++	      bfd_byte *loc;
 47.3578 ++	      bfd_boolean skip, relocate;
 47.3579 ++	      struct elf_avr32_link_hash_entry *avrh;
 47.3580 ++
 47.3581 ++	      pr_debug("Going to generate dynamic reloc...\n");
 47.3582 ++
 47.3583 ++	      skip = FALSE;
 47.3584 ++	      relocate = FALSE;
 47.3585 ++
 47.3586 ++	      outrel.r_offset = _bfd_elf_section_offset(output_bfd, info,
 47.3587 ++							input_section,
 47.3588 ++							rel->r_offset);
 47.3589 ++	      if (outrel.r_offset == (bfd_vma)-1)
 47.3590 ++		skip = TRUE;
 47.3591 ++	      else if (outrel.r_offset == (bfd_vma)-2)
 47.3592 ++		skip = TRUE, relocate = TRUE;
 47.3593 ++
 47.3594 ++	      outrel.r_offset += (input_section->output_section->vma
 47.3595 ++				  + input_section->output_offset);
 47.3596 ++
 47.3597 ++	      pr_debug("    ... offset %lx, dynindx %ld\n",
 47.3598 ++		       outrel.r_offset, h ? h->dynindx : -1);
 47.3599 ++
 47.3600 ++	      if (skip)
 47.3601 ++		memset(&outrel, 0, sizeof(outrel));
 47.3602 ++	      else
 47.3603 ++		{
 47.3604 ++		  avrh = (struct elf_avr32_link_hash_entry *)h;
 47.3605 ++		  /* h->dynindx may be -1 if this symbol was marked to
 47.3606 ++		     become local.  */
 47.3607 ++		  if (h == NULL
 47.3608 ++		      || ((info->symbolic || h->dynindx == -1)
 47.3609 ++			  && h->def_regular))
 47.3610 ++		    {
 47.3611 ++		      relocate = TRUE;
 47.3612 ++		      outrel.r_info = ELF32_R_INFO(0, R_AVR32_RELATIVE);
 47.3613 ++		      outrel.r_addend = value + rel->r_addend;
 47.3614 ++		      pr_debug("    ... R_AVR32_RELATIVE\n");
 47.3615 ++		    }
 47.3616 ++		  else
 47.3617 ++		    {
 47.3618 ++		      BFD_ASSERT(h->dynindx != -1);
 47.3619 ++		      relocate = TRUE;
 47.3620 ++		      outrel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
 47.3621 ++		      outrel.r_addend = rel->r_addend;
 47.3622 ++		      pr_debug("    ... R_AVR32_GLOB_DAT\n");
 47.3623 ++		    }
 47.3624 ++		}
 47.3625 ++
 47.3626 ++	      pr_debug("srelgot reloc_count: %d, size %lu\n",
 47.3627 ++		       srelgot->reloc_count, srelgot->size);
 47.3628 ++
 47.3629 ++	      loc = srelgot->contents;
 47.3630 ++	      loc += srelgot->reloc_count++ * sizeof(Elf32_External_Rela);
 47.3631 ++	      bfd_elf32_swap_reloca_out(output_bfd, &outrel, loc);
 47.3632 ++
 47.3633 ++	      BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
 47.3634 ++			 <= srelgot->size);
 47.3635 ++
 47.3636 ++	      if (!relocate)
 47.3637 ++		continue;
 47.3638 ++	    }
 47.3639 ++	  break;
 47.3640 ++	}
 47.3641 ++
 47.3642 ++      status = avr32_final_link_relocate(howto, input_bfd, input_section,
 47.3643 ++					 contents, rel, value);
 47.3644 ++
 47.3645 ++      switch (status)
 47.3646 ++	{
 47.3647 ++	case bfd_reloc_ok:
 47.3648 ++	  break;
 47.3649 ++
 47.3650 ++	case bfd_reloc_overflow:
 47.3651 ++	  {
 47.3652 ++	    const char *name;
 47.3653 ++
 47.3654 ++	    if (h != NULL)
 47.3655 ++	      name = h->root.root.string;
 47.3656 ++	    else
 47.3657 ++	      {
 47.3658 ++		name = bfd_elf_string_from_elf_section(input_bfd,
 47.3659 ++						       symtab_hdr->sh_link,
 47.3660 ++						       sym->st_name);
 47.3661 ++		if (name == NULL)
 47.3662 ++		  return FALSE;
 47.3663 ++		if (*name == '\0')
 47.3664 ++		  name = bfd_section_name(input_bfd, sec);
 47.3665 ++	      }
 47.3666 ++	    if (!((*info->callbacks->reloc_overflow)
 47.3667 ++		  (info, (h ? &h->root : NULL), name, howto->name,
 47.3668 ++		   rel->r_addend, input_bfd, input_section, rel->r_offset)))
 47.3669 ++	      return FALSE;
 47.3670 ++	  }
 47.3671 ++	  break;
 47.3672 ++
 47.3673 ++	case bfd_reloc_outofrange:
 47.3674 ++	default:
 47.3675 ++	  abort();
 47.3676 ++	}
 47.3677 ++    }
 47.3678 ++
 47.3679 ++  return TRUE;
 47.3680 ++}
 47.3681 ++
 47.3682 ++
 47.3683 ++/* Additional processing of dynamic sections after relocation */
 47.3684 ++
 47.3685 ++static bfd_boolean
 47.3686 ++avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
 47.3687 ++				struct elf_link_hash_entry *h,
 47.3688 ++				Elf_Internal_Sym *sym);
 47.3689 ++static bfd_boolean
 47.3690 ++avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info);
 47.3691 ++
 47.3692 ++
 47.3693 ++/* (7) Initialize the contents of a dynamic symbol and/or emit
 47.3694 ++   relocations for it */
 47.3695 ++
 47.3696 ++static bfd_boolean
 47.3697 ++avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
 47.3698 ++				struct elf_link_hash_entry *h,
 47.3699 ++				Elf_Internal_Sym *sym)
 47.3700 ++{
 47.3701 ++  struct elf_avr32_link_hash_table *htab;
 47.3702 ++  struct got_entry *got;
 47.3703 ++
 47.3704 ++  pr_debug("(7) finish dynamic symbol: %s\n", h->root.root.string);
 47.3705 ++
 47.3706 ++  htab = avr32_elf_hash_table(info);
 47.3707 ++  got = h->got.glist;
 47.3708 ++
 47.3709 ++  if (got && got->refcount > 0)
 47.3710 ++    {
 47.3711 ++      asection *sgot;
 47.3712 ++      asection *srelgot;
 47.3713 ++      Elf_Internal_Rela rel;
 47.3714 ++      bfd_byte *loc;
 47.3715 ++
 47.3716 ++      /* This symbol has an entry in the GOT. Set it up. */
 47.3717 ++      sgot = htab->sgot;
 47.3718 ++      srelgot = htab->srelgot;
 47.3719 ++      BFD_ASSERT(sgot && srelgot);
 47.3720 ++
 47.3721 ++      rel.r_offset = (sgot->output_section->vma
 47.3722 ++		      + sgot->output_offset
 47.3723 ++		      + got->offset);
 47.3724 ++
 47.3725 ++      /* If this is a static link, or it is a -Bsymbolic link and the
 47.3726 ++	 symbol is defined locally or was forced to be local because
 47.3727 ++	 of a version file, we just want to emit a RELATIVE reloc. The
 47.3728 ++	 entry in the global offset table will already have been
 47.3729 ++	 initialized in the relocate_section function. */
 47.3730 ++      if ((info->shared
 47.3731 ++	   && !info->symbolic
 47.3732 ++	   && h->dynindx != -1)
 47.3733 ++	  || (htab->root.dynamic_sections_created
 47.3734 ++	      && h->def_dynamic
 47.3735 ++	      && !h->def_regular))
 47.3736 ++	{
 47.3737 ++	  bfd_put_32(output_bfd, 0, sgot->contents + got->offset);
 47.3738 ++	  rel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
 47.3739 ++	  rel.r_addend = 0;
 47.3740 ++
 47.3741 ++	  pr_debug("GOT reloc R_AVR32_GLOB_DAT, dynindx: %ld\n", h->dynindx);
 47.3742 ++	  pr_debug("    srelgot reloc_count: %d, size: %lu\n",
 47.3743 ++		   srelgot->reloc_count, srelgot->size);
 47.3744 ++
 47.3745 ++	  loc = (srelgot->contents
 47.3746 ++		 + srelgot->reloc_count++ * sizeof(Elf32_External_Rela));
 47.3747 ++	  bfd_elf32_swap_reloca_out(output_bfd, &rel, loc);
 47.3748 ++
 47.3749 ++	  BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
 47.3750 ++		     <= srelgot->size);
 47.3751 ++	}
 47.3752 ++    }
 47.3753 ++
 47.3754 ++  /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute */
 47.3755 ++  if (strcmp(h->root.root.string, "_DYNAMIC") == 0
 47.3756 ++      || strcmp(h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
 47.3757 ++    sym->st_shndx = SHN_ABS;
 47.3758 ++
 47.3759 ++  return TRUE;
 47.3760 ++}
 47.3761 ++
 47.3762 ++/* (8) Do any remaining initialization of the dynamic sections */
 47.3763 ++
 47.3764 ++static bfd_boolean
 47.3765 ++avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info)
 47.3766 ++{
 47.3767 ++  struct elf_avr32_link_hash_table *htab;
 47.3768 ++  asection *sgot, *sdyn;
 47.3769 ++
 47.3770 ++  pr_debug("(8) finish dynamic sections\n");
 47.3771 ++
 47.3772 ++  htab = avr32_elf_hash_table(info);
 47.3773 ++  sgot = htab->sgot;
 47.3774 ++  sdyn = bfd_get_section_by_name(htab->root.dynobj, ".dynamic");
 47.3775 ++
 47.3776 ++  if (htab->root.dynamic_sections_created)
 47.3777 ++    {
 47.3778 ++      Elf32_External_Dyn *dyncon, *dynconend;
 47.3779 ++
 47.3780 ++      BFD_ASSERT(sdyn && sgot && sgot->size >= AVR32_GOT_HEADER_SIZE);
 47.3781 ++
 47.3782 ++      dyncon = (Elf32_External_Dyn *)sdyn->contents;
 47.3783 ++      dynconend = (Elf32_External_Dyn *)(sdyn->contents + sdyn->size);
 47.3784 ++      for (; dyncon < dynconend; dyncon++)
 47.3785 ++	{
 47.3786 ++	  Elf_Internal_Dyn dyn;
 47.3787 ++	  asection *s;
 47.3788 ++
 47.3789 ++	  bfd_elf32_swap_dyn_in(htab->root.dynobj, dyncon, &dyn);
 47.3790 ++
 47.3791 ++	  switch (dyn.d_tag)
 47.3792 ++	    {
 47.3793 ++	    default:
 47.3794 ++	      break;
 47.3795 ++
 47.3796 ++	    case DT_PLTGOT:
 47.3797 ++	      s = sgot->output_section;
 47.3798 ++	      BFD_ASSERT(s != NULL);
 47.3799 ++	      dyn.d_un.d_ptr = s->vma;
 47.3800 ++	      bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
 47.3801 ++	      break;
 47.3802 ++
 47.3803 ++	    case DT_AVR32_GOTSZ:
 47.3804 ++	      s = sgot->output_section;
 47.3805 ++	      BFD_ASSERT(s != NULL);
 47.3806 ++	      dyn.d_un.d_val = s->size;
 47.3807 ++	      bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
 47.3808 ++	      break;
 47.3809 ++	    }
 47.3810 ++	}
 47.3811 ++
 47.3812 ++      /* Fill in the first two entries in the global offset table */
 47.3813 ++      bfd_put_32(output_bfd,
 47.3814 ++		 sdyn->output_section->vma + sdyn->output_offset,
 47.3815 ++		 sgot->contents);
 47.3816 ++
 47.3817 ++      /* The runtime linker will fill this one in with the address of
 47.3818 ++	 the run-time link map */
 47.3819 ++      bfd_put_32(output_bfd, 0, sgot->contents + 4);
 47.3820 ++    }
 47.3821 ++
 47.3822 ++  if (sgot)
 47.3823 ++    elf_section_data(sgot->output_section)->this_hdr.sh_entsize = 4;
 47.3824 ++
 47.3825 ++  return TRUE;
 47.3826 ++}
 47.3827 ++
 47.3828 ++
 47.3829 ++/* AVR32-specific private ELF data */
 47.3830 ++
 47.3831 ++static bfd_boolean
 47.3832 ++avr32_elf_set_private_flags(bfd *abfd, flagword flags);
 47.3833 ++static bfd_boolean
 47.3834 ++avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd);
 47.3835 ++static bfd_boolean
 47.3836 ++avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd);
 47.3837 ++static bfd_boolean
 47.3838 ++avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr);
 47.3839 ++
 47.3840 ++static bfd_boolean
 47.3841 ++avr32_elf_set_private_flags(bfd *abfd, flagword flags)
 47.3842 ++{
 47.3843 ++  elf_elfheader(abfd)->e_flags = flags;
 47.3844 ++  elf_flags_init(abfd) = TRUE;
 47.3845 ++
 47.3846 ++  return TRUE;
 47.3847 ++}
 47.3848 ++
 47.3849 ++/* Copy backend specific data from one object module to another.  */
 47.3850 ++
 47.3851 ++static bfd_boolean
 47.3852 ++avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd)
 47.3853 ++{
 47.3854 ++  elf_elfheader(obfd)->e_flags = elf_elfheader(ibfd)->e_flags;
 47.3855 ++  return TRUE;
 47.3856 ++}
 47.3857 ++
 47.3858 ++/* Merge backend specific data from an object file to the output
 47.3859 ++   object file when linking.  */
 47.3860 ++
 47.3861 ++static bfd_boolean
 47.3862 ++avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd)
 47.3863 ++{
 47.3864 ++  flagword out_flags, in_flags;
 47.3865 ++
 47.3866 ++  pr_debug("(0) merge_private_bfd_data: %s -> %s\n",
 47.3867 ++	   ibfd->filename, obfd->filename);
 47.3868 ++
 47.3869 ++  in_flags = elf_elfheader(ibfd)->e_flags;
 47.3870 ++  out_flags = elf_elfheader(obfd)->e_flags;
 47.3871 ++
 47.3872 ++  if (elf_flags_init(obfd))
 47.3873 ++    {
 47.3874 ++      /* If one of the inputs are non-PIC, the output must be
 47.3875 ++	 considered non-PIC.  The same applies to linkrelax.  */
 47.3876 ++      if (!(in_flags & EF_AVR32_PIC))
 47.3877 ++	out_flags &= ~EF_AVR32_PIC;
 47.3878 ++      if (!(in_flags & EF_AVR32_LINKRELAX))
 47.3879 ++	out_flags &= ~EF_AVR32_LINKRELAX;
 47.3880 ++    }
 47.3881 ++  else
 47.3882 ++    {
 47.3883 ++      elf_flags_init(obfd) = TRUE;
 47.3884 ++      out_flags = in_flags;
 47.3885 ++    }
 47.3886 ++
 47.3887 ++  elf_elfheader(obfd)->e_flags = out_flags;
 47.3888 ++
 47.3889 ++  return TRUE;
 47.3890 ++}
 47.3891 ++
 47.3892 ++static bfd_boolean
 47.3893 ++avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr)
 47.3894 ++{
 47.3895 ++  FILE *file = (FILE *)ptr;
 47.3896 ++  unsigned long flags;
 47.3897 ++
 47.3898 ++  BFD_ASSERT(abfd != NULL && ptr != NULL);
 47.3899 ++
 47.3900 ++  _bfd_elf_print_private_bfd_data(abfd, ptr);
 47.3901 ++
 47.3902 ++  flags = elf_elfheader(abfd)->e_flags;
 47.3903 ++
 47.3904 ++  fprintf(file, _("private flags = %lx:"), elf_elfheader(abfd)->e_flags);
 47.3905 ++
 47.3906 ++  if (flags & EF_AVR32_PIC)
 47.3907 ++    fprintf(file, " [PIC]");
 47.3908 ++  if (flags & EF_AVR32_LINKRELAX)
 47.3909 ++    fprintf(file, " [linker relaxable]");
 47.3910 ++
 47.3911 ++  flags &= ~(EF_AVR32_PIC | EF_AVR32_LINKRELAX);
 47.3912 ++
 47.3913 ++  if (flags)
 47.3914 ++    fprintf(file, _("<Unrecognized flag bits set>"));
 47.3915 ++
 47.3916 ++  fputc('\n', file);
 47.3917 ++
 47.3918 ++  return TRUE;
 47.3919 ++}
 47.3920 ++
 47.3921 ++/* Set avr32-specific linker options.  */
 47.3922 ++void bfd_elf32_avr32_set_options(struct bfd_link_info *info,
 47.3923 ++				 int direct_data_refs)
 47.3924 ++{
 47.3925 ++  struct elf_avr32_link_hash_table *htab;
 47.3926 ++
 47.3927 ++  htab = avr32_elf_hash_table (info);
 47.3928 ++  htab->direct_data_refs = !!direct_data_refs;
 47.3929 ++}
 47.3930 ++
 47.3931 ++
 47.3932 ++
 47.3933 ++/* Understanding core dumps */
 47.3934 ++
 47.3935 ++static bfd_boolean
 47.3936 ++avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note);
 47.3937 ++static bfd_boolean
 47.3938 ++avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note);
 47.3939 ++
 47.3940 ++static bfd_boolean
 47.3941 ++avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note)
 47.3942 ++{
 47.3943 ++  /* Linux/AVR32B elf_prstatus */
 47.3944 ++  if (note->descsz != 148)
 47.3945 ++    return FALSE;
 47.3946 ++
 47.3947 ++  /* pr_cursig */
 47.3948 ++  elf_tdata(abfd)->core_signal = bfd_get_16(abfd, note->descdata + 12);
 47.3949 ++
 47.3950 ++  /* pr_pid */
 47.3951 ++  elf_tdata(abfd)->core_pid = bfd_get_32(abfd, note->descdata + 24);
 47.3952 ++
 47.3953 ++  /* Make a ".reg/999" section for pr_reg. The size is for 16
 47.3954 ++     general-purpose registers, SR and r12_orig (18 * 4 = 72).  */
 47.3955 ++  return _bfd_elfcore_make_pseudosection(abfd, ".reg", 72,
 47.3956 ++					 note->descpos + 72);
 47.3957 ++}
 47.3958 ++
 47.3959 ++static bfd_boolean
 47.3960 ++avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note)
 47.3961 ++{
 47.3962 ++  /* Linux/AVR32B elf_prpsinfo */
 47.3963 ++  if (note->descsz != 128)
 47.3964 ++    return FALSE;
 47.3965 ++
 47.3966 ++  elf_tdata(abfd)->core_program
 47.3967 ++    = _bfd_elfcore_strndup(abfd, note->descdata + 32, 16);
 47.3968 ++  elf_tdata(abfd)->core_command
 47.3969 ++    = _bfd_elfcore_strndup(abfd, note->descdata + 48, 80);
 47.3970 ++
 47.3971 ++  /* Note that for some reason, a spurious space is tacked
 47.3972 ++     onto the end of the args in some (at least one anyway)
 47.3973 ++     implementations, so strip it off if it exists.  */
 47.3974 ++
 47.3975 ++  {
 47.3976 ++    char *command = elf_tdata (abfd)->core_command;
 47.3977 ++    int n = strlen (command);
 47.3978 ++
 47.3979 ++    if (0 < n && command[n - 1] == ' ')
 47.3980 ++      command[n - 1] = '\0';
 47.3981 ++  }
 47.3982 ++
 47.3983 ++  return TRUE;
 47.3984 ++}
 47.3985 ++
 47.3986 ++
 47.3987 ++#define ELF_ARCH			bfd_arch_avr32
 47.3988 ++#define ELF_MACHINE_CODE		EM_AVR32
 47.3989 ++#define ELF_MAXPAGESIZE			0x1000
 47.3990 ++
 47.3991 ++#define TARGET_BIG_SYM			bfd_elf32_avr32_vec
 47.3992 ++#define TARGET_BIG_NAME			"elf32-avr32"
 47.3993 ++
 47.3994 ++#define elf_backend_grok_prstatus	avr32_elf_grok_prstatus
 47.3995 ++#define elf_backend_grok_psinfo		avr32_elf_grok_psinfo
 47.3996 ++
 47.3997 ++/* Only RELA relocations are used */
 47.3998 ++#define elf_backend_may_use_rel_p	0
 47.3999 ++#define elf_backend_may_use_rela_p	1
 47.4000 ++#define elf_backend_default_use_rela_p	1
 47.4001 ++#define elf_backend_rela_normal		1
 47.4002 ++#define elf_info_to_howto_rel		NULL
 47.4003 ++#define elf_info_to_howto		avr32_info_to_howto
 47.4004 ++
 47.4005 ++#define bfd_elf32_bfd_copy_private_bfd_data	avr32_elf_copy_private_bfd_data
 47.4006 ++#define bfd_elf32_bfd_merge_private_bfd_data	avr32_elf_merge_private_bfd_data
 47.4007 ++#define bfd_elf32_bfd_set_private_flags		avr32_elf_set_private_flags
 47.4008 ++#define bfd_elf32_bfd_print_private_bfd_data	avr32_elf_print_private_bfd_data
 47.4009 ++#define bfd_elf32_new_section_hook		avr32_elf_new_section_hook
 47.4010 ++
 47.4011 ++#define elf_backend_gc_mark_hook		avr32_elf_gc_mark_hook
 47.4012 ++#define elf_backend_gc_sweep_hook		avr32_elf_gc_sweep_hook
 47.4013 ++#define elf_backend_relocate_section	avr32_elf_relocate_section
 47.4014 ++#define elf_backend_copy_indirect_symbol avr32_elf_copy_indirect_symbol
 47.4015 ++#define elf_backend_create_dynamic_sections avr32_elf_create_dynamic_sections
 47.4016 ++#define bfd_elf32_bfd_link_hash_table_create avr32_elf_link_hash_table_create
 47.4017 ++#define elf_backend_adjust_dynamic_symbol avr32_elf_adjust_dynamic_symbol
 47.4018 ++#define elf_backend_size_dynamic_sections avr32_elf_size_dynamic_sections
 47.4019 ++#define elf_backend_finish_dynamic_symbol avr32_elf_finish_dynamic_symbol
 47.4020 ++#define elf_backend_finish_dynamic_sections avr32_elf_finish_dynamic_sections
 47.4021 ++
 47.4022 ++#define bfd_elf32_bfd_relax_section	avr32_elf_relax_section
 47.4023 ++
 47.4024 ++/* Find out which symbols need an entry in .got. */
 47.4025 ++#define elf_backend_check_relocs	avr32_check_relocs
 47.4026 ++#define elf_backend_can_refcount	1
 47.4027 ++#define elf_backend_can_gc_sections	1
 47.4028 ++#define elf_backend_plt_readonly	1
 47.4029 ++#define elf_backend_plt_not_loaded	1
 47.4030 ++#define elf_backend_want_plt_sym	0
 47.4031 ++#define elf_backend_plt_alignment	2
 47.4032 ++#define elf_backend_want_dynbss		0
 47.4033 ++#define elf_backend_want_got_plt	0
 47.4034 ++#define elf_backend_want_got_sym	1
 47.4035 ++#define elf_backend_got_header_size	AVR32_GOT_HEADER_SIZE
 47.4036 ++
 47.4037 ++#include "elf32-target.h"
 47.4038 +--- /dev/null
 47.4039 ++++ b/bfd/elf32-avr32.h
 47.4040 +@@ -0,0 +1,23 @@
 47.4041 ++/* AVR32-specific support for 32-bit ELF.
 47.4042 ++   Copyright 2007 Atmel Corporation.
 47.4043 ++
 47.4044 ++   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
 47.4045 ++
 47.4046 ++   This file is part of BFD, the Binary File Descriptor library.
 47.4047 ++
 47.4048 ++   This program is free software; you can redistribute it and/or modify
 47.4049 ++   it under the terms of the GNU General Public License as published by
 47.4050 ++   the Free Software Foundation; either version 2 of the License, or
 47.4051 ++   (at your option) any later version.
 47.4052 ++
 47.4053 ++   This program is distributed in the hope that it will be useful,
 47.4054 ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
 47.4055 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 47.4056 ++   GNU General Public License for more details.
 47.4057 ++
 47.4058 ++   You should have received a copy of the GNU General Public License
 47.4059 ++   along with this program; if not, write to the Free Software
 47.4060 ++   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 47.4061 ++
 47.4062 ++void bfd_elf32_avr32_set_options(struct bfd_link_info *info,
 47.4063 ++				 int direct_data_refs);
 47.4064 +--- a/bfd/elf-bfd.h
 47.4065 ++++ b/bfd/elf-bfd.h
 47.4066 +@@ -1400,6 +1400,10 @@ struct elf_obj_tdata
 47.4067 +      find_nearest_line.  */
 47.4068 +   struct mips_elf_find_line *find_line_info;
 47.4069 + 
 47.4070 ++  /* Used by AVR32 ELF relaxation code.  Contains an array of pointers
 47.4071 ++     for each local symbol to the fragment where it is defined.  */
 47.4072 ++  struct fragment **local_sym_frag;
 47.4073 ++
 47.4074 +   /* A place to stash dwarf1 info for this bfd.  */
 47.4075 +   struct dwarf1_debug *dwarf1_find_line_info;
 47.4076 + 
 47.4077 +--- a/bfd/Makefile.am
 47.4078 ++++ b/bfd/Makefile.am
 47.4079 +@@ -63,6 +63,7 @@ ALL_MACHINES = \
 47.4080 + 	cpu-arc.lo \
 47.4081 + 	cpu-arm.lo \
 47.4082 + 	cpu-avr.lo \
 47.4083 ++	cpu-avr32.lo \
 47.4084 + 	cpu-bfin.lo \
 47.4085 + 	cpu-cr16.lo \
 47.4086 + 	cpu-cr16c.lo \
 47.4087 +@@ -243,6 +244,7 @@ BFD32_BACKENDS = \
 47.4088 + 	elf32-arc.lo \
 47.4089 + 	elf32-arm.lo \
 47.4090 + 	elf32-avr.lo \
 47.4091 ++	elf32-avr32.lo \
 47.4092 + 	elf32-bfin.lo \
 47.4093 + 	elf32-cr16.lo \
 47.4094 + 	elf32-cr16c.lo \
 47.4095 +@@ -1328,6 +1330,10 @@ elf32-cr16.lo: elf32-cr16.c $(INCDIR)/fi
 47.4096 +   $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h elf-bfd.h \
 47.4097 +   $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
 47.4098 +   $(INCDIR)/elf/cr16.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
 47.4099 ++elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \
 47.4100 ++  $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
 47.4101 ++  $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \
 47.4102 ++  elf32-target.h
 47.4103 + elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \
 47.4104 +   $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \
 47.4105 +   $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
 47.4106 +--- a/bfd/reloc.c
 47.4107 ++++ b/bfd/reloc.c
 47.4108 +@@ -3948,6 +3948,131 @@ ENUMDOC
 47.4109 +   instructions
 47.4110 + 
 47.4111 + ENUM
 47.4112 ++  BFD_RELOC_AVR32_DIFF32
 47.4113 ++ENUMX
 47.4114 ++  BFD_RELOC_AVR32_DIFF16
 47.4115 ++ENUMX
 47.4116 ++  BFD_RELOC_AVR32_DIFF8
 47.4117 ++ENUMDOC
 47.4118 ++  Difference between two labels: L2 - L1. The value of L1 is encoded
 47.4119 ++  as sym + addend, while the initial difference after assembly is
 47.4120 ++  inserted into the object file by the assembler.
 47.4121 ++ENUM
 47.4122 ++  BFD_RELOC_AVR32_GOT32
 47.4123 ++ENUMX
 47.4124 ++  BFD_RELOC_AVR32_GOT16
 47.4125 ++ENUMX
 47.4126 ++  BFD_RELOC_AVR32_GOT8
 47.4127 ++ENUMDOC
 47.4128 ++  Reference to a symbol through the Global Offset Table. The linker
 47.4129 ++  will allocate an entry for symbol in the GOT and insert the offset
 47.4130 ++  of this entry as the relocation value.
 47.4131 ++ENUM
 47.4132 ++  BFD_RELOC_AVR32_21S
 47.4133 ++ENUMX
 47.4134 ++  BFD_RELOC_AVR32_16U
 47.4135 ++ENUMX
 47.4136 ++  BFD_RELOC_AVR32_16S
 47.4137 ++ENUMX
 47.4138 ++  BFD_RELOC_AVR32_SUB5
 47.4139 ++ENUMX
 47.4140 ++  BFD_RELOC_AVR32_8S_EXT
 47.4141 ++ENUMX
 47.4142 ++  BFD_RELOC_AVR32_8S
 47.4143 ++ENUMX
 47.4144 ++  BFD_RELOC_AVR32_15S
 47.4145 ++ENUMDOC
 47.4146 ++  Normal (non-pc-relative) code relocations. Alignment and signedness
 47.4147 ++  is indicated by the suffixes. S means signed, U means unsigned. W
 47.4148 ++  means word-aligned, H means halfword-aligned, neither means
 47.4149 ++  byte-aligned (no alignment.) SUB5 is the same relocation as 16S.
 47.4150 ++ENUM
 47.4151 ++  BFD_RELOC_AVR32_22H_PCREL
 47.4152 ++ENUMX
 47.4153 ++  BFD_RELOC_AVR32_18W_PCREL
 47.4154 ++ENUMX
 47.4155 ++  BFD_RELOC_AVR32_16B_PCREL
 47.4156 ++ENUMX
 47.4157 ++  BFD_RELOC_AVR32_16N_PCREL
 47.4158 ++ENUMX
 47.4159 ++  BFD_RELOC_AVR32_14UW_PCREL
 47.4160 ++ENUMX
 47.4161 ++  BFD_RELOC_AVR32_11H_PCREL
 47.4162 ++ENUMX
 47.4163 ++  BFD_RELOC_AVR32_10UW_PCREL
 47.4164 ++ENUMX
 47.4165 ++  BFD_RELOC_AVR32_9H_PCREL
 47.4166 ++ENUMX
 47.4167 ++  BFD_RELOC_AVR32_9UW_PCREL
 47.4168 ++ENUMDOC
 47.4169 ++  PC-relative relocations are signed if neither 'U' nor 'S' is
 47.4170 ++  specified. However, we explicitly tack on a 'B' to indicate no
 47.4171 ++  alignment, to avoid confusion with data relocs. All of these resolve
 47.4172 ++  to sym + addend - offset, except the one with 'N' (negated) suffix.
 47.4173 ++  This particular one resolves to offset - sym - addend.
 47.4174 ++ENUM
 47.4175 ++  BFD_RELOC_AVR32_GOTPC
 47.4176 ++ENUMDOC
 47.4177 ++  Subtract the link-time address of the GOT from (symbol + addend)
 47.4178 ++  and insert the result.
 47.4179 ++ENUM
 47.4180 ++  BFD_RELOC_AVR32_GOTCALL
 47.4181 ++ENUMX
 47.4182 ++  BFD_RELOC_AVR32_LDA_GOT
 47.4183 ++ENUMX
 47.4184 ++  BFD_RELOC_AVR32_GOT21S
 47.4185 ++ENUMX
 47.4186 ++  BFD_RELOC_AVR32_GOT18SW
 47.4187 ++ENUMX
 47.4188 ++  BFD_RELOC_AVR32_GOT16S
 47.4189 ++ENUMDOC
 47.4190 ++  Reference to a symbol through the GOT. The linker will allocate an
 47.4191 ++  entry for symbol in the GOT and insert the offset of this entry as
 47.4192 ++  the relocation value. addend must be zero. As usual, 'S' means
 47.4193 ++  signed, 'W' means word-aligned, etc.
 47.4194 ++ENUM
 47.4195 ++  BFD_RELOC_AVR32_32_CPENT
 47.4196 ++ENUMDOC
 47.4197 ++  32-bit constant pool entry. I don't think 8- and 16-bit entries make
 47.4198 ++  a whole lot of sense.
 47.4199 ++ENUM
 47.4200 ++  BFD_RELOC_AVR32_CPCALL
 47.4201 ++ENUMX
 47.4202 ++  BFD_RELOC_AVR32_16_CP
 47.4203 ++ENUMX
 47.4204 ++  BFD_RELOC_AVR32_9W_CP
 47.4205 ++ENUMDOC
 47.4206 ++  Constant pool references. Some of these relocations are signed,
 47.4207 ++  others are unsigned. It doesn't really matter, since the constant
 47.4208 ++  pool always comes after the code that references it.
 47.4209 ++ENUM
 47.4210 ++  BFD_RELOC_AVR32_ALIGN
 47.4211 ++ENUMDOC
 47.4212 ++  sym must be the absolute symbol. The addend specifies the alignment
 47.4213 ++  order, e.g. if addend is 2, the linker must add padding so that the
 47.4214 ++  next address is aligned to a 4-byte boundary.
 47.4215 ++ENUM
 47.4216 ++  BFD_RELOC_AVR32_14UW
 47.4217 ++ENUMX
 47.4218 ++  BFD_RELOC_AVR32_10UW
 47.4219 ++ENUMX
 47.4220 ++  BFD_RELOC_AVR32_10SW
 47.4221 ++ENUMX
 47.4222 ++  BFD_RELOC_AVR32_STHH_W
 47.4223 ++ENUMX
 47.4224 ++  BFD_RELOC_AVR32_7UW
 47.4225 ++ENUMX
 47.4226 ++  BFD_RELOC_AVR32_6S
 47.4227 ++ENUMX
 47.4228 ++  BFD_RELOC_AVR32_6UW
 47.4229 ++ENUMX
 47.4230 ++  BFD_RELOC_AVR32_4UH
 47.4231 ++ENUMX
 47.4232 ++  BFD_RELOC_AVR32_3U
 47.4233 ++ENUMDOC
 47.4234 ++  Code relocations that will never make it to the output file.
 47.4235 ++
 47.4236 ++ENUM
 47.4237 +   BFD_RELOC_390_12
 47.4238 + ENUMDOC
 47.4239 +    Direct 12 bit.
 47.4240 +--- a/bfd/targets.c
 47.4241 ++++ b/bfd/targets.c
 47.4242 +@@ -564,6 +564,7 @@ extern const bfd_target bfd_efi_app_ia32
 47.4243 + extern const bfd_target bfd_efi_app_x86_64_vec;
 47.4244 + extern const bfd_target bfd_efi_app_ia64_vec;
 47.4245 + extern const bfd_target bfd_elf32_avr_vec;
 47.4246 ++extern const bfd_target bfd_elf32_avr32_vec;
 47.4247 + extern const bfd_target bfd_elf32_bfin_vec;
 47.4248 + extern const bfd_target bfd_elf32_bfinfdpic_vec;
 47.4249 + extern const bfd_target bfd_elf32_big_generic_vec;
 47.4250 +@@ -884,6 +885,7 @@ static const bfd_target * const _bfd_tar
 47.4251 + 	&bfd_efi_app_ia64_vec,
 47.4252 + #endif
 47.4253 + 	&bfd_elf32_avr_vec,
 47.4254 ++	&bfd_elf32_avr32_vec,
 47.4255 + 	&bfd_elf32_bfin_vec,
 47.4256 + 	&bfd_elf32_bfinfdpic_vec,
 47.4257 + 
 47.4258 +--- a/binutils/Makefile.am
 47.4259 ++++ b/binutils/Makefile.am
 47.4260 +@@ -577,7 +577,7 @@ readelf.o: readelf.c sysdep.h $(INCDIR)/
 47.4261 +   $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h dwarf.h \
 47.4262 +   $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
 47.4263 +   $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/alpha.h \
 47.4264 +-  $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h \
 47.4265 ++  $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h\
 47.4266 +   $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/crx.h \
 47.4267 +   $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \
 47.4268 +   $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/hppa.h \
 47.4269 +--- a/binutils/readelf.c
 47.4270 ++++ b/binutils/readelf.c
 47.4271 +@@ -21,7 +21,7 @@
 47.4272 +    along with this program; if not, write to the Free Software
 47.4273 +    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
 47.4274 +    02110-1301, USA.  */
 47.4275 +-
 47.4276 ++
 47.4277 + /* The difference between readelf and objdump:
 47.4278 + 
 47.4279 +   Both programs are capable of displaying the contents of ELF format files,
 47.4280 +@@ -40,7 +40,7 @@
 47.4281 +   There is also the case that readelf can provide more information about an
 47.4282 +   ELF file than is provided by objdump.  In particular it can display DWARF
 47.4283 +   debugging information which (at the moment) objdump cannot.  */
 47.4284 +-
 47.4285 ++
 47.4286 + #include "sysdep.h"
 47.4287 + #include <assert.h>
 47.4288 + #include <sys/stat.h>
 47.4289 +@@ -109,6 +109,7 @@
 47.4290 + #include "elf/arc.h"
 47.4291 + #include "elf/arm.h"
 47.4292 + #include "elf/avr.h"
 47.4293 ++#include "elf/avr32.h"
 47.4294 + #include "elf/bfin.h"
 47.4295 + #include "elf/cr16.h"
 47.4296 + #include "elf/cris.h"
 47.4297 +@@ -303,7 +304,7 @@ static void (*byte_put) (unsigned char *
 47.4298 + #define streq(a,b)	  (strcmp ((a), (b)) == 0)
 47.4299 + #define strneq(a,b,n)	  (strncmp ((a), (b), (n)) == 0)
 47.4300 + #define const_strneq(a,b) (strncmp ((a), (b), sizeof (b) - 1) == 0)
 47.4301 +-
 47.4302 ++
 47.4303 + static void *
 47.4304 + get_data (void *var, FILE *file, long offset, size_t size, size_t nmemb,
 47.4305 + 	  const char *reason)
 47.4306 +@@ -614,6 +615,7 @@ guess_is_rela (unsigned long e_machine)
 47.4307 +     case EM_ALPHA:
 47.4308 +     case EM_ALTERA_NIOS2:
 47.4309 +     case EM_AVR:
 47.4310 ++    case EM_AVR32:
 47.4311 +     case EM_AVR_OLD:
 47.4312 +     case EM_BLACKFIN:
 47.4313 +     case EM_CR16:
 47.4314 +@@ -1006,6 +1008,10 @@ dump_relocations (FILE *file,
 47.4315 + 	  rtype = elf_avr_reloc_type (type);
 47.4316 + 	  break;
 47.4317 + 
 47.4318 ++	case EM_AVR32:
 47.4319 ++	  rtype = elf_avr32_reloc_type (type);
 47.4320 ++	  break;
 47.4321 ++
 47.4322 + 	case EM_OLD_SPARCV9:
 47.4323 + 	case EM_SPARC32PLUS:
 47.4324 + 	case EM_SPARCV9:
 47.4325 +@@ -1763,6 +1769,7 @@ get_machine_name (unsigned e_machine)
 47.4326 +     case EM_VAX:		return "Digital VAX";
 47.4327 +     case EM_AVR_OLD:
 47.4328 +     case EM_AVR:		return "Atmel AVR 8-bit microcontroller";
 47.4329 ++    case EM_AVR32:		return "Atmel AVR32";
 47.4330 +     case EM_CRIS:		return "Axis Communications 32-bit embedded processor";
 47.4331 +     case EM_JAVELIN:		return "Infineon Technologies 32-bit embedded cpu";
 47.4332 +     case EM_FIREPATH:		return "Element 14 64-bit DSP processor";
 47.4333 +--- a/gas/as.c
 47.4334 ++++ b/gas/as.c
 47.4335 +@@ -441,10 +441,10 @@ parse_args (int * pargc, char *** pargv)
 47.4336 +        the end of the preceeding line so that it is simpler to
 47.4337 +        selectively add and remove lines from this list.  */
 47.4338 +     {"alternate", no_argument, NULL, OPTION_ALTERNATE}
 47.4339 +-    /* The entry for "a" is here to prevent getopt_long_only() from
 47.4340 +-       considering that -a is an abbreviation for --alternate.  This is
 47.4341 +-       necessary because -a=<FILE> is a valid switch but getopt would
 47.4342 +-       normally reject it since --alternate does not take an argument.  */
 47.4343 ++    /* The next two entries are here to prevent getopt_long_only() from
 47.4344 ++       considering that -a or -al is an abbreviation for --alternate.
 47.4345 ++       This is necessary because -a=<FILE> is a valid switch but getopt
 47.4346 ++       would normally reject it since --alternate does not take an argument.  */
 47.4347 +     ,{"a", optional_argument, NULL, 'a'}
 47.4348 +     /* Handle -al=<FILE>.  */
 47.4349 +     ,{"al", optional_argument, NULL, OPTION_AL}
 47.4350 +@@ -803,8 +803,15 @@ This program has absolutely no warranty.
 47.4351 + 	case 'a':
 47.4352 + 	  if (optarg)
 47.4353 + 	    {
 47.4354 +-	      if (optarg != old_argv[optind] && optarg[-1] == '=')
 47.4355 +-		--optarg;
 47.4356 ++	      /* If optarg is part of the -a switch and not a separate argument
 47.4357 ++		 in its own right, then scan backwards to the just after the -a.
 47.4358 ++		 This means skipping over both '=' and 'l' which might have been
 47.4359 ++		 taken to be part of the -a switch itself.  */
 47.4360 ++	      if (optarg != old_argv[optind])
 47.4361 ++		{
 47.4362 ++		  while (optarg[-1] == '=' || optarg[-1] == 'l')
 47.4363 ++		    --optarg;
 47.4364 ++		}
 47.4365 + 
 47.4366 + 	      if (md_parse_option (optc, optarg) != 0)
 47.4367 + 		break;
 47.4368 +@@ -1234,7 +1241,7 @@ main (int argc, char ** argv)
 47.4369 +     keep_it = 0;
 47.4370 + 
 47.4371 +   if (!keep_it)
 47.4372 +-    unlink_if_ordinary (out_file_name);
 47.4373 ++    unlink (out_file_name);
 47.4374 + 
 47.4375 +   input_scrub_end ();
 47.4376 + 
 47.4377 +--- /dev/null
 47.4378 ++++ b/gas/config/tc-avr32.c
 47.4379 +@@ -0,0 +1,4806 @@
 47.4380 ++/* Assembler implementation for AVR32.
 47.4381 ++   Copyright 2003-2006 Atmel Corporation.
 47.4382 ++
 47.4383 ++   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
 47.4384 ++
 47.4385 ++   This file is part of GAS, the GNU Assembler.
 47.4386 ++
 47.4387 ++   GAS is free software; you can redistribute it and/or modify it
 47.4388 ++   under the terms of the GNU General Public License as published by
 47.4389 ++   the Free Software Foundation; either version 2, or (at your option)
 47.4390 ++   any later version.
 47.4391 ++
 47.4392 ++   GAS is distributed in the hope that it will be useful, but WITHOUT
 47.4393 ++   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 47.4394 ++   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
 47.4395 ++   License for more details.
 47.4396 ++
 47.4397 ++   You should have received a copy of the GNU General Public License
 47.4398 ++   along with GAS; see the file COPYING.  If not, write to the Free
 47.4399 ++   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 47.4400 ++   02111-1307, USA.  */
 47.4401 ++
 47.4402 ++#include <stdio.h>
 47.4403 ++#include "as.h"
 47.4404 ++#include "safe-ctype.h"
 47.4405 ++#include "subsegs.h"
 47.4406 ++#include "symcat.h"
 47.4407 ++#include "opcodes/avr32-opc.h"
 47.4408 ++#include "opcodes/avr32-asm.h"
 47.4409 ++#include "elf/avr32.h"
 47.4410 ++#include "dwarf2dbg.h"
 47.4411 ++
 47.4412 ++#define xDEBUG
 47.4413 ++#define xOPC_CONSISTENCY_CHECK
 47.4414 ++
 47.4415 ++#ifdef DEBUG
 47.4416 ++# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
 47.4417 ++#else
 47.4418 ++# define pr_debug(fmt, args...)
 47.4419 ++#endif
 47.4420 ++
 47.4421 ++/* 3 MSB of instruction word indicate group. Group 7 -> extended */
 47.4422 ++#define AVR32_COMPACT_P(opcode) ((opcode[0] & 0xe0) != 0xe0)
 47.4423 ++
 47.4424 ++#define streq(a, b)		(strcmp(a, b) == 0)
 47.4425 ++#define skip_whitespace(str)	do { while(*(str) == ' ') ++(str); } while(0)
 47.4426 ++
 47.4427 ++/* Flags given on the command line */
 47.4428 ++static int avr32_pic	= FALSE;
 47.4429 ++int linkrelax	= FALSE;
 47.4430 ++int avr32_iarcompat	= FALSE;
 47.4431 ++
 47.4432 ++/* This array holds the chars that always start a comment. */
 47.4433 ++const char comment_chars[]		= "#";
 47.4434 ++
 47.4435 ++/* This array holds the chars that only start a comment at the
 47.4436 ++   beginning of a line.  We must include '#' here because the compiler
 47.4437 ++   may produce #APP and #NO_APP in its output.  */
 47.4438 ++const char line_comment_chars[]		= "#";
 47.4439 ++
 47.4440 ++/* These may be used instead of newline (same as ';' in C).  */
 47.4441 ++const char line_separator_chars[]	= ";";
 47.4442 ++
 47.4443 ++/* Chars that can be used to separate mantissa from exponent in
 47.4444 ++   floating point numbers.  */
 47.4445 ++const char EXP_CHARS[]			= "eE";
 47.4446 ++
 47.4447 ++/* Chars that mean this number is a floating point constant.  */
 47.4448 ++const char FLT_CHARS[]			= "dD";
 47.4449 ++
 47.4450 ++/* Pre-defined "_GLOBAL_OFFSET_TABLE_"  */
 47.4451 ++symbolS *GOT_symbol;
 47.4452 ++
 47.4453 ++static struct hash_control *avr32_mnemonic_htab;
 47.4454 ++
 47.4455 ++struct avr32_ifield_data
 47.4456 ++{
 47.4457 ++  bfd_vma value;
 47.4458 ++  /* FIXME: Get rid of align_order and complain. complain is never
 47.4459 ++     used, align_order is used in one place.  Try to use the relax
 47.4460 ++     table instead.  */
 47.4461 ++  unsigned int align_order;
 47.4462 ++};
 47.4463 ++
 47.4464 ++struct avr32_insn
 47.4465 ++{
 47.4466 ++  const struct avr32_syntax *syntax;
 47.4467 ++  expressionS immediate;
 47.4468 ++  int pcrel;
 47.4469 ++  int force_extended;
 47.4470 ++  unsigned int next_slot;
 47.4471 ++  bfd_reloc_code_real_type r_type;
 47.4472 ++  struct avr32_ifield_data field_value[AVR32_MAX_FIELDS];
 47.4473 ++};
 47.4474 ++
 47.4475 ++static struct avr32_insn current_insn;
 47.4476 ++
 47.4477 ++/* The target specific pseudo-ops we support. */
 47.4478 ++static void s_rseg (int);
 47.4479 ++static void s_cpool(int);
 47.4480 ++
 47.4481 ++const pseudo_typeS md_pseudo_table[] =
 47.4482 ++{
 47.4483 ++  /* Make sure that .word is 32 bits */
 47.4484 ++  { "word", cons, 4 },
 47.4485 ++  { "file", (void (*) PARAMS ((int))) dwarf2_directive_file, 0 },
 47.4486 ++  { "loc", dwarf2_directive_loc, 0 },
 47.4487 ++
 47.4488 ++  /* .lcomm requires an explicit alignment parameter */
 47.4489 ++  { "lcomm", s_lcomm, 1 },
 47.4490 ++
 47.4491 ++  /* AVR32-specific pseudo-ops */
 47.4492 ++  { "cpool", s_cpool, 0},
 47.4493 ++
 47.4494 ++  /* IAR compatible pseudo-ops */
 47.4495 ++  { "program", s_ignore, 0 },
 47.4496 ++  { "public", s_globl, 0 },
 47.4497 ++  { "extern", s_ignore, 0 },
 47.4498 ++  { "module", s_ignore, 0 },
 47.4499 ++  { "rseg", s_rseg, 0 },
 47.4500 ++  { "dc8", cons, 1 },
 47.4501 ++  { "dc16", cons, 2 },
 47.4502 ++  { "dc32", cons, 4 },
 47.4503 ++
 47.4504 ++  { NULL, NULL, 0 }
 47.4505 ++};
 47.4506 ++
 47.4507 ++/* Questionable stuff starts here */
 47.4508 ++
 47.4509 ++enum avr32_opinfo {
 47.4510 ++  AVR32_OPINFO_NONE = BFD_RELOC_NONE,
 47.4511 ++  AVR32_OPINFO_GOT,
 47.4512 ++  AVR32_OPINFO_TLSGD,
 47.4513 ++  AVR32_OPINFO_HI,
 47.4514 ++  AVR32_OPINFO_LO,
 47.4515 ++};
 47.4516 ++
 47.4517 ++enum avr32_arch {
 47.4518 ++  ARCH_TYPE_AP,
 47.4519 ++  ARCH_TYPE_UCR1,
 47.4520 ++  ARCH_TYPE_UCR2,
 47.4521 ++};
 47.4522 ++
 47.4523 ++struct arch_type_s
 47.4524 ++{
 47.4525 ++  /* Architecture name */
 47.4526 ++  char *name;
 47.4527 ++  /* Instruction Set Architecture Flags */
 47.4528 ++  unsigned long isa_flags;
 47.4529 ++};
 47.4530 ++
 47.4531 ++struct part_type_s
 47.4532 ++{
 47.4533 ++  /* Part name */
 47.4534 ++  char *name;
 47.4535 ++  /* Architecture type */
 47.4536 ++  unsigned int arch;
 47.4537 ++};
 47.4538 ++
 47.4539 ++static struct arch_type_s arch_types[] =
 47.4540 ++{
 47.4541 ++  {"ap", AVR32_V1 | AVR32_SIMD | AVR32_DSP | AVR32_PICO},
 47.4542 ++  {"ucr1", AVR32_V1 | AVR32_DSP | AVR32_RMW},
 47.4543 ++  {"ucr2", AVR32_V1 | AVR32_V2 | AVR32_DSP | AVR32_RMW},
 47.4544 ++  {"all-insn", AVR32_V1 | AVR32_V2 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO},
 47.4545 ++  {NULL, 0}
 47.4546 ++};
 47.4547 ++
 47.4548 ++static struct part_type_s part_types[] = {
 47.4549 ++  {"ap7000", ARCH_TYPE_AP},
 47.4550 ++  {"ap7001", ARCH_TYPE_AP},
 47.4551 ++  {"ap7002", ARCH_TYPE_AP},
 47.4552 ++  {"ap7200", ARCH_TYPE_AP},
 47.4553 ++  {"uc3a0128", ARCH_TYPE_UCR2},
 47.4554 ++  {"uc3a0256", ARCH_TYPE_UCR2},
 47.4555 ++  {"uc3a0512es", ARCH_TYPE_UCR1},
 47.4556 ++  {"uc3a0512", ARCH_TYPE_UCR2},
 47.4557 ++  {"uc3a1128", ARCH_TYPE_UCR2},
 47.4558 ++  {"uc3a1256es", ARCH_TYPE_UCR1},
 47.4559 ++  {"uc3a1256", ARCH_TYPE_UCR2},
 47.4560 ++  {"uc3a1512es", ARCH_TYPE_UCR1},
 47.4561 ++  {"uc3a1512", ARCH_TYPE_UCR2},
 47.4562 ++  {"uc3a364", ARCH_TYPE_UCR2},
 47.4563 ++  {"uc3a364s", ARCH_TYPE_UCR2},
 47.4564 ++  {"uc3a3128", ARCH_TYPE_UCR2},
 47.4565 ++  {"uc3a3128s", ARCH_TYPE_UCR2},
 47.4566 ++  {"uc3a3256", ARCH_TYPE_UCR2},
 47.4567 ++  {"uc3a3256s", ARCH_TYPE_UCR2},
 47.4568 ++  {"uc3b064", ARCH_TYPE_UCR1},
 47.4569 ++  {"uc3b0128", ARCH_TYPE_UCR1},
 47.4570 ++  {"uc3b0256es", ARCH_TYPE_UCR1},
 47.4571 ++  {"uc3b0256", ARCH_TYPE_UCR1},
 47.4572 ++  {"uc3b164", ARCH_TYPE_UCR1},
 47.4573 ++  {"uc3b1128", ARCH_TYPE_UCR1},
 47.4574 ++  {"uc3b1256es", ARCH_TYPE_UCR1},
 47.4575 ++  {"uc3b1256", ARCH_TYPE_UCR1},
 47.4576 ++  {NULL, 0}
 47.4577 ++};
 47.4578 ++
 47.4579 ++/* Current architecture type.  */
 47.4580 ++static struct arch_type_s default_arch = {"all-insn", AVR32_V1 | AVR32_V2 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO };
 47.4581 ++static struct arch_type_s *avr32_arch = &default_arch;
 47.4582 ++
 47.4583 ++/* Display nicely formatted list of known part- and architecture names.  */
 47.4584 ++
 47.4585 ++static void
 47.4586 ++show_arch_list (FILE *stream)
 47.4587 ++{
 47.4588 ++  int i, x;
 47.4589 ++
 47.4590 ++  fprintf (stream, _("Known architecture names:"));
 47.4591 ++  x = 1000;
 47.4592 ++
 47.4593 ++  for (i = 0; arch_types[i].name; i++)
 47.4594 ++    {
 47.4595 ++      int len = strlen (arch_types[i].name);
 47.4596 ++
 47.4597 ++      x += len + 1;
 47.4598 ++
 47.4599 ++      if (x < 75)
 47.4600 ++	fprintf (stream, " %s", arch_types[i].name);
 47.4601 ++      else
 47.4602 ++	{
 47.4603 ++	  fprintf (stream, "\n  %s", arch_types[i].name);
 47.4604 ++	  x = len + 2;
 47.4605 ++	}
 47.4606 ++    }
 47.4607 ++
 47.4608 ++  fprintf (stream, "\n");
 47.4609 ++}
 47.4610 ++
 47.4611 ++static void
 47.4612 ++show_part_list (FILE *stream)
 47.4613 ++{
 47.4614 ++  int i, x;
 47.4615 ++
 47.4616 ++  fprintf (stream, _("Known part names:"));
 47.4617 ++  x = 1000;
 47.4618 ++
 47.4619 ++  for (i = 0; part_types[i].name; i++)
 47.4620 ++    {
 47.4621 ++      int len = strlen(part_types[i].name);
 47.4622 ++
 47.4623 ++      x += len + 1;
 47.4624 ++
 47.4625 ++      if (x < 75)
 47.4626 ++	fprintf (stream, " %s", part_types[i].name);
 47.4627 ++      else
 47.4628 ++	{
 47.4629 ++	  fprintf(stream, "\n  %s", part_types[i].name);
 47.4630 ++	  x = len + 2;
 47.4631 ++	}
 47.4632 ++    }
 47.4633 ++
 47.4634 ++  fprintf (stream, "\n");
 47.4635 ++}
 47.4636 ++
 47.4637 ++const char *md_shortopts = "";
 47.4638 ++struct option md_longopts[] =
 47.4639 ++{
 47.4640 ++#define OPTION_ARCH		(OPTION_MD_BASE)
 47.4641 ++#define OPTION_PART		(OPTION_ARCH + 1)
 47.4642 ++#define OPTION_IAR		(OPTION_PART + 1)
 47.4643 ++#define OPTION_PIC		(OPTION_IAR + 1)
 47.4644 ++#define OPTION_NOPIC		(OPTION_PIC + 1)
 47.4645 ++#define OPTION_LINKRELAX	(OPTION_NOPIC + 1)
 47.4646 ++#define OPTION_NOLINKRELAX	(OPTION_LINKRELAX + 1)
 47.4647 ++#define OPTION_DIRECT_DATA_REFS (OPTION_NOLINKRELAX + 1)
 47.4648 ++  {"march",		required_argument, NULL, OPTION_ARCH},
 47.4649 ++  {"mpart",		required_argument, NULL, OPTION_PART},
 47.4650 ++  {"iar",		no_argument, NULL, OPTION_IAR},
 47.4651 ++  {"pic",		no_argument, NULL, OPTION_PIC},
 47.4652 ++  {"no-pic",		no_argument, NULL, OPTION_NOPIC},
 47.4653 ++  {"linkrelax",		no_argument, NULL, OPTION_LINKRELAX},
 47.4654 ++  {"no-linkrelax",	no_argument, NULL, OPTION_NOLINKRELAX},
 47.4655 ++  /* deprecated alias for -mpart=xxx */
 47.4656 ++  {"mcpu",		required_argument, NULL, OPTION_PART},
 47.4657 ++  {NULL,		no_argument, NULL, 0}
 47.4658 ++};
 47.4659 ++
 47.4660 ++size_t md_longopts_size = sizeof (md_longopts);
 47.4661 ++
 47.4662 ++void
 47.4663 ++md_show_usage (FILE *stream)
 47.4664 ++{
 47.4665 ++  fprintf (stream, _("\
 47.4666 ++AVR32 options:\n\
 47.4667 ++  -march=[arch-name]      Select cpu architecture. [Default `all-insn']\n\
 47.4668 ++  -mpart=[part-name]      Select specific part. [Default `none']\n\
 47.4669 ++  --pic                   Produce Position-Independent Code\n\
 47.4670 ++  --no-pic                Don't produce Position-Independent Code\n\
 47.4671 ++  --linkrelax             Produce output suitable for linker relaxing\n\
 47.4672 ++  --no-linkrelax          Don't produce output suitable for linker relaxing\n"));
 47.4673 ++  show_arch_list(stream);
 47.4674 ++}
 47.4675 ++
 47.4676 ++int
 47.4677 ++md_parse_option (int c, char *arg ATTRIBUTE_UNUSED)
 47.4678 ++{
 47.4679 ++  switch (c)
 47.4680 ++    {
 47.4681 ++    case OPTION_ARCH:
 47.4682 ++      {
 47.4683 ++	int i;
 47.4684 ++	char *s = alloca (strlen (arg) + 1);
 47.4685 ++
 47.4686 ++	{
 47.4687 ++	  char *t = s;
 47.4688 ++	  char *arg1 = arg;
 47.4689 ++
 47.4690 ++	  do
 47.4691 ++	    *t = TOLOWER (*arg1++);
 47.4692 ++	  while (*t++);
 47.4693 ++	}
 47.4694 ++
 47.4695 ++        /* Add backward compability */
 47.4696 ++        if (strcmp ("uc", s)== 0)
 47.4697 ++          {
 47.4698 ++            as_warn("Deprecated arch `%s' specified. "
 47.4699 ++                    "Please use '-march=ucr1' instead. "
 47.4700 ++                    "Converting to arch 'ucr1'\n",
 47.4701 ++                     s);
 47.4702 ++            s="ucr1";
 47.4703 ++          }
 47.4704 ++
 47.4705 ++	for (i = 0; arch_types[i].name; ++i)
 47.4706 ++	  if (strcmp (arch_types[i].name, s) == 0)
 47.4707 ++	    break;
 47.4708 ++
 47.4709 ++	if (!arch_types[i].name)
 47.4710 ++	  {
 47.4711 ++	    show_arch_list (stderr);
 47.4712 ++	    as_fatal (_("unknown architecture: %s\n"), arg);
 47.4713 ++	  }
 47.4714 ++
 47.4715 ++        avr32_arch = &arch_types[i];
 47.4716 ++	break;
 47.4717 ++      }
 47.4718 ++    case OPTION_PART:
 47.4719 ++      {
 47.4720 ++	int i;
 47.4721 ++	char *s = alloca (strlen (arg) + 1);
 47.4722 ++	char *t = s;
 47.4723 ++	char *p = arg;
 47.4724 ++
 47.4725 ++	/* If arch type has already been set, don't bother.
 47.4726 ++	   -march= always overrides -mpart=  */
 47.4727 ++	if (avr32_arch != &default_arch)
 47.4728 ++	  break;
 47.4729 ++
 47.4730 ++	do
 47.4731 ++	  *t = TOLOWER (*p++);
 47.4732 ++	while (*t++);
 47.4733 ++
 47.4734 ++	for (i = 0; part_types[i].name; ++i)
 47.4735 ++	  if (strcmp (part_types[i].name, s) == 0)
 47.4736 ++	    break;
 47.4737 ++
 47.4738 ++	if (!part_types[i].name)
 47.4739 ++	  {
 47.4740 ++	    show_part_list (stderr);
 47.4741 ++	    as_fatal (_("unknown part: %s\n"), arg);
 47.4742 ++	  }
 47.4743 ++
 47.4744 ++	avr32_arch = &arch_types[part_types[i].arch];
 47.4745 ++	break;
 47.4746 ++      }
 47.4747 ++    case OPTION_IAR:
 47.4748 ++      avr32_iarcompat = 1;
 47.4749 ++      break;
 47.4750 ++    case OPTION_PIC:
 47.4751 ++      avr32_pic = 1;
 47.4752 ++      break;
 47.4753 ++    case OPTION_NOPIC:
 47.4754 ++      avr32_pic = 0;
 47.4755 ++      break;
 47.4756 ++    case OPTION_LINKRELAX:
 47.4757 ++      linkrelax = 1;
 47.4758 ++      break;
 47.4759 ++    case OPTION_NOLINKRELAX:
 47.4760 ++      linkrelax = 0;
 47.4761 ++      break;
 47.4762 ++    default:
 47.4763 ++      return 0;
 47.4764 ++    }
 47.4765 ++  return 1;
 47.4766 ++}
 47.4767 ++
 47.4768 ++/* Can't use symbol_new here, so have to create a symbol and then at
 47.4769 ++   a later date assign it a value. Thats what these functions do.
 47.4770 ++
 47.4771 ++   Shamelessly stolen from ARM.  */
 47.4772 ++
 47.4773 ++static void
 47.4774 ++symbol_locate (symbolS *    symbolP,
 47.4775 ++	       const char * name,	/* It is copied, the caller can modify.  */
 47.4776 ++	       segT         segment,	/* Segment identifier (SEG_<something>).  */
 47.4777 ++	       valueT       valu,	/* Symbol value.  */
 47.4778 ++	       fragS *      frag)	/* Associated fragment.  */
 47.4779 ++{
 47.4780 ++  unsigned int name_length;
 47.4781 ++  char * preserved_copy_of_name;
 47.4782 ++
 47.4783 ++  name_length = strlen (name) + 1;   /* +1 for \0.  */
 47.4784 ++  obstack_grow (&notes, name, name_length);
 47.4785 ++  preserved_copy_of_name = obstack_finish (&notes);
 47.4786 ++#ifdef STRIP_UNDERSCORE
 47.4787 ++  if (preserved_copy_of_name[0] == '_')
 47.4788 ++    preserved_copy_of_name++;
 47.4789 ++#endif
 47.4790 ++
 47.4791 ++#ifdef tc_canonicalize_symbol_name
 47.4792 ++  preserved_copy_of_name =
 47.4793 ++    tc_canonicalize_symbol_name (preserved_copy_of_name);
 47.4794 ++#endif
 47.4795 ++
 47.4796 ++  S_SET_NAME (symbolP, preserved_copy_of_name);
 47.4797 ++
 47.4798 ++  S_SET_SEGMENT (symbolP, segment);
 47.4799 ++  S_SET_VALUE (symbolP, valu);
 47.4800 ++  symbol_clear_list_pointers (symbolP);
 47.4801 ++
 47.4802 ++  symbol_set_frag (symbolP, frag);
 47.4803 ++
 47.4804 ++  /* Link to end of symbol chain.  */
 47.4805 ++  {
 47.4806 ++    extern int symbol_table_frozen;
 47.4807 ++
 47.4808 ++    if (symbol_table_frozen)
 47.4809 ++      abort ();
 47.4810 ++  }
 47.4811 ++
 47.4812 ++  symbol_append (symbolP, symbol_lastP, & symbol_rootP, & symbol_lastP);
 47.4813 ++
 47.4814 ++  obj_symbol_new_hook (symbolP);
 47.4815 ++
 47.4816 ++#ifdef tc_symbol_new_hook
 47.4817 ++  tc_symbol_new_hook (symbolP);
 47.4818 ++#endif
 47.4819 ++
 47.4820 ++#ifdef DEBUG_SYMS
 47.4821 ++  verify_symbol_chain (symbol_rootP, symbol_lastP);
 47.4822 ++#endif /* DEBUG_SYMS  */
 47.4823 ++}
 47.4824 ++
 47.4825 ++struct cpool_entry
 47.4826 ++{
 47.4827 ++  int			refcount;
 47.4828 ++  offsetT		offset;
 47.4829 ++  expressionS		exp;
 47.4830 ++};
 47.4831 ++
 47.4832 ++struct cpool
 47.4833 ++{
 47.4834 ++  struct cpool		*next;
 47.4835 ++  int			used;
 47.4836 ++  struct cpool_entry	*literals;
 47.4837 ++  unsigned int		padding;
 47.4838 ++  unsigned int		next_free_entry;
 47.4839 ++  unsigned int		id;
 47.4840 ++  symbolS		*symbol;
 47.4841 ++  segT			section;
 47.4842 ++  subsegT		sub_section;
 47.4843 ++};
 47.4844 ++
 47.4845 ++struct cpool *cpool_list = NULL;
 47.4846 ++
 47.4847 ++static struct cpool *
 47.4848 ++find_cpool(segT section, subsegT sub_section)
 47.4849 ++{
 47.4850 ++  struct cpool *pool;
 47.4851 ++
 47.4852 ++  for (pool = cpool_list; pool != NULL; pool = pool->next)
 47.4853 ++    {
 47.4854 ++      if (!pool->used
 47.4855 ++	  && pool->section == section
 47.4856 ++	  && pool->sub_section == sub_section)
 47.4857 ++	break;
 47.4858 ++    }
 47.4859 ++
 47.4860 ++  return pool;
 47.4861 ++}
 47.4862 ++
 47.4863 ++static struct cpool *
 47.4864 ++find_or_make_cpool(segT section, subsegT sub_section)
 47.4865 ++{
 47.4866 ++  static unsigned int next_cpool_id = 0;
 47.4867 ++  struct cpool *pool;
 47.4868 ++
 47.4869 ++  pool = find_cpool(section, sub_section);
 47.4870 ++
 47.4871 ++  if (!pool)
 47.4872 ++    {
 47.4873 ++      pool = xmalloc(sizeof(*pool));
 47.4874 ++      if (!pool)
 47.4875 ++	return NULL;
 47.4876 ++
 47.4877 ++      pool->used = 0;
 47.4878 ++      pool->literals = NULL;
 47.4879 ++      pool->padding = 0;
 47.4880 ++      pool->next_free_entry = 0;
 47.4881 ++      pool->section = section;
 47.4882 ++      pool->sub_section = sub_section;
 47.4883 ++      pool->next = cpool_list;
 47.4884 ++      pool->symbol = NULL;
 47.4885 ++
 47.4886 ++      cpool_list = pool;
 47.4887 ++    }
 47.4888 ++
 47.4889 ++  /* NULL symbol means that the pool is new or has just been emptied.  */
 47.4890 ++  if (!pool->symbol)
 47.4891 ++    {
 47.4892 ++      pool->symbol = symbol_create(FAKE_LABEL_NAME, undefined_section,
 47.4893 ++				   0, &zero_address_frag);
 47.4894 ++      pool->id = next_cpool_id++;
 47.4895 ++    }
 47.4896 ++
 47.4897 ++  return pool;
 47.4898 ++}
 47.4899 ++
 47.4900 ++static struct cpool *
 47.4901 ++add_to_cpool(expressionS *exp, unsigned int *index, int ref)
 47.4902 ++{
 47.4903 ++  struct cpool *pool;
 47.4904 ++  unsigned int entry;
 47.4905 ++
 47.4906 ++  pool = find_or_make_cpool(now_seg, now_subseg);
 47.4907 ++
 47.4908 ++  /* Check if this constant is already in the pool.  */
 47.4909 ++  for (entry = 0; entry < pool->next_free_entry; entry++)
 47.4910 ++    {
 47.4911 ++      if ((pool->literals[entry].exp.X_op == exp->X_op)
 47.4912 ++	  && (exp->X_op == O_constant)
 47.4913 ++	  && (pool->literals[entry].exp.X_add_number
 47.4914 ++	      == exp->X_add_number)
 47.4915 ++	  && (pool->literals[entry].exp.X_unsigned
 47.4916 ++	      == exp->X_unsigned))
 47.4917 ++	break;
 47.4918 ++
 47.4919 ++      if ((pool->literals[entry].exp.X_op == exp->X_op)
 47.4920 ++	  && (exp->X_op == O_symbol)
 47.4921 ++	  && (pool->literals[entry].exp.X_add_number
 47.4922 ++	      == exp->X_add_number)
 47.4923 ++	  && (pool->literals[entry].exp.X_add_symbol
 47.4924 ++	      == exp->X_add_symbol)
 47.4925 ++	  && (pool->literals[entry].exp.X_op_symbol
 47.4926 ++	      == exp->X_op_symbol))
 47.4927 ++	break;
 47.4928 ++    }
 47.4929 ++
 47.4930 ++  /* Create an entry if we didn't find a match */
 47.4931 ++  if (entry == pool->next_free_entry)
 47.4932 ++    {
 47.4933 ++      pool->literals = xrealloc(pool->literals,
 47.4934 ++				sizeof(struct cpool_entry) * (entry + 1));
 47.4935 ++      pool->literals[entry].exp = *exp;
 47.4936 ++      pool->literals[entry].refcount = 0;
 47.4937 ++      pool->next_free_entry++;
 47.4938 ++    }
 47.4939 ++
 47.4940 ++  if (index)
 47.4941 ++    *index = entry;
 47.4942 ++  if (ref)
 47.4943 ++    pool->literals[entry].refcount++;
 47.4944 ++
 47.4945 ++  return pool;
 47.4946 ++}
 47.4947 ++
 47.4948 ++struct avr32_operand
 47.4949 ++{
 47.4950 ++  int id;
 47.4951 ++  int is_signed;
 47.4952 ++  int is_pcrel;
 47.4953 ++  int align_order;
 47.4954 ++  int (*match)(char *str);
 47.4955 ++  void (*parse)(const struct avr32_operand *op, char *str, int opindex);
 47.4956 ++};
 47.4957 ++
 47.4958 ++static int
 47.4959 ++match_anything(char *str ATTRIBUTE_UNUSED)
 47.4960 ++{
 47.4961 ++  return 1;
 47.4962 ++}
 47.4963 ++
 47.4964 ++static int
 47.4965 ++match_intreg(char *str)
 47.4966 ++{
 47.4967 ++  int regid, ret = 1;
 47.4968 ++
 47.4969 ++  regid = avr32_parse_intreg(str);
 47.4970 ++  if (regid < 0)
 47.4971 ++    ret = 0;
 47.4972 ++
 47.4973 ++  pr_debug("match_intreg: `%s': %d\n", str, ret);
 47.4974 ++
 47.4975 ++  return ret;
 47.4976 ++}
 47.4977 ++
 47.4978 ++static int
 47.4979 ++match_intreg_predec(char *str)
 47.4980 ++{
 47.4981 ++  int regid;
 47.4982 ++
 47.4983 ++  if (str[0] != '-' || str[1] != '-')
 47.4984 ++    return 0;
 47.4985 ++
 47.4986 ++  regid = avr32_parse_intreg(str + 2);
 47.4987 ++  if (regid < 0)
 47.4988 ++    return 0;
 47.4989 ++
 47.4990 ++  return 1;
 47.4991 ++}
 47.4992 ++
 47.4993 ++static int
 47.4994 ++match_intreg_postinc(char *str)
 47.4995 ++{
 47.4996 ++  int regid, ret = 1;
 47.4997 ++  char *p, c;
 47.4998 ++
 47.4999 ++  for (p = str; *p; p++)
 47.5000 ++    if (*p == '+')
 47.5001 ++      break;
 47.5002 ++
 47.5003 ++  if (p[0] != '+' || p[1] != '+')
 47.5004 ++    return 0;
 47.5005 ++
 47.5006 ++  c = *p, *p = 0;
 47.5007 ++  regid = avr32_parse_intreg(str);
 47.5008 ++  if (regid < 0)
 47.5009 ++    ret = 0;
 47.5010 ++
 47.5011 ++  *p = c;
 47.5012 ++  return ret;
 47.5013 ++}
 47.5014 ++
 47.5015 ++static int
 47.5016 ++match_intreg_lsl(char *str)
 47.5017 ++{
 47.5018 ++  int regid, ret = 1;
 47.5019 ++  char *p, c;
 47.5020 ++
 47.5021 ++  for (p = str; *p; p++)
 47.5022 ++    if (*p == '<')
 47.5023 ++      break;
 47.5024 ++
 47.5025 ++  if (p[0] && p[1] != '<')
 47.5026 ++    return 0;
 47.5027 ++
 47.5028 ++  c = *p, *p = 0;
 47.5029 ++  regid = avr32_parse_intreg(str);
 47.5030 ++  if (regid < 0)
 47.5031 ++    ret = 0;
 47.5032 ++
 47.5033 ++  *p = c;
 47.5034 ++  return ret;
 47.5035 ++}
 47.5036 ++
 47.5037 ++static int
 47.5038 ++match_intreg_lsr(char *str)
 47.5039 ++{
 47.5040 ++  int regid, ret = 1;
 47.5041 ++  char *p, c;
 47.5042 ++
 47.5043 ++  for (p = str; *p; p++)
 47.5044 ++    if (*p == '>')
 47.5045 ++      break;
 47.5046 ++
 47.5047 ++  if (p[0] && p[1] != '>')
 47.5048 ++    return 0;
 47.5049 ++
 47.5050 ++  c = *p, *p = 0;
 47.5051 ++
 47.5052 ++  regid = avr32_parse_intreg(str);
 47.5053 ++  if (regid < 0)
 47.5054 ++    ret = 0;
 47.5055 ++
 47.5056 ++  *p = c;
 47.5057 ++  return ret;
 47.5058 ++}
 47.5059 ++
 47.5060 ++static int
 47.5061 ++match_intreg_part(char *str)
 47.5062 ++{
 47.5063 ++  int regid, ret = 1;
 47.5064 ++  char *p, c;
 47.5065 ++
 47.5066 ++  for (p = str; *p; p++)
 47.5067 ++    if (*p == ':')
 47.5068 ++      break;
 47.5069 ++
 47.5070 ++  if (p[0] != ':' || !ISPRINT(p[1]) || p[2] != '\0')
 47.5071 ++    return 0;
 47.5072 ++
 47.5073 ++  c = *p, *p = 0;
 47.5074 ++  regid = avr32_parse_intreg(str);
 47.5075 ++  if (regid < 0)
 47.5076 ++    ret = 0;
 47.5077 ++
 47.5078 ++  *p = c;
 47.5079 ++
 47.5080 ++  return ret;
 47.5081 ++}
 47.5082 ++
 47.5083 ++#define match_intreg_disp match_anything
 47.5084 ++
 47.5085 ++static int
 47.5086 ++match_intreg_index(char *str)
 47.5087 ++{
 47.5088 ++  int regid, ret = 1;
 47.5089 ++  char *p, *end, c;
 47.5090 ++
 47.5091 ++  for (p = str; *p; p++)
 47.5092 ++    if (*p == '[')
 47.5093 ++      break;
 47.5094 ++
 47.5095 ++  /* don't allow empty displacement here (it makes no sense) */
 47.5096 ++  if (p[0] != '[')
 47.5097 ++    return 0;
 47.5098 ++
 47.5099 ++  for (end = p + 1; *end; end++) ;
 47.5100 ++  if (*(--end) != ']')
 47.5101 ++    return 0;
 47.5102 ++
 47.5103 ++  c = *end, *end = 0;
 47.5104 ++  if (!match_intreg_lsl(p + 1))
 47.5105 ++    ret = 0;
 47.5106 ++  *end = c;
 47.5107 ++
 47.5108 ++  if (ret)
 47.5109 ++    {
 47.5110 ++      c = *p, *p = 0;
 47.5111 ++      regid = avr32_parse_intreg(str);
 47.5112 ++      if (regid < 0)
 47.5113 ++	ret = 0;
 47.5114 ++      *p = c;
 47.5115 ++    }
 47.5116 ++
 47.5117 ++  return ret;
 47.5118 ++}
 47.5119 ++
 47.5120 ++static int
 47.5121 ++match_intreg_xindex(char *str)
 47.5122 ++{
 47.5123 ++  int regid, ret = 1;
 47.5124 ++  char *p, *end, c;
 47.5125 ++
 47.5126 ++  for (p = str; *p; p++)
 47.5127 ++    if (*p == '[')
 47.5128 ++      break;
 47.5129 ++
 47.5130 ++  /* empty displacement makes no sense here either */
 47.5131 ++  if (p[0] != '[')
 47.5132 ++    return 0;
 47.5133 ++
 47.5134 ++  for (end = p + 1; *end; end++)
 47.5135 ++    if (*end == '<')
 47.5136 ++      break;
 47.5137 ++
 47.5138 ++  if (!streq(end, "<<2]"))
 47.5139 ++    return 0;
 47.5140 ++
 47.5141 ++  c = *end, *end = 0;
 47.5142 ++  if (!match_intreg_part(p + 1))
 47.5143 ++    ret = 0;
 47.5144 ++  *end = c;
 47.5145 ++
 47.5146 ++  if (ret)
 47.5147 ++    {
 47.5148 ++      c = *p, *p = 0;
 47.5149 ++      regid = avr32_parse_intreg(str);
 47.5150 ++      if (regid < 0)
 47.5151 ++	ret = 0;
 47.5152 ++      *p = c;
 47.5153 ++    }
 47.5154 ++
 47.5155 ++  return ret;
 47.5156 ++}
 47.5157 ++
 47.5158 ++/* The PC_UDISP_W operator may show up as a label or as a pc[disp]
 47.5159 ++   expression.  So there's no point in attempting to match this...  */
 47.5160 ++#define match_pc_disp	match_anything
 47.5161 ++
 47.5162 ++static int
 47.5163 ++match_sp(char *str)
 47.5164 ++{
 47.5165 ++  /* SP in any form will do */
 47.5166 ++  return avr32_parse_intreg(str) == AVR32_REG_SP;
 47.5167 ++}
 47.5168 ++
 47.5169 ++static int
 47.5170 ++match_sp_disp(char *str)
 47.5171 ++{
 47.5172 ++  int regid, ret = 1;
 47.5173 ++  char *p, c;
 47.5174 ++
 47.5175 ++  for (p = str; *p; p++)
 47.5176 ++    if (*p == '[')
 47.5177 ++      break;
 47.5178 ++
 47.5179 ++  /* allow empty displacement, meaning zero */
 47.5180 ++  if (p[0] == '[')
 47.5181 ++    {
 47.5182 ++      char *end;
 47.5183 ++      for (end = p + 1; *end; end++) ;
 47.5184 ++      if (end[-1] != ']')
 47.5185 ++	return 0;
 47.5186 ++    }
 47.5187 ++
 47.5188 ++  c = *p, *p = 0;
 47.5189 ++  regid = avr32_parse_intreg(str);
 47.5190 ++  if (regid != AVR32_REG_SP)
 47.5191 ++    ret = 0;
 47.5192 ++
 47.5193 ++  *p = c;
 47.5194 ++  return ret;
 47.5195 ++}
 47.5196 ++
 47.5197 ++static int
 47.5198 ++match_cpno(char *str)
 47.5199 ++{
 47.5200 ++  if (strncasecmp(str, "cp", 2) != 0)
 47.5201 ++    return 0;
 47.5202 ++  return 1;
 47.5203 ++}
 47.5204 ++
 47.5205 ++static int
 47.5206 ++match_cpreg(char *str)
 47.5207 ++{
 47.5208 ++  if (strncasecmp(str, "cr", 2) != 0)
 47.5209 ++    return 0;
 47.5210 ++  return 1;
 47.5211 ++}
 47.5212 ++
 47.5213 ++/* We allow complex expressions, and register names may show up as
 47.5214 ++   symbols.  Just make sure immediate expressions are always matched
 47.5215 ++   last.  */
 47.5216 ++#define match_const		match_anything
 47.5217 ++#define match_jmplabel		match_anything
 47.5218 ++#define match_number		match_anything
 47.5219 ++
 47.5220 ++/* Mnemonics that take reglists never accept anything else */
 47.5221 ++#define match_reglist8		match_anything
 47.5222 ++#define match_reglist9		match_anything
 47.5223 ++#define match_reglist16		match_anything
 47.5224 ++#define match_reglist_ldm	match_anything
 47.5225 ++#define match_reglist_cp8	match_anything
 47.5226 ++#define match_reglist_cpd8	match_anything
 47.5227 ++
 47.5228 ++/* Ditto for retval, jospinc and mcall */
 47.5229 ++#define match_retval		match_anything
 47.5230 ++#define match_jospinc		match_anything
 47.5231 ++#define match_mcall		match_anything
 47.5232 ++
 47.5233 ++/* COH is used to select between two different syntaxes */
 47.5234 ++static int
 47.5235 ++match_coh(char *str)
 47.5236 ++{
 47.5237 ++  return strcasecmp(str, "coh") == 0;
 47.5238 ++}
 47.5239 ++
 47.5240 ++static int
 47.5241 ++match_fpreg(char *str)
 47.5242 ++{
 47.5243 ++  unsigned long regid;
 47.5244 ++  char *endptr;
 47.5245 ++
 47.5246 ++  if ((str[0] != 'f' && str[0] != 'F')
 47.5247 ++      || (str[1] != 'r' && str[1] != 'R'))
 47.5248 ++    return 0;
 47.5249 ++
 47.5250 ++  str += 2;
 47.5251 ++  regid = strtoul(str, &endptr, 10);
 47.5252 ++  if (!*str || *endptr)
 47.5253 ++    return 0;
 47.5254 ++
 47.5255 ++  return 1;
 47.5256 ++}
 47.5257 ++
 47.5258 ++static int
 47.5259 ++match_picoreg(char *str)
 47.5260 ++{
 47.5261 ++  int regid;
 47.5262 ++
 47.5263 ++  regid = avr32_parse_picoreg(str);
 47.5264 ++  if (regid < 0)
 47.5265 ++    return 0;
 47.5266 ++  return 1;
 47.5267 ++}
 47.5268 ++
 47.5269 ++#define match_pico_reglist_w	match_anything
 47.5270 ++#define match_pico_reglist_d	match_anything
 47.5271 ++
 47.5272 ++static int
 47.5273 ++match_pico_in(char *str)
 47.5274 ++{
 47.5275 ++  unsigned long regid;
 47.5276 ++  char *end;
 47.5277 ++
 47.5278 ++  if (strncasecmp(str, "in", 2) != 0)
 47.5279 ++    return 0;
 47.5280 ++
 47.5281 ++  str += 2;
 47.5282 ++  regid = strtoul(str, &end, 10);
 47.5283 ++  if (!*str || *end)
 47.5284 ++    return 0;
 47.5285 ++
 47.5286 ++  return 1;
 47.5287 ++}
 47.5288 ++
 47.5289 ++static int
 47.5290 ++match_pico_out0(char *str)
 47.5291 ++{
 47.5292 ++  if (strcasecmp(str, "out0") != 0)
 47.5293 ++    return 0;
 47.5294 ++  return 1;
 47.5295 ++}
 47.5296 ++
 47.5297 ++static int
 47.5298 ++match_pico_out1(char *str)
 47.5299 ++{
 47.5300 ++  if (strcasecmp(str, "out1") != 0)
 47.5301 ++    return 0;
 47.5302 ++  return 1;
 47.5303 ++}
 47.5304 ++
 47.5305 ++static int
 47.5306 ++match_pico_out2(char *str)
 47.5307 ++{
 47.5308 ++  if (strcasecmp(str, "out2") != 0)
 47.5309 ++    return 0;
 47.5310 ++  return 1;
 47.5311 ++}
 47.5312 ++
 47.5313 ++static int
 47.5314 ++match_pico_out3(char *str)
 47.5315 ++{
 47.5316 ++  if (strcasecmp(str, "out3") != 0)
 47.5317 ++    return 0;
 47.5318 ++  return 1;
 47.5319 ++}
 47.5320 ++
 47.5321 ++static void parse_nothing(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 47.5322 ++			  char *str ATTRIBUTE_UNUSED,
 47.5323 ++			  int opindex ATTRIBUTE_UNUSED)
 47.5324 ++{
 47.5325 ++  /* Do nothing (this is used for "match-only" operands like COH) */
 47.5326 ++}
 47.5327 ++
 47.5328 ++static void
 47.5329 ++parse_const(const struct avr32_operand *op, char *str,
 47.5330 ++	    int opindex ATTRIBUTE_UNUSED)
 47.5331 ++{
 47.5332 ++  expressionS *exp = &current_insn.immediate;
 47.5333 ++  expressionS *sym_exp;
 47.5334 ++  int slot;
 47.5335 ++  char *save;
 47.5336 ++
 47.5337 ++  pr_debug("parse_const: `%s' (signed: %d, pcrel: %d, align: %d)\n",
 47.5338 ++	   str, op->is_signed, op->is_pcrel, op->align_order);
 47.5339 ++
 47.5340 ++  save = input_line_pointer;
 47.5341 ++  input_line_pointer = str;
 47.5342 ++
 47.5343 ++  expression(exp);
 47.5344 ++
 47.5345 ++  slot = current_insn.next_slot++;
 47.5346 ++  current_insn.field_value[slot].align_order = op->align_order;
 47.5347 ++  current_insn.pcrel = op->is_pcrel;
 47.5348 ++
 47.5349 ++  switch (exp->X_op)
 47.5350 ++    {
 47.5351 ++    case O_illegal:
 47.5352 ++      as_bad(_("illegal operand"));
 47.5353 ++      break;
 47.5354 ++    case O_absent:
 47.5355 ++      as_bad(_("missing operand"));
 47.5356 ++      break;
 47.5357 ++    case O_constant:
 47.5358 ++      pr_debug("  -> constant: %ld\n", (long)exp->X_add_number);
 47.5359 ++      current_insn.field_value[slot].value = exp->X_add_number;
 47.5360 ++      break;
 47.5361 ++    case O_uminus:
 47.5362 ++      pr_debug("  -> uminus\n");
 47.5363 ++      sym_exp = symbol_get_value_expression(exp->X_add_symbol);
 47.5364 ++      switch (sym_exp->X_op) {
 47.5365 ++      case O_subtract:
 47.5366 ++	pr_debug("     -> subtract: switching operands\n");
 47.5367 ++	exp->X_op_symbol = sym_exp->X_add_symbol;
 47.5368 ++	exp->X_add_symbol = sym_exp->X_op_symbol;
 47.5369 ++	exp->X_op = O_subtract;
 47.5370 ++	/* TODO: Remove the old X_add_symbol */
 47.5371 ++	break;
 47.5372 ++      default:
 47.5373 ++	as_bad(_("Expression too complex\n"));
 47.5374 ++	break;
 47.5375 ++      }
 47.5376 ++      break;
 47.5377 ++#if 0
 47.5378 ++    case O_subtract:
 47.5379 ++      /* Any expression subtracting a symbol from the current section
 47.5380 ++	 can be made PC-relative by adding the right offset.  */
 47.5381 ++      if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
 47.5382 ++	current_insn.pcrel = TRUE;
 47.5383 ++      pr_debug("  -> subtract: pcrel? %s\n",
 47.5384 ++	       current_insn.pcrel ? "yes" : "no");
 47.5385 ++      /* fall through */
 47.5386 ++#endif
 47.5387 ++    default:
 47.5388 ++      pr_debug("  -> (%p <%d> %p + %d)\n",
 47.5389 ++	       exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
 47.5390 ++	       exp->X_add_number);
 47.5391 ++      current_insn.field_value[slot].value = 0;
 47.5392 ++      break;
 47.5393 ++    }
 47.5394 ++
 47.5395 ++  input_line_pointer = save;
 47.5396 ++}
 47.5397 ++
 47.5398 ++static void
 47.5399 ++parse_jmplabel(const struct avr32_operand *op, char *str,
 47.5400 ++	       int opindex ATTRIBUTE_UNUSED)
 47.5401 ++{
 47.5402 ++  expressionS *exp = &current_insn.immediate;
 47.5403 ++  int slot;
 47.5404 ++  char *save;
 47.5405 ++
 47.5406 ++  pr_debug("parse_jmplabel: `%s' (signed: %d, pcrel: %d, align: %d)\n",
 47.5407 ++	   str, op->is_signed, op->is_pcrel, op->align_order);
 47.5408 ++
 47.5409 ++  save = input_line_pointer;
 47.5410 ++  input_line_pointer = str;
 47.5411 ++
 47.5412 ++  expression(exp);
 47.5413 ++
 47.5414 ++  slot = current_insn.next_slot++;
 47.5415 ++  current_insn.field_value[slot].align_order = op->align_order;
 47.5416 ++  current_insn.pcrel = TRUE;
 47.5417 ++
 47.5418 ++  switch (exp->X_op)
 47.5419 ++    {
 47.5420 ++    case O_illegal:
 47.5421 ++      as_bad(_("illegal operand"));
 47.5422 ++      break;
 47.5423 ++    case O_absent:
 47.5424 ++      as_bad(_("missing operand"));
 47.5425 ++      break;
 47.5426 ++    case O_constant:
 47.5427 ++      pr_debug("  -> constant: %ld\n", (long)exp->X_add_number);
 47.5428 ++      current_insn.field_value[slot].value = exp->X_add_number;
 47.5429 ++      current_insn.pcrel = 0;
 47.5430 ++      break;
 47.5431 ++    default:
 47.5432 ++      pr_debug("  -> (%p <%d> %p + %d)\n",
 47.5433 ++	       exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
 47.5434 ++	       exp->X_add_number);
 47.5435 ++      current_insn.field_value[slot].value = 0;
 47.5436 ++      break;
 47.5437 ++    }
 47.5438 ++
 47.5439 ++  input_line_pointer = save;
 47.5440 ++}
 47.5441 ++
 47.5442 ++static void
 47.5443 ++parse_intreg(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 47.5444 ++	     char *str, int opindex ATTRIBUTE_UNUSED)
 47.5445 ++{
 47.5446 ++  int regid, slot;
 47.5447 ++
 47.5448 ++  pr_debug("parse_intreg: `%s'\n", str);
 47.5449 ++
 47.5450 ++  regid = avr32_parse_intreg(str);
 47.5451 ++  assert(regid >= 0);
 47.5452 ++
 47.5453 ++  slot = current_insn.next_slot++;
 47.5454 ++  current_insn.field_value[slot].value = regid;
 47.5455 ++  current_insn.field_value[slot].align_order = op->align_order;
 47.5456 ++}
 47.5457 ++
 47.5458 ++static void
 47.5459 ++parse_intreg_predec(const struct avr32_operand *op, char *str, int opindex)
 47.5460 ++{
 47.5461 ++  parse_intreg(op, str + 2, opindex);
 47.5462 ++}
 47.5463 ++
 47.5464 ++static void
 47.5465 ++parse_intreg_postinc(const struct avr32_operand *op, char *str, int opindex)
 47.5466 ++{
 47.5467 ++  char *p, c;
 47.5468 ++
 47.5469 ++  pr_debug("parse_intreg_postinc: `%s'\n", str);
 47.5470 ++
 47.5471 ++  for (p = str; *p != '+'; p++) ;
 47.5472 ++
 47.5473 ++  c = *p, *p = 0;
 47.5474 ++  parse_intreg(op, str, opindex);
 47.5475 ++  *p = c;
 47.5476 ++}
 47.5477 ++
 47.5478 ++static void
 47.5479 ++parse_intreg_shift(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 47.5480 ++		   char *str, int opindex ATTRIBUTE_UNUSED)
 47.5481 ++{
 47.5482 ++  int regid, slot, shift = 0;
 47.5483 ++  char *p, c;
 47.5484 ++  char shiftop;
 47.5485 ++
 47.5486 ++  pr_debug("parse Ry<<sa: `%s'\n", str);
 47.5487 ++
 47.5488 ++  for (p = str; *p; p++)
 47.5489 ++    if (*p == '<' || *p == '>')
 47.5490 ++      break;
 47.5491 ++
 47.5492 ++  shiftop = *p;
 47.5493 ++
 47.5494 ++  c = *p, *p = 0;
 47.5495 ++  regid = avr32_parse_intreg(str);
 47.5496 ++  assert(regid >= 0);
 47.5497 ++  *p = c;
 47.5498 ++
 47.5499 ++  if (c)
 47.5500 ++    {
 47.5501 ++      if (p[0] != shiftop || p[1] != shiftop)
 47.5502 ++	as_bad(_("expected shift operator in `%s'"), p);
 47.5503 ++      else
 47.5504 ++	{
 47.5505 ++	  expressionS exp;
 47.5506 ++	  char *saved;
 47.5507 ++
 47.5508 ++	  saved = input_line_pointer;
 47.5509 ++	  input_line_pointer = p + 2;
 47.5510 ++	  expression(&exp);
 47.5511 ++	  input_line_pointer = saved;
 47.5512 ++
 47.5513 ++	  if (exp.X_op != O_constant)
 47.5514 ++	    as_bad(_("shift amount must be a numeric constant"));
 47.5515 ++	  else
 47.5516 ++	    shift = exp.X_add_number;
 47.5517 ++	}
 47.5518 ++    }
 47.5519 ++
 47.5520 ++  slot = current_insn.next_slot++;
 47.5521 ++  current_insn.field_value[slot].value = regid;
 47.5522 ++  slot = current_insn.next_slot++;
 47.5523 ++  current_insn.field_value[slot].value = shift;
 47.5524 ++}
 47.5525 ++
 47.5526 ++/* The match() function selected the right opcode, so it doesn't
 47.5527 ++   matter which way we shift any more.  */
 47.5528 ++#define parse_intreg_lsl	parse_intreg_shift
 47.5529 ++#define parse_intreg_lsr	parse_intreg_shift
 47.5530 ++
 47.5531 ++static void
 47.5532 ++parse_intreg_part(const struct avr32_operand *op, char *str,
 47.5533 ++		  int opindex ATTRIBUTE_UNUSED)
 47.5534 ++{
 47.5535 ++  static const char bparts[] = { 'b', 'l', 'u', 't' };
 47.5536 ++  static const char hparts[] = { 'b', 't' };
 47.5537 ++  unsigned int slot, sel;
 47.5538 ++  int regid;
 47.5539 ++  char *p, c;
 47.5540 ++
 47.5541 ++  pr_debug("parse reg:part `%s'\n", str);
 47.5542 ++
 47.5543 ++  for (p = str; *p; p++)
 47.5544 ++    if (*p == ':')
 47.5545 ++      break;
 47.5546 ++
 47.5547 ++  c = *p, *p = 0;
 47.5548 ++  regid = avr32_parse_intreg(str);
 47.5549 ++  assert(regid >= 0);
 47.5550 ++  *p = c;
 47.5551 ++
 47.5552 ++  assert(c == ':');
 47.5553 ++
 47.5554 ++  if (op->align_order)
 47.5555 ++    {
 47.5556 ++      for (sel = 0; sel < sizeof(hparts); sel++)
 47.5557 ++	if (TOLOWER(p[1]) == hparts[sel])
 47.5558 ++	  break;
 47.5559 ++
 47.5560 ++      if (sel >= sizeof(hparts))
 47.5561 ++	{
 47.5562 ++	  as_bad(_("invalid halfword selector `%c' (must be either b or t)"),
 47.5563 ++		 p[1]);
 47.5564 ++	  sel = 0;
 47.5565 ++	}
 47.5566 ++    }
 47.5567 ++  else
 47.5568 ++    {
 47.5569 ++      for (sel = 0; sel < sizeof(bparts); sel++)
 47.5570 ++	if (TOLOWER(p[1]) == bparts[sel])
 47.5571 ++	  break;
 47.5572 ++
 47.5573 ++      if (sel >= sizeof(bparts))
 47.5574 ++	{
 47.5575 ++	  as_bad(_("invalid byte selector `%c' (must be one of b,l,u,t)"),
 47.5576 ++		 p[1]);
 47.5577 ++	  sel = 0;
 47.5578 ++	}
 47.5579 ++    }
 47.5580 ++
 47.5581 ++  slot = current_insn.next_slot++;
 47.5582 ++  current_insn.field_value[slot].value = regid;
 47.5583 ++  slot = current_insn.next_slot++;
 47.5584 ++  current_insn.field_value[slot].value = sel;
 47.5585 ++}
 47.5586 ++
 47.5587 ++/* This is the parser for "Rp[displacement]" expressions.  In addition
 47.5588 ++   to the "official" syntax, we accept a label as a replacement for
 47.5589 ++   the register expression.  This syntax implies Rp=PC and the
 47.5590 ++   displacement is the pc-relative distance to the label.  */
 47.5591 ++static void
 47.5592 ++parse_intreg_disp(const struct avr32_operand *op, char *str, int opindex)
 47.5593 ++{
 47.5594 ++  expressionS *exp = &current_insn.immediate;
 47.5595 ++  int slot, regid;
 47.5596 ++  char *save, *p, c;
 47.5597 ++
 47.5598 ++  pr_debug("parse_intreg_disp: `%s' (signed: %d, pcrel: %d, align: %d)\n",
 47.5599 ++	   str, op->is_signed, op->is_pcrel, op->align_order);
 47.5600 ++
 47.5601 ++  for (p = str; *p; p++)
 47.5602 ++    if (*p == '[')
 47.5603 ++      break;
 47.5604 ++
 47.5605 ++  slot = current_insn.next_slot++;
 47.5606 ++
 47.5607 ++  /* First, check if we have a valid register either before '[' or as
 47.5608 ++     the sole expression.  If so, we use the Rp[disp] syntax.  */
 47.5609 ++  c = *p, *p = 0;
 47.5610 ++  regid = avr32_parse_intreg(str);
 47.5611 ++  *p = c;
 47.5612 ++
 47.5613 ++  if (regid >= 0)
 47.5614 ++    {
 47.5615 ++      current_insn.field_value[slot].value = regid;
 47.5616 ++
 47.5617 ++      slot = current_insn.next_slot++;
 47.5618 ++      current_insn.field_value[slot].align_order = op->align_order;
 47.5619 ++
 47.5620 ++      if (c == '[')
 47.5621 ++	{
 47.5622 ++	  save = input_line_pointer;
 47.5623 ++	  input_line_pointer = p + 1;
 47.5624 ++
 47.5625 ++	  expression(exp);
 47.5626 ++
 47.5627 ++	  if (*input_line_pointer != ']')
 47.5628 ++	    as_bad(_("junk after displacement expression"));
 47.5629 ++
 47.5630 ++	  input_line_pointer = save;
 47.5631 ++
 47.5632 ++	  switch (exp->X_op)
 47.5633 ++	    {
 47.5634 ++	    case O_illegal:
 47.5635 ++	      as_bad(_("illegal displacement expression"));
 47.5636 ++	      break;
 47.5637 ++	    case O_absent:
 47.5638 ++	      as_bad(_("missing displacement expression"));
 47.5639 ++	      break;
 47.5640 ++	    case O_constant:
 47.5641 ++	      pr_debug("  -> constant: %ld\n", exp->X_add_number);
 47.5642 ++	      current_insn.field_value[slot].value = exp->X_add_number;
 47.5643 ++	      break;
 47.5644 ++#if 0
 47.5645 ++	    case O_subtract:
 47.5646 ++	      if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
 47.5647 ++		current_insn.pcrel = TRUE;
 47.5648 ++	      pr_debug("  -> subtract: pcrel? %s\n",
 47.5649 ++		       current_insn.pcrel ? "yes" : "no");
 47.5650 ++	      /* fall through */
 47.5651 ++#endif
 47.5652 ++	    default:
 47.5653 ++	      pr_debug("  -> (%p <%d> %p + %d)\n",
 47.5654 ++		       exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
 47.5655 ++		       exp->X_add_number);
 47.5656 ++	      current_insn.field_value[slot].value = 0;
 47.5657 ++	    }
 47.5658 ++	}
 47.5659 ++      else
 47.5660 ++	{
 47.5661 ++	  exp->X_op = O_constant;
 47.5662 ++	  exp->X_add_number = 0;
 47.5663 ++	  current_insn.field_value[slot].value = 0;
 47.5664 ++	}
 47.5665 ++    }
 47.5666 ++  else
 47.5667 ++    {
 47.5668 ++      /* Didn't find a valid register.  Try parsing it as a label.  */
 47.5669 ++      current_insn.field_value[slot].value = AVR32_REG_PC;
 47.5670 ++      parse_jmplabel(op, str, opindex);
 47.5671 ++    }
 47.5672 ++}
 47.5673 ++
 47.5674 ++static void
 47.5675 ++parse_intreg_index(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 47.5676 ++		   char *str, int opindex ATTRIBUTE_UNUSED)
 47.5677 ++{
 47.5678 ++  int slot, regid;
 47.5679 ++  char *p, *end, c;
 47.5680 ++
 47.5681 ++  for (p = str; *p; p++)
 47.5682 ++    if (*p == '[')
 47.5683 ++      break;
 47.5684 ++
 47.5685 ++  assert(*p);
 47.5686 ++
 47.5687 ++  c = *p, *p = 0;
 47.5688 ++  regid = avr32_parse_intreg(str);
 47.5689 ++  assert(regid >= 0);
 47.5690 ++  *p = c;
 47.5691 ++
 47.5692 ++  slot = current_insn.next_slot++;
 47.5693 ++  current_insn.field_value[slot].value = regid;
 47.5694 ++
 47.5695 ++  p++;
 47.5696 ++  for (end = p; *end; end++)
 47.5697 ++    if (*end == ']' || *end == '<')
 47.5698 ++      break;
 47.5699 ++
 47.5700 ++  assert(*end);
 47.5701 ++
 47.5702 ++  c = *end, *end = 0;
 47.5703 ++  regid = avr32_parse_intreg(p);
 47.5704 ++  assert(regid >= 0);
 47.5705 ++  *end = c;
 47.5706 ++
 47.5707 ++  slot = current_insn.next_slot++;
 47.5708 ++  current_insn.field_value[slot].value = regid;
 47.5709 ++
 47.5710 ++  slot = current_insn.next_slot++;
 47.5711 ++  current_insn.field_value[slot].value = 0;
 47.5712 ++
 47.5713 ++  if (*end == '<')
 47.5714 ++    {
 47.5715 ++      expressionS exp;
 47.5716 ++      char *save;
 47.5717 ++
 47.5718 ++      p = end + 2;
 47.5719 ++      for (end = p; *end; end++)
 47.5720 ++	if (*end == ']')
 47.5721 ++	  break;
 47.5722 ++
 47.5723 ++      assert(*end == ']');
 47.5724 ++
 47.5725 ++      c = *end, *end = 0;
 47.5726 ++      save = input_line_pointer;
 47.5727 ++      input_line_pointer = p;
 47.5728 ++      expression(&exp);
 47.5729 ++
 47.5730 ++      if (*input_line_pointer)
 47.5731 ++	as_bad(_("junk after shift expression"));
 47.5732 ++
 47.5733 ++      *end = c;
 47.5734 ++      input_line_pointer = save;
 47.5735 ++
 47.5736 ++      if (exp.X_op == O_constant)
 47.5737 ++	current_insn.field_value[slot].value = exp.X_add_number;
 47.5738 ++      else
 47.5739 ++	as_bad(_("shift expression too complex"));
 47.5740 ++    }
 47.5741 ++}
 47.5742 ++
 47.5743 ++static void
 47.5744 ++parse_intreg_xindex(const struct avr32_operand *op, char *str, int opindex)
 47.5745 ++{
 47.5746 ++  int slot, regid;
 47.5747 ++  char *p, *end, c;
 47.5748 ++
 47.5749 ++  for (p = str; *p; p++)
 47.5750 ++    if (*p == '[')
 47.5751 ++      break;
 47.5752 ++
 47.5753 ++  assert(*p);
 47.5754 ++
 47.5755 ++  c = *p, *p = 0;
 47.5756 ++  regid = avr32_parse_intreg(str);
 47.5757 ++  assert(regid >= 0);
 47.5758 ++  *p = c;
 47.5759 ++
 47.5760 ++  slot = current_insn.next_slot++;
 47.5761 ++  current_insn.field_value[slot].value = regid;
 47.5762 ++
 47.5763 ++  p++;
 47.5764 ++  for (end = p; *end; end++)
 47.5765 ++    if (*end == '<')
 47.5766 ++      break;
 47.5767 ++
 47.5768 ++  assert(*end);
 47.5769 ++
 47.5770 ++  c = *end, *end = 0;
 47.5771 ++  parse_intreg_part(op, p, opindex);
 47.5772 ++  *end = c;
 47.5773 ++}
 47.5774 ++
 47.5775 ++static void
 47.5776 ++parse_pc_disp(const struct avr32_operand *op, char *str, int opindex)
 47.5777 ++{
 47.5778 ++  char *p, c;
 47.5779 ++
 47.5780 ++  for (p = str; *p; p++)
 47.5781 ++    if (*p == '[')
 47.5782 ++      break;
 47.5783 ++
 47.5784 ++  /* The lddpc instruction comes in two different syntax variants:
 47.5785 ++       lddpc reg, expression
 47.5786 ++       lddpc reg, pc[disp]
 47.5787 ++     If the operand contains a '[', we use the second form.  */
 47.5788 ++  if (*p)
 47.5789 ++    {
 47.5790 ++      int regid;
 47.5791 ++
 47.5792 ++      c = *p, *p = 0;
 47.5793 ++      regid = avr32_parse_intreg(str);
 47.5794 ++      *p = c;
 47.5795 ++      if (regid == AVR32_REG_PC)
 47.5796 ++	{
 47.5797 ++	  char *end;
 47.5798 ++
 47.5799 ++	  for (end = ++p; *end; end++) ;
 47.5800 ++	  if (*(--end) != ']')
 47.5801 ++	    as_bad(_("unrecognized form of instruction: `%s'"), str);
 47.5802 ++	  else
 47.5803 ++	    {
 47.5804 ++	      c = *end, *end = 0;
 47.5805 ++	      parse_const(op, p, opindex);
 47.5806 ++	      *end = c;
 47.5807 ++	      current_insn.pcrel = 0;
 47.5808 ++	    }
 47.5809 ++	}
 47.5810 ++      else
 47.5811 ++	as_bad(_("unrecognized form of instruction: `%s'"), str);
 47.5812 ++    }
 47.5813 ++  else
 47.5814 ++    {
 47.5815 ++      parse_jmplabel(op, str, opindex);
 47.5816 ++    }
 47.5817 ++}
 47.5818 ++
 47.5819 ++static void parse_sp(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 47.5820 ++		     char *str ATTRIBUTE_UNUSED,
 47.5821 ++		     int opindex ATTRIBUTE_UNUSED)
 47.5822 ++{
 47.5823 ++  int slot;
 47.5824 ++
 47.5825 ++  slot = current_insn.next_slot++;
 47.5826 ++  current_insn.field_value[slot].value = AVR32_REG_SP;
 47.5827 ++}
 47.5828 ++
 47.5829 ++static void
 47.5830 ++parse_sp_disp(const struct avr32_operand *op, char *str, int opindex)
 47.5831 ++{
 47.5832 ++  char *p, c;
 47.5833 ++
 47.5834 ++  for (; *str; str++)
 47.5835 ++    if (*str == '[')
 47.5836 ++      break;
 47.5837 ++
 47.5838 ++  assert(*str);
 47.5839 ++
 47.5840 ++  for (p = ++str; *p; p++)
 47.5841 ++    if (*p == ']')
 47.5842 ++      break;
 47.5843 ++
 47.5844 ++  c = *p, *p = 0;
 47.5845 ++  parse_const(op, str, opindex);
 47.5846 ++  *p = c;
 47.5847 ++}
 47.5848 ++
 47.5849 ++static void
 47.5850 ++parse_cpno(const struct avr32_operand *op ATTRIBUTE_UNUSED, char *str,
 47.5851 ++	   int opindex ATTRIBUTE_UNUSED)
 47.5852 ++{
 47.5853 ++  int slot;
 47.5854 ++
 47.5855 ++  str += 2;
 47.5856 ++  if (*str == '#')
 47.5857 ++    str++;
 47.5858 ++  if (*str < '0' || *str > '7' || str[1])
 47.5859 ++    as_bad(_("invalid coprocessor `%s'"), str);
 47.5860 ++
 47.5861 ++  slot = current_insn.next_slot++;
 47.5862 ++  current_insn.field_value[slot].value = *str - '0';
 47.5863 ++}
 47.5864 ++
 47.5865 ++static void
 47.5866 ++parse_cpreg(const struct avr32_operand *op, char *str,
 47.5867 ++	    int opindex ATTRIBUTE_UNUSED)
 47.5868 ++{
 47.5869 ++  unsigned int crid;
 47.5870 ++  int slot;
 47.5871 ++  char *endptr;
 47.5872 ++
 47.5873 ++  str += 2;
 47.5874 ++  crid = strtoul(str, &endptr, 10);
 47.5875 ++  if (*endptr || crid > 15 || crid & ((1 << op->align_order) - 1))
 47.5876 ++    as_bad(_("invalid coprocessor register `%s'"), str);
 47.5877 ++
 47.5878 ++  crid >>= op->align_order;
 47.5879 ++
 47.5880 ++  slot = current_insn.next_slot++;
 47.5881 ++  current_insn.field_value[slot].value = crid;
 47.5882 ++}
 47.5883 ++
 47.5884 ++static void
 47.5885 ++parse_number(const struct avr32_operand *op, char *str,
 47.5886 ++	     int opindex ATTRIBUTE_UNUSED)
 47.5887 ++{
 47.5888 ++  expressionS exp;
 47.5889 ++  int slot;
 47.5890 ++  char *save;
 47.5891 ++
 47.5892 ++  save = input_line_pointer;
 47.5893 ++  input_line_pointer = str;
 47.5894 ++  expression(&exp);
 47.5895 ++  input_line_pointer = save;
 47.5896 ++
 47.5897 ++  slot = current_insn.next_slot++;
 47.5898 ++  current_insn.field_value[slot].align_order = op->align_order;
 47.5899 ++
 47.5900 ++  if (exp.X_op == O_constant)
 47.5901 ++      current_insn.field_value[slot].value = exp.X_add_number;
 47.5902 ++  else
 47.5903 ++      as_bad(_("invalid numeric expression `%s'"), str);
 47.5904 ++}
 47.5905 ++
 47.5906 ++static void
 47.5907 ++parse_reglist8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 47.5908 ++	       char *str, int opindex ATTRIBUTE_UNUSED)
 47.5909 ++{
 47.5910 ++  unsigned long regmask;
 47.5911 ++  unsigned long value = 0;
 47.5912 ++  int slot;
 47.5913 ++  char *tail;
 47.5914 ++
 47.5915 ++  regmask = avr32_parse_reglist(str, &tail);
 47.5916 ++  if (*tail)
 47.5917 ++    as_bad(_("invalid register list `%s'"), str);
 47.5918 ++  else
 47.5919 ++    {
 47.5920 ++      if (avr32_make_regmask8(regmask, &value))
 47.5921 ++	as_bad(_("register list `%s' doesn't fit"), str);
 47.5922 ++    }
 47.5923 ++
 47.5924 ++  slot = current_insn.next_slot++;
 47.5925 ++  current_insn.field_value[slot].value = value;
 47.5926 ++}
 47.5927 ++
 47.5928 ++static int
 47.5929 ++parse_reglist_tail(char *str, unsigned long regmask)
 47.5930 ++{
 47.5931 ++  expressionS exp;
 47.5932 ++  char *save, *p, c;
 47.5933 ++  int regid;
 47.5934 ++
 47.5935 ++  for (p = str + 1; *p; p++)
 47.5936 ++    if (*p == '=')
 47.5937 ++      break;
 47.5938 ++
 47.5939 ++  if (!*p)
 47.5940 ++    {
 47.5941 ++      as_bad(_("invalid register list `%s'"), str);
 47.5942 ++      return -2;
 47.5943 ++    }
 47.5944 ++
 47.5945 ++  c = *p, *p = 0;
 47.5946 ++  regid = avr32_parse_intreg(str);
 47.5947 ++  *p = c;
 47.5948 ++
 47.5949 ++  if (regid != 12)
 47.5950 ++    {
 47.5951 ++      as_bad(_("invalid register list `%s'"), str);
 47.5952 ++      return -2;
 47.5953 ++    }
 47.5954 ++
 47.5955 ++  /* If we have an assignment, we must pop PC and we must _not_
 47.5956 ++     pop LR or R12 */
 47.5957 ++  if (!(regmask & (1 << AVR32_REG_PC)))
 47.5958 ++    {
 47.5959 ++      as_bad(_("return value specified for non-return instruction"));
 47.5960 ++      return -2;
 47.5961 ++    }
 47.5962 ++  else if (regmask & ((1 << AVR32_REG_R12) | (1 << AVR32_REG_LR)))
 47.5963 ++    {
 47.5964 ++      as_bad(_("can't pop LR or R12 when specifying return value"));
 47.5965 ++      return -2;
 47.5966 ++    }
 47.5967 ++
 47.5968 ++  save = input_line_pointer;
 47.5969 ++  input_line_pointer = p + 1;
 47.5970 ++  expression(&exp);
 47.5971 ++  input_line_pointer = save;
 47.5972 ++
 47.5973 ++  if (exp.X_op != O_constant
 47.5974 ++      || exp.X_add_number < -1
 47.5975 ++      || exp.X_add_number > 1)
 47.5976 ++    {
 47.5977 ++      as_bad(_("invalid return value `%s'"), str);
 47.5978 ++      return -2;
 47.5979 ++    }
 47.5980 ++
 47.5981 ++  return exp.X_add_number;
 47.5982 ++}
 47.5983 ++
 47.5984 ++static void
 47.5985 ++parse_reglist9(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 47.5986 ++	       char *str, int opindex ATTRIBUTE_UNUSED)
 47.5987 ++{
 47.5988 ++  unsigned long regmask;
 47.5989 ++  unsigned long value = 0, kbit = 0;
 47.5990 ++  int slot;
 47.5991 ++  char *tail;
 47.5992 ++
 47.5993 ++  regmask = avr32_parse_reglist(str, &tail);
 47.5994 ++  /* printf("parsed reglist16: %04lx, tail: `%s'\n", regmask, tail); */
 47.5995 ++  if (*tail)
 47.5996 ++    {
 47.5997 ++      int retval;
 47.5998 ++
 47.5999 ++      retval = parse_reglist_tail(tail, regmask);
 47.6000 ++
 47.6001 ++      switch (retval)
 47.6002 ++	{
 47.6003 ++	case -1:
 47.6004 ++	  regmask |= 1 << AVR32_REG_LR;
 47.6005 ++	  break;
 47.6006 ++	case 0:
 47.6007 ++	  break;
 47.6008 ++	case 1:
 47.6009 ++	  regmask |= 1 << AVR32_REG_R12;
 47.6010 ++	  break;
 47.6011 ++	default:
 47.6012 ++	  break;
 47.6013 ++	}
 47.6014 ++
 47.6015 ++      kbit = 1;
 47.6016 ++    }
 47.6017 ++
 47.6018 ++  if (avr32_make_regmask8(regmask, &value))
 47.6019 ++    as_bad(_("register list `%s' doesn't fit"), str);
 47.6020 ++
 47.6021 ++
 47.6022 ++  slot = current_insn.next_slot++;
 47.6023 ++  current_insn.field_value[slot].value = (value << 1) | kbit;
 47.6024 ++}
 47.6025 ++
 47.6026 ++static void
 47.6027 ++parse_reglist16(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 47.6028 ++		char *str, int opindex ATTRIBUTE_UNUSED)
 47.6029 ++{
 47.6030 ++  unsigned long regmask;
 47.6031 ++  int slot;
 47.6032 ++  char *tail;
 47.6033 ++
 47.6034 ++  regmask = avr32_parse_reglist(str, &tail);
 47.6035 ++  if (*tail)
 47.6036 ++    as_bad(_("invalid register list `%s'"), str);
 47.6037 ++
 47.6038 ++  slot = current_insn.next_slot++;
 47.6039 ++  current_insn.field_value[slot].value = regmask;
 47.6040 ++}
 47.6041 ++
 47.6042 ++static void
 47.6043 ++parse_reglist_ldm(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 47.6044 ++		  char *str, int opindex ATTRIBUTE_UNUSED)
 47.6045 ++{
 47.6046 ++  unsigned long regmask;
 47.6047 ++  int slot, rp, w_bit = 0;
 47.6048 ++  char *tail, *p, c;
 47.6049 ++
 47.6050 ++  for (p = str; *p && *p != ','; p++)
 47.6051 ++    if (*p == '+')
 47.6052 ++      break;
 47.6053 ++
 47.6054 ++  c = *p, *p = 0;
 47.6055 ++  rp = avr32_parse_intreg(str);
 47.6056 ++  *p = c;
 47.6057 ++  if (rp < 0)
 47.6058 ++    {
 47.6059 ++      as_bad(_("invalid destination register in `%s'"), str);
 47.6060 ++      return;
 47.6061 ++    }
 47.6062 ++
 47.6063 ++  if (p[0] == '+' && p[1] == '+')
 47.6064 ++    {
 47.6065 ++      w_bit = 1;
 47.6066 ++      p += 2;
 47.6067 ++    }
 47.6068 ++
 47.6069 ++  if (*p != ',')
 47.6070 ++    {
 47.6071 ++      as_bad(_("expected `,' after destination register in `%s'"), str);
 47.6072 ++      return;
 47.6073 ++    }
 47.6074 ++
 47.6075 ++  str = p + 1;
 47.6076 ++  regmask = avr32_parse_reglist(str, &tail);
 47.6077 ++  if (*tail)
 47.6078 ++    {
 47.6079 ++      int retval;
 47.6080 ++
 47.6081 ++      if (rp != AVR32_REG_SP)
 47.6082 ++	{
 47.6083 ++	  as_bad(_("junk at end of line: `%s'"), tail);
 47.6084 ++	  return;
 47.6085 ++	}
 47.6086 ++
 47.6087 ++      rp = AVR32_REG_PC;
 47.6088 ++
 47.6089 ++      retval = parse_reglist_tail(tail, regmask);
 47.6090 ++
 47.6091 ++      switch (retval)
 47.6092 ++	{
 47.6093 ++	case -1:
 47.6094 ++	  regmask |= 1 << AVR32_REG_LR;
 47.6095 ++	  break;
 47.6096 ++	case 0:
 47.6097 ++	  break;
 47.6098 ++	case 1:
 47.6099 ++	  regmask |= 1 << AVR32_REG_R12;
 47.6100 ++	  break;
 47.6101 ++	default:
 47.6102 ++	  return;
 47.6103 ++	}
 47.6104 ++    }
 47.6105 ++
 47.6106 ++  slot = current_insn.next_slot++;
 47.6107 ++  current_insn.field_value[slot].value = rp;
 47.6108 ++  slot = current_insn.next_slot++;
 47.6109 ++  current_insn.field_value[slot].value = w_bit;
 47.6110 ++  slot = current_insn.next_slot++;
 47.6111 ++  current_insn.field_value[slot].value = regmask;
 47.6112 ++}
 47.6113 ++
 47.6114 ++static void
 47.6115 ++parse_reglist_cp8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 47.6116 ++		  char *str, int opindex ATTRIBUTE_UNUSED)
 47.6117 ++{
 47.6118 ++  unsigned long regmask;
 47.6119 ++  int slot, h_bit = 0;
 47.6120 ++  char *tail;
 47.6121 ++
 47.6122 ++  regmask = avr32_parse_cpreglist(str, &tail);
 47.6123 ++  if (*tail)
 47.6124 ++    as_bad(_("junk at end of line: `%s'"), tail);
 47.6125 ++  else if (regmask & 0xffUL)
 47.6126 ++    {
 47.6127 ++      if (regmask & 0xff00UL)
 47.6128 ++	as_bad(_("register list `%s' doesn't fit"), str);
 47.6129 ++      regmask &= 0xff;
 47.6130 ++    }
 47.6131 ++  else if (regmask & 0xff00UL)
 47.6132 ++    {
 47.6133 ++      regmask >>= 8;
 47.6134 ++      h_bit = 1;
 47.6135 ++    }
 47.6136 ++  else
 47.6137 ++    as_warn(_("register list is empty"));
 47.6138 ++
 47.6139 ++  slot = current_insn.next_slot++;
 47.6140 ++  current_insn.field_value[slot].value = regmask;
 47.6141 ++  slot = current_insn.next_slot++;
 47.6142 ++  current_insn.field_value[slot].value = h_bit;
 47.6143 ++}
 47.6144 ++
 47.6145 ++static void
 47.6146 ++parse_reglist_cpd8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 47.6147 ++		   char *str, int opindex ATTRIBUTE_UNUSED)
 47.6148 ++{
 47.6149 ++  unsigned long regmask, regmask_d = 0;
 47.6150 ++  int slot, i;
 47.6151 ++  char *tail;
 47.6152 ++
 47.6153 ++  regmask = avr32_parse_cpreglist(str, &tail);
 47.6154 ++  if (*tail)
 47.6155 ++    as_bad(_("junk at end of line: `%s'"), tail);
 47.6156 ++
 47.6157 ++  for (i = 0; i < 8; i++)
 47.6158 ++    {
 47.6159 ++      if (regmask & 1)
 47.6160 ++	{
 47.6161 ++	  if (!(regmask & 2))
 47.6162 ++	    {
 47.6163 ++	      as_bad(_("register list `%s' doesn't fit"), str);
 47.6164 ++	      break;
 47.6165 ++	    }
 47.6166 ++	  regmask_d |= 1 << i;
 47.6167 ++	}
 47.6168 ++      else if (regmask & 2)
 47.6169 ++	{
 47.6170 ++	  as_bad(_("register list `%s' doesn't fit"), str);
 47.6171 ++	  break;
 47.6172 ++	}
 47.6173 ++
 47.6174 ++      regmask >>= 2;
 47.6175 ++    }
 47.6176 ++
 47.6177 ++  slot = current_insn.next_slot++;
 47.6178 ++  current_insn.field_value[slot].value = regmask_d;
 47.6179 ++}
 47.6180 ++
 47.6181 ++static void
 47.6182 ++parse_retval(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 47.6183 ++	     char *str, int opindex ATTRIBUTE_UNUSED)
 47.6184 ++{
 47.6185 ++  int regid, slot;
 47.6186 ++
 47.6187 ++  regid = avr32_parse_intreg(str);
 47.6188 ++  if (regid < 0)
 47.6189 ++    {
 47.6190 ++      expressionS exp;
 47.6191 ++      char *save;
 47.6192 ++
 47.6193 ++      regid = 0;
 47.6194 ++
 47.6195 ++      save = input_line_pointer;
 47.6196 ++      input_line_pointer = str;
 47.6197 ++      expression(&exp);
 47.6198 ++      input_line_pointer = save;
 47.6199 ++
 47.6200 ++      if (exp.X_op != O_constant)
 47.6201 ++	as_bad(_("invalid return value `%s'"), str);
 47.6202 ++      else
 47.6203 ++	switch (exp.X_add_number)
 47.6204 ++	  {
 47.6205 ++	  case -1:
 47.6206 ++	    regid = AVR32_REG_LR;
 47.6207 ++	    break;
 47.6208 ++	  case 0:
 47.6209 ++	    regid = AVR32_REG_SP;
 47.6210 ++	    break;
 47.6211 ++	  case 1:
 47.6212 ++	    regid = AVR32_REG_PC;
 47.6213 ++	    break;
 47.6214 ++	  default:
 47.6215 ++	    as_bad(_("invalid return value `%s'"), str);
 47.6216 ++	    break;
 47.6217 ++	  }
 47.6218 ++    }
 47.6219 ++
 47.6220 ++  slot = current_insn.next_slot++;
 47.6221 ++  current_insn.field_value[slot].value = regid;
 47.6222 ++}
 47.6223 ++
 47.6224 ++#define parse_mcall parse_intreg_disp
 47.6225 ++
 47.6226 ++static void
 47.6227 ++parse_jospinc(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 47.6228 ++	      char *str, int opindex ATTRIBUTE_UNUSED)
 47.6229 ++{
 47.6230 ++  expressionS exp;
 47.6231 ++  int slot;
 47.6232 ++  char *save;
 47.6233 ++
 47.6234 ++  save = input_line_pointer;
 47.6235 ++  input_line_pointer = str;
 47.6236 ++  expression(&exp);
 47.6237 ++  input_line_pointer = save;
 47.6238 ++
 47.6239 ++  slot = current_insn.next_slot++;
 47.6240 ++
 47.6241 ++  if (exp.X_op == O_constant)
 47.6242 ++    {
 47.6243 ++      if (exp.X_add_number > 0)
 47.6244 ++	exp.X_add_number--;
 47.6245 ++      current_insn.field_value[slot].value = exp.X_add_number;
 47.6246 ++    }
 47.6247 ++  else
 47.6248 ++    as_bad(_("invalid numeric expression `%s'"), str);
 47.6249 ++}
 47.6250 ++
 47.6251 ++#define parse_coh		parse_nothing
 47.6252 ++
 47.6253 ++static void
 47.6254 ++parse_fpreg(const struct avr32_operand *op,
 47.6255 ++	    char *str, int opindex ATTRIBUTE_UNUSED)
 47.6256 ++{
 47.6257 ++  unsigned long regid;
 47.6258 ++  int slot;
 47.6259 ++
 47.6260 ++  regid = strtoul(str + 2, NULL, 10);
 47.6261 ++
 47.6262 ++  if ((regid >= 16) || (regid & ((1 << op->align_order) - 1)))
 47.6263 ++    as_bad(_("invalid floating-point register `%s'"), str);
 47.6264 ++
 47.6265 ++  slot = current_insn.next_slot++;
 47.6266 ++  current_insn.field_value[slot].value = regid;
 47.6267 ++  current_insn.field_value[slot].align_order = op->align_order;
 47.6268 ++}
 47.6269 ++
 47.6270 ++static void
 47.6271 ++parse_picoreg(const struct avr32_operand *op,
 47.6272 ++	      char *str, int opindex ATTRIBUTE_UNUSED)
 47.6273 ++{
 47.6274 ++  unsigned long regid;
 47.6275 ++  int slot;
 47.6276 ++
 47.6277 ++  regid = avr32_parse_picoreg(str);
 47.6278 ++  if (regid & ((1 << op->align_order) - 1))
 47.6279 ++    as_bad(_("invalid double-word PiCo register `%s'"), str);
 47.6280 ++
 47.6281 ++  slot = current_insn.next_slot++;
 47.6282 ++  current_insn.field_value[slot].value = regid;
 47.6283 ++  current_insn.field_value[slot].align_order = op->align_order;
 47.6284 ++}
 47.6285 ++
 47.6286 ++static void
 47.6287 ++parse_pico_reglist_w(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 47.6288 ++		     char *str, int opindex ATTRIBUTE_UNUSED)
 47.6289 ++{
 47.6290 ++  unsigned long regmask;
 47.6291 ++  int slot, h_bit = 0;
 47.6292 ++  char *tail;
 47.6293 ++
 47.6294 ++  regmask = avr32_parse_pico_reglist(str, &tail);
 47.6295 ++  if (*tail)
 47.6296 ++    as_bad(_("junk at end of line: `%s'"), tail);
 47.6297 ++
 47.6298 ++  if (regmask & 0x00ffUL)
 47.6299 ++    {
 47.6300 ++      if (regmask & 0xff00UL)
 47.6301 ++	as_bad(_("register list `%s' doesn't fit"), str);
 47.6302 ++      regmask &= 0x00ffUL;
 47.6303 ++    }
 47.6304 ++  else if (regmask & 0xff00UL)
 47.6305 ++    {
 47.6306 ++      regmask >>= 8;
 47.6307 ++      h_bit = 1;
 47.6308 ++    }
 47.6309 ++  else
 47.6310 ++    as_warn(_("register list is empty"));
 47.6311 ++
 47.6312 ++  slot = current_insn.next_slot++;
 47.6313 ++  current_insn.field_value[slot].value = regmask;
 47.6314 ++  slot = current_insn.next_slot++;
 47.6315 ++  current_insn.field_value[slot].value = h_bit;
 47.6316 ++}
 47.6317 ++
 47.6318 ++static void
 47.6319 ++parse_pico_reglist_d(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 47.6320 ++		     char *str, int opindex ATTRIBUTE_UNUSED)
 47.6321 ++{
 47.6322 ++  unsigned long regmask, regmask_d = 0;
 47.6323 ++  int slot, i;
 47.6324 ++  char *tail;
 47.6325 ++
 47.6326 ++  regmask = avr32_parse_pico_reglist(str, &tail);
 47.6327 ++  if (*tail)
 47.6328 ++    as_bad(_("junk at end of line: `%s'"), tail);
 47.6329 ++
 47.6330 ++  for (i = 0; i < 8; i++)
 47.6331 ++    {
 47.6332 ++      if (regmask & 1)
 47.6333 ++	{
 47.6334 ++	  if (!(regmask & 2))
 47.6335 ++	    {
 47.6336 ++	      as_bad(_("register list `%s' doesn't fit"), str);
 47.6337 ++	      break;
 47.6338 ++	    }
 47.6339 ++	  regmask_d |= 1 << i;
 47.6340 ++	}
 47.6341 ++      else if (regmask & 2)
 47.6342 ++	{
 47.6343 ++	  as_bad(_("register list `%s' doesn't fit"), str);
 47.6344 ++	  break;
 47.6345 ++	}
 47.6346 ++
 47.6347 ++      regmask >>= 2;
 47.6348 ++    }
 47.6349 ++
 47.6350 ++  slot = current_insn.next_slot++;
 47.6351 ++  current_insn.field_value[slot].value = regmask_d;
 47.6352 ++}
 47.6353 ++
 47.6354 ++static void
 47.6355 ++parse_pico_in(const struct avr32_operand *op ATTRIBUTE_UNUSED,
 47.6356 ++	      char *str, int opindex ATTRIBUTE_UNUSED)
 47.6357 ++{
 47.6358 ++  unsigned long regid;
 47.6359 ++  int slot;
 47.6360 ++
 47.6361 ++  regid = strtoul(str + 2, NULL, 10);
 47.6362 ++
 47.6363 ++  if (regid >= 12)
 47.6364 ++    as_bad(_("invalid PiCo IN register `%s'"), str);
 47.6365 ++
 47.6366 ++  slot = current_insn.next_slot++;
 47.6367 ++  current_insn.field_value[slot].value = regid;
 47.6368 ++  current_insn.field_value[slot].align_order = 0;
 47.6369 ++}
 47.6370 ++
 47.6371 ++#define parse_pico_out0		parse_nothing
 47.6372 ++#define parse_pico_out1		parse_nothing
 47.6373 ++#define parse_pico_out2		parse_nothing
 47.6374 ++#define parse_pico_out3		parse_nothing
 47.6375 ++
 47.6376 ++#define OP(name, sgn, pcrel, align, func) \
 47.6377 ++  { AVR32_OPERAND_##name, sgn, pcrel, align, match_##func, parse_##func }
 47.6378 ++
 47.6379 ++struct avr32_operand avr32_operand_table[] = {
 47.6380 ++  OP(INTREG, 0, 0, 0, intreg),
 47.6381 ++  OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
 47.6382 ++  OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
 47.6383 ++  OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
 47.6384 ++  OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
 47.6385 ++  OP(INTREG_BSEL, 0, 0, 0, intreg_part),
 47.6386 ++  OP(INTREG_HSEL, 0, 0, 1, intreg_part),
 47.6387 ++  OP(INTREG_SDISP, 1, 0, 0, intreg_disp),
 47.6388 ++  OP(INTREG_SDISP_H, 1, 0, 1, intreg_disp),
 47.6389 ++  OP(INTREG_SDISP_W, 1, 0, 2, intreg_disp),
 47.6390 ++  OP(INTREG_UDISP, 0, 0, 0, intreg_disp),
 47.6391 ++  OP(INTREG_UDISP_H, 0, 0, 1, intreg_disp),
 47.6392 ++  OP(INTREG_UDISP_W, 0, 0, 2, intreg_disp),
 47.6393 ++  OP(INTREG_INDEX, 0, 0, 0, intreg_index),
 47.6394 ++  OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
 47.6395 ++  OP(DWREG, 0, 0, 1, intreg),
 47.6396 ++  OP(PC_UDISP_W, 0, 1, 2, pc_disp),
 47.6397 ++  OP(SP, 0, 0, 0, sp),
 47.6398 ++  OP(SP_UDISP_W, 0, 0, 2, sp_disp),
 47.6399 ++  OP(CPNO, 0, 0, 0, cpno),
 47.6400 ++  OP(CPREG, 0, 0, 0, cpreg),
 47.6401 ++  OP(CPREG_D, 0, 0, 1, cpreg),
 47.6402 ++  OP(UNSIGNED_CONST, 0, 0, 0, const),
 47.6403 ++  OP(UNSIGNED_CONST_W, 0, 0, 2, const),
 47.6404 ++  OP(SIGNED_CONST, 1, 0, 0, const),
 47.6405 ++  OP(SIGNED_CONST_W, 1, 0, 2, const),
 47.6406 ++  OP(JMPLABEL, 1, 1, 1, jmplabel),
 47.6407 ++  OP(UNSIGNED_NUMBER, 0, 0, 0, number),
 47.6408 ++  OP(UNSIGNED_NUMBER_W, 0, 0, 2, number),
 47.6409 ++  OP(REGLIST8, 0, 0, 0, reglist8),
 47.6410 ++  OP(REGLIST9, 0, 0, 0, reglist9),
 47.6411 ++  OP(REGLIST16, 0, 0, 0, reglist16),
 47.6412 ++  OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
 47.6413 ++  OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
 47.6414 ++  OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
 47.6415 ++  OP(RETVAL, 0, 0, 0, retval),
 47.6416 ++  OP(MCALL, 1, 0, 2, mcall),
 47.6417 ++  OP(JOSPINC, 0, 0, 0, jospinc),
 47.6418 ++  OP(COH, 0, 0, 0, coh),
 47.6419 ++  OP(FPREG_S, 0, 0, 0, fpreg),
 47.6420 ++  OP(FPREG_D, 0, 0, 1, fpreg),
 47.6421 ++  OP(PICO_REG_W, 0, 0, 0, picoreg),
 47.6422 ++  OP(PICO_REG_D, 0, 0, 1, picoreg),
 47.6423 ++  OP(PICO_REGLIST_W, 0, 0, 0, pico_reglist_w),
 47.6424 ++  OP(PICO_REGLIST_D, 0, 0, 0, pico_reglist_d),
 47.6425 ++  OP(PICO_IN, 0, 0, 0, pico_in),
 47.6426 ++  OP(PICO_OUT0, 0, 0, 0, pico_out0),
 47.6427 ++  OP(PICO_OUT1, 0, 0, 0, pico_out1),
 47.6428 ++  OP(PICO_OUT2, 0, 0, 0, pico_out2),
 47.6429 ++  OP(PICO_OUT3, 0, 0, 0, pico_out3),
 47.6430 ++};
 47.6431 ++
 47.6432 ++symbolS *
 47.6433 ++md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
 47.6434 ++{
 47.6435 ++  pr_debug("md_undefined_symbol: %s\n", name);
 47.6436 ++  return 0;
 47.6437 ++}
 47.6438 ++
 47.6439 ++struct avr32_relax_type
 47.6440 ++{
 47.6441 ++  long lower_bound;
 47.6442 ++  long upper_bound;
 47.6443 ++  unsigned char align;
 47.6444 ++  unsigned char length;
 47.6445 ++  signed short next;
 47.6446 ++};
 47.6447 ++
 47.6448 ++#define EMPTY { 0, 0, 0, 0, -1 }
 47.6449 ++#define C(lower, upper, align, next)			\
 47.6450 ++  { (lower), (upper), (align), 2, AVR32_OPC_##next }
 47.6451 ++#define E(lower, upper, align)				\
 47.6452 ++  { (lower), (upper), (align), 4, -1 }
 47.6453 ++
 47.6454 ++static const struct avr32_relax_type avr32_relax_table[] =
 47.6455 ++  {
 47.6456 ++    /* 0 */
 47.6457 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6458 ++    EMPTY, EMPTY, EMPTY,
 47.6459 ++    E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0),
 47.6460 ++    EMPTY,
 47.6461 ++    /* 16 */
 47.6462 ++    EMPTY, EMPTY, EMPTY, EMPTY,
 47.6463 ++
 47.6464 ++    C(-256, 254, 1, BREQ2), C(-256, 254, 1, BRNE2),
 47.6465 ++    C(-256, 254, 1, BRCC2), C(-256, 254, 1, BRCS2),
 47.6466 ++    C(-256, 254, 1, BRGE2), C(-256, 254, 1, BRLT2),
 47.6467 ++    C(-256, 254, 1, BRMI2), C(-256, 254, 1, BRPL2),
 47.6468 ++    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
 47.6469 ++    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
 47.6470 ++    /* 32 */
 47.6471 ++    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
 47.6472 ++    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
 47.6473 ++    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
 47.6474 ++    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
 47.6475 ++    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
 47.6476 ++    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
 47.6477 ++
 47.6478 ++    EMPTY, EMPTY, EMPTY, EMPTY,
 47.6479 ++    /* 48 */
 47.6480 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6481 ++    EMPTY, EMPTY, EMPTY,
 47.6482 ++
 47.6483 ++    C(-32, 31, 0, CP_W3), E(-1048576, 1048575, 0),
 47.6484 ++
 47.6485 ++    EMPTY, EMPTY, EMPTY,
 47.6486 ++    /* 64: csrfcz */
 47.6487 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6488 ++    E(0, 65535, 0), E(0, 65535, 0),
 47.6489 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6490 ++    E(-32768, 32767, 0),
 47.6491 ++    /* 80: LD_SB2 */
 47.6492 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6493 ++
 47.6494 ++    C(0, 7, 0, LD_UB4), E(-32768, 32767, 0),
 47.6495 ++
 47.6496 ++    EMPTY,
 47.6497 ++    EMPTY, EMPTY,
 47.6498 ++
 47.6499 ++    C(0, 14, 1, LD_SH4), E(-32768, 32767, 0),
 47.6500 ++
 47.6501 ++    EMPTY, EMPTY, EMPTY,
 47.6502 ++
 47.6503 ++    C(0, 14, 1, LD_UH4),
 47.6504 ++
 47.6505 ++    /* 96: LD_UH4 */
 47.6506 ++    E(-32768, 32767, 0),
 47.6507 ++
 47.6508 ++    EMPTY, EMPTY, EMPTY, EMPTY,
 47.6509 ++
 47.6510 ++    C(0, 124, 2, LD_W4), E(-32768, 32767, 0),
 47.6511 ++
 47.6512 ++    E(0, 1020, 2),	/* LDC_D1 */
 47.6513 ++    EMPTY, EMPTY,
 47.6514 ++    E(0, 1020, 2),	/* LDC_W1 */
 47.6515 ++    EMPTY, EMPTY,
 47.6516 ++    E(0, 16380, 2),	/* LDC0_D */
 47.6517 ++    E(0, 16380, 2),	/* LDC0_W */
 47.6518 ++    EMPTY,
 47.6519 ++
 47.6520 ++    /* 112: LDCM_D_PU */
 47.6521 ++    EMPTY, EMPTY, EMPTY,
 47.6522 ++
 47.6523 ++    C(0, 508, 2, LDDPC_EXT), E(-32768, 32767, 0),
 47.6524 ++
 47.6525 ++    EMPTY,EMPTY, EMPTY,
 47.6526 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6527 ++
 47.6528 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6529 ++    /* 134: MACHH_W */
 47.6530 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6531 ++    E(-131072, 131068, 2),	/* MCALL */
 47.6532 ++    E(0, 1020, 2),		/* MFDR */
 47.6533 ++    E(0, 1020, 2),		/* MFSR */
 47.6534 ++    EMPTY, EMPTY,
 47.6535 ++
 47.6536 ++    C(-128, 127, 0, MOV2), E(-1048576, 1048575, 0),
 47.6537 ++
 47.6538 ++    EMPTY, EMPTY, EMPTY,
 47.6539 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6540 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6541 ++
 47.6542 ++    E(-128, 127, 0),		/* MOVEQ2 */
 47.6543 ++    E(-128, 127, 0),		/* MOVNE2 */
 47.6544 ++    E(-128, 127, 0),		/* MOVCC2 */
 47.6545 ++    E(-128, 127, 0),		/* 166: MOVCS2 */
 47.6546 ++    E(-128, 127, 0),		/* MOVGE2 */
 47.6547 ++    E(-128, 127, 0),		/* MOVLT2 */
 47.6548 ++    E(-128, 127, 0),		/* MOVMI2 */
 47.6549 ++    E(-128, 127, 0),		/* MOVPL2 */
 47.6550 ++    E(-128, 127, 0),		/* MOVLS2 */
 47.6551 ++    E(-128, 127, 0),		/* MOVGT2 */
 47.6552 ++    E(-128, 127, 0),		/* MOVLE2 */
 47.6553 ++    E(-128, 127, 0),		/* MOVHI2 */
 47.6554 ++    E(-128, 127, 0),		/* MOVVS2 */
 47.6555 ++    E(-128, 127, 0),		/* MOVVC2 */
 47.6556 ++    E(-128, 127, 0),		/* MOVQS2 */
 47.6557 ++    E(-128, 127, 0),		/* MOVAL2 */
 47.6558 ++
 47.6559 ++    E(0, 1020, 2),		/* MTDR */
 47.6560 ++    E(0, 1020, 2),		/* MTSR */
 47.6561 ++    EMPTY,
 47.6562 ++    EMPTY,
 47.6563 ++    E(-128, 127, 0),		/* MUL3 */
 47.6564 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6565 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6566 ++    /* 198: MVCR_W */
 47.6567 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6568 ++    E(0, 65535, 0), E(0, 65535, 0),
 47.6569 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6570 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6571 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6572 ++    /* 230: PASR_H */
 47.6573 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6574 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6575 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6576 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6577 ++    /* 262: PUNPCKSB_H */
 47.6578 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6579 ++
 47.6580 ++    C(-1024, 1022, 1, RCALL2), E(-2097152, 2097150, 1),
 47.6581 ++
 47.6582 ++    EMPTY,
 47.6583 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6584 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6585 ++    EMPTY, EMPTY, EMPTY,
 47.6586 ++
 47.6587 ++    C(-1024, 1022, 1, BRAL),
 47.6588 ++
 47.6589 ++    EMPTY, EMPTY, EMPTY,
 47.6590 ++    E(-128, 127, 0),		/* RSUB2 */
 47.6591 ++    /* 294: SATADD_H */
 47.6592 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6593 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6594 ++    E(0, 255, 0),		/* SLEEP */
 47.6595 ++    EMPTY, EMPTY,
 47.6596 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6597 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6598 ++    /* 326: ST_B2 */
 47.6599 ++    EMPTY, EMPTY,
 47.6600 ++    C(0, 7, 0, ST_B4), E(-32768, 32767, 0),
 47.6601 ++    EMPTY, EMPTY, EMPTY, EMPTY,
 47.6602 ++    E(-32768, 32767, 0),
 47.6603 ++    EMPTY, EMPTY, EMPTY,
 47.6604 ++    C(0, 14, 1, ST_H4), E(-32768, 32767, 0),
 47.6605 ++    EMPTY, EMPTY,
 47.6606 ++    EMPTY,
 47.6607 ++    C(0, 60, 2, ST_W4), E(-32768, 32767, 0),
 47.6608 ++    E(0, 1020, 2),	/* STC_D1 */
 47.6609 ++    EMPTY, EMPTY,
 47.6610 ++    E(0, 1020, 2),	/* STC_W1 */
 47.6611 ++    EMPTY, EMPTY,
 47.6612 ++    E(0, 16380, 2),	/* STC0_D */
 47.6613 ++    E(0, 16380, 2),	/* STC0_W */
 47.6614 ++
 47.6615 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6616 ++    /* 358: STDSP */
 47.6617 ++    EMPTY, EMPTY,
 47.6618 ++    E(0, 1020, 2),	/* STHH_W1 */
 47.6619 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6620 ++    EMPTY, EMPTY, EMPTY,
 47.6621 ++    E(-32768, 32767, 0),
 47.6622 ++    C(-512, 508, 2, SUB4),
 47.6623 ++    C(-128, 127, 0, SUB4), E(-1048576, 1048576, 0),
 47.6624 ++    /* SUB{cond} */
 47.6625 ++    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 47.6626 ++    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 47.6627 ++    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 47.6628 ++    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 47.6629 ++    /* SUBF{cond} */
 47.6630 ++    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 47.6631 ++    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 47.6632 ++    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 47.6633 ++    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 47.6634 ++    EMPTY,
 47.6635 ++
 47.6636 ++    /* 406: SWAP_B */
 47.6637 ++    EMPTY, EMPTY, EMPTY,
 47.6638 ++    E(0, 255, 0),	/* SYNC */
 47.6639 ++    EMPTY, EMPTY, EMPTY, EMPTY,
 47.6640 ++    /* 414: TST */
 47.6641 ++    EMPTY, EMPTY, E(-65536, 65535, 2), E(-65536, 65535, 2), E(-65536, 65535, 2), EMPTY, EMPTY, EMPTY,
 47.6642 ++    /* 422: RSUB{cond} */
 47.6643 ++    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 47.6644 ++    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 47.6645 ++    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 47.6646 ++    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
 47.6647 ++    /* 436: ADD{cond} */
 47.6648 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6649 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6650 ++    /* 454: SUB{cond} */
 47.6651 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6652 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6653 ++    /* 472: AND{cond} */
 47.6654 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6655 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6656 ++    /* 486: OR{cond} */
 47.6657 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6658 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6659 ++    /* 502: EOR{cond} */
 47.6660 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6661 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6662 ++    /* 518: LD.w{cond} */
 47.6663 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6664 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6665 ++    /* 534: LD.sh{cond} */
 47.6666 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6667 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6668 ++    /* 550: LD.uh{cond} */
 47.6669 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6670 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6671 ++    /* 566: LD.sb{cond} */
 47.6672 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6673 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6674 ++    /* 582: LD.ub{cond} */
 47.6675 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6676 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6677 ++    /* 596: ST.w{cond} */
 47.6678 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6679 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6680 ++    /* 614: ST.h{cond} */
 47.6681 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6682 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6683 ++    /* 630: ST.b{cond} */
 47.6684 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6685 ++    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
 47.6686 ++    /* 646: movh */
 47.6687 ++    E(0, 65535, 0)
 47.6688 ++  };
 47.6689 ++
 47.6690 ++#undef E
 47.6691 ++#undef C
 47.6692 ++#undef EMPTY
 47.6693 ++
 47.6694 ++#define AVR32_RS_NONE (-1)
 47.6695 ++
 47.6696 ++#define avr32_rs_size(state) (avr32_relax_table[(state)].length)
 47.6697 ++#define avr32_rs_align(state) (avr32_relax_table[(state)].align)
 47.6698 ++#define relax_more(state) (avr32_relax_table[(state)].next)
 47.6699 ++
 47.6700 ++#define opc_initial_substate(opc) ((opc)->id)
 47.6701 ++
 47.6702 ++static int need_relax(int subtype, offsetT distance)
 47.6703 ++{
 47.6704 ++  offsetT upper_bound, lower_bound;
 47.6705 ++
 47.6706 ++  upper_bound = avr32_relax_table[subtype].upper_bound;
 47.6707 ++  lower_bound = avr32_relax_table[subtype].lower_bound;
 47.6708 ++
 47.6709 ++  if (distance & ((1 << avr32_rs_align(subtype)) - 1))
 47.6710 ++    return 1;
 47.6711 ++  if ((distance > upper_bound) || (distance < lower_bound))
 47.6712 ++    return 1;
 47.6713 ++
 47.6714 ++  return 0;
 47.6715 ++}
 47.6716 ++
 47.6717 ++enum {
 47.6718 ++  LDA_SUBTYPE_MOV1,
 47.6719 ++  LDA_SUBTYPE_MOV2,
 47.6720 ++  LDA_SUBTYPE_SUB,
 47.6721 ++  LDA_SUBTYPE_LDDPC,
 47.6722 ++  LDA_SUBTYPE_LDW,
 47.6723 ++  LDA_SUBTYPE_GOTLOAD,
 47.6724 ++  LDA_SUBTYPE_GOTLOAD_LARGE,
 47.6725 ++};
 47.6726 ++
 47.6727 ++enum {
 47.6728 ++  CALL_SUBTYPE_RCALL1,
 47.6729 ++  CALL_SUBTYPE_RCALL2,
 47.6730 ++  CALL_SUBTYPE_MCALL_CP,
 47.6731 ++  CALL_SUBTYPE_MCALL_GOT,
 47.6732 ++  CALL_SUBTYPE_MCALL_LARGE,
 47.6733 ++};
 47.6734 ++
 47.6735 ++#define LDA_INITIAL_SIZE	(avr32_pic ? 4 : 2)
 47.6736 ++#define CALL_INITIAL_SIZE	2
 47.6737 ++
 47.6738 ++#define need_reloc(sym, seg, pcrel)					\
 47.6739 ++  (!(S_IS_DEFINED(sym)							\
 47.6740 ++     && ((pcrel && S_GET_SEGMENT(sym) == seg)				\
 47.6741 ++	 || (!pcrel && S_GET_SEGMENT(sym) == absolute_section)))	\
 47.6742 ++   || S_FORCE_RELOC(sym, 1))
 47.6743 ++
 47.6744 ++/* Return an initial guess of the length by which a fragment must grow to
 47.6745 ++   hold a branch to reach its destination.
 47.6746 ++   Also updates fr_type/fr_subtype as necessary.
 47.6747 ++
 47.6748 ++   Called just before doing relaxation.
 47.6749 ++   Any symbol that is now undefined will not become defined.
 47.6750 ++   The guess for fr_var is ACTUALLY the growth beyond fr_fix.
 47.6751 ++   Whatever we do to grow fr_fix or fr_var contributes to our returned value.
 47.6752 ++   Although it may not be explicit in the frag, pretend fr_var starts with a
 47.6753 ++   0 value.  */
 47.6754 ++
 47.6755 ++static int
 47.6756 ++avr32_default_estimate_size_before_relax (fragS *fragP, segT segment)
 47.6757 ++{
 47.6758 ++  int growth = 0;
 47.6759 ++
 47.6760 ++  assert(fragP);
 47.6761 ++  assert(fragP->fr_symbol);
 47.6762 ++
 47.6763 ++  if (fragP->tc_frag_data.force_extended
 47.6764 ++      || need_reloc(fragP->fr_symbol, segment, fragP->tc_frag_data.pcrel))
 47.6765 ++    {
 47.6766 ++      int largest_state = fragP->fr_subtype;
 47.6767 ++      while (relax_more(largest_state) != AVR32_RS_NONE)
 47.6768 ++	largest_state = relax_more(largest_state);
 47.6769 ++      growth = avr32_rs_size(largest_state) - fragP->fr_var;
 47.6770 ++    }
 47.6771 ++  else
 47.6772 ++    {
 47.6773 ++      growth = avr32_rs_size(fragP->fr_subtype) - fragP->fr_var;
 47.6774 ++    }
 47.6775 ++
 47.6776 ++  pr_debug("%s:%d: md_estimate_size_before_relax: %d\n",
 47.6777 ++	   fragP->fr_file, fragP->fr_line, growth);
 47.6778 ++
 47.6779 ++  return growth;
 47.6780 ++}
 47.6781 ++
 47.6782 ++static int
 47.6783 ++avr32_lda_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
 47.6784 ++{
 47.6785 ++  return fragP->fr_var - LDA_INITIAL_SIZE;
 47.6786 ++}
 47.6787 ++
 47.6788 ++static int
 47.6789 ++avr32_call_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
 47.6790 ++{
 47.6791 ++  return fragP->fr_var - CALL_INITIAL_SIZE;
 47.6792 ++}
 47.6793 ++
 47.6794 ++static int
 47.6795 ++avr32_cpool_estimate_size_before_relax(fragS *fragP,
 47.6796 ++				       segT segment ATTRIBUTE_UNUSED)
 47.6797 ++{
 47.6798 ++  return fragP->fr_var;
 47.6799 ++}
 47.6800 ++
 47.6801 ++/* This macro may be defined to relax a frag. GAS will call this with the
 47.6802 ++ * segment, the frag, and the change in size of all previous frags;
 47.6803 ++ * md_relax_frag should return the change in size of the frag. */
 47.6804 ++static long
 47.6805 ++avr32_default_relax_frag (segT segment, fragS *fragP, long stretch)
 47.6806 ++{
 47.6807 ++  int state, next_state;
 47.6808 ++  symbolS *symbolP;	/* The target symbol */
 47.6809 ++  long growth = 0;
 47.6810 ++
 47.6811 ++  state = next_state = fragP->fr_subtype;
 47.6812 ++
 47.6813 ++  symbolP = fragP->fr_symbol;
 47.6814 ++
 47.6815 ++  if (fragP->tc_frag_data.force_extended
 47.6816 ++      || need_reloc(symbolP, segment, fragP->tc_frag_data.pcrel))
 47.6817 ++    {
 47.6818 ++      /* Symbol must be resolved by the linker. Emit the largest
 47.6819 ++	 possible opcode. */
 47.6820 ++      while (relax_more(next_state) != AVR32_RS_NONE)
 47.6821 ++	next_state = relax_more(next_state);
 47.6822 ++    }
 47.6823 ++  else
 47.6824 ++    {
 47.6825 ++      addressT address;	/* The address of fragP */
 47.6826 ++      addressT target;	/* The address of the target symbol */
 47.6827 ++      offsetT distance;	/* The distance between the insn and the symbol */
 47.6828 ++      fragS *sym_frag;
 47.6829 ++
 47.6830 ++      address = fragP->fr_address;
 47.6831 ++      target = fragP->fr_offset;
 47.6832 ++      symbolP = fragP->fr_symbol;
 47.6833 ++      sym_frag = symbol_get_frag(symbolP);
 47.6834 ++
 47.6835 ++      address += fragP->fr_fix - fragP->fr_var;
 47.6836 ++      target += S_GET_VALUE(symbolP);
 47.6837 ++
 47.6838 ++      if (stretch != 0
 47.6839 ++	  && sym_frag->relax_marker != fragP->relax_marker
 47.6840 ++	  && S_GET_SEGMENT(symbolP) == segment)
 47.6841 ++	/* if it was correctly aligned before, make sure it stays aligned */
 47.6842 ++	target += stretch & (~0UL << avr32_rs_align(state));
 47.6843 ++
 47.6844 ++      if (fragP->tc_frag_data.pcrel)
 47.6845 ++	distance = target - (address & (~0UL << avr32_rs_align(state)));
 47.6846 ++      else
 47.6847 ++	distance = target;
 47.6848 ++
 47.6849 ++      pr_debug("%s:%d: relax more? 0x%x - 0x%x = 0x%x (%d), align %d\n",
 47.6850 ++	       fragP->fr_file, fragP->fr_line, target, address,
 47.6851 ++	       distance, distance, avr32_rs_align(state));
 47.6852 ++
 47.6853 ++      if (need_relax(state, distance))
 47.6854 ++	{
 47.6855 ++	  if (relax_more(state) != AVR32_RS_NONE)
 47.6856 ++	    next_state = relax_more(state);
 47.6857 ++	  pr_debug("%s:%d: relax more %d -> %d (%d - %d, align %d)\n",
 47.6858 ++		   fragP->fr_file, fragP->fr_line, state, next_state,
 47.6859 ++		   target, address, avr32_rs_align(state));
 47.6860 ++	}
 47.6861 ++    }
 47.6862 ++
 47.6863 ++  growth = avr32_rs_size(next_state) - avr32_rs_size(state);
 47.6864 ++  fragP->fr_subtype = next_state;
 47.6865 ++
 47.6866 ++  pr_debug("%s:%d: md_relax_frag: growth=%d, subtype=%d, opc=0x%08lx\n",
 47.6867 ++	   fragP->fr_file, fragP->fr_line, growth, fragP->fr_subtype,
 47.6868 ++	   avr32_opc_table[next_state].value);
 47.6869 ++
 47.6870 ++  return growth;
 47.6871 ++}
 47.6872 ++
 47.6873 ++static long
 47.6874 ++avr32_lda_relax_frag(segT segment, fragS *fragP, long stretch)
 47.6875 ++{
 47.6876 ++  struct cpool *pool= NULL;
 47.6877 ++  unsigned int entry = 0;
 47.6878 ++  addressT address, target;
 47.6879 ++  offsetT distance;
 47.6880 ++  symbolS *symbolP;
 47.6881 ++  fragS *sym_frag;
 47.6882 ++  long old_size, new_size;
 47.6883 ++
 47.6884 ++  symbolP = fragP->fr_symbol;
 47.6885 ++  old_size = fragP->fr_var;
 47.6886 ++  if (!avr32_pic)
 47.6887 ++    {
 47.6888 ++      pool = fragP->tc_frag_data.pool;
 47.6889 ++      entry = fragP->tc_frag_data.pool_entry;
 47.6890 ++    }
 47.6891 ++
 47.6892 ++  address = fragP->fr_address;
 47.6893 ++  address += fragP->fr_fix - LDA_INITIAL_SIZE;
 47.6894 ++
 47.6895 ++  if (!S_IS_DEFINED(symbolP) || S_FORCE_RELOC(symbolP, 1))
 47.6896 ++    goto relax_max;
 47.6897 ++
 47.6898 ++  target = fragP->fr_offset;
 47.6899 ++  sym_frag = symbol_get_frag(symbolP);
 47.6900 ++  target += S_GET_VALUE(symbolP);
 47.6901 ++
 47.6902 ++  if (sym_frag->relax_marker != fragP->relax_marker
 47.6903 ++      && S_GET_SEGMENT(symbolP) == segment)
 47.6904 ++    target += stretch;
 47.6905 ++
 47.6906 ++  distance = target - address;
 47.6907 ++
 47.6908 ++  pr_debug("lda_relax_frag: target: %d, address: %d, var: %d\n",
 47.6909 ++	   target, address, fragP->fr_var);
 47.6910 ++
 47.6911 ++  if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
 47.6912 ++      && target <= 127 && (offsetT)target >= -128)
 47.6913 ++    {
 47.6914 ++      if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
 47.6915 ++	  || fragP->fr_subtype == LDA_SUBTYPE_LDW)
 47.6916 ++	pool->literals[entry].refcount--;
 47.6917 ++      new_size = 2;
 47.6918 ++      fragP->fr_subtype = LDA_SUBTYPE_MOV1;
 47.6919 ++    }
 47.6920 ++  else if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
 47.6921 ++	   && target <= 1048575 && (offsetT)target >= -1048576)
 47.6922 ++    {
 47.6923 ++      if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
 47.6924 ++	  || fragP->fr_subtype == LDA_SUBTYPE_LDW)
 47.6925 ++	pool->literals[entry].refcount--;
 47.6926 ++      new_size = 4;
 47.6927 ++      fragP->fr_subtype = LDA_SUBTYPE_MOV2;
 47.6928 ++    }
 47.6929 ++  else if (!linkrelax && S_GET_SEGMENT(symbolP) == segment
 47.6930 ++	   /* the field will be negated, so this is really -(-32768)
 47.6931 ++	      and -(32767) */
 47.6932 ++	   && distance <= 32768 && distance >= -32767)
 47.6933 ++    {
 47.6934 ++      if (!avr32_pic
 47.6935 ++	  && (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
 47.6936 ++	      || fragP->fr_subtype == LDA_SUBTYPE_LDW))
 47.6937 ++	pool->literals[entry].refcount--;
 47.6938 ++      new_size = 4;
 47.6939 ++      fragP->fr_subtype = LDA_SUBTYPE_SUB;
 47.6940 ++    }
 47.6941 ++  else
 47.6942 ++    {
 47.6943 ++    relax_max:
 47.6944 ++      if (avr32_pic)
 47.6945 ++	{
 47.6946 ++	  if (linkrelax)
 47.6947 ++	    {
 47.6948 ++	      new_size = 8;
 47.6949 ++	      fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD_LARGE;
 47.6950 ++	    }
 47.6951 ++	  else
 47.6952 ++	    {
 47.6953 ++	      new_size = 4;
 47.6954 ++	      fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD;
 47.6955 ++	    }
 47.6956 ++	}
 47.6957 ++      else
 47.6958 ++	{
 47.6959 ++	  if (fragP->fr_subtype != LDA_SUBTYPE_LDDPC
 47.6960 ++	      && fragP->fr_subtype != LDA_SUBTYPE_LDW)
 47.6961 ++	    pool->literals[entry].refcount++;
 47.6962 ++
 47.6963 ++	  sym_frag = symbol_get_frag(pool->symbol);
 47.6964 ++	  target = (sym_frag->fr_address + sym_frag->fr_fix
 47.6965 ++		    + pool->padding + pool->literals[entry].offset);
 47.6966 ++
 47.6967 ++	  pr_debug("cpool sym address: 0x%lx\n",
 47.6968 ++		   sym_frag->fr_address + sym_frag->fr_fix);
 47.6969 ++
 47.6970 ++	  know(pool->section == segment);
 47.6971 ++
 47.6972 ++	  if (sym_frag->relax_marker != fragP->relax_marker)
 47.6973 ++	    target += stretch;
 47.6974 ++
 47.6975 ++	  distance = target - address;
 47.6976 ++	  if (distance <= 508 && distance >= 0)
 47.6977 ++	    {
 47.6978 ++	      new_size = 2;
 47.6979 ++	      fragP->fr_subtype = LDA_SUBTYPE_LDDPC;
 47.6980 ++	    }
 47.6981 ++	  else
 47.6982 ++	    {
 47.6983 ++	      new_size = 4;
 47.6984 ++	      fragP->fr_subtype = LDA_SUBTYPE_LDW;
 47.6985 ++	    }
 47.6986 ++
 47.6987 ++	  pr_debug("lda_relax_frag (cpool): target=0x%lx, address=0x%lx, refcount=%d\n",
 47.6988 ++		   target, address, pool->literals[entry].refcount);
 47.6989 ++	}
 47.6990 ++    }
 47.6991 ++
 47.6992 ++  fragP->fr_var = new_size;
 47.6993 ++
 47.6994 ++  pr_debug("%s:%d: lda: relax pass done. subtype: %d, growth: %ld\n",
 47.6995 ++	   fragP->fr_file, fragP->fr_line,
 47.6996 ++	   fragP->fr_subtype, new_size - old_size);
 47.6997 ++
 47.6998 ++  return new_size - old_size;
 47.6999 ++}
 47.7000 ++
 47.7001 ++static long
 47.7002 ++avr32_call_relax_frag(segT segment, fragS *fragP, long stretch)
 47.7003 ++{
 47.7004 ++  struct cpool *pool = NULL;
 47.7005 ++  unsigned int entry = 0;
 47.7006 ++  addressT address, target;
 47.7007 ++  offsetT distance;
 47.7008 ++  symbolS *symbolP;
 47.7009 ++  fragS *sym_frag;
 47.7010 ++  long old_size, new_size;
 47.7011 ++
 47.7012 ++  symbolP = fragP->fr_symbol;
 47.7013 ++  old_size = fragP->fr_var;
 47.7014 ++  if (!avr32_pic)
 47.7015 ++    {
 47.7016 ++      pool = fragP->tc_frag_data.pool;
 47.7017 ++      entry = fragP->tc_frag_data.pool_entry;
 47.7018 ++    }
 47.7019 ++
 47.7020 ++  address = fragP->fr_address;
 47.7021 ++  address += fragP->fr_fix - CALL_INITIAL_SIZE;
 47.7022 ++
 47.7023 ++  if (need_reloc(symbolP, segment, 1))
 47.7024 ++    {
 47.7025 ++      pr_debug("call: must emit reloc\n");
 47.7026 ++      goto relax_max;
 47.7027 ++    }
 47.7028 ++
 47.7029 ++  target = fragP->fr_offset;
 47.7030 ++  sym_frag = symbol_get_frag(symbolP);
 47.7031 ++  target += S_GET_VALUE(symbolP);
 47.7032 ++
 47.7033 ++  if (sym_frag->relax_marker != fragP->relax_marker
 47.7034 ++      && S_GET_SEGMENT(symbolP) == segment)
 47.7035 ++    target += stretch;
 47.7036 ++
 47.7037 ++  distance = target - address;
 47.7038 ++
 47.7039 ++  if (distance <= 1022 && distance >= -1024)
 47.7040 ++    {
 47.7041 ++      pr_debug("call: distance is %d, emitting short rcall\n", distance);
 47.7042 ++      if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
 47.7043 ++	pool->literals[entry].refcount--;
 47.7044 ++      new_size = 2;
 47.7045 ++      fragP->fr_subtype = CALL_SUBTYPE_RCALL1;
 47.7046 ++    }
 47.7047 ++  else if (distance <= 2097150 && distance >= -2097152)
 47.7048 ++    {
 47.7049 ++      pr_debug("call: distance is %d, emitting long rcall\n", distance);
 47.7050 ++      if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
 47.7051 ++	pool->literals[entry].refcount--;
 47.7052 ++      new_size = 4;
 47.7053 ++      fragP->fr_subtype = CALL_SUBTYPE_RCALL2;
 47.7054 ++    }
 47.7055 ++  else
 47.7056 ++    {
 47.7057 ++      pr_debug("call: distance %d too far, emitting something big\n", distance);
 47.7058 ++
 47.7059 ++    relax_max:
 47.7060 ++      if (avr32_pic)
 47.7061 ++	{
 47.7062 ++	  if (linkrelax)
 47.7063 ++	    {
 47.7064 ++	      new_size = 10;
 47.7065 ++	      fragP->fr_subtype = CALL_SUBTYPE_MCALL_LARGE;
 47.7066 ++	    }
 47.7067 ++	  else
 47.7068 ++	    {
 47.7069 ++	      new_size = 4;
 47.7070 ++	      fragP->fr_subtype = CALL_SUBTYPE_MCALL_GOT;
 47.7071 ++	    }
 47.7072 ++	}
 47.7073 ++      else
 47.7074 ++	{
 47.7075 ++	  if (fragP->fr_subtype != CALL_SUBTYPE_MCALL_CP)
 47.7076 ++	    pool->literals[entry].refcount++;
 47.7077 ++
 47.7078 ++	  new_size = 4;
 47.7079 ++	  fragP->fr_subtype = CALL_SUBTYPE_MCALL_CP;
 47.7080 ++	}
 47.7081 ++    }
 47.7082 ++
 47.7083 ++  fragP->fr_var = new_size;
 47.7084 ++
 47.7085 ++  pr_debug("%s:%d: call: relax pass done, growth: %d, fr_var: %d\n",
 47.7086 ++	   fragP->fr_file, fragP->fr_line,
 47.7087 ++	   new_size - old_size, fragP->fr_var);
 47.7088 ++
 47.7089 ++  return new_size - old_size;
 47.7090 ++}
 47.7091 ++
 47.7092 ++static long
 47.7093 ++avr32_cpool_relax_frag(segT segment ATTRIBUTE_UNUSED,
 47.7094 ++		       fragS *fragP,
 47.7095 ++		       long stretch ATTRIBUTE_UNUSED)
 47.7096 ++{
 47.7097 ++  struct cpool *pool;
 47.7098 ++  addressT address;
 47.7099 ++  long old_size, new_size;
 47.7100 ++  unsigned int entry;
 47.7101 ++
 47.7102 ++  pool = fragP->tc_frag_data.pool;
 47.7103 ++  address = fragP->fr_address + fragP->fr_fix;
 47.7104 ++  old_size = fragP->fr_var;
 47.7105 ++  new_size = 0;
 47.7106 ++
 47.7107 ++  for (entry = 0; entry < pool->next_free_entry; entry++)
 47.7108 ++    {
 47.7109 ++      if (pool->literals[entry].refcount > 0)
 47.7110 ++	{
 47.7111 ++	  pool->literals[entry].offset = new_size;
 47.7112 ++	  new_size += 4;
 47.7113 ++	}
 47.7114 ++    }
 47.7115 ++
 47.7116 ++  fragP->fr_var = new_size;
 47.7117 ++
 47.7118 ++  return new_size - old_size;
 47.7119 ++}
 47.7120 ++
 47.7121 ++/* *fragP has been relaxed to its final size, and now needs to have
 47.7122 ++   the bytes inside it modified to conform to the new size.
 47.7123 ++
 47.7124 ++   Called after relaxation is finished.
 47.7125 ++   fragP->fr_type == rs_machine_dependent.
 47.7126 ++   fragP->fr_subtype is the subtype of what the address relaxed to.  */
 47.7127 ++
 47.7128 ++static void
 47.7129 ++avr32_default_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
 47.7130 ++			    segT segment ATTRIBUTE_UNUSED,
 47.7131 ++			    fragS *fragP)
 47.7132 ++{
 47.7133 ++  const struct avr32_opcode *opc;
 47.7134 ++  const struct avr32_ifield *ifield;
 47.7135 ++  bfd_reloc_code_real_type r_type;
 47.7136 ++  symbolS *symbolP;
 47.7137 ++  fixS *fixP;
 47.7138 ++  bfd_vma value;
 47.7139 ++  int subtype;
 47.7140 ++
 47.7141 ++  opc = &avr32_opc_table[fragP->fr_subtype];
 47.7142 ++  ifield = opc->fields[opc->var_field];
 47.7143 ++  symbolP = fragP->fr_symbol;
 47.7144 ++  subtype = fragP->fr_subtype;
 47.7145 ++  r_type = opc->reloc_type;
 47.7146 ++
 47.7147 ++  /* Clear the opcode bits and the bits belonging to the relaxed
 47.7148 ++     field.  We assume all other fields stay the same.  */
 47.7149 ++  value = bfd_getb32(fragP->fr_opcode);
 47.7150 ++  value &= ~(opc->mask | ifield->mask);
 47.7151 ++
 47.7152 ++  /* Insert the new opcode */
 47.7153 ++  value |= opc->value;
 47.7154 ++  bfd_putb32(value, fragP->fr_opcode);
 47.7155 ++
 47.7156 ++  fragP->fr_fix += opc->size - fragP->fr_var;
 47.7157 ++
 47.7158 ++  if (fragP->tc_frag_data.reloc_info != AVR32_OPINFO_NONE)
 47.7159 ++    {
 47.7160 ++      switch (fragP->tc_frag_data.reloc_info)
 47.7161 ++	{
 47.7162 ++	case AVR32_OPINFO_HI:
 47.7163 ++	  r_type = BFD_RELOC_HI16;
 47.7164 ++	  break;
 47.7165 ++	case AVR32_OPINFO_LO:
 47.7166 ++	  r_type = BFD_RELOC_LO16;
 47.7167 ++	  break;
 47.7168 ++	case AVR32_OPINFO_GOT:
 47.7169 ++	  switch (r_type)
 47.7170 ++	    {
 47.7171 ++	    case BFD_RELOC_AVR32_18W_PCREL:
 47.7172 ++	      r_type = BFD_RELOC_AVR32_GOT18SW;
 47.7173 ++	      break;
 47.7174 ++	    case BFD_RELOC_AVR32_16S:
 47.7175 ++	      r_type = BFD_RELOC_AVR32_GOT16S;
 47.7176 ++	      break;
 47.7177 ++	    default:
 47.7178 ++	      BAD_CASE(r_type);
 47.7179 ++	      break;
 47.7180 ++	    }
 47.7181 ++	  break;
 47.7182 ++	default:
 47.7183 ++	  BAD_CASE(fragP->tc_frag_data.reloc_info);
 47.7184 ++	  break;
 47.7185 ++	}
 47.7186 ++    }
 47.7187 ++
 47.7188 ++  pr_debug("%s:%d: convert_frag: new %s fixup\n",
 47.7189 ++	   fragP->fr_file, fragP->fr_line,
 47.7190 ++	   bfd_get_reloc_code_name(r_type));
 47.7191 ++
 47.7192 ++#if 1
 47.7193 ++  fixP = fix_new_exp(fragP, fragP->fr_fix - opc->size, opc->size,
 47.7194 ++		     &fragP->tc_frag_data.exp,
 47.7195 ++		     fragP->tc_frag_data.pcrel, r_type);
 47.7196 ++#else
 47.7197 ++  fixP = fix_new(fragP, fragP->fr_fix - opc->size, opc->size, symbolP,
 47.7198 ++		 fragP->fr_offset, fragP->tc_frag_data.pcrel, r_type);
 47.7199 ++#endif
 47.7200 ++
 47.7201 ++  /* Revert fix_new brain damage. "dot_value" is the value of PC at
 47.7202 ++     the point of the fixup, relative to the frag address.  fix_new()
 47.7203 ++     and friends think they are only being called during the assembly
 47.7204 ++     pass, not during relaxation or similar, so fx_dot_value, fx_file
 47.7205 ++     and fx_line are all initialized to the wrong value.  But we don't
 47.7206 ++     know the size of the fixup until now, so we really can't live up
 47.7207 ++     to the assumptions these functions make about the target.  What
 47.7208 ++     do these functions think the "where" and "frag" argument mean
 47.7209 ++     anyway?  */
 47.7210 ++  fixP->fx_dot_value = fragP->fr_fix - opc->size;
 47.7211 ++  fixP->fx_file = fragP->fr_file;
 47.7212 ++  fixP->fx_line = fragP->fr_line;
 47.7213 ++
 47.7214 ++  fixP->tc_fix_data.ifield = ifield;
 47.7215 ++  fixP->tc_fix_data.align = avr32_rs_align(subtype);
 47.7216 ++  fixP->tc_fix_data.min = avr32_relax_table[subtype].lower_bound;
 47.7217 ++  fixP->tc_fix_data.max = avr32_relax_table[subtype].upper_bound;
 47.7218 ++}
 47.7219 ++
 47.7220 ++static void
 47.7221 ++avr32_lda_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
 47.7222 ++		       segT segment ATTRIBUTE_UNUSED,
 47.7223 ++		       fragS *fragP)
 47.7224 ++{
 47.7225 ++  const struct avr32_opcode *opc;
 47.7226 ++  const struct avr32_ifield *ifield;
 47.7227 ++  bfd_reloc_code_real_type r_type;
 47.7228 ++  expressionS exp;
 47.7229 ++  struct cpool *pool;
 47.7230 ++  fixS *fixP;
 47.7231 ++  bfd_vma value;
 47.7232 ++  int regid, pcrel = 0, align = 0;
 47.7233 ++  char *p;
 47.7234 ++
 47.7235 ++  r_type = BFD_RELOC_NONE;
 47.7236 ++  regid = fragP->tc_frag_data.reloc_info;
 47.7237 ++  p = fragP->fr_opcode;
 47.7238 ++  exp.X_add_symbol = fragP->fr_symbol;
 47.7239 ++  exp.X_add_number = fragP->fr_offset;
 47.7240 ++  exp.X_op = O_symbol;
 47.7241 ++
 47.7242 ++  pr_debug("%s:%d: lda_convert_frag, subtype: %d, fix: %d, var: %d, regid: %d\n",
 47.7243 ++	   fragP->fr_file, fragP->fr_line,
 47.7244 ++	   fragP->fr_subtype, fragP->fr_fix, fragP->fr_var, regid);
 47.7245 ++
 47.7246 ++  switch (fragP->fr_subtype)
 47.7247 ++    {
 47.7248 ++    case LDA_SUBTYPE_MOV1:
 47.7249 ++      opc = &avr32_opc_table[AVR32_OPC_MOV1];
 47.7250 ++      opc->fields[0]->insert(opc->fields[0], p, regid);
 47.7251 ++      ifield = opc->fields[1];
 47.7252 ++      r_type = opc->reloc_type;
 47.7253 ++      break;
 47.7254 ++    case LDA_SUBTYPE_MOV2:
 47.7255 ++      opc = &avr32_opc_table[AVR32_OPC_MOV2];
 47.7256 ++      opc->fields[0]->insert(opc->fields[0], p, regid);
 47.7257 ++      ifield = opc->fields[1];
 47.7258 ++      r_type = opc->reloc_type;
 47.7259 ++      break;
 47.7260 ++    case LDA_SUBTYPE_SUB:
 47.7261 ++      opc = &avr32_opc_table[AVR32_OPC_SUB5];
 47.7262 ++      opc->fields[0]->insert(opc->fields[0], p, regid);
 47.7263 ++      opc->fields[1]->insert(opc->fields[1], p, AVR32_REG_PC);
 47.7264 ++      ifield = opc->fields[2];
 47.7265 ++      r_type = BFD_RELOC_AVR32_16N_PCREL;
 47.7266 ++
 47.7267 ++      /* Pretend that SUB5 isn't a "negated" pcrel expression for now.
 47.7268 ++	 We'll have to fix it up later when we know whether to
 47.7269 ++	 generate a reloc for it (in which case the linker will negate
 47.7270 ++	 it, so we shouldn't). */
 47.7271 ++      pcrel = 1;
 47.7272 ++      break;
 47.7273 ++    case LDA_SUBTYPE_LDDPC:
 47.7274 ++      opc = &avr32_opc_table[AVR32_OPC_LDDPC];
 47.7275 ++      align = 2;
 47.7276 ++      r_type = BFD_RELOC_AVR32_9W_CP;
 47.7277 ++      goto cpool_common;
 47.7278 ++    case LDA_SUBTYPE_LDW:
 47.7279 ++      opc = &avr32_opc_table[AVR32_OPC_LDDPC_EXT];
 47.7280 ++      r_type = BFD_RELOC_AVR32_16_CP;
 47.7281 ++    cpool_common:
 47.7282 ++      opc->fields[0]->insert(opc->fields[0], p, regid);
 47.7283 ++      ifield = opc->fields[1];
 47.7284 ++      pool = fragP->tc_frag_data.pool;
 47.7285 ++      exp.X_add_symbol = pool->symbol;
 47.7286 ++      exp.X_add_number = pool->literals[fragP->tc_frag_data.pool_entry].offset;
 47.7287 ++      pcrel = 1;
 47.7288 ++      break;
 47.7289 ++    case LDA_SUBTYPE_GOTLOAD_LARGE:
 47.7290 ++      /* ld.w Rd, r6[Rd << 2] (last) */
 47.7291 ++      opc = &avr32_opc_table[AVR32_OPC_LD_W5];
 47.7292 ++      bfd_putb32(opc->value, p + 4);
 47.7293 ++      opc->fields[0]->insert(opc->fields[0], p + 4, regid);
 47.7294 ++      opc->fields[1]->insert(opc->fields[1], p + 4, 6);
 47.7295 ++      opc->fields[2]->insert(opc->fields[2], p + 4, regid);
 47.7296 ++      opc->fields[3]->insert(opc->fields[3], p + 4, 2);
 47.7297 ++
 47.7298 ++      /* mov Rd, (got_offset / 4) */
 47.7299 ++      opc = &avr32_opc_table[AVR32_OPC_MOV2];
 47.7300 ++      opc->fields[0]->insert(opc->fields[0], p, regid);
 47.7301 ++      ifield = opc->fields[1];
 47.7302 ++      r_type = BFD_RELOC_AVR32_LDA_GOT;
 47.7303 ++      break;
 47.7304 ++    case LDA_SUBTYPE_GOTLOAD:
 47.7305 ++      opc = &avr32_opc_table[AVR32_OPC_LD_W4];
 47.7306 ++      opc->fields[0]->insert(opc->fields[0], p, regid);
 47.7307 ++      opc->fields[1]->insert(opc->fields[1], p, 6);
 47.7308 ++      ifield = opc->fields[2];
 47.7309 ++      if (r_type == BFD_RELOC_NONE)
 47.7310 ++	r_type = BFD_RELOC_AVR32_GOT16S;
 47.7311 ++      break;
 47.7312 ++    default:
 47.7313 ++      BAD_CASE(fragP->fr_subtype);
 47.7314 ++    }
 47.7315 ++
 47.7316 ++  value = bfd_getb32(p);
 47.7317 ++  value &= ~(opc->mask | ifield->mask);
 47.7318 ++  value |= opc->value;
 47.7319 ++  bfd_putb32(value, p);
 47.7320 ++
 47.7321 ++  fragP->fr_fix += fragP->fr_var - LDA_INITIAL_SIZE;
 47.7322 ++
 47.7323 ++  if (fragP->fr_next
 47.7324 ++      && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
 47.7325 ++	  != fragP->fr_fix))
 47.7326 ++    {
 47.7327 ++      fprintf(stderr, "LDA frag: fr_fix is wrong! fragP->fr_var = %ld, r_type = %s\n",
 47.7328 ++	      fragP->fr_var, bfd_get_reloc_code_name(r_type));
 47.7329 ++      abort();
 47.7330 ++    }
 47.7331 ++
 47.7332 ++  fixP = fix_new_exp(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
 47.7333 ++		     &exp, pcrel, r_type);
 47.7334 ++
 47.7335 ++  /* Revert fix_new brain damage. "dot_value" is the value of PC at
 47.7336 ++     the point of the fixup, relative to the frag address.  fix_new()
 47.7337 ++     and friends think they are only being called during the assembly
 47.7338 ++     pass, not during relaxation or similar, so fx_dot_value, fx_file
 47.7339 ++     and fx_line are all initialized to the wrong value.  But we don't
 47.7340 ++     know the size of the fixup until now, so we really can't live up
 47.7341 ++     to the assumptions these functions make about the target.  What
 47.7342 ++     do these functions think the "where" and "frag" argument mean
 47.7343 ++     anyway?  */
 47.7344 ++  fixP->fx_dot_value = fragP->fr_fix - opc->size;
 47.7345 ++  fixP->fx_file = fragP->fr_file;
 47.7346 ++  fixP->fx_line = fragP->fr_line;
 47.7347 ++
 47.7348 ++  fixP->tc_fix_data.ifield = ifield;
 47.7349 ++  fixP->tc_fix_data.align = align;
 47.7350 ++  /* these are only used if the fixup can actually be resolved */
 47.7351 ++  fixP->tc_fix_data.min = -32768;
 47.7352 ++  fixP->tc_fix_data.max = 32767;
 47.7353 ++}
 47.7354 ++
 47.7355 ++static void
 47.7356 ++avr32_call_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
 47.7357 ++		       segT segment ATTRIBUTE_UNUSED,
 47.7358 ++		       fragS *fragP)
 47.7359 ++{
 47.7360 ++  const struct avr32_opcode *opc = NULL;
 47.7361 ++  const struct avr32_ifield *ifield;
 47.7362 ++  bfd_reloc_code_real_type r_type;
 47.7363 ++  symbolS *symbol;
 47.7364 ++  offsetT offset;
 47.7365 ++  fixS *fixP;
 47.7366 ++  bfd_vma value;
 47.7367 ++  int pcrel = 0, align = 0;
 47.7368 ++  char *p;
 47.7369 ++
 47.7370 ++  symbol = fragP->fr_symbol;
 47.7371 ++  offset = fragP->fr_offset;
 47.7372 ++  r_type = BFD_RELOC_NONE;
 47.7373 ++  p = fragP->fr_opcode;
 47.7374 ++
 47.7375 ++  pr_debug("%s:%d: call_convert_frag, subtype: %d, fix: %d, var: %d\n",
 47.7376 ++	   fragP->fr_file, fragP->fr_line,
 47.7377 ++	   fragP->fr_subtype, fragP->fr_fix, fragP->fr_var);
 47.7378 ++
 47.7379 ++  switch (fragP->fr_subtype)
 47.7380 ++    {
 47.7381 ++    case CALL_SUBTYPE_RCALL1:
 47.7382 ++      opc = &avr32_opc_table[AVR32_OPC_RCALL1];
 47.7383 ++      /* fall through */
 47.7384 ++    case CALL_SUBTYPE_RCALL2:
 47.7385 ++      if (!opc)
 47.7386 ++	opc = &avr32_opc_table[AVR32_OPC_RCALL2];
 47.7387 ++      ifield = opc->fields[0];
 47.7388 ++      r_type = opc->reloc_type;
 47.7389 ++      pcrel = 1;
 47.7390 ++      align = 1;
 47.7391 ++      break;
 47.7392 ++    case CALL_SUBTYPE_MCALL_CP:
 47.7393 ++      opc = &avr32_opc_table[AVR32_OPC_MCALL];
 47.7394 ++      opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_PC);
 47.7395 ++      ifield = opc->fields[1];
 47.7396 ++      r_type = BFD_RELOC_AVR32_CPCALL;
 47.7397 ++      symbol = fragP->tc_frag_data.pool->symbol;
 47.7398 ++      offset = fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].offset;
 47.7399 ++      assert(fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].refcount > 0);
 47.7400 ++      pcrel = 1;
 47.7401 ++      align = 2;
 47.7402 ++      break;
 47.7403 ++    case CALL_SUBTYPE_MCALL_GOT:
 47.7404 ++      opc = &avr32_opc_table[AVR32_OPC_MCALL];
 47.7405 ++      opc->fields[0]->insert(opc->fields[0], p, 6);
 47.7406 ++      ifield = opc->fields[1];
 47.7407 ++      r_type = BFD_RELOC_AVR32_GOT18SW;
 47.7408 ++      break;
 47.7409 ++    case CALL_SUBTYPE_MCALL_LARGE:
 47.7410 ++      assert(fragP->fr_var == 10);
 47.7411 ++      /* ld.w lr, r6[lr << 2] */
 47.7412 ++      opc = &avr32_opc_table[AVR32_OPC_LD_W5];
 47.7413 ++      bfd_putb32(opc->value, p + 4);
 47.7414 ++      opc->fields[0]->insert(opc->fields[0], p + 4, AVR32_REG_LR);
 47.7415 ++      opc->fields[1]->insert(opc->fields[1], p + 4, 6);
 47.7416 ++      opc->fields[2]->insert(opc->fields[2], p + 4, AVR32_REG_LR);
 47.7417 ++      opc->fields[3]->insert(opc->fields[3], p + 4, 2);
 47.7418 ++
 47.7419 ++      /* icall lr */
 47.7420 ++      opc = &avr32_opc_table[AVR32_OPC_ICALL];
 47.7421 ++      bfd_putb16(opc->value >> 16, p + 8);
 47.7422 ++      opc->fields[0]->insert(opc->fields[0], p + 8, AVR32_REG_LR);
 47.7423 ++
 47.7424 ++      /* mov lr, (got_offset / 4) */
 47.7425 ++      opc = &avr32_opc_table[AVR32_OPC_MOV2];
 47.7426 ++      opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_LR);
 47.7427 ++      ifield = opc->fields[1];
 47.7428 ++      r_type = BFD_RELOC_AVR32_GOTCALL;
 47.7429 ++      break;
 47.7430 ++    default:
 47.7431 ++      BAD_CASE(fragP->fr_subtype);
 47.7432 ++    }
 47.7433 ++
 47.7434 ++  /* Insert the opcode and clear the variable ifield */
 47.7435 ++  value = bfd_getb32(p);
 47.7436 ++  value &= ~(opc->mask | ifield->mask);
 47.7437 ++  value |= opc->value;
 47.7438 ++  bfd_putb32(value, p);
 47.7439 ++
 47.7440 ++  fragP->fr_fix += fragP->fr_var - CALL_INITIAL_SIZE;
 47.7441 ++
 47.7442 ++  if (fragP->fr_next
 47.7443 ++      && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
 47.7444 ++	  != fragP->fr_fix))
 47.7445 ++    {
 47.7446 ++      fprintf(stderr, "%s:%d: fr_fix %lu is wrong! fr_var=%lu, r_type=%s\n",
 47.7447 ++	      fragP->fr_file, fragP->fr_line,
 47.7448 ++	      fragP->fr_fix, fragP->fr_var, bfd_get_reloc_code_name(r_type));
 47.7449 ++      fprintf(stderr, "fr_fix should be %ld. next frag is %s:%d\n",
 47.7450 ++	      (offsetT)(fragP->fr_next->fr_address - fragP->fr_address),
 47.7451 ++	      fragP->fr_next->fr_file, fragP->fr_next->fr_line);
 47.7452 ++    }
 47.7453 ++
 47.7454 ++  fixP = fix_new(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
 47.7455 ++		 symbol, offset, pcrel, r_type);
 47.7456 ++
 47.7457 ++  /* Revert fix_new brain damage. "dot_value" is the value of PC at
 47.7458 ++     the point of the fixup, relative to the frag address.  fix_new()
 47.7459 ++     and friends think they are only being called during the assembly
 47.7460 ++     pass, not during relaxation or similar, so fx_dot_value, fx_file
 47.7461 ++     and fx_line are all initialized to the wrong value.  But we don't
 47.7462 ++     know the size of the fixup until now, so we really can't live up
 47.7463 ++     to the assumptions these functions make about the target.  What
 47.7464 ++     do these functions think the "where" and "frag" argument mean
 47.7465 ++     anyway?  */
 47.7466 ++  fixP->fx_dot_value = fragP->fr_fix - opc->size;
 47.7467 ++  fixP->fx_file = fragP->fr_file;
 47.7468 ++  fixP->fx_line = fragP->fr_line;
 47.7469 ++
 47.7470 ++  fixP->tc_fix_data.ifield = ifield;
 47.7471 ++  fixP->tc_fix_data.align = align;
 47.7472 ++  /* these are only used if the fixup can actually be resolved */
 47.7473 ++  fixP->tc_fix_data.min = -2097152;
 47.7474 ++  fixP->tc_fix_data.max = 2097150;
 47.7475 ++}
 47.7476 ++
 47.7477 ++static void
 47.7478 ++avr32_cpool_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
 47.7479 ++			 segT segment ATTRIBUTE_UNUSED,
 47.7480 ++			 fragS *fragP)
 47.7481 ++{
 47.7482 ++  struct cpool *pool;
 47.7483 ++  addressT address;
 47.7484 ++  unsigned int entry;
 47.7485 ++  char *p;
 47.7486 ++  char sym_name[20];
 47.7487 ++
 47.7488 ++  /* Did we get rid of the frag altogether? */
 47.7489 ++  if (!fragP->fr_var)
 47.7490 ++    return;
 47.7491 ++
 47.7492 ++  pool = fragP->tc_frag_data.pool;
 47.7493 ++  address = fragP->fr_address + fragP->fr_fix;
 47.7494 ++  p = fragP->fr_literal + fragP->fr_fix;
 47.7495 ++
 47.7496 ++  sprintf(sym_name, "$$cp_\002%x", pool->id);
 47.7497 ++  symbol_locate(pool->symbol, sym_name, pool->section, fragP->fr_fix, fragP);
 47.7498 ++  symbol_table_insert(pool->symbol);
 47.7499 ++
 47.7500 ++  for (entry = 0; entry < pool->next_free_entry; entry++)
 47.7501 ++    {
 47.7502 ++      if (pool->literals[entry].refcount > 0)
 47.7503 ++	{
 47.7504 ++	  fix_new_exp(fragP, fragP->fr_fix, 4, &pool->literals[entry].exp,
 47.7505 ++		      FALSE, BFD_RELOC_AVR32_32_CPENT);
 47.7506 ++	  fragP->fr_fix += 4;
 47.7507 ++	}
 47.7508 ++    }
 47.7509 ++}
 47.7510 ++
 47.7511 ++static struct avr32_relaxer avr32_default_relaxer = {
 47.7512 ++  .estimate_size	= avr32_default_estimate_size_before_relax,
 47.7513 ++  .relax_frag		= avr32_default_relax_frag,
 47.7514 ++  .convert_frag		= avr32_default_convert_frag,
 47.7515 ++};
 47.7516 ++static struct avr32_relaxer avr32_lda_relaxer = {
 47.7517 ++  .estimate_size	= avr32_lda_estimate_size_before_relax,
 47.7518 ++  .relax_frag		= avr32_lda_relax_frag,
 47.7519 ++  .convert_frag		= avr32_lda_convert_frag,
 47.7520 ++};
 47.7521 ++static struct avr32_relaxer avr32_call_relaxer = {
 47.7522 ++  .estimate_size	= avr32_call_estimate_size_before_relax,
 47.7523 ++  .relax_frag		= avr32_call_relax_frag,
 47.7524 ++  .convert_frag		= avr32_call_convert_frag,
 47.7525 ++};
 47.7526 ++static struct avr32_relaxer avr32_cpool_relaxer = {
 47.7527 ++  .estimate_size	= avr32_cpool_estimate_size_before_relax,
 47.7528 ++  .relax_frag		= avr32_cpool_relax_frag,
 47.7529 ++  .convert_frag		= avr32_cpool_convert_frag,
 47.7530 ++};
 47.7531 ++
 47.7532 ++static void s_cpool(int arg ATTRIBUTE_UNUSED)
 47.7533 ++{
 47.7534 ++  struct cpool *pool;
 47.7535 ++  unsigned int max_size;
 47.7536 ++  char *buf;
 47.7537 ++
 47.7538 ++  pool = find_cpool(now_seg, now_subseg);
 47.7539 ++  if (!pool || !pool->symbol || pool->next_free_entry == 0)
 47.7540 ++    return;
 47.7541 ++
 47.7542 ++  /* Make sure the constant pool is properly aligned */
 47.7543 ++  frag_align_code(2, 0);
 47.7544 ++  if (bfd_get_section_alignment(stdoutput, pool->section) < 2)
 47.7545 ++    bfd_set_section_alignment(stdoutput, pool->section, 2);
 47.7546 ++
 47.7547 ++  /* Assume none of the entries are discarded, and that we need the
 47.7548 ++     maximum amount of alignment.  But we're not going to allocate
 47.7549 ++     anything up front. */
 47.7550 ++  max_size = pool->next_free_entry * 4 + 2;
 47.7551 ++  frag_grow(max_size);
 47.7552 ++  buf = frag_more(0);
 47.7553 ++
 47.7554 ++  frag_now->tc_frag_data.relaxer = &avr32_cpool_relaxer;
 47.7555 ++  frag_now->tc_frag_data.pool = pool;
 47.7556 ++
 47.7557 ++  symbol_set_frag(pool->symbol, frag_now);
 47.7558 ++
 47.7559 ++  /* Assume zero initial size, allowing other relaxers to be
 47.7560 ++     optimistic about things.  */
 47.7561 ++  frag_var(rs_machine_dependent, max_size, 0,
 47.7562 ++	   0, pool->symbol, 0, NULL);
 47.7563 ++
 47.7564 ++  /* Mark the pool as empty.  */
 47.7565 ++  pool->used = 1;
 47.7566 ++}
 47.7567 ++
 47.7568 ++/* The location from which a PC relative jump should be calculated,
 47.7569 ++   given a PC relative reloc.  */
 47.7570 ++
 47.7571 ++long
 47.7572 ++md_pcrel_from_section (fixS *fixP, segT sec)
 47.7573 ++{
 47.7574 ++  pr_debug("pcrel_from_section, fx_offset = %d\n", fixP->fx_offset);
 47.7575 ++
 47.7576 ++  if (fixP->fx_addsy != NULL
 47.7577 ++      && (! S_IS_DEFINED (fixP->fx_addsy)
 47.7578 ++          || S_GET_SEGMENT (fixP->fx_addsy) != sec
 47.7579 ++	  || S_FORCE_RELOC(fixP->fx_addsy, 1)))
 47.7580 ++    {
 47.7581 ++      pr_debug("Unknown pcrel symbol: %s\n", S_GET_NAME(fixP->fx_addsy));
 47.7582 ++
 47.7583 ++      /* The symbol is undefined (or is defined but not in this section).
 47.7584 ++	 Let the linker figure it out.  */
 47.7585 ++      return 0;
 47.7586 ++    }
 47.7587 ++
 47.7588 ++  pr_debug("pcrel from %x + %x, symbol: %s (%x)\n",
 47.7589 ++	   fixP->fx_frag->fr_address, fixP->fx_where,
 47.7590 ++	   fixP->fx_addsy?S_GET_NAME(fixP->fx_addsy):"(null)",
 47.7591 ++	   fixP->fx_addsy?S_GET_VALUE(fixP->fx_addsy):0);
 47.7592 ++
 47.7593 ++  return ((fixP->fx_frag->fr_address + fixP->fx_where)
 47.7594 ++	  & (~0UL << fixP->tc_fix_data.align));
 47.7595 ++}
 47.7596 ++
 47.7597 ++valueT
 47.7598 ++md_section_align (segT segment, valueT size)
 47.7599 ++{
 47.7600 ++  int align = bfd_get_section_alignment (stdoutput, segment);
 47.7601 ++  return ((size + (1 << align) - 1) & (-1 << align));
 47.7602 ++}
 47.7603 ++
 47.7604 ++static int syntax_matches(const struct avr32_syntax *syntax,
 47.7605 ++			  char *str)
 47.7606 ++{
 47.7607 ++  int i;
 47.7608 ++
 47.7609 ++  pr_debug("syntax %d matches `%s'?\n", syntax->id, str);
 47.7610 ++
 47.7611 ++  if (syntax->nr_operands < 0)
 47.7612 ++    {
 47.7613 ++      struct avr32_operand *op;
 47.7614 ++      int optype;
 47.7615 ++
 47.7616 ++      for (i = 0; i < (-syntax->nr_operands - 1); i++)
 47.7617 ++	{
 47.7618 ++	  char *p;
 47.7619 ++	  char c;
 47.7620 ++
 47.7621 ++	  optype = syntax->operand[i];
 47.7622 ++	  assert(optype < AVR32_NR_OPERANDS);
 47.7623 ++	  op = &avr32_operand_table[optype];
 47.7624 ++
 47.7625 ++	  for (p = str; *p; p++)
 47.7626 ++	    if (*p == ',')
 47.7627 ++	      break;
 47.7628 ++
 47.7629 ++	  if (p == str)
 47.7630 ++	    return 0;
 47.7631 ++
 47.7632 ++	  c = *p;
 47.7633 ++	  *p = 0;
 47.7634 ++
 47.7635 ++	  if (!op->match(str))
 47.7636 ++	    {
 47.7637 ++	      *p = c;
 47.7638 ++	      return 0;
 47.7639 ++	    }
 47.7640 ++
 47.7641 ++	  str = p;
 47.7642 ++	  *p = c;
 47.7643 ++	  if (c)
 47.7644 ++	    str++;
 47.7645 ++	}
 47.7646 ++
 47.7647 ++      optype = syntax->operand[i];
 47.7648 ++      assert(optype < AVR32_NR_OPERANDS);
 47.7649 ++      op = &avr32_operand_table[optype];
 47.7650 ++
 47.7651 ++      if (!op->match(str))
 47.7652 ++	return 0;
 47.7653 ++      return 1;
 47.7654 ++    }
 47.7655 ++
 47.7656 ++  for (i = 0; i < syntax->nr_operands; i++)
 47.7657 ++    {
 47.7658 ++      struct avr32_operand *op;
 47.7659 ++      int optype = syntax->operand[i];
 47.7660 ++      char *p;
 47.7661 ++      char c;
 47.7662 ++
 47.7663 ++      assert(optype < AVR32_NR_OPERANDS);
 47.7664 ++      op = &avr32_operand_table[optype];
 47.7665 ++
 47.7666 ++      for (p = str; *p; p++)
 47.7667 ++	if (*p == ',')
 47.7668 ++	  break;
 47.7669 ++
 47.7670 ++      if (p == str)
 47.7671 ++	return 0;
 47.7672 ++
 47.7673 ++      c = *p;
 47.7674 ++      *p = 0;
 47.7675 ++
 47.7676 ++      if (!op->match(str))
 47.7677 ++	{
 47.7678 ++	  *p = c;
 47.7679 ++	  return 0;
 47.7680 ++	}
 47.7681 ++
 47.7682 ++      str = p;
 47.7683 ++      *p = c;
 47.7684 ++      if (c)
 47.7685 ++	str++;
 47.7686 ++    }
 47.7687 ++
 47.7688 ++  if (*str == '\0')
 47.7689 ++    return 1;
 47.7690 ++
 47.7691 ++  if ((*str == 'e' || *str == 'E') && !str[1])
 47.7692 ++    return 1;
 47.7693 ++
 47.7694 ++  return 0;
 47.7695 ++}
 47.7696 ++
 47.7697 ++static int parse_operands(char *str)
 47.7698 ++{
 47.7699 ++  int i;
 47.7700 ++
 47.7701 ++  if (current_insn.syntax->nr_operands < 0)
 47.7702 ++    {
 47.7703 ++      int optype;
 47.7704 ++      struct avr32_operand *op;
 47.7705 ++
 47.7706 ++      for (i = 0; i < (-current_insn.syntax->nr_operands - 1); i++)
 47.7707 ++	{
 47.7708 ++	  char *p;
 47.7709 ++	  char c;
 47.7710 ++
 47.7711 ++	  optype = current_insn.syntax->operand[i];
 47.7712 ++	  op = &avr32_operand_table[optype];
 47.7713 ++
 47.7714 ++	  for (p = str; *p; p++)
 47.7715 ++	    if (*p == ',')
 47.7716 ++	      break;
 47.7717 ++
 47.7718 ++	  assert(p != str);
 47.7719 ++
 47.7720 ++	  c = *p, *p = 0;
 47.7721 ++	  op->parse(op, str, i);
 47.7722 ++	  *p = c;
 47.7723 ++
 47.7724 ++	  str = p;
 47.7725 ++	  if (c) str++;
 47.7726 ++	}
 47.7727 ++
 47.7728 ++      /* give the rest of the line to the last operand */
 47.7729 ++      optype = current_insn.syntax->operand[i];
 47.7730 ++      op = &avr32_operand_table[optype];
 47.7731 ++      op->parse(op, str, i);
 47.7732 ++    }
 47.7733 ++  else
 47.7734 ++    {
 47.7735 ++      for (i = 0; i < current_insn.syntax->nr_operands; i++)
 47.7736 ++	{
 47.7737 ++	  int optype = current_insn.syntax->operand[i];
 47.7738 ++	  struct avr32_operand *op = &avr32_operand_table[optype];
 47.7739 ++	  char *p;
 47.7740 ++	  char c;
 47.7741 ++
 47.7742 ++	  skip_whitespace(str);
 47.7743 ++
 47.7744 ++	  for (p = str; *p; p++)
 47.7745 ++	    if (*p == ',')
 47.7746 ++	      break;
 47.7747 ++
 47.7748 ++	  assert(p != str);
 47.7749 ++
 47.7750 ++	  c = *p, *p = 0;
 47.7751 ++	  op->parse(op, str, i);
 47.7752 ++	  *p = c;
 47.7753 ++
 47.7754 ++	  str = p;
 47.7755 ++	  if (c) str++;
 47.7756 ++	}
 47.7757 ++
 47.7758 ++      if (*str == 'E' || *str == 'e')
 47.7759 ++	current_insn.force_extended = 1;
 47.7760 ++    }
 47.7761 ++
 47.7762 ++  return 0;
 47.7763 ++}
 47.7764 ++
 47.7765 ++static const char *
 47.7766 ++finish_insn(const struct avr32_opcode *opc)
 47.7767 ++{
 47.7768 ++  expressionS *exp = &current_insn.immediate;
 47.7769 ++  unsigned int i;
 47.7770 ++  int will_relax = 0;
 47.7771 ++  char *buf;
 47.7772 ++
 47.7773 ++  assert(current_insn.next_slot == opc->nr_fields);
 47.7774 ++
 47.7775 ++  pr_debug("%s:%d: finish_insn: trying opcode %d\n",
 47.7776 ++	   frag_now->fr_file, frag_now->fr_line, opc->id);
 47.7777 ++
 47.7778 ++  /* Go through the relaxation stage for all instructions that can
 47.7779 ++     possibly take a symbolic immediate.  The relax code will take
 47.7780 ++     care of range checking and alignment.  */
 47.7781 ++  if (opc->var_field != -1)
 47.7782 ++    {
 47.7783 ++      int substate, largest_substate;
 47.7784 ++      symbolS *sym;
 47.7785 ++      offsetT off;
 47.7786 ++
 47.7787 ++      will_relax = 1;
 47.7788 ++      substate = largest_substate = opc_initial_substate(opc);
 47.7789 ++
 47.7790 ++      while (relax_more(largest_substate) != AVR32_RS_NONE)
 47.7791 ++	largest_substate = relax_more(largest_substate);
 47.7792 ++
 47.7793 ++      pr_debug("will relax. initial substate: %d (size %d), largest substate: %d (size %d)\n",
 47.7794 ++	       substate, avr32_rs_size(substate),
 47.7795 ++	       largest_substate, avr32_rs_size(largest_substate));
 47.7796 ++
 47.7797 ++      /* make sure we have enough room for the largest possible opcode */
 47.7798 ++      frag_grow(avr32_rs_size(largest_substate));
 47.7799 ++      buf = frag_more(opc->size);
 47.7800 ++
 47.7801 ++      dwarf2_emit_insn(opc->size);
 47.7802 ++
 47.7803 ++      frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_NONE;
 47.7804 ++      frag_now->tc_frag_data.pcrel = current_insn.pcrel;
 47.7805 ++      frag_now->tc_frag_data.force_extended = current_insn.force_extended;
 47.7806 ++      frag_now->tc_frag_data.relaxer = &avr32_default_relaxer;
 47.7807 ++
 47.7808 ++      if (exp->X_op == O_hi)
 47.7809 ++	{
 47.7810 ++	  frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_HI;
 47.7811 ++	  exp->X_op = exp->X_md;
 47.7812 ++	}
 47.7813 ++      else if (exp->X_op == O_lo)
 47.7814 ++	{
 47.7815 ++	  frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_LO;
 47.7816 ++	  exp->X_op = exp->X_md;
 47.7817 ++	}
 47.7818 ++      else if (exp->X_op == O_got)
 47.7819 ++	{
 47.7820 ++	  frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_GOT;
 47.7821 ++	  exp->X_op = O_symbol;
 47.7822 ++	}
 47.7823 ++
 47.7824 ++#if 0
 47.7825 ++      if ((opc->reloc_type == BFD_RELOC_AVR32_SUB5)
 47.7826 ++	  && exp->X_op == O_subtract)
 47.7827 ++	{
 47.7828 ++	  symbolS *tmp;
 47.7829 ++	  tmp = exp->X_add_symbol;
 47.7830 ++	  exp->X_add_symbol = exp->X_op_symbol;
 47.7831 ++	  exp->X_op_symbol = tmp;
 47.7832 ++	}
 47.7833 ++#endif
 47.7834 ++
 47.7835 ++      frag_now->tc_frag_data.exp = current_insn.immediate;
 47.7836 ++
 47.7837 ++      sym = exp->X_add_symbol;
 47.7838 ++      off = exp->X_add_number;
 47.7839 ++      if (exp->X_op != O_symbol)
 47.7840 ++	{
 47.7841 ++	  sym = make_expr_symbol(exp);
 47.7842 ++	  off = 0;
 47.7843 ++	}
 47.7844 ++
 47.7845 ++      frag_var(rs_machine_dependent,
 47.7846 ++	       avr32_rs_size(largest_substate) - opc->size,
 47.7847 ++	       opc->size,
 47.7848 ++	       substate, sym, off, buf);
 47.7849 ++    }
 47.7850 ++  else
 47.7851 ++    {
 47.7852 ++      assert(avr32_rs_size(opc_initial_substate(opc)) == 0);
 47.7853 ++
 47.7854 ++      /* Make sure we always have room for another whole word, as the ifield
 47.7855 ++	 inserters can only write words. */
 47.7856 ++      frag_grow(4);
 47.7857 ++      buf = frag_more(opc->size);
 47.7858 ++      dwarf2_emit_insn(opc->size);
 47.7859 ++    }
 47.7860 ++
 47.7861 ++  assert(!(opc->value & ~opc->mask));
 47.7862 ++
 47.7863 ++  pr_debug("inserting opcode: 0x%lx\n", opc->value);
 47.7864 ++  bfd_putb32(opc->value, buf);
 47.7865 ++
 47.7866 ++  for (i = 0; i < opc->nr_fields; i++)
 47.7867 ++    {
 47.7868 ++      const struct avr32_ifield *f = opc->fields[i];
 47.7869 ++      const struct avr32_ifield_data *fd = &current_insn.field_value[i];
 47.7870 ++
 47.7871 ++      pr_debug("inserting field: 0x%lx & 0x%lx\n",
 47.7872 ++	       fd->value >> fd->align_order, f->mask);
 47.7873 ++
 47.7874 ++      f->insert(f, buf, fd->value >> fd->align_order);
 47.7875 ++    }
 47.7876 ++
 47.7877 ++  assert(will_relax || !current_insn.immediate.X_add_symbol);
 47.7878 ++  return NULL;
 47.7879 ++}
 47.7880 ++
 47.7881 ++static const char *
 47.7882 ++finish_alias(const struct avr32_alias *alias)
 47.7883 ++{
 47.7884 ++  const struct avr32_opcode *opc;
 47.7885 ++  struct {
 47.7886 ++    unsigned long value;
 47.7887 ++    unsigned long align;
 47.7888 ++  } mapped_operand[AVR32_MAX_OPERANDS];
 47.7889 ++  unsigned int i;
 47.7890 ++
 47.7891 ++  opc = alias->opc;
 47.7892 ++
 47.7893 ++  /* Remap the operands from the alias to the real opcode */
 47.7894 ++  for (i = 0; i < opc->nr_fields; i++)
 47.7895 ++    {
 47.7896 ++      if (alias->operand_map[i].is_opindex)
 47.7897 ++	{
 47.7898 ++	  struct avr32_ifield_data *fd;
 47.7899 ++	  fd = &current_insn.field_value[alias->operand_map[i].value];
 47.7900 ++	  mapped_operand[i].value = fd->value;
 47.7901 ++	  mapped_operand[i].align = fd->align_order;
 47.7902 ++	}
 47.7903 ++      else
 47.7904 ++	{
 47.7905 ++	  mapped_operand[i].value = alias->operand_map[i].value;
 47.7906 ++	  mapped_operand[i].align = 0;
 47.7907 ++	}
 47.7908 ++    }
 47.7909 ++
 47.7910 ++  for (i = 0; i < opc->nr_fields; i++)
 47.7911 ++    {
 47.7912 ++      current_insn.field_value[i].value = mapped_operand[i].value;
 47.7913 ++      if (opc->id == AVR32_OPC_COP)
 47.7914 ++	current_insn.field_value[i].align_order = 0;
 47.7915 ++      else
 47.7916 ++	current_insn.field_value[i].align_order
 47.7917 ++	  = mapped_operand[i].align;
 47.7918 ++    }
 47.7919 ++
 47.7920 ++  current_insn.next_slot = opc->nr_fields;
 47.7921 ++
 47.7922 ++  return finish_insn(opc);
 47.7923 ++}
 47.7924 ++
 47.7925 ++static const char *
 47.7926 ++finish_lda(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
 47.7927 ++{
 47.7928 ++  expressionS *exp = &current_insn.immediate;
 47.7929 ++  relax_substateT initial_subtype;
 47.7930 ++  symbolS *sym;
 47.7931 ++  offsetT off;
 47.7932 ++  int initial_size, max_size;
 47.7933 ++  char *buf;
 47.7934 ++
 47.7935 ++  initial_size = LDA_INITIAL_SIZE;
 47.7936 ++
 47.7937 ++  if (avr32_pic)
 47.7938 ++    {
 47.7939 ++      initial_subtype = LDA_SUBTYPE_SUB;
 47.7940 ++      if (linkrelax)
 47.7941 ++	max_size = 8;
 47.7942 ++      else
 47.7943 ++	max_size = 4;
 47.7944 ++    }
 47.7945 ++  else
 47.7946 ++    {
 47.7947 ++      initial_subtype = LDA_SUBTYPE_MOV1;
 47.7948 ++      max_size = 4;
 47.7949 ++    }
 47.7950 ++
 47.7951 ++  frag_grow(max_size);
 47.7952 ++  buf = frag_more(initial_size);
 47.7953 ++  dwarf2_emit_insn(initial_size);
 47.7954 ++
 47.7955 ++  if (exp->X_op == O_symbol)
 47.7956 ++    {
 47.7957 ++      sym = exp->X_add_symbol;
 47.7958 ++      off = exp->X_add_number;
 47.7959 ++    }
 47.7960 ++  else
 47.7961 ++    {
 47.7962 ++      sym = make_expr_symbol(exp);
 47.7963 ++      off = 0;
 47.7964 ++    }
 47.7965 ++
 47.7966 ++  frag_now->tc_frag_data.reloc_info = current_insn.field_value[0].value;
 47.7967 ++  frag_now->tc_frag_data.relaxer = &avr32_lda_relaxer;
 47.7968 ++
 47.7969 ++  if (!avr32_pic)
 47.7970 ++    {
 47.7971 ++      /* The relaxer will bump the refcount if necessary */
 47.7972 ++      frag_now->tc_frag_data.pool
 47.7973 ++	= add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
 47.7974 ++    }
 47.7975 ++
 47.7976 ++  frag_var(rs_machine_dependent, max_size - initial_size,
 47.7977 ++	   initial_size, initial_subtype, sym, off, buf);
 47.7978 ++
 47.7979 ++  return NULL;
 47.7980 ++}
 47.7981 ++
 47.7982 ++static const char *
 47.7983 ++finish_call(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
 47.7984 ++{
 47.7985 ++  expressionS *exp = &current_insn.immediate;
 47.7986 ++  symbolS *sym;
 47.7987 ++  offsetT off;
 47.7988 ++  int initial_size, max_size;
 47.7989 ++  char *buf;
 47.7990 ++
 47.7991 ++  initial_size = CALL_INITIAL_SIZE;
 47.7992 ++
 47.7993 ++  if (avr32_pic)
 47.7994 ++    {
 47.7995 ++      if (linkrelax)
 47.7996 ++	max_size = 10;
 47.7997 ++      else
 47.7998 ++	max_size = 4;
 47.7999 ++    }
 47.8000 ++  else
 47.8001 ++    max_size = 4;
 47.8002 ++
 47.8003 ++  frag_grow(max_size);
 47.8004 ++  buf = frag_more(initial_size);
 47.8005 ++  dwarf2_emit_insn(initial_size);
 47.8006 ++
 47.8007 ++  frag_now->tc_frag_data.relaxer = &avr32_call_relaxer;
 47.8008 ++
 47.8009 ++  if (exp->X_op == O_symbol)
 47.8010 ++    {
 47.8011 ++      sym = exp->X_add_symbol;
 47.8012 ++      off = exp->X_add_number;
 47.8013 ++    }
 47.8014 ++  else
 47.8015 ++    {
 47.8016 ++      sym = make_expr_symbol(exp);
 47.8017 ++      off = 0;
 47.8018 ++    }
 47.8019 ++
 47.8020 ++  if (!avr32_pic)
 47.8021 ++    {
 47.8022 ++      /* The relaxer will bump the refcount if necessary */
 47.8023 ++      frag_now->tc_frag_data.pool
 47.8024 ++	= add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
 47.8025 ++    }
 47.8026 ++
 47.8027 ++  frag_var(rs_machine_dependent, max_size - initial_size,
 47.8028 ++	   initial_size, CALL_SUBTYPE_RCALL1, sym, off, buf);
 47.8029 ++
 47.8030 ++  return NULL;
 47.8031 ++}
 47.8032 ++
 47.8033 ++void
 47.8034 ++md_begin (void)
 47.8035 ++{
 47.8036 ++  unsigned long flags = 0;
 47.8037 ++  int i;
 47.8038 ++
 47.8039 ++  avr32_mnemonic_htab = hash_new();
 47.8040 ++
 47.8041 ++  if (!avr32_mnemonic_htab)
 47.8042 ++    as_fatal(_("virtual memory exhausted"));
 47.8043 ++
 47.8044 ++  for (i = 0; i < AVR32_NR_MNEMONICS; i++)
 47.8045 ++    {
 47.8046 ++      hash_insert(avr32_mnemonic_htab, avr32_mnemonic_table[i].name,
 47.8047 ++		  (void *)&avr32_mnemonic_table[i]);
 47.8048 ++    }
 47.8049 ++
 47.8050 ++  if (linkrelax)
 47.8051 ++    flags |= EF_AVR32_LINKRELAX;
 47.8052 ++  if (avr32_pic)
 47.8053 ++    flags |= EF_AVR32_PIC;
 47.8054 ++
 47.8055 ++  bfd_set_private_flags(stdoutput, flags);
 47.8056 ++
 47.8057 ++#ifdef OPC_CONSISTENCY_CHECK
 47.8058 ++  if (sizeof(avr32_operand_table)/sizeof(avr32_operand_table[0])
 47.8059 ++      < AVR32_NR_OPERANDS)
 47.8060 ++    as_fatal(_("operand table is incomplete"));
 47.8061 ++
 47.8062 ++  for (i = 0; i < AVR32_NR_OPERANDS; i++)
 47.8063 ++    if (avr32_operand_table[i].id != i)
 47.8064 ++      as_fatal(_("operand table inconsistency found at index %d\n"), i);
 47.8065 ++  pr_debug("%d operands verified\n", AVR32_NR_OPERANDS);
 47.8066 ++
 47.8067 ++  for (i = 0; i < AVR32_NR_IFIELDS; i++)
 47.8068 ++    if (avr32_ifield_table[i].id != i)
 47.8069 ++      as_fatal(_("ifield table inconsistency found at index %d\n"), i);
 47.8070 ++  pr_debug("%d instruction fields verified\n", AVR32_NR_IFIELDS);
 47.8071 ++
 47.8072 ++  for (i = 0; i < AVR32_NR_OPCODES; i++)
 47.8073 ++    {
 47.8074 ++      if (avr32_opc_table[i].id != i)
 47.8075 ++	as_fatal(_("opcode table inconsistency found at index %d\n"), i);
 47.8076 ++      if ((avr32_opc_table[i].var_field == -1
 47.8077 ++	   && avr32_relax_table[i].length != 0)
 47.8078 ++	  || (avr32_opc_table[i].var_field != -1
 47.8079 ++	      && avr32_relax_table[i].length == 0))
 47.8080 ++	as_fatal(_("relax table inconsistency found at index %d\n"), i);
 47.8081 ++    }
 47.8082 ++  pr_debug("%d opcodes verified\n", AVR32_NR_OPCODES);
 47.8083 ++
 47.8084 ++  for (i = 0; i < AVR32_NR_SYNTAX; i++)
 47.8085 ++    if (avr32_syntax_table[i].id != i)
 47.8086 ++      as_fatal(_("syntax table inconsistency found at index %d\n"), i);
 47.8087 ++  pr_debug("%d syntax variants verified\n", AVR32_NR_SYNTAX);
 47.8088 ++
 47.8089 ++  for (i = 0; i < AVR32_NR_ALIAS; i++)
 47.8090 ++    if (avr32_alias_table[i].id != i)
 47.8091 ++      as_fatal(_("alias table inconsistency found at index %d\n"), i);
 47.8092 ++  pr_debug("%d aliases verified\n", AVR32_NR_ALIAS);
 47.8093 ++
 47.8094 ++  for (i = 0; i < AVR32_NR_MNEMONICS; i++)
 47.8095 ++    if (avr32_mnemonic_table[i].id != i)
 47.8096 ++      as_fatal(_("mnemonic table inconsistency found at index %d\n"), i);
 47.8097 ++  pr_debug("%d mnemonics verified\n", AVR32_NR_MNEMONICS);
 47.8098 ++#endif
 47.8099 ++}
 47.8100 ++
 47.8101 ++void
 47.8102 ++md_assemble (char *str)
 47.8103 ++{
 47.8104 ++  struct avr32_mnemonic *mnemonic;
 47.8105 ++  char *p, c;
 47.8106 ++
 47.8107 ++  memset(&current_insn, 0, sizeof(current_insn));
 47.8108 ++  current_insn.immediate.X_op = O_constant;
 47.8109 ++
 47.8110 ++  skip_whitespace(str);
 47.8111 ++  for (p = str; *p; p++)
 47.8112 ++    if (*p == ' ')
 47.8113 ++      break;
 47.8114 ++  c = *p;
 47.8115 ++  *p = 0;
 47.8116 ++
 47.8117 ++  mnemonic = hash_find(avr32_mnemonic_htab, str);
 47.8118 ++  *p = c;
 47.8119 ++  if (c) p++;
 47.8120 ++
 47.8121 ++  if (mnemonic)
 47.8122 ++    {
 47.8123 ++      const struct avr32_syntax *syntax;
 47.8124 ++
 47.8125 ++      for (syntax = mnemonic->syntax; syntax; syntax = syntax->next)
 47.8126 ++	{
 47.8127 ++	  const char *errmsg = NULL;
 47.8128 ++
 47.8129 ++	  if (syntax_matches(syntax, p))
 47.8130 ++	    {
 47.8131 ++	      if (!(syntax->isa_flags & avr32_arch->isa_flags))
 47.8132 ++		{
 47.8133 ++		  as_bad(_("Selected architecture `%s'  does not support `%s'"),
 47.8134 ++			 avr32_arch->name, str);
 47.8135 ++		  return;
 47.8136 ++		}
 47.8137 ++
 47.8138 ++	      current_insn.syntax = syntax;
 47.8139 ++	      parse_operands(p);
 47.8140 ++
 47.8141 ++	      switch (syntax->type)
 47.8142 ++		{
 47.8143 ++		case AVR32_PARSER_NORMAL:
 47.8144 ++		  errmsg = finish_insn(syntax->u.opc);
 47.8145 ++		  break;
 47.8146 ++		case AVR32_PARSER_ALIAS:
 47.8147 ++		  errmsg = finish_alias(syntax->u.alias);
 47.8148 ++		  break;
 47.8149 ++		case AVR32_PARSER_LDA:
 47.8150 ++		  errmsg = finish_lda(syntax);
 47.8151 ++		  break;
 47.8152 ++		case AVR32_PARSER_CALL:
 47.8153 ++		  errmsg = finish_call(syntax);
 47.8154 ++		  break;
 47.8155 ++		default:
 47.8156 ++		  BAD_CASE(syntax->type);
 47.8157 ++		  break;
 47.8158 ++		}
 47.8159 ++
 47.8160 ++	      if (errmsg)
 47.8161 ++		as_bad("%s in `%s'", errmsg, str);
 47.8162 ++
 47.8163 ++	      return;
 47.8164 ++	    }
 47.8165 ++	}
 47.8166 ++
 47.8167 ++      as_bad(_("unrecognized form of instruction: `%s'"), str);
 47.8168 ++    }
 47.8169 ++  else
 47.8170 ++    as_bad(_("unrecognized instruction `%s'"), str);
 47.8171 ++}
 47.8172 ++
 47.8173 ++void avr32_cleanup(void)
 47.8174 ++{
 47.8175 ++  struct cpool *pool;
 47.8176 ++
 47.8177 ++  /* Emit any constant pools that haven't been explicitly flushed with
 47.8178 ++     a .cpool directive. */
 47.8179 ++  for (pool = cpool_list; pool; pool = pool->next)
 47.8180 ++    {
 47.8181 ++      subseg_set(pool->section, pool->sub_section);
 47.8182 ++      s_cpool(0);
 47.8183 ++    }
 47.8184 ++}
 47.8185 ++
 47.8186 ++/* Handle any PIC-related operands in data allocation pseudo-ops */
 47.8187 ++void
 47.8188 ++avr32_cons_fix_new (fragS *frag, int off, int size, expressionS *exp)
 47.8189 ++{
 47.8190 ++  bfd_reloc_code_real_type r_type = BFD_RELOC_UNUSED;
 47.8191 ++  int pcrel = 0;
 47.8192 ++
 47.8193 ++  pr_debug("%s:%u: cons_fix_new, add_sym: %s, op_sym: %s, op: %d, add_num: %d\n",
 47.8194 ++	   frag->fr_file, frag->fr_line,
 47.8195 ++	   exp->X_add_symbol?S_GET_NAME(exp->X_add_symbol):"(none)",
 47.8196 ++	   exp->X_op_symbol?S_GET_NAME(exp->X_op_symbol):"(none)",
 47.8197 ++	   exp->X_op, exp->X_add_number);
 47.8198 ++
 47.8199 ++  if (exp->X_op == O_subtract && exp->X_op_symbol)
 47.8200 ++    {
 47.8201 ++      if (exp->X_op_symbol == GOT_symbol)
 47.8202 ++	{
 47.8203 ++	  if (size != 4)
 47.8204 ++	    goto bad_size;
 47.8205 ++	  r_type = BFD_RELOC_AVR32_GOTPC;
 47.8206 ++	  exp->X_op = O_symbol;
 47.8207 ++	  exp->X_op_symbol = NULL;
 47.8208 ++	}
 47.8209 ++    }
 47.8210 ++  else if (exp->X_op == O_got)
 47.8211 ++    {
 47.8212 ++      switch (size)
 47.8213 ++	{
 47.8214 ++	case 1:
 47.8215 ++	  r_type = BFD_RELOC_AVR32_GOT8;
 47.8216 ++	  break;
 47.8217 ++	case 2:
 47.8218 ++	  r_type = BFD_RELOC_AVR32_GOT16;
 47.8219 ++	  break;
 47.8220 ++	case 4:
 47.8221 ++	  r_type = BFD_RELOC_AVR32_GOT32;
 47.8222 ++	  break;
 47.8223 ++	default:
 47.8224 ++	  goto bad_size;
 47.8225 ++	}
 47.8226 ++
 47.8227 ++      exp->X_op = O_symbol;
 47.8228 ++    }
 47.8229 ++
 47.8230 ++  if (r_type == BFD_RELOC_UNUSED)
 47.8231 ++    switch (size)
 47.8232 ++      {
 47.8233 ++      case 1:
 47.8234 ++	r_type = BFD_RELOC_8;
 47.8235 ++	break;
 47.8236 ++      case 2:
 47.8237 ++	r_type = BFD_RELOC_16;
 47.8238 ++	break;
 47.8239 ++      case 4:
 47.8240 ++	r_type = BFD_RELOC_32;
 47.8241 ++	break;
 47.8242 ++      default:
 47.8243 ++	goto bad_size;
 47.8244 ++      }
 47.8245 ++  else if (size != 4)
 47.8246 ++    {
 47.8247 ++    bad_size:
 47.8248 ++      as_bad(_("unsupported BFD relocation size %u"), size);
 47.8249 ++      r_type = BFD_RELOC_UNUSED;
 47.8250 ++    }
 47.8251 ++
 47.8252 ++  fix_new_exp (frag, off, size, exp, pcrel, r_type);
 47.8253 ++}
 47.8254 ++
 47.8255 ++static void
 47.8256 ++avr32_frob_section(bfd *abfd ATTRIBUTE_UNUSED, segT sec,
 47.8257 ++		   void *ignore ATTRIBUTE_UNUSED)
 47.8258 ++{
 47.8259 ++  segment_info_type *seginfo;
 47.8260 ++  fixS *fix;
 47.8261 ++
 47.8262 ++  seginfo = seg_info(sec);
 47.8263 ++  if (!seginfo)
 47.8264 ++    return;
 47.8265 ++
 47.8266 ++  for (fix = seginfo->fix_root; fix; fix = fix->fx_next)
 47.8267 ++    {
 47.8268 ++      if (fix->fx_done)
 47.8269 ++	continue;
 47.8270 ++
 47.8271 ++      if (fix->fx_r_type == BFD_RELOC_AVR32_SUB5
 47.8272 ++	  && fix->fx_addsy && fix->fx_subsy)
 47.8273 ++	{
 47.8274 ++	  if (S_GET_SEGMENT(fix->fx_addsy) != S_GET_SEGMENT(fix->fx_subsy)
 47.8275 ++	      || linkrelax)
 47.8276 ++	    {
 47.8277 ++	      symbolS *tmp;
 47.8278 ++#ifdef DEBUG
 47.8279 ++	      fprintf(stderr, "Swapping symbols in fixup:\n");
 47.8280 ++	      print_fixup(fix);
 47.8281 ++#endif
 47.8282 ++	      tmp = fix->fx_addsy;
 47.8283 ++	      fix->fx_addsy = fix->fx_subsy;
 47.8284 ++	      fix->fx_subsy = tmp;
 47.8285 ++	      fix->fx_offset = -fix->fx_offset;
 47.8286 ++	    }
 47.8287 ++	}
 47.8288 ++    }
 47.8289 ++}
 47.8290 ++
 47.8291 ++/* We need to look for SUB5 instructions with expressions that will be
 47.8292 ++   made PC-relative and switch fx_addsy with fx_subsy.  This has to be
 47.8293 ++   done before adjustment or the wrong symbol might be adjusted.
 47.8294 ++
 47.8295 ++   This applies to fixups that are a result of expressions like -(sym
 47.8296 ++   - .) and that will make it all the way to md_apply_fix3().  LDA
 47.8297 ++   does the right thing in convert_frag, so we must not convert
 47.8298 ++   those. */
 47.8299 ++void
 47.8300 ++avr32_frob_file(void)
 47.8301 ++{
 47.8302 ++  /* if (1 || !linkrelax)
 47.8303 ++     return; */
 47.8304 ++
 47.8305 ++  bfd_map_over_sections(stdoutput, avr32_frob_section, NULL);
 47.8306 ++}
 47.8307 ++
 47.8308 ++static bfd_boolean
 47.8309 ++convert_to_diff_reloc(fixS *fixP)
 47.8310 ++{
 47.8311 ++  switch (fixP->fx_r_type)
 47.8312 ++    {
 47.8313 ++    case BFD_RELOC_32:
 47.8314 ++      fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
 47.8315 ++      break;
 47.8316 ++    case BFD_RELOC_16:
 47.8317 ++      fixP->fx_r_type = BFD_RELOC_AVR32_DIFF16;
 47.8318 ++      break;
 47.8319 ++    case BFD_RELOC_8:
 47.8320 ++      fixP->fx_r_type = BFD_RELOC_AVR32_DIFF8;
 47.8321 ++      break;
 47.8322 ++    default:
 47.8323 ++      return FALSE;
 47.8324 ++    }
 47.8325 ++
 47.8326 ++  return TRUE;
 47.8327 ++}
 47.8328 ++
 47.8329 ++/* Simplify a fixup.  If possible, the fixup is reduced to a single
 47.8330 ++   constant which is written to the output file.  Otherwise, a
 47.8331 ++   relocation is generated so that the linker can take care of the
 47.8332 ++   rest.
 47.8333 ++
 47.8334 ++   ELF relocations have certain constraints: They can only take a
 47.8335 ++   single symbol and a single addend.  This means that for difference
 47.8336 ++   expressions, we _must_ get rid of the fx_subsy symbol somehow.
 47.8337 ++
 47.8338 ++   The difference between two labels in the same section can be
 47.8339 ++   calculated directly unless 'linkrelax' is set, or a relocation is
 47.8340 ++   forced.  If so, we must emit a R_AVR32_DIFFxx relocation.  If there
 47.8341 ++   are addends involved at this point, we must be especially careful
 47.8342 ++   as the relocation must point exactly to the symbol being
 47.8343 ++   subtracted.
 47.8344 ++
 47.8345 ++   When subtracting a symbol defined in the same section as the fixup,
 47.8346 ++   we might be able to convert it to a PC-relative expression, unless
 47.8347 ++   linkrelax is set. If this is the case, there's no way we can make
 47.8348 ++   sure that the difference between the fixup and fx_subsy stays
 47.8349 ++   constant.  So for now, we're just going to disallow that.
 47.8350 ++   */
 47.8351 ++void
 47.8352 ++avr32_process_fixup(fixS *fixP, segT this_segment)
 47.8353 ++{
 47.8354 ++  segT add_symbol_segment = absolute_section;
 47.8355 ++  segT sub_symbol_segment = absolute_section;
 47.8356 ++  symbolS *fx_addsy, *fx_subsy;
 47.8357 ++  offsetT value = 0, fx_offset;
 47.8358 ++  bfd_boolean apply = FALSE;
 47.8359 ++
 47.8360 ++  assert(this_segment != absolute_section);
 47.8361 ++
 47.8362 ++  if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
 47.8363 ++    {
 47.8364 ++      as_bad_where(fixP->fx_file, fixP->fx_line,
 47.8365 ++		   _("Bad relocation type %d\n"), fixP->fx_r_type);
 47.8366 ++      return;
 47.8367 ++    }
 47.8368 ++
 47.8369 ++  /* BFD_RELOC_AVR32_SUB5 fixups have been swapped by avr32_frob_section() */
 47.8370 ++  fx_addsy = fixP->fx_addsy;
 47.8371 ++  fx_subsy = fixP->fx_subsy;
 47.8372 ++  fx_offset = fixP->fx_offset;
 47.8373 ++
 47.8374 ++  if (fx_addsy)
 47.8375 ++    add_symbol_segment = S_GET_SEGMENT(fx_addsy);
 47.8376 ++
 47.8377 ++  if (fx_subsy)
 47.8378 ++    {
 47.8379 ++      resolve_symbol_value(fx_subsy);
 47.8380 ++      sub_symbol_segment = S_GET_SEGMENT(fx_subsy);
 47.8381 ++
 47.8382 ++      if (sub_symbol_segment == this_segment
 47.8383 ++	  && (!linkrelax
 47.8384 ++	      || S_GET_VALUE(fx_subsy) == (fixP->fx_frag->fr_address
 47.8385 ++					   + fixP->fx_where)))
 47.8386 ++	{
 47.8387 ++	  fixP->fx_pcrel = TRUE;
 47.8388 ++	  fx_offset += (fixP->fx_frag->fr_address + fixP->fx_where
 47.8389 ++			- S_GET_VALUE(fx_subsy));
 47.8390 ++	  fx_subsy = NULL;
 47.8391 ++	}
 47.8392 ++      else if (sub_symbol_segment == absolute_section)
 47.8393 ++	{
 47.8394 ++	  /* The symbol is really a constant.  */
 47.8395 ++	  fx_offset -= S_GET_VALUE(fx_subsy);
 47.8396 ++	  fx_subsy = NULL;
 47.8397 ++	}
 47.8398 ++      else if (SEG_NORMAL(add_symbol_segment)
 47.8399 ++	       && sub_symbol_segment == add_symbol_segment
 47.8400 ++	       && (!linkrelax || convert_to_diff_reloc(fixP)))
 47.8401 ++	{
 47.8402 ++	  /* Difference between two labels in the same section.  */
 47.8403 ++	  if (linkrelax)
 47.8404 ++	    {
 47.8405 ++	      /* convert_to_diff() has ensured that the reloc type is
 47.8406 ++		 either DIFF32, DIFF16 or DIFF8.  */
 47.8407 ++	      value = (S_GET_VALUE(fx_addsy) + fixP->fx_offset
 47.8408 ++		       - S_GET_VALUE(fx_subsy));
 47.8409 ++
 47.8410 ++	      /* Try to convert it to a section symbol if possible  */
 47.8411 ++	      if (!S_FORCE_RELOC(fx_addsy, 1)
 47.8412 ++		  && !(sub_symbol_segment->flags & SEC_THREAD_LOCAL))
 47.8413 ++		{
 47.8414 ++		  fx_offset = S_GET_VALUE(fx_subsy);
 47.8415 ++		  fx_addsy = section_symbol(sub_symbol_segment);
 47.8416 ++		}
 47.8417 ++	      else
 47.8418 ++		{
 47.8419 ++		  fx_addsy = fx_subsy;
 47.8420 ++		  fx_offset = 0;
 47.8421 ++		}
 47.8422 ++
 47.8423 ++	      fx_subsy = NULL;
 47.8424 ++	      apply = TRUE;
 47.8425 ++	    }
 47.8426 ++	  else
 47.8427 ++	    {
 47.8428 ++	      fx_offset += S_GET_VALUE(fx_addsy);
 47.8429 ++	      fx_offset -= S_GET_VALUE(fx_subsy);
 47.8430 ++	      fx_addsy = NULL;
 47.8431 ++	      fx_subsy = NULL;
 47.8432 ++	    }
 47.8433 ++	}
 47.8434 ++      else
 47.8435 ++	{
 47.8436 ++	  as_bad_where(fixP->fx_file, fixP->fx_line,
 47.8437 ++		       _("can't resolve `%s' {%s section} - `%s' {%s section}"),
 47.8438 ++		       fx_addsy ? S_GET_NAME (fx_addsy) : "0",
 47.8439 ++		       segment_name (add_symbol_segment),
 47.8440 ++		       S_GET_NAME (fx_subsy),
 47.8441 ++		       segment_name (sub_symbol_segment));
 47.8442 ++	  return;
 47.8443 ++	}
 47.8444 ++    }
 47.8445 ++
 47.8446 ++  if (fx_addsy && !TC_FORCE_RELOCATION(fixP))
 47.8447 ++    {
 47.8448 ++      if (add_symbol_segment == this_segment
 47.8449 ++	  && fixP->fx_pcrel)
 47.8450 ++	{
 47.8451 ++	  value += S_GET_VALUE(fx_addsy);
 47.8452 ++	  value -= md_pcrel_from_section(fixP, this_segment);
 47.8453 ++	  fx_addsy = NULL;
 47.8454 ++	  fixP->fx_pcrel = FALSE;
 47.8455 ++	}
 47.8456 ++      else if (add_symbol_segment == absolute_section)
 47.8457 ++	{
 47.8458 ++	  fx_offset += S_GET_VALUE(fixP->fx_addsy);
 47.8459 ++	  fx_addsy = NULL;
 47.8460 ++	}
 47.8461 ++    }
 47.8462 ++
 47.8463 ++  if (!fx_addsy)
 47.8464 ++    fixP->fx_done = TRUE;
 47.8465 ++
 47.8466 ++  if (fixP->fx_pcrel)
 47.8467 ++    {
 47.8468 ++      if (fx_addsy != NULL
 47.8469 ++	  && S_IS_DEFINED(fx_addsy)
 47.8470 ++	  && S_GET_SEGMENT(fx_addsy) != this_segment)
 47.8471 ++	value += md_pcrel_from_section(fixP, this_segment);
 47.8472 ++
 47.8473 ++      switch (fixP->fx_r_type)
 47.8474 ++	{
 47.8475 ++	case BFD_RELOC_32:
 47.8476 ++	  fixP->fx_r_type = BFD_RELOC_32_PCREL;
 47.8477 ++	  break;
 47.8478 ++	case BFD_RELOC_16:
 47.8479 ++	  fixP->fx_r_type = BFD_RELOC_16_PCREL;
 47.8480 ++	  break;
 47.8481 ++	case BFD_RELOC_8:
 47.8482 ++	  fixP->fx_r_type = BFD_RELOC_8_PCREL;
 47.8483 ++	  break;
 47.8484 ++	case BFD_RELOC_AVR32_SUB5:
 47.8485 ++	  fixP->fx_r_type = BFD_RELOC_AVR32_16N_PCREL;
 47.8486 ++	  break;
 47.8487 ++	case BFD_RELOC_AVR32_16S:
 47.8488 ++	  fixP->fx_r_type = BFD_RELOC_AVR32_16B_PCREL;
 47.8489 ++	  break;
 47.8490 ++	case BFD_RELOC_AVR32_14UW:
 47.8491 ++	  fixP->fx_r_type = BFD_RELOC_AVR32_14UW_PCREL;
 47.8492 ++	  break;
 47.8493 ++	case BFD_RELOC_AVR32_10UW:
 47.8494 ++	  fixP->fx_r_type = BFD_RELOC_AVR32_10UW_PCREL;
 47.8495 ++	  break;
 47.8496 ++	default:
 47.8497 ++	  /* Should have been taken care of already */
 47.8498 ++	  break;
 47.8499 ++	}
 47.8500 ++    }
 47.8501 ++
 47.8502 ++  if (fixP->fx_done || apply)
 47.8503 ++    {
 47.8504 ++      const struct avr32_ifield *ifield;
 47.8505 ++      char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
 47.8506 ++
 47.8507 ++      if (fixP->fx_done)
 47.8508 ++	value += fx_offset;
 47.8509 ++
 47.8510 ++      /* For hosts with longs bigger than 32-bits make sure that the top
 47.8511 ++         bits of a 32-bit negative value read in by the parser are set,
 47.8512 ++         so that the correct comparisons are made.  */
 47.8513 ++      if (value & 0x80000000)
 47.8514 ++        value |= (-1L << 31);
 47.8515 ++
 47.8516 ++      switch (fixP->fx_r_type)
 47.8517 ++	{
 47.8518 ++	case BFD_RELOC_32:
 47.8519 ++	case BFD_RELOC_16:
 47.8520 ++	case BFD_RELOC_8:
 47.8521 ++	case BFD_RELOC_AVR32_DIFF32:
 47.8522 ++	case BFD_RELOC_AVR32_DIFF16:
 47.8523 ++	case BFD_RELOC_AVR32_DIFF8:
 47.8524 ++	  md_number_to_chars(buf, value, fixP->fx_size);
 47.8525 ++	  break;
 47.8526 ++	case BFD_RELOC_HI16:
 47.8527 ++	  value >>= 16;
 47.8528 ++	case BFD_RELOC_LO16:
 47.8529 ++	  value &= 0xffff;
 47.8530 ++	  md_number_to_chars(buf + 2, value, 2);
 47.8531 ++	  break;
 47.8532 ++	case BFD_RELOC_AVR32_16N_PCREL:
 47.8533 ++	  value = -value;
 47.8534 ++	  /* fall through */
 47.8535 ++	case BFD_RELOC_AVR32_22H_PCREL:
 47.8536 ++	case BFD_RELOC_AVR32_18W_PCREL:
 47.8537 ++	case BFD_RELOC_AVR32_16B_PCREL:
 47.8538 ++	case BFD_RELOC_AVR32_11H_PCREL:
 47.8539 ++	case BFD_RELOC_AVR32_9H_PCREL:
 47.8540 ++	case BFD_RELOC_AVR32_9UW_PCREL:
 47.8541 ++	case BFD_RELOC_AVR32_3U:
 47.8542 ++	case BFD_RELOC_AVR32_4UH:
 47.8543 ++	case BFD_RELOC_AVR32_6UW:
 47.8544 ++	case BFD_RELOC_AVR32_6S:
 47.8545 ++	case BFD_RELOC_AVR32_7UW:
 47.8546 ++	case BFD_RELOC_AVR32_8S_EXT:
 47.8547 ++	case BFD_RELOC_AVR32_8S:
 47.8548 ++	case BFD_RELOC_AVR32_10UW:
 47.8549 ++	case BFD_RELOC_AVR32_10SW:
 47.8550 ++	case BFD_RELOC_AVR32_STHH_W:
 47.8551 ++	case BFD_RELOC_AVR32_14UW:
 47.8552 ++	case BFD_RELOC_AVR32_16S:
 47.8553 ++	case BFD_RELOC_AVR32_16U:
 47.8554 ++	case BFD_RELOC_AVR32_21S:
 47.8555 ++	case BFD_RELOC_AVR32_SUB5:
 47.8556 ++	case BFD_RELOC_AVR32_CPCALL:
 47.8557 ++	case BFD_RELOC_AVR32_16_CP:
 47.8558 ++	case BFD_RELOC_AVR32_9W_CP:
 47.8559 ++	case BFD_RELOC_AVR32_15S:
 47.8560 ++	  ifield = fixP->tc_fix_data.ifield;
 47.8561 ++	  pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
 47.8562 ++		   fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
 47.8563 ++		   fixP->tc_fix_data.align);
 47.8564 ++	  if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
 47.8565 ++	    as_bad_where(fixP->fx_file, fixP->fx_line,
 47.8566 ++			 _("operand out of range (%ld not between %ld and %ld)"),
 47.8567 ++			 value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
 47.8568 ++	  if (value & ((1 << fixP->tc_fix_data.align) - 1))
 47.8569 ++	    as_bad_where(fixP->fx_file, fixP->fx_line,
 47.8570 ++			 _("misaligned operand (required alignment: %d)"),
 47.8571 ++			 1 << fixP->tc_fix_data.align);
 47.8572 ++	  ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
 47.8573 ++	  break;
 47.8574 ++	case BFD_RELOC_AVR32_ALIGN:
 47.8575 ++	  /* Nothing to do */
 47.8576 ++	  fixP->fx_done = FALSE;
 47.8577 ++	  break;
 47.8578 ++	default:
 47.8579 ++	  as_fatal("reloc type %s not handled\n",
 47.8580 ++		   bfd_get_reloc_code_name(fixP->fx_r_type));
 47.8581 ++	}
 47.8582 ++    }
 47.8583 ++
 47.8584 ++  fixP->fx_addsy = fx_addsy;
 47.8585 ++  fixP->fx_subsy = fx_subsy;
 47.8586 ++  fixP->fx_offset = fx_offset;
 47.8587 ++
 47.8588 ++  if (!fixP->fx_done)
 47.8589 ++    {
 47.8590 ++      if (!fixP->fx_addsy)
 47.8591 ++	fixP->fx_addsy = abs_section_sym;
 47.8592 ++
 47.8593 ++      symbol_mark_used_in_reloc(fixP->fx_addsy);
 47.8594 ++      if (fixP->fx_subsy)
 47.8595 ++	abort();
 47.8596 ++    }
 47.8597 ++}
 47.8598 ++
 47.8599 ++#if 0
 47.8600 ++void
 47.8601 ++md_apply_fix3 (fixS *fixP, valueT *valP, segT seg)
 47.8602 ++{
 47.8603 ++  const struct avr32_ifield *ifield;
 47.8604 ++  offsetT	value = *valP;
 47.8605 ++  char		*buf = fixP->fx_where + fixP->fx_frag->fr_literal;
 47.8606 ++  bfd_boolean	apply;
 47.8607 ++
 47.8608 ++  pr_debug("%s:%u: apply_fix3: r_type=%d value=%lx offset=%lx\n",
 47.8609 ++	   fixP->fx_file, fixP->fx_line, fixP->fx_r_type, *valP,
 47.8610 ++	   fixP->fx_offset);
 47.8611 ++
 47.8612 ++  if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
 47.8613 ++    {
 47.8614 ++      as_bad_where(fixP->fx_file, fixP->fx_line,
 47.8615 ++		   _("Bad relocation type %d\n"), fixP->fx_r_type);
 47.8616 ++      return;
 47.8617 ++    }
 47.8618 ++
 47.8619 ++  if (!fixP->fx_addsy && !fixP->fx_subsy)
 47.8620 ++    fixP->fx_done = 1;
 47.8621 ++
 47.8622 ++  if (fixP->fx_pcrel)
 47.8623 ++    {
 47.8624 ++      if (fixP->fx_addsy != NULL
 47.8625 ++	  && S_IS_DEFINED(fixP->fx_addsy)
 47.8626 ++	  && S_GET_SEGMENT(fixP->fx_addsy) != seg)
 47.8627 ++	value += md_pcrel_from_section(fixP, seg);
 47.8628 ++
 47.8629 ++      switch (fixP->fx_r_type)
 47.8630 ++	{
 47.8631 ++	case BFD_RELOC_32:
 47.8632 ++	  fixP->fx_r_type = BFD_RELOC_32_PCREL;
 47.8633 ++	  break;
 47.8634 ++	case BFD_RELOC_16:
 47.8635 ++	case BFD_RELOC_8:
 47.8636 ++	  as_bad_where (fixP->fx_file, fixP->fx_line,
 47.8637 ++			_("8- and 16-bit PC-relative relocations not supported"));
 47.8638 ++	  break;
 47.8639 ++	case BFD_RELOC_AVR32_SUB5:
 47.8640 ++	  fixP->fx_r_type = BFD_RELOC_AVR32_PCREL_SUB5;
 47.8641 ++	  break;
 47.8642 ++	case BFD_RELOC_AVR32_16S:
 47.8643 ++	  fixP->fx_r_type = BFD_RELOC_AVR32_16_PCREL;
 47.8644 ++	  break;
 47.8645 ++	default:
 47.8646 ++	  /* Should have been taken care of already */
 47.8647 ++	  break;
 47.8648 ++	}
 47.8649 ++    }
 47.8650 ++
 47.8651 ++  if (fixP->fx_r_type == BFD_RELOC_32
 47.8652 ++      && fixP->fx_subsy)
 47.8653 ++    {
 47.8654 ++      fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
 47.8655 ++
 47.8656 ++      /* Offsets are only allowed if it's a result of adjusting a
 47.8657 ++	 local symbol into a section-relative offset.
 47.8658 ++	 tc_fix_adjustable() should prevent any adjustment if there
 47.8659 ++	 was an offset involved before.  */
 47.8660 ++      if (fixP->fx_offset && !symbol_section_p(fixP->fx_addsy))
 47.8661 ++	as_bad_where(fixP->fx_file, fixP->fx_line,
 47.8662 ++		     _("cannot represent symbol difference with an offset"));
 47.8663 ++
 47.8664 ++      value = (S_GET_VALUE(fixP->fx_addsy) + fixP->fx_offset
 47.8665 ++	       - S_GET_VALUE(fixP->fx_subsy));
 47.8666 ++
 47.8667 ++      /* The difference before any relaxing takes place is written
 47.8668 ++	 out, and the DIFF32 reloc identifies the address of the first
 47.8669 ++	 symbol (i.e. the on that's subtracted.)  */
 47.8670 ++      *valP = value;
 47.8671 ++      fixP->fx_offset -= value;
 47.8672 ++      fixP->fx_subsy = NULL;
 47.8673 ++
 47.8674 ++      md_number_to_chars(buf, value, fixP->fx_size);
 47.8675 ++    }
 47.8676 ++
 47.8677 ++  if (fixP->fx_done)
 47.8678 ++    {
 47.8679 ++      switch (fixP->fx_r_type)
 47.8680 ++	{
 47.8681 ++	case BFD_RELOC_8:
 47.8682 ++	case BFD_RELOC_16:
 47.8683 ++	case BFD_RELOC_32:
 47.8684 ++	  md_number_to_chars(buf, value, fixP->fx_size);
 47.8685 ++	  break;
 47.8686 ++	case BFD_RELOC_HI16:
 47.8687 ++	  value >>= 16;
 47.8688 ++	case BFD_RELOC_LO16:
 47.8689 ++	  value &= 0xffff;
 47.8690 ++	  *valP = value;
 47.8691 ++	  md_number_to_chars(buf + 2, value, 2);
 47.8692 ++	  break;
 47.8693 ++	case BFD_RELOC_AVR32_PCREL_SUB5:
 47.8694 ++	  value = -value;
 47.8695 ++	  /* fall through */
 47.8696 ++	case BFD_RELOC_AVR32_9_PCREL:
 47.8697 ++	case BFD_RELOC_AVR32_11_PCREL:
 47.8698 ++	case BFD_RELOC_AVR32_16_PCREL:
 47.8699 ++	case BFD_RELOC_AVR32_18_PCREL:
 47.8700 ++	case BFD_RELOC_AVR32_22_PCREL:
 47.8701 ++	case BFD_RELOC_AVR32_3U:
 47.8702 ++	case BFD_RELOC_AVR32_4UH:
 47.8703 ++	case BFD_RELOC_AVR32_6UW:
 47.8704 ++	case BFD_RELOC_AVR32_6S:
 47.8705 ++	case BFD_RELOC_AVR32_7UW:
 47.8706 ++	case BFD_RELOC_AVR32_8S:
 47.8707 ++	case BFD_RELOC_AVR32_10UW:
 47.8708 ++	case BFD_RELOC_AVR32_10SW:
 47.8709 ++	case BFD_RELOC_AVR32_14UW:
 47.8710 ++	case BFD_RELOC_AVR32_16S:
 47.8711 ++	case BFD_RELOC_AVR32_16U:
 47.8712 ++	case BFD_RELOC_AVR32_21S:
 47.8713 ++	case BFD_RELOC_AVR32_BRC1:
 47.8714 ++	case BFD_RELOC_AVR32_SUB5:
 47.8715 ++	case BFD_RELOC_AVR32_CPCALL:
 47.8716 ++	case BFD_RELOC_AVR32_16_CP:
 47.8717 ++	case BFD_RELOC_AVR32_9_CP:
 47.8718 ++	case BFD_RELOC_AVR32_15S:
 47.8719 ++	  ifield = fixP->tc_fix_data.ifield;
 47.8720 ++	  pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
 47.8721 ++		   fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
 47.8722 ++		   fixP->tc_fix_data.align);
 47.8723 ++	  if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
 47.8724 ++	    as_bad_where(fixP->fx_file, fixP->fx_line,
 47.8725 ++			 _("operand out of range (%ld not between %ld and %ld)"),
 47.8726 ++			 value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
 47.8727 ++	  if (value & ((1 << fixP->tc_fix_data.align) - 1))
 47.8728 ++	    as_bad_where(fixP->fx_file, fixP->fx_line,
 47.8729 ++			 _("misaligned operand (required alignment: %d)"),
 47.8730 ++			 1 << fixP->tc_fix_data.align);
 47.8731 ++	  ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
 47.8732 ++	  break;
 47.8733 ++	case BFD_RELOC_AVR32_ALIGN:
 47.8734 ++	  /* Nothing to do */
 47.8735 ++	  fixP->fx_done = FALSE;
 47.8736 ++	  break;
 47.8737 ++	default:
 47.8738 ++	  as_fatal("reloc type %s not handled\n",
 47.8739 ++		   bfd_get_reloc_code_name(fixP->fx_r_type));
 47.8740 ++	}
 47.8741 ++    }
 47.8742 ++}
 47.8743 ++#endif
 47.8744 ++
 47.8745 ++arelent *
 47.8746 ++tc_gen_reloc (asection *section ATTRIBUTE_UNUSED,
 47.8747 ++	      fixS *fixp)
 47.8748 ++{
 47.8749 ++  arelent *reloc;
 47.8750 ++  bfd_reloc_code_real_type code;
 47.8751 ++
 47.8752 ++  reloc = xmalloc (sizeof (arelent));
 47.8753 ++
 47.8754 ++  reloc->sym_ptr_ptr = xmalloc (sizeof (asymbol *));
 47.8755 ++  *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
 47.8756 ++  reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
 47.8757 ++  reloc->addend = fixp->fx_offset;
 47.8758 ++  code = fixp->fx_r_type;
 47.8759 ++
 47.8760 ++  reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
 47.8761 ++
 47.8762 ++  if (reloc->howto == NULL)
 47.8763 ++    {
 47.8764 ++      as_bad_where (fixp->fx_file, fixp->fx_line,
 47.8765 ++		    _("cannot represent relocation %s in this object file format"),
 47.8766 ++		    bfd_get_reloc_code_name (code));
 47.8767 ++      return NULL;
 47.8768 ++    }
 47.8769 ++
 47.8770 ++  return reloc;
 47.8771 ++}
 47.8772 ++
 47.8773 ++bfd_boolean
 47.8774 ++avr32_force_reloc(fixS *fixP)
 47.8775 ++{
 47.8776 ++  if (linkrelax && fixP->fx_addsy
 47.8777 ++      && !(S_GET_SEGMENT(fixP->fx_addsy)->flags & SEC_DEBUGGING)
 47.8778 ++      && S_GET_SEGMENT(fixP->fx_addsy) != absolute_section)
 47.8779 ++    {
 47.8780 ++      pr_debug(stderr, "force reloc: addsy=%p, r_type=%d, sec=%s\n",
 47.8781 ++	       fixP->fx_addsy, fixP->fx_r_type, S_GET_SEGMENT(fixP->fx_addsy)->name);
 47.8782 ++      return 1;
 47.8783 ++    }
 47.8784 ++
 47.8785 ++  return generic_force_reloc(fixP);
 47.8786 ++}
 47.8787 ++
 47.8788 ++bfd_boolean
 47.8789 ++avr32_fix_adjustable(fixS *fixP)
 47.8790 ++{
 47.8791 ++  switch (fixP->fx_r_type)
 47.8792 ++    {
 47.8793 ++      /* GOT relocations can't have addends since BFD treats all
 47.8794 ++	 references to a given symbol the same. This means that we
 47.8795 ++	 must avoid section-relative references to local symbols when
 47.8796 ++	 dealing with these kinds of relocs */
 47.8797 ++    case BFD_RELOC_AVR32_GOT32:
 47.8798 ++    case BFD_RELOC_AVR32_GOT16:
 47.8799 ++    case BFD_RELOC_AVR32_GOT8:
 47.8800 ++    case BFD_RELOC_AVR32_GOT21S:
 47.8801 ++    case BFD_RELOC_AVR32_GOT18SW:
 47.8802 ++    case BFD_RELOC_AVR32_GOT16S:
 47.8803 ++    case BFD_RELOC_AVR32_LDA_GOT:
 47.8804 ++    case BFD_RELOC_AVR32_GOTCALL:
 47.8805 ++      pr_debug("fix not adjustable\n");
 47.8806 ++      return 0;
 47.8807 ++
 47.8808 ++    default:
 47.8809 ++      break;
 47.8810 ++    }
 47.8811 ++
 47.8812 ++  return 1;
 47.8813 ++}
 47.8814 ++
 47.8815 ++/* When we want the linker to be able to relax the code, we need to
 47.8816 ++   output a reloc for every .align directive requesting an alignment
 47.8817 ++   to a four byte boundary or larger.  If we don't do this, the linker
 47.8818 ++   can't guarantee that the alignment is actually maintained in the
 47.8819 ++   linker output.
 47.8820 ++
 47.8821 ++   TODO: Might as well insert proper NOPs while we're at it... */
 47.8822 ++void
 47.8823 ++avr32_handle_align(fragS *frag)
 47.8824 ++{
 47.8825 ++  if (linkrelax
 47.8826 ++      && frag->fr_type == rs_align_code
 47.8827 ++      && frag->fr_address + frag->fr_fix > 0
 47.8828 ++      && frag->fr_offset > 0)
 47.8829 ++    {
 47.8830 ++      /* The alignment order (fr_offset) is stored in the addend. */
 47.8831 ++      fix_new(frag, frag->fr_fix, 2, &abs_symbol, frag->fr_offset,
 47.8832 ++	      FALSE, BFD_RELOC_AVR32_ALIGN);
 47.8833 ++    }
 47.8834 ++}
 47.8835 ++
 47.8836 ++/* Relax_align. Advance location counter to next address that has 'alignment'
 47.8837 ++   lowest order bits all 0s, return size of adjustment made.  */
 47.8838 ++relax_addressT
 47.8839 ++avr32_relax_align(segT segment ATTRIBUTE_UNUSED,
 47.8840 ++		  fragS *fragP,
 47.8841 ++		  relax_addressT address)
 47.8842 ++{
 47.8843 ++  relax_addressT mask;
 47.8844 ++  relax_addressT new_address;
 47.8845 ++  int alignment;
 47.8846 ++
 47.8847 ++  alignment = fragP->fr_offset;
 47.8848 ++  mask = ~((~0) << alignment);
 47.8849 ++  new_address = (address + mask) & (~mask);
 47.8850 ++
 47.8851 ++  return new_address - address;
 47.8852 ++}
 47.8853 ++
 47.8854 ++/* Turn a string in input_line_pointer into a floating point constant
 47.8855 ++   of type type, and store the appropriate bytes in *litP.  The number
 47.8856 ++   of LITTLENUMS emitted is stored in *sizeP .  An error message is
 47.8857 ++   returned, or NULL on OK. */
 47.8858 ++
 47.8859 ++/* Equal to MAX_PRECISION in atof-ieee.c */
 47.8860 ++#define MAX_LITTLENUMS 6
 47.8861 ++
 47.8862 ++char *
 47.8863 ++md_atof (type, litP, sizeP)
 47.8864 ++char   type;
 47.8865 ++char * litP;
 47.8866 ++int *  sizeP;
 47.8867 ++{
 47.8868 ++  int              i;
 47.8869 ++  int              prec;
 47.8870 ++  LITTLENUM_TYPE   words [MAX_LITTLENUMS];
 47.8871 ++  char *           t;
 47.8872 ++
 47.8873 ++  switch (type)
 47.8874 ++  {
 47.8875 ++    case 'f':
 47.8876 ++    case 'F':
 47.8877 ++    case 's':
 47.8878 ++    case 'S':
 47.8879 ++      prec = 2;
 47.8880 ++      break;
 47.8881 ++
 47.8882 ++    case 'd':
 47.8883 ++    case 'D':
 47.8884 ++    case 'r':
 47.8885 ++    case 'R':
 47.8886 ++      prec = 4;
 47.8887 ++      break;
 47.8888 ++
 47.8889 ++      /* FIXME: Some targets allow other format chars for bigger sizes here.  */
 47.8890 ++
 47.8891 ++    default:
 47.8892 ++      * sizeP = 0;
 47.8893 ++      return _("Bad call to md_atof()");
 47.8894 ++  }
 47.8895 ++
 47.8896 ++  t = atof_ieee (input_line_pointer, type, words);
 47.8897 ++  if (t)
 47.8898 ++    input_line_pointer = t;
 47.8899 ++  * sizeP = prec * sizeof (LITTLENUM_TYPE);
 47.8900 ++
 47.8901 ++  for (i = 0; i < prec; i++)
 47.8902 ++  {
 47.8903 ++    md_number_to_chars (litP, (valueT) words[i],
 47.8904 ++                        sizeof (LITTLENUM_TYPE));
 47.8905 ++    litP += sizeof (LITTLENUM_TYPE);
 47.8906 ++  }
 47.8907 ++
 47.8908 ++  return 0;
 47.8909 ++}
 47.8910 ++
 47.8911 ++static char *avr32_end_of_match(char *cont, char *what)
 47.8912 ++{
 47.8913 ++  int len = strlen (what);
 47.8914 ++
 47.8915 ++  if (! is_part_of_name (cont[len])
 47.8916 ++      && strncasecmp (cont, what, len) == 0)
 47.8917 ++    return cont + len;
 47.8918 ++
 47.8919 ++  return NULL;
 47.8920 ++}
 47.8921 ++
 47.8922 ++int
 47.8923 ++avr32_parse_name (char const *name, expressionS *exp, char *nextchar)
 47.8924 ++{
 47.8925 ++  char *next = input_line_pointer;
 47.8926 ++  char *next_end;
 47.8927 ++
 47.8928 ++  pr_debug("parse_name: %s, nextchar=%c (%02x)\n", name, *nextchar, *nextchar);
 47.8929 ++
 47.8930 ++  if (*nextchar == '(')
 47.8931 ++    {
 47.8932 ++      if (strcasecmp(name, "hi") == 0)
 47.8933 ++	{
 47.8934 ++	  *next = *nextchar;
 47.8935 ++
 47.8936 ++	  expression(exp);
 47.8937 ++
 47.8938 ++	  if (exp->X_op == O_constant)
 47.8939 ++	    {
 47.8940 ++	      pr_debug("  -> constant hi(0x%08lx) -> 0x%04lx\n",
 47.8941 ++		       exp->X_add_number, exp->X_add_number >> 16);
 47.8942 ++	      exp->X_add_number = (exp->X_add_number >> 16) & 0xffff;
 47.8943 ++	    }
 47.8944 ++	  else
 47.8945 ++	    {
 47.8946 ++	      exp->X_md = exp->X_op;
 47.8947 ++	      exp->X_op = O_hi;
 47.8948 ++	    }
 47.8949 ++
 47.8950 ++	  return 1;
 47.8951 ++	}
 47.8952 ++      else if (strcasecmp(name, "lo") == 0)
 47.8953 ++	{
 47.8954 ++	  *next = *nextchar;
 47.8955 ++
 47.8956 ++	  expression(exp);
 47.8957 ++
 47.8958 ++	  if (exp->X_op == O_constant)
 47.8959 ++	    exp->X_add_number &= 0xffff;
 47.8960 ++	  else
 47.8961 ++	    {
 47.8962 ++	      exp->X_md = exp->X_op;
 47.8963 ++	      exp->X_op = O_lo;
 47.8964 ++	    }
 47.8965 ++
 47.8966 ++	  return 1;
 47.8967 ++	}
 47.8968 ++    }
 47.8969 ++  else if (*nextchar == '@')
 47.8970 ++    {
 47.8971 ++      exp->X_md = exp->X_op;
 47.8972 ++
 47.8973 ++      if ((next_end = avr32_end_of_match (next + 1, "got")))
 47.8974 ++	exp->X_op = O_got;
 47.8975 ++      else if ((next_end = avr32_end_of_match (next + 1, "tlsgd")))
 47.8976 ++	exp->X_op = O_tlsgd;
 47.8977 ++      /* Add more as needed */
 47.8978 ++      else
 47.8979 ++	{
 47.8980 ++	  char c;
 47.8981 ++	  input_line_pointer++;
 47.8982 ++	  c = get_symbol_end();
 47.8983 ++	  as_bad (_("unknown relocation override `%s'"), next + 1);
 47.8984 ++	  *input_line_pointer = c;
 47.8985 ++	  input_line_pointer = next;
 47.8986 ++	  return 0;
 47.8987 ++	}
 47.8988 ++
 47.8989 ++      exp->X_op_symbol = NULL;
 47.8990 ++      exp->X_add_symbol = symbol_find_or_make (name);
 47.8991 ++      exp->X_add_number = 0;
 47.8992 ++
 47.8993 ++      *input_line_pointer = *nextchar;
 47.8994 ++      input_line_pointer = next_end;
 47.8995 ++      *nextchar = *input_line_pointer;
 47.8996 ++      *input_line_pointer = '\0';
 47.8997 ++      return 1;
 47.8998 ++    }
 47.8999 ++  else if (strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0)
 47.9000 ++    {
 47.9001 ++      if (!GOT_symbol)
 47.9002 ++	GOT_symbol = symbol_find_or_make(name);
 47.9003 ++
 47.9004 ++      exp->X_add_symbol = GOT_symbol;
 47.9005 ++      exp->X_op = O_symbol;
 47.9006 ++      exp->X_add_number = 0;
 47.9007 ++      return 1;
 47.9008 ++    }
 47.9009 ++
 47.9010 ++  return 0;
 47.9011 ++}
 47.9012 ++
 47.9013 ++static void
 47.9014 ++s_rseg (int value ATTRIBUTE_UNUSED)
 47.9015 ++{
 47.9016 ++  /* Syntax: RSEG segment_name [:type] [NOROOT|ROOT] [(align)]
 47.9017 ++   * Defaults:
 47.9018 ++   *  - type: undocumented ("typically CODE or DATA")
 47.9019 ++   *  - ROOT
 47.9020 ++   *  - align: 1 for code, 0 for others
 47.9021 ++   *
 47.9022 ++   * TODO: NOROOT is ignored. If gas supports discardable segments, it should
 47.9023 ++   * be implemented.
 47.9024 ++   */
 47.9025 ++  char *name, *end;
 47.9026 ++  int length, type, attr;
 47.9027 ++  int align = 0;
 47.9028 ++
 47.9029 ++  SKIP_WHITESPACE();
 47.9030 ++
 47.9031 ++  end = input_line_pointer;
 47.9032 ++  while (0 == strchr ("\n\t;:( ", *end))
 47.9033 ++    end++;
 47.9034 ++  if (end == input_line_pointer)
 47.9035 ++    {
 47.9036 ++      as_warn (_("missing name"));
 47.9037 ++      ignore_rest_of_line();
 47.9038 ++      return;
 47.9039 ++    }
 47.9040 ++
 47.9041 ++  name = xmalloc (end - input_line_pointer + 1);
 47.9042 ++  memcpy (name, input_line_pointer, end - input_line_pointer);
 47.9043 ++  name[end - input_line_pointer] = '\0';
 47.9044 ++  input_line_pointer = end;
 47.9045 ++
 47.9046 ++  SKIP_WHITESPACE();
 47.9047 ++
 47.9048 ++  type = SHT_NULL;
 47.9049 ++  attr = 0;
 47.9050 ++
 47.9051 ++  if (*input_line_pointer == ':')
 47.9052 ++    {
 47.9053 ++      /* Skip the colon */
 47.9054 ++      ++input_line_pointer;
 47.9055 ++      SKIP_WHITESPACE();
 47.9056 ++
 47.9057 ++      /* Possible options at this point:
 47.9058 ++       *   - flag (ROOT or NOROOT)
 47.9059 ++       *   - a segment type
 47.9060 ++       */
 47.9061 ++      end = input_line_pointer;
 47.9062 ++      while (0 == strchr ("\n\t;:( ", *end))
 47.9063 ++	end++;
 47.9064 ++      length = end - input_line_pointer;
 47.9065 ++      if (((length == 4) && (0 == strncasecmp( input_line_pointer, "ROOT", 4))) ||
 47.9066 ++	  ((length == 6) && (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
 47.9067 ++	{
 47.9068 ++	  /* Ignore ROOT/NOROOT */
 47.9069 ++	  input_line_pointer = end;
 47.9070 ++	}
 47.9071 ++      else
 47.9072 ++	{
 47.9073 ++	  /* Must be a segment type */
 47.9074 ++	  switch (*input_line_pointer)
 47.9075 ++	    {
 47.9076 ++	    case 'C':
 47.9077 ++	    case 'c':
 47.9078 ++	      if ((length == 4) &&
 47.9079 ++		  (0 == strncasecmp (input_line_pointer, "CODE", 4)))
 47.9080 ++		{
 47.9081 ++		  attr |= SHF_ALLOC | SHF_EXECINSTR;
 47.9082 ++		  type = SHT_PROGBITS;
 47.9083 ++		  align = 1;
 47.9084 ++		  break;
 47.9085 ++		}
 47.9086 ++	      if ((length == 5) &&
 47.9087 ++		  (0 == strncasecmp (input_line_pointer, "CONST", 5)))
 47.9088 ++		{
 47.9089 ++		  attr |= SHF_ALLOC;
 47.9090 ++		  type = SHT_PROGBITS;
 47.9091 ++		  break;
 47.9092 ++		}
 47.9093 ++	      goto de_fault;
 47.9094 ++
 47.9095 ++	    case 'D':
 47.9096 ++	    case 'd':
 47.9097 ++	      if ((length == 4) &&
 47.9098 ++		  (0 == strncasecmp (input_line_pointer, "DATA", 4)))
 47.9099 ++		{
 47.9100 ++		  attr |= SHF_ALLOC | SHF_WRITE;
 47.9101 ++		  type = SHT_PROGBITS;
 47.9102 ++		  break;
 47.9103 ++		}
 47.9104 ++	      goto de_fault;
 47.9105 ++
 47.9106 ++	      /* TODO: Add FAR*, HUGE*, IDATA and NEAR* if necessary */
 47.9107 ++
 47.9108 ++	    case 'U':
 47.9109 ++	    case 'u':
 47.9110 ++	      if ((length == 7) &&
 47.9111 ++		  (0 == strncasecmp (input_line_pointer, "UNTYPED", 7)))
 47.9112 ++		break;
 47.9113 ++	      goto de_fault;
 47.9114 ++
 47.9115 ++	      /* TODO: Add XDATA and ZPAGE if necessary */
 47.9116 ++
 47.9117 ++	    de_fault:
 47.9118 ++	    default:
 47.9119 ++	      as_warn (_("unrecognized segment type"));
 47.9120 ++	    }
 47.9121 ++
 47.9122 ++	  input_line_pointer = end;
 47.9123 ++	  SKIP_WHITESPACE();
 47.9124 ++
 47.9125 ++	  if (*input_line_pointer == ':')
 47.9126 ++	    {
 47.9127 ++	      /*  ROOT/NOROOT */
 47.9128 ++	      ++input_line_pointer;
 47.9129 ++	      SKIP_WHITESPACE();
 47.9130 ++
 47.9131 ++	      end = input_line_pointer;
 47.9132 ++	      while (0 == strchr ("\n\t;:( ", *end))
 47.9133 ++		end++;
 47.9134 ++	      length = end - input_line_pointer;
 47.9135 ++	      if (! ((length == 4) &&
 47.9136 ++		     (0 == strncasecmp( input_line_pointer, "ROOT", 4))) &&
 47.9137 ++		  ! ((length == 6) &&
 47.9138 ++		     (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
 47.9139 ++		{
 47.9140 ++		  as_warn (_("unrecognized segment flag"));
 47.9141 ++		}
 47.9142 ++
 47.9143 ++	      input_line_pointer = end;
 47.9144 ++	      SKIP_WHITESPACE();
 47.9145 ++	    }
 47.9146 ++	}
 47.9147 ++    }
 47.9148 ++
 47.9149 ++  if (*input_line_pointer == '(')
 47.9150 ++    {
 47.9151 ++      align = get_absolute_expression ();
 47.9152 ++    }
 47.9153 ++
 47.9154 ++  demand_empty_rest_of_line();
 47.9155 ++
 47.9156 ++  obj_elf_change_section (name, type, attr, 0, NULL, 0, 0);
 47.9157 ++#ifdef AVR32_DEBUG
 47.9158 ++  fprintf( stderr, "RSEG: Changed section to %s, type: 0x%x, attr: 0x%x\n",
 47.9159 ++      name, type, attr );
 47.9160 ++  fprintf( stderr, "RSEG: Aligning to 2**%d\n", align );
 47.9161 ++#endif
 47.9162 ++
 47.9163 ++  if (align > 15)
 47.9164 ++    {
 47.9165 ++      align = 15;
 47.9166 ++      as_warn (_("alignment too large: %u assumed"), align);
 47.9167 ++    }
 47.9168 ++
 47.9169 ++  /* Hope not, that is */
 47.9170 ++  assert (now_seg != absolute_section);
 47.9171 ++
 47.9172 ++  /* Only make a frag if we HAVE to... */
 47.9173 ++  if (align != 0 && !need_pass_2)
 47.9174 ++    {
 47.9175 ++      if (subseg_text_p (now_seg))
 47.9176 ++	frag_align_code (align, 0);
 47.9177 ++      else
 47.9178 ++	frag_align (align, 0, 0);
 47.9179 ++    }
 47.9180 ++
 47.9181 ++  record_alignment (now_seg, align - OCTETS_PER_BYTE_POWER);
 47.9182 ++}
 47.9183 ++
 47.9184 ++/* vim: syntax=c sw=2
 47.9185 ++ */
 47.9186 +--- /dev/null
 47.9187 ++++ b/gas/config/tc-avr32.h
 47.9188 +@@ -0,0 +1,325 @@
 47.9189 ++/* Assembler definitions for AVR32.
 47.9190 ++   Copyright 2003-2006 Atmel Corporation.
 47.9191 ++
 47.9192 ++   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
 47.9193 ++
 47.9194 ++   This file is part of GAS, the GNU Assembler.
 47.9195 ++
 47.9196 ++   GAS is free software; you can redistribute it and/or modify it
 47.9197 ++   under the terms of the GNU General Public License as published by
 47.9198 ++   the Free Software Foundation; either version 2, or (at your option)
 47.9199 ++   any later version.
 47.9200 ++
 47.9201 ++   GAS is distributed in the hope that it will be useful, but WITHOUT
 47.9202 ++   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 47.9203 ++   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
 47.9204 ++   License for more details.
 47.9205 ++
 47.9206 ++   You should have received a copy of the GNU General Public License
 47.9207 ++   along with GAS; see the file COPYING.  If not, write to the Free
 47.9208 ++   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 47.9209 ++   02111-1307, USA.  */
 47.9210 ++
 47.9211 ++#if 0
 47.9212 ++#define DEBUG
 47.9213 ++#define DEBUG1
 47.9214 ++#define DEBUG2
 47.9215 ++#define DEBUG3
 47.9216 ++#define DEBUG4
 47.9217 ++#define DEBUG5
 47.9218 ++#endif
 47.9219 ++
 47.9220 ++/* Are we trying to be compatible with the IAR assembler? (--iar) */
 47.9221 ++extern int avr32_iarcompat;
 47.9222 ++
 47.9223 ++/* By convention, you should define this macro in the `.h' file.  For
 47.9224 ++   example, `tc-m68k.h' defines `TC_M68K'.  You might have to use this
 47.9225 ++   if it is necessary to add CPU specific code to the object format
 47.9226 ++   file.  */
 47.9227 ++#define TC_AVR32
 47.9228 ++
 47.9229 ++/* This macro is the BFD target name to use when creating the output
 47.9230 ++   file.  This will normally depend upon the `OBJ_FMT' macro.  */
 47.9231 ++#define TARGET_FORMAT "elf32-avr32"
 47.9232 ++
 47.9233 ++/* This macro is the BFD architecture to pass to `bfd_set_arch_mach'.  */
 47.9234 ++#define TARGET_ARCH bfd_arch_avr32
 47.9235 ++
 47.9236 ++/* This macro is the BFD machine number to pass to
 47.9237 ++   `bfd_set_arch_mach'.  If it is not defined, GAS will use 0.  */
 47.9238 ++#define TARGET_MACH 0
 47.9239 ++
 47.9240 ++/* UNDOCUMENTED: Allow //-style comments */
 47.9241 ++#define DOUBLESLASH_LINE_COMMENTS
 47.9242 ++
 47.9243 ++/* You should define this macro to be non-zero if the target is big
 47.9244 ++   endian, and zero if the target is little endian.  */
 47.9245 ++#define TARGET_BYTES_BIG_ENDIAN 1
 47.9246 ++
 47.9247 ++/* FIXME: It seems that GAS only expects a one-byte opcode...
 47.9248 ++   #define NOP_OPCODE 0xd703 */
 47.9249 ++
 47.9250 ++/* If you define this macro, GAS will warn about the use of
 47.9251 ++   nonstandard escape sequences in a string.  */
 47.9252 ++#undef ONLY_STANDARD_ESCAPES
 47.9253 ++
 47.9254 ++#define DWARF2_FORMAT() dwarf2_format_32bit
 47.9255 ++
 47.9256 ++/* Instructions are either 2 or 4 bytes long */
 47.9257 ++/* #define DWARF2_LINE_MIN_INSN_LENGTH 2 */
 47.9258 ++
 47.9259 ++/* GAS will call this function for any expression that can not be
 47.9260 ++   recognized.  When the function is called, `input_line_pointer'
 47.9261 ++   will point to the start of the expression.  */
 47.9262 ++#define md_operand(x)
 47.9263 ++
 47.9264 ++#define md_parse_name(name, expr, mode, c) avr32_parse_name(name, expr, c)
 47.9265 ++extern int avr32_parse_name(const char *, struct expressionS *, char *);
 47.9266 ++
 47.9267 ++/* You may define this macro to generate a fixup for a data
 47.9268 ++   allocation pseudo-op.  */
 47.9269 ++#define TC_CONS_FIX_NEW(FRAG, OFF, LEN, EXP)	\
 47.9270 ++  avr32_cons_fix_new(FRAG, OFF, LEN, EXP)
 47.9271 ++void avr32_cons_fix_new (fragS *, int, int, expressionS *);
 47.9272 ++
 47.9273 ++/* `extsym - .' expressions can be emitted using PC-relative relocs */
 47.9274 ++#define DIFF_EXPR_OK
 47.9275 ++
 47.9276 ++/* This is used to construct expressions out of @gotoff, etc. The
 47.9277 ++   relocation type is stored in X_md */
 47.9278 ++#define O_got		O_md1
 47.9279 ++#define O_hi		O_md2
 47.9280 ++#define O_lo		O_md3
 47.9281 ++#define O_tlsgd		O_md4
 47.9282 ++
 47.9283 ++/* You may define this macro to parse an expression used in a data
 47.9284 ++   allocation pseudo-op such as `.word'.  You can use this to
 47.9285 ++   recognize relocation directives that may appear in such directives.  */
 47.9286 ++/* #define TC_PARSE_CONS_EXPRESSION(EXPR,N) avr_parse_cons_expression (EXPR,N)
 47.9287 ++   void avr_parse_cons_expression (expressionS *exp, int nbytes); */
 47.9288 ++
 47.9289 ++/* This should just call either `number_to_chars_bigendian' or
 47.9290 ++   `number_to_chars_littleendian', whichever is appropriate.  On
 47.9291 ++   targets like the MIPS which support options to change the
 47.9292 ++   endianness, which function to call is a runtime decision.  On
 47.9293 ++   other targets, `md_number_to_chars' can be a simple macro.  */
 47.9294 ++#define md_number_to_chars number_to_chars_bigendian
 47.9295 ++
 47.9296 ++/* `md_short_jump_size'
 47.9297 ++   `md_long_jump_size'
 47.9298 ++   `md_create_short_jump'
 47.9299 ++   `md_create_long_jump'
 47.9300 ++   If `WORKING_DOT_WORD' is defined, GAS will not do broken word
 47.9301 ++   processing (*note Broken words::.).  Otherwise, you should set
 47.9302 ++   `md_short_jump_size' to the size of a short jump (a jump that is
 47.9303 ++   just long enough to jump around a long jmp) and
 47.9304 ++   `md_long_jump_size' to the size of a long jump (a jump that can go
 47.9305 ++   anywhere in the function), You should define
 47.9306 ++   `md_create_short_jump' to create a short jump around a long jump,
 47.9307 ++   and define `md_create_long_jump' to create a long jump.  */
 47.9308 ++#define WORKING_DOT_WORD
 47.9309 ++
 47.9310 ++/* If you define this macro, it means that `tc_gen_reloc' may return
 47.9311 ++   multiple relocation entries for a single fixup.  In this case, the
 47.9312 ++   return value of `tc_gen_reloc' is a pointer to a null terminated
 47.9313 ++   array.  */
 47.9314 ++#undef RELOC_EXPANSION_POSSIBLE
 47.9315 ++
 47.9316 ++/* If you define this macro, GAS will not require pseudo-ops to start with a .
 47.9317 ++   character. */
 47.9318 ++#define NO_PSEUDO_DOT (avr32_iarcompat)
 47.9319 ++
 47.9320 ++/* The IAR assembler uses $ as the location counter. Unfortunately, we
 47.9321 ++   can't make this dependent on avr32_iarcompat... */
 47.9322 ++#define DOLLAR_DOT
 47.9323 ++
 47.9324 ++/* Values passed to md_apply_fix3 don't include the symbol value.  */
 47.9325 ++#define MD_APPLY_SYM_VALUE(FIX) 0
 47.9326 ++
 47.9327 ++/* The number of bytes to put into a word in a listing.  This affects
 47.9328 ++   the way the bytes are clumped together in the listing.  For
 47.9329 ++   example, a value of 2 might print `1234 5678' where a value of 1
 47.9330 ++   would print `12 34 56 78'.  The default value is 4.  */
 47.9331 ++#define LISTING_WORD_SIZE 4
 47.9332 ++
 47.9333 ++/* extern const struct relax_type md_relax_table[];
 47.9334 ++#define TC_GENERIC_RELAX_TABLE md_relax_table */
 47.9335 ++
 47.9336 ++/*
 47.9337 ++  An `.lcomm' directive with no explicit alignment parameter will use
 47.9338 ++  this macro to set P2VAR to the alignment that a request for SIZE
 47.9339 ++  bytes will have.  The alignment is expressed as a power of two.  If
 47.9340 ++  no alignment should take place, the macro definition should do
 47.9341 ++  nothing.  Some targets define a `.bss' directive that is also
 47.9342 ++  affected by this macro.  The default definition will set P2VAR to
 47.9343 ++  the truncated power of two of sizes up to eight bytes.
 47.9344 ++
 47.9345 ++  We want doublewords to be word-aligned, so we're going to modify the
 47.9346 ++  default definition a tiny bit.
 47.9347 ++*/
 47.9348 ++#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR)	\
 47.9349 ++  do							\
 47.9350 ++    {							\
 47.9351 ++      if ((SIZE) >= 4)					\
 47.9352 ++	(P2VAR) = 2;					\
 47.9353 ++      else if ((SIZE) >= 2)				\
 47.9354 ++	(P2VAR) = 1;					\
 47.9355 ++      else						\
 47.9356 ++	(P2VAR) = 0;					\
 47.9357 ++    }							\
 47.9358 ++  while (0)
 47.9359 ++
 47.9360 ++/* When relaxing, we need to generate relocations for alignment
 47.9361 ++   directives.  */
 47.9362 ++#define HANDLE_ALIGN(frag) avr32_handle_align(frag)
 47.9363 ++extern void avr32_handle_align(fragS *);
 47.9364 ++
 47.9365 ++/* See internals doc for explanation. Oh wait...
 47.9366 ++   Now, can you guess where "alignment" comes from? ;-) */
 47.9367 ++#define MAX_MEM_FOR_RS_ALIGN_CODE ((1 << alignment) - 1)
 47.9368 ++
 47.9369 ++/* We need to stop gas from reducing certain expressions (e.g. GOT
 47.9370 ++   references) */
 47.9371 ++#define tc_fix_adjustable(fix) avr32_fix_adjustable(fix)
 47.9372 ++extern bfd_boolean avr32_fix_adjustable(struct fix *);
 47.9373 ++
 47.9374 ++/* The linker needs to be passed a little more information when relaxing. */
 47.9375 ++#define TC_FORCE_RELOCATION(fix) avr32_force_reloc(fix)
 47.9376 ++extern bfd_boolean avr32_force_reloc(struct fix *);
 47.9377 ++
 47.9378 ++/* I'm tired of working around all the madness in fixup_segment().
 47.9379 ++   This hook will do basically the same things as the generic code,
 47.9380 ++   and then it will "goto" right past it.  */
 47.9381 ++#define TC_VALIDATE_FIX(FIX, SEG, SKIP)		\
 47.9382 ++  do						\
 47.9383 ++    {						\
 47.9384 ++      avr32_process_fixup(FIX, SEG);		\
 47.9385 ++      if (!(FIX)->fx_done)			\
 47.9386 ++	++seg_reloc_count;			\
 47.9387 ++      goto SKIP;				\
 47.9388 ++    }						\
 47.9389 ++  while (0)
 47.9390 ++extern void avr32_process_fixup(struct fix *fixP, segT this_segment);
 47.9391 ++
 47.9392 ++/* Positive values of TC_FX_SIZE_SLACK allow a target to define
 47.9393 ++   fixups that far past the end of a frag.  Having such fixups
 47.9394 ++   is of course most most likely a bug in setting fx_size correctly.
 47.9395 ++   A negative value disables the fixup check entirely, which is
 47.9396 ++   appropriate for something like the Renesas / SuperH SH_COUNT
 47.9397 ++   reloc.  */
 47.9398 ++/* This target is buggy, and sets fix size too large.  */
 47.9399 ++#define TC_FX_SIZE_SLACK(FIX) -1
 47.9400 ++
 47.9401 ++/* We don't want the gas core to make any assumptions about our way of
 47.9402 ++   doing linkrelaxing.  */
 47.9403 ++#define TC_LINKRELAX_FIXUP(SEG)			0
 47.9404 ++
 47.9405 ++/* ... but we do want it to insert lots of padding. */
 47.9406 ++#define LINKER_RELAXING_SHRINKS_ONLY
 47.9407 ++
 47.9408 ++/* Better do it ourselves, really... */
 47.9409 ++#define TC_RELAX_ALIGN(SEG, FRAG, ADDR)	avr32_relax_align(SEG, FRAG, ADDR)
 47.9410 ++extern relax_addressT
 47.9411 ++avr32_relax_align(segT segment, fragS *fragP, relax_addressT address);
 47.9412 ++
 47.9413 ++/* Use line number format that is amenable to linker relaxation.  */
 47.9414 ++#define DWARF2_USE_FIXED_ADVANCE_PC (linkrelax != 0)
 47.9415 ++
 47.9416 ++/* This is called by write_object_file() just before symbols are
 47.9417 ++   attempted converted into section symbols.  */
 47.9418 ++#define tc_frob_file_before_adjust()	avr32_frob_file()
 47.9419 ++extern void avr32_frob_file(void);
 47.9420 ++
 47.9421 ++/* If you define this macro, GAS will call it at the end of each input
 47.9422 ++   file.  */
 47.9423 ++#define md_cleanup() avr32_cleanup()
 47.9424 ++extern void avr32_cleanup(void);
 47.9425 ++
 47.9426 ++/* There's an AVR32-specific hack in operand() which creates O_md
 47.9427 ++   expressions when encountering HWRD or LWRD. We need to generate
 47.9428 ++   proper relocs for them */
 47.9429 ++/* #define md_cgen_record_fixup_exp avr32_cgen_record_fixup_exp */
 47.9430 ++
 47.9431 ++/* I needed to add an extra hook in gas_cgen_finish_insn() for
 47.9432 ++   conversion of O_md* operands because md_cgen_record_fixup_exp()
 47.9433 ++   isn't called for relaxable insns */
 47.9434 ++/* #define md_cgen_convert_expr(exp, opinfo) avr32_cgen_convert_expr(exp, opinfo)
 47.9435 ++   int avr32_cgen_convert_expr(expressionS *, int); */
 47.9436 ++
 47.9437 ++/* #define tc_gen_reloc gas_cgen_tc_gen_reloc */
 47.9438 ++
 47.9439 ++/* If you define this macro, it should return the position from which
 47.9440 ++   the PC relative adjustment for a PC relative fixup should be
 47.9441 ++   made. On many processors, the base of a PC relative instruction is
 47.9442 ++   the next instruction, so this macro would return the length of an
 47.9443 ++   instruction, plus the address of the PC relative fixup. The latter
 47.9444 ++   can be calculated as fixp->fx_where + fixp->fx_frag->fr_address. */
 47.9445 ++extern long md_pcrel_from_section (struct fix *, segT);
 47.9446 ++#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
 47.9447 ++
 47.9448 ++#define LOCAL_LABEL(name) (name[0] == '.' && (name[1] == 'L'))
 47.9449 ++#define LOCAL_LABELS_FB		1
 47.9450 ++
 47.9451 ++struct avr32_relaxer
 47.9452 ++{
 47.9453 ++  int (*estimate_size)(fragS *, segT);
 47.9454 ++  long (*relax_frag)(segT, fragS *, long);
 47.9455 ++  void (*convert_frag)(bfd *, segT, fragS *);
 47.9456 ++};
 47.9457 ++
 47.9458 ++/* AVR32 has quite complex instruction coding, which means we need
 47.9459 ++ * lots of information in order to do the right thing during relaxing
 47.9460 ++ * (basically, we need to be able to reconstruct a whole new opcode if
 47.9461 ++ * necessary) */
 47.9462 ++#define TC_FRAG_TYPE struct avr32_frag_data
 47.9463 ++
 47.9464 ++struct cpool;
 47.9465 ++
 47.9466 ++struct avr32_frag_data
 47.9467 ++{
 47.9468 ++  /* TODO: Maybe add an expression object here so that we can use
 47.9469 ++     fix_new_exp() in md_convert_frag?  We may have to decide
 47.9470 ++     pcrel-ness in md_estimate_size_before_relax() as well...or we
 47.9471 ++     might do it when parsing.  Doing it while parsing may fail
 47.9472 ++     because the sub_symbol is undefined then... */
 47.9473 ++  int pcrel;
 47.9474 ++  int force_extended;
 47.9475 ++  int reloc_info;
 47.9476 ++  struct avr32_relaxer *relaxer;
 47.9477 ++  expressionS exp;
 47.9478 ++
 47.9479 ++  /* Points to associated constant pool, for use by LDA and CALL in
 47.9480 ++     non-pic mode, and when relaxing the .cpool directive */
 47.9481 ++  struct cpool *pool;
 47.9482 ++  unsigned int pool_entry;
 47.9483 ++};
 47.9484 ++
 47.9485 ++/* We will have to initialize the fields explicitly when needed */
 47.9486 ++#define TC_FRAG_INIT(fragP)
 47.9487 ++
 47.9488 ++#define md_estimate_size_before_relax(fragP, segT)			\
 47.9489 ++  ((fragP)->tc_frag_data.relaxer->estimate_size(fragP, segT))
 47.9490 ++#define md_relax_frag(segment, fragP, stretch)				\
 47.9491 ++  ((fragP)->tc_frag_data.relaxer->relax_frag(segment, fragP, stretch))
 47.9492 ++#define md_convert_frag(abfd, segment, fragP)				\
 47.9493 ++  ((fragP)->tc_frag_data.relaxer->convert_frag(abfd, segment, fragP))
 47.9494 ++
 47.9495 ++#define TC_FIX_TYPE struct avr32_fix_data
 47.9496 ++
 47.9497 ++struct avr32_fix_data
 47.9498 ++{
 47.9499 ++  const struct avr32_ifield *ifield;
 47.9500 ++  unsigned int align;
 47.9501 ++  long min;
 47.9502 ++  long max;
 47.9503 ++};
 47.9504 ++
 47.9505 ++#define TC_INIT_FIX_DATA(fixP)			\
 47.9506 ++  do						\
 47.9507 ++    {						\
 47.9508 ++      (fixP)->tc_fix_data.ifield = NULL;	\
 47.9509 ++      (fixP)->tc_fix_data.align = 0;		\
 47.9510 ++      (fixP)->tc_fix_data.min = 0;		\
 47.9511 ++      (fixP)->tc_fix_data.max = 0;		\
 47.9512 ++    }						\
 47.9513 ++  while (0)
 47.9514 +--- a/gas/configure.tgt
 47.9515 ++++ b/gas/configure.tgt
 47.9516 +@@ -33,6 +33,7 @@ case ${cpu} in
 47.9517 +   am33_2.0)		cpu_type=mn10300 endian=little ;;
 47.9518 +   arm*be|arm*b)		cpu_type=arm endian=big ;;
 47.9519 +   arm*)			cpu_type=arm endian=little ;;
 47.9520 ++  avr32*)		cpu_type=avr32 endian=big ;;
 47.9521 +   bfin*)		cpu_type=bfin endian=little ;;
 47.9522 +   c4x*)			cpu_type=tic4x ;;
 47.9523 +   cr16*)		cpu_type=cr16 endian=little ;;
 47.9524 +@@ -129,6 +130,9 @@ case ${generic_target} in
 47.9525 +   bfin-*elf)				fmt=elf ;;
 47.9526 +   cr16-*-elf*)	    			fmt=elf ;;
 47.9527 + 
 47.9528 ++  avr32-*-linux*)			fmt=elf  em=linux bfd_gas=yes ;;
 47.9529 ++  avr32*)				fmt=elf  bfd_gas=yes ;;
 47.9530 ++
 47.9531 +   cris-*-linux-* | crisv32-*-linux-*)
 47.9532 + 					fmt=multi em=linux ;;
 47.9533 +   cris-*-* | crisv32-*-*)		fmt=multi ;;
 47.9534 +--- a/gas/doc/all.texi
 47.9535 ++++ b/gas/doc/all.texi
 47.9536 +@@ -30,6 +30,7 @@
 47.9537 + @set ARC
 47.9538 + @set ARM
 47.9539 + @set AVR
 47.9540 ++@set AVR32
 47.9541 + @set BFIN
 47.9542 + @set CR16
 47.9543 + @set CRIS
 47.9544 +--- a/gas/doc/as.texinfo
 47.9545 ++++ b/gas/doc/as.texinfo
 47.9546 +@@ -6353,6 +6353,9 @@ subject, see the hardware manufacturer's
 47.9547 + @ifset AVR
 47.9548 + * AVR-Dependent::               AVR Dependent Features
 47.9549 + @end ifset
 47.9550 ++@ifset AVR32
 47.9551 ++* AVR32-Dependent::             AVR32 Dependent Features
 47.9552 ++@end ifset
 47.9553 + @ifset BFIN
 47.9554 + * BFIN-Dependent::		BFIN Dependent Features
 47.9555 + @end ifset
 47.9556 +@@ -6476,6 +6479,10 @@ subject, see the hardware manufacturer's
 47.9557 + @include c-avr.texi
 47.9558 + @end ifset
 47.9559 + 
 47.9560 ++@ifset AVR32
 47.9561 ++@include c-avr32.texi
 47.9562 ++@end ifset
 47.9563 ++
 47.9564 + @ifset BFIN
 47.9565 + @include c-bfin.texi
 47.9566 + @end ifset
 47.9567 +--- /dev/null
 47.9568 ++++ b/gas/doc/c-avr32.texi
 47.9569 +@@ -0,0 +1,247 @@
 47.9570 ++@c Copyright 2005, 2006
 47.9571 ++@c Atmel Corporation
 47.9572 ++@c This is part of the GAS manual.
 47.9573 ++@c For copying conditions, see the file as.texinfo.
 47.9574 ++
 47.9575 ++@ifset GENERIC
 47.9576 ++@page
 47.9577 ++@node AVR32-Dependent
 47.9578 ++@chapter AVR32 Dependent Features
 47.9579 ++@end ifset
 47.9580 ++
 47.9581 ++@ifclear GENERIC
 47.9582 ++@node Machine Dependencies
 47.9583 ++@chapter AVR32 Dependent Features
 47.9584 ++@end ifclear
 47.9585 ++
 47.9586 ++@cindex AVR32 support
 47.9587 ++@menu
 47.9588 ++* AVR32 Options::               Options
 47.9589 ++* AVR32 Syntax::                Syntax
 47.9590 ++* AVR32 Directives::            Directives
 47.9591 ++* AVR32 Opcodes::               Opcodes
 47.9592 ++@end menu
 47.9593 ++
 47.9594 ++@node AVR32 Options
 47.9595 ++@section Options
 47.9596 ++@cindex AVR32 options
 47.9597 ++@cindex options for AVR32
 47.9598 ++
 47.9599 ++There are currently no AVR32-specific options.  However, the following
 47.9600 ++options are planned:
 47.9601 ++
 47.9602 ++@table @code
 47.9603 ++
 47.9604 ++@cindex @code{--pic} command line option, AVR32
 47.9605 ++@cindex PIC code generation for AVR32
 47.9606 ++@item --pic
 47.9607 ++This option specifies that the output of the assembler should be marked
 47.9608 ++as position-independent code (PIC).  It will also ensure that
 47.9609 ++pseudo-instructions that deal with address calculation are output as
 47.9610 ++PIC, and that all absolute address references in the code are marked as
 47.9611 ++such.
 47.9612 ++
 47.9613 ++@cindex @code{--linkrelax} command line option, AVR32
 47.9614 ++@item --linkrelax
 47.9615 ++This option specifies that the output of the assembler should be marked
 47.9616 ++as linker-relaxable.  It will also ensure that all PC-relative operands
 47.9617 ++that may change during linker relaxation get appropriate relocations.
 47.9618 ++
 47.9619 ++@end table
 47.9620 ++
 47.9621 ++
 47.9622 ++@node AVR32 Syntax
 47.9623 ++@section Syntax
 47.9624 ++@menu
 47.9625 ++* AVR32-Chars::              Special Characters
 47.9626 ++* AVR32-Symrefs::            Symbol references
 47.9627 ++@end menu
 47.9628 ++
 47.9629 ++@node AVR32-Chars
 47.9630 ++@subsection Special Characters
 47.9631 ++
 47.9632 ++@cindex line comment character, AVR32
 47.9633 ++@cindex AVR32 line comment character
 47.9634 ++The presence of a @samp{//} on a line indicates the start of a comment
 47.9635 ++that extends to the end of the current line.  If a @samp{#} appears as
 47.9636 ++the first character of a line, the whole line is treated as a comment.
 47.9637 ++
 47.9638 ++@cindex line separator, AVR32
 47.9639 ++@cindex statement separator, AVR32
 47.9640 ++@cindex AVR32 line separator
 47.9641 ++The @samp{;} character can be used instead of a newline to separate
 47.9642 ++statements.
 47.9643 ++
 47.9644 ++@node AVR32-Symrefs
 47.9645 ++@subsection Symbol references
 47.9646 ++
 47.9647 ++The absolute value of a symbol can be obtained by simply naming the
 47.9648 ++symbol.  However, as AVR32 symbols have 32-bit values, most symbols have
 47.9649 ++values that are outside the range of any instructions.
 47.9650 ++
 47.9651 ++Instructions that take a PC-relative offset, e.g. @code{lddpc} or
 47.9652 ++@code{rcall}, can also reference a symbol by simply naming the symbol
 47.9653 ++(no explicit calculations necessary).  In this case, the assembler or
 47.9654 ++linker subtracts the address of the instruction from the symbol's value
 47.9655 ++and inserts the result into the instruction.  Note that even though an
 47.9656 ++overflow is less likely to happen for a relative reference than for an
 47.9657 ++absolute reference, the assembler or linker will generate an error if
 47.9658 ++the referenced symbol is too far away from the current location.
 47.9659 ++
 47.9660 ++Relative references can be used for data as well.  For example:
 47.9661 ++
 47.9662 ++@smallexample
 47.9663 ++        lddpc   r0, 2f
 47.9664 ++1:      add     r0, pc
 47.9665 ++        ...
 47.9666 ++        .align  2
 47.9667 ++2:      .int    @var{some_symbol} - 1b
 47.9668 ++@end smallexample
 47.9669 ++
 47.9670 ++Here, r0 will end up with the run-time address of @var{some_symbol} even
 47.9671 ++if the program was loaded at a different address than it was linked
 47.9672 ++(position-independent code).
 47.9673 ++
 47.9674 ++@subsubsection Symbol modifiers
 47.9675 ++
 47.9676 ++@table @code
 47.9677 ++
 47.9678 ++@item @code{hi(@var{symbol})}
 47.9679 ++Evaluates to the value of the symbol shifted right 16 bits.  This will
 47.9680 ++work even if @var{symbol} is defined in a different module.
 47.9681 ++
 47.9682 ++@item @code{lo(@var{symbol})}
 47.9683 ++Evaluates to the low 16 bits of the symbol's value.  This will work even
 47.9684 ++if @var{symbol} is defined in a different module.
 47.9685 ++
 47.9686 ++@item @code{@var{symbol}@@got}
 47.9687 ++Create a GOT entry for @var{symbol} and return the offset of that entry
 47.9688 ++relative to the GOT base.
 47.9689 ++
 47.9690 ++@end table
 47.9691 ++
 47.9692 ++
 47.9693 ++@node AVR32 Directives
 47.9694 ++@section Directives
 47.9695 ++@cindex machine directives, AVR32
 47.9696 ++@cindex AVR32 directives
 47.9697 ++
 47.9698 ++@table @code
 47.9699 ++
 47.9700 ++@cindex @code{.cpool} directive, AVR32
 47.9701 ++@item .cpool
 47.9702 ++This directive causes the current contents of the constant pool to be
 47.9703 ++dumped into the current section at the current location (aligned to a
 47.9704 ++word boundary).  @code{GAS} maintains a separate constant pool for each
 47.9705 ++section and each sub-section.  The @code{.cpool} directive will only
 47.9706 ++affect the constant pool of the current section and sub-section.  At the
 47.9707 ++end of assembly, all remaining, non-empty constant pools will
 47.9708 ++automatically be dumped.
 47.9709 ++
 47.9710 ++@end table
 47.9711 ++
 47.9712 ++
 47.9713 ++@node AVR32 Opcodes
 47.9714 ++@section Opcodes
 47.9715 ++@cindex AVR32 opcodes
 47.9716 ++@cindex opcodes for AVR32
 47.9717 ++
 47.9718 ++@code{@value{AS}} implements all the standard AVR32 opcodes.  It also
 47.9719 ++implements several pseudo-opcodes, which are recommended to use wherever
 47.9720 ++possible because they give the tool chain better freedom to generate
 47.9721 ++optimal code.
 47.9722 ++
 47.9723 ++@table @code
 47.9724 ++
 47.9725 ++@cindex @code{LDA.W reg, symbol} pseudo op, AVR32
 47.9726 ++@item LDA.W
 47.9727 ++@smallexample
 47.9728 ++        lda.w   @var{reg}, @var{symbol}
 47.9729 ++@end smallexample
 47.9730 ++
 47.9731 ++This instruction will load the address of @var{symbol} into
 47.9732 ++@var{reg}. The instruction will evaluate to one of the following,
 47.9733 ++depending on the relative distance to the symbol, the relative distance
 47.9734 ++to the constant pool and whether the @code{--pic} option has been
 47.9735 ++specified. If the @code{--pic} option has not been specified, the
 47.9736 ++alternatives are as follows:
 47.9737 ++@smallexample
 47.9738 ++        /* @var{symbol} evaluates to a small enough value */
 47.9739 ++        mov     @var{reg}, @var{symbol}
 47.9740 ++
 47.9741 ++        /* (. - @var{symbol}) evaluates to a small enough value */
 47.9742 ++        sub     @var{reg}, pc, . - @var{symbol}
 47.9743 ++
 47.9744 ++        /* Constant pool is close enough */
 47.9745 ++        lddpc   @var{reg}, @var{cpent}
 47.9746 ++        ...
 47.9747 ++@var{cpent}:
 47.9748 ++        .long   @var{symbol}
 47.9749 ++
 47.9750 ++        /* Otherwise (not implemented yet, probably not necessary) */
 47.9751 ++        mov     @var{reg}, lo(@var{symbol})
 47.9752 ++        orh     @var{reg}, hi(@var{symbol})
 47.9753 ++@end smallexample
 47.9754 ++
 47.9755 ++If the @code{--pic} option has been specified, the alternatives are as
 47.9756 ++follows:
 47.9757 ++@smallexample
 47.9758 ++        /* (. - @var{symbol}) evaluates to a small enough value */
 47.9759 ++        sub     @var{reg}, pc, . - @var{symbol}
 47.9760 ++
 47.9761 ++        /* If @code{--linkrelax} not specified */
 47.9762 ++        ld.w    @var{reg}, r6[@var{symbol}@@got]
 47.9763 ++
 47.9764 ++        /* Otherwise */
 47.9765 ++        mov     @var{reg}, @var{symbol}@@got / 4
 47.9766 ++        ld.w    @var{reg}, r6[@var{reg} << 2]
 47.9767 ++@end smallexample
 47.9768 ++
 47.9769 ++If @var{symbol} is not defined in the same file and section as the
 47.9770 ++@code{LDA.W} instruction, the most pessimistic alternative of the
 47.9771 ++above is selected. The linker may convert it back into the most
 47.9772 ++optimal alternative when the final value of all symbols is known.
 47.9773 ++
 47.9774 ++@cindex @code{CALL symbol} pseudo op, AVR32
 47.9775 ++@item CALL
 47.9776 ++@smallexample
 47.9777 ++        call    @var{symbol}
 47.9778 ++@end smallexample
 47.9779 ++
 47.9780 ++This instruction will insert code to call the subroutine identified by
 47.9781 ++@var{symbol}. It will evaluate to one of the following, depending on
 47.9782 ++the relative distance to the symbol as well as the @code{--linkrelax}
 47.9783 ++and @code{--pic} command-line options.
 47.9784 ++
 47.9785 ++If @var{symbol} is defined in the same section and input file, and the
 47.9786 ++distance is small enough, an @code{rcall} instruction is inserted:
 47.9787 ++@smallexample
 47.9788 ++        rcall   @var{symbol}
 47.9789 ++@end smallexample
 47.9790 ++
 47.9791 ++Otherwise, if the @code{--pic} option has not been specified:
 47.9792 ++@smallexample
 47.9793 ++        mcall   @var{cpent}
 47.9794 ++        ...
 47.9795 ++@var{cpent}:
 47.9796 ++        .long   @var{symbol}
 47.9797 ++@end smallexample
 47.9798 ++
 47.9799 ++Finally, if nothing else fits and the @code{--pic} option has been
 47.9800 ++specified, the assembler will indirect the call through the Global
 47.9801 ++Offset Table:
 47.9802 ++@smallexample
 47.9803 ++        /* If @code{--linkrelax} not specified */
 47.9804 ++        mcall   r6[@var{symbol}@@got]
 47.9805 ++
 47.9806 ++        /* If @code{--linkrelax} specified */
 47.9807 ++        mov     lr, @var{symbol}@@got / 4
 47.9808 ++        ld.w    lr, r6[lr << 2]
 47.9809 ++        icall   lr
 47.9810 ++@end smallexample
 47.9811 ++
 47.9812 ++The linker, after determining the final value of @var{symbol}, may
 47.9813 ++convert any of these into more optimal alternatives. This includes
 47.9814 ++deleting any superfluous constant pool- and GOT-entries.
 47.9815 ++
 47.9816 ++@end table
 47.9817 +--- a/gas/doc/Makefile.am
 47.9818 ++++ b/gas/doc/Makefile.am
 47.9819 +@@ -33,6 +33,7 @@ CPU_DOCS = \
 47.9820 + 	c-arc.texi \
 47.9821 + 	c-arm.texi \
 47.9822 + 	c-avr.texi \
 47.9823 ++    c-avr32.texi \
 47.9824 + 	c-bfin.texi \
 47.9825 + 	c-cr16.texi \
 47.9826 + 	c-d10v.texi \
 47.9827 +--- a/gas/Makefile.am
 47.9828 ++++ b/gas/Makefile.am
 47.9829 +@@ -47,6 +47,7 @@ CPU_TYPES = \
 47.9830 + 	arc \
 47.9831 + 	arm \
 47.9832 + 	avr \
 47.9833 ++	avr32 \
 47.9834 + 	bfin \
 47.9835 + 	cr16 \
 47.9836 + 	cris \
 47.9837 +@@ -241,6 +242,7 @@ TARGET_CPU_CFILES = \
 47.9838 + 	config/tc-arc.c \
 47.9839 + 	config/tc-arm.c \
 47.9840 + 	config/tc-avr.c \
 47.9841 ++	config/tc-avr32.c \
 47.9842 + 	config/tc-bfin.c \
 47.9843 + 	config/tc-cr16.c \
 47.9844 + 	config/tc-cris.c \
 47.9845 +@@ -296,6 +298,7 @@ TARGET_CPU_HFILES = \
 47.9846 + 	config/tc-arc.h \
 47.9847 + 	config/tc-arm.h \
 47.9848 + 	config/tc-avr.h \
 47.9849 ++	config/tc-avr32.h \
 47.9850 + 	config/tc-bfin.h \
 47.9851 + 	config/tc-cr16.h \
 47.9852 + 	config/tc-cris.h \
 47.9853 +@@ -1050,6 +1053,11 @@ DEPTC_avr_elf = $(srcdir)/config/obj-elf
 47.9854 +   $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
 47.9855 +   $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
 47.9856 +   $(INCDIR)/opcode/avr.h
 47.9857 ++DEPTC_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
 47.9858 ++  $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
 47.9859 ++  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
 47.9860 ++  $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
 47.9861 ++  $(srcdir)/../opcodes/avr32-opc.h $(srcdir)/../opcodes/avr32-asm.h
 47.9862 + DEPTC_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
 47.9863 +   $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
 47.9864 +   $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
 47.9865 +@@ -1487,6 +1495,11 @@ DEPOBJ_avr_elf = $(srcdir)/config/obj-el
 47.9866 +   $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
 47.9867 +   $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
 47.9868 +   $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
 47.9869 ++DEPOBJ_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
 47.9870 ++  $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
 47.9871 ++  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
 47.9872 ++  $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
 47.9873 ++  struc-symbol.h dwarf2dbg.h
 47.9874 + DEPOBJ_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
 47.9875 +   $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
 47.9876 +   $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
 47.9877 +@@ -1858,6 +1871,9 @@ DEP_cr16_elf = $(srcdir)/config/obj-elf.
 47.9878 +   $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cr16.h dwarf2dbg.h \
 47.9879 +   $(srcdir)/config/obj-coff.h $(INCDIR)/coff/internal.h \
 47.9880 +   $(BFDDIR)/libcoff.h
 47.9881 ++DEP_avr32_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
 47.9882 ++  $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
 47.9883 ++  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h
 47.9884 + DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \
 47.9885 +   $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
 47.9886 + DEP_cris_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
 47.9887 +--- /dev/null
 47.9888 ++++ b/gas/testsuite/gas/avr32/aliases.d
 47.9889 +@@ -0,0 +1,19 @@
 47.9890 ++#as:
 47.9891 ++#objdump: -dr
 47.9892 ++#name: aliases
 47.9893 ++
 47.9894 ++.*: +file format .*
 47.9895 ++
 47.9896 ++Disassembly of section \.text:
 47.9897 ++
 47.9898 ++00000000 <ld_nodisp>:
 47.9899 ++   0:	19 80      [ \t]+ld\.ub r0,r12\[0x0\]
 47.9900 ++   2:	f9 20 00 00[ \t]+ld\.sb r0,r12\[0\]
 47.9901 ++   6:	98 80      [ \t]+ld\.uh r0,r12\[0x0\]
 47.9902 ++   8:	98 00      [ \t]+ld\.sh r0,r12\[0x0\]
 47.9903 ++   a:	78 00      [ \t]+ld\.w r0,r12\[0x0\]
 47.9904 ++
 47.9905 ++0000000c <st_nodisp>:
 47.9906 ++   c:	b8 80      [ \t]+st\.b r12\[0x0\],r0
 47.9907 ++   e:	b8 00      [ \t]+st\.h r12\[0x0\],r0
 47.9908 ++  10:	99 00      [ \t]+st\.w r12\[0x0\],r0
 47.9909 +--- /dev/null
 47.9910 ++++ b/gas/testsuite/gas/avr32/aliases.s
 47.9911 +@@ -0,0 +1,14 @@
 47.9912 ++	.text
 47.9913 ++	.global	ld_nodisp
 47.9914 ++ld_nodisp:
 47.9915 ++	ld.ub	r0, r12
 47.9916 ++	ld.sb	r0, r12
 47.9917 ++	ld.uh	r0, r12
 47.9918 ++	ld.sh	r0, r12
 47.9919 ++	ld.w	r0, r12
 47.9920 ++
 47.9921 ++	.global st_nodisp
 47.9922 ++st_nodisp:
 47.9923 ++	st.b	r12, r0
 47.9924 ++	st.h	r12, r0
 47.9925 ++	st.w	r12, r0
 47.9926 +--- /dev/null
 47.9927 ++++ b/gas/testsuite/gas/avr32/allinsn.d
 47.9928 +@@ -0,0 +1,2987 @@
 47.9929 ++#as:
 47.9930 ++#objdump: -dr
 47.9931 ++#name: allinsn
 47.9932 ++
 47.9933 ++.*: +file format .*
 47.9934 ++
 47.9935 ++Disassembly of section \.text:
 47.9936 ++
 47.9937 ++[0-9a-f]* <ld_d5>:
 47.9938 ++ *[0-9a-f]*:	fe 0f 02 3e 	ld\.d lr,pc\[pc<<0x3\]
 47.9939 ++ *[0-9a-f]*:	e0 00 02 00 	ld\.d r0,r0\[r0\]
 47.9940 ++ *[0-9a-f]*:	ea 05 02 26 	ld\.d r6,r5\[r5<<0x2\]
 47.9941 ++ *[0-9a-f]*:	e8 04 02 14 	ld\.d r4,r4\[r4<<0x1\]
 47.9942 ++ *[0-9a-f]*:	fc 0e 02 1e 	ld\.d lr,lr\[lr<<0x1\]
 47.9943 ++ *[0-9a-f]*:	e6 0d 02 2a 	ld\.d r10,r3\[sp<<0x2\]
 47.9944 ++ *[0-9a-f]*:	f4 06 02 28 	ld\.d r8,r10\[r6<<0x2\]
 47.9945 ++ *[0-9a-f]*:	ee 09 02 02 	ld\.d r2,r7\[r9\]
 47.9946 ++
 47.9947 ++[0-9a-f]* <ld_w5>:
 47.9948 ++ *[0-9a-f]*:	fe 0f 03 0f 	ld\.w pc,pc\[pc\]
 47.9949 ++ *[0-9a-f]*:	f8 0c 03 3c 	ld\.w r12,r12\[r12<<0x3\]
 47.9950 ++ *[0-9a-f]*:	ea 05 03 25 	ld\.w r5,r5\[r5<<0x2\]
 47.9951 ++ *[0-9a-f]*:	e8 04 03 14 	ld\.w r4,r4\[r4<<0x1\]
 47.9952 ++ *[0-9a-f]*:	fc 0e 03 1e 	ld\.w lr,lr\[lr<<0x1\]
 47.9953 ++ *[0-9a-f]*:	f2 09 03 02 	ld\.w r2,r9\[r9\]
 47.9954 ++ *[0-9a-f]*:	e4 06 03 0b 	ld\.w r11,r2\[r6\]
 47.9955 ++ *[0-9a-f]*:	e4 0d 03 30 	ld\.w r0,r2\[sp<<0x3\]
 47.9956 ++
 47.9957 ++[0-9a-f]* <ld_sh5>:
 47.9958 ++ *[0-9a-f]*:	fe 0f 04 0f 	ld\.sh pc,pc\[pc\]
 47.9959 ++ *[0-9a-f]*:	f8 0c 04 3c 	ld\.sh r12,r12\[r12<<0x3\]
 47.9960 ++ *[0-9a-f]*:	ea 05 04 25 	ld\.sh r5,r5\[r5<<0x2\]
 47.9961 ++ *[0-9a-f]*:	e8 04 04 14 	ld\.sh r4,r4\[r4<<0x1\]
 47.9962 ++ *[0-9a-f]*:	fc 0e 04 1e 	ld\.sh lr,lr\[lr<<0x1\]
 47.9963 ++ *[0-9a-f]*:	e0 0f 04 2b 	ld\.sh r11,r0\[pc<<0x2\]
 47.9964 ++ *[0-9a-f]*:	fa 06 04 2a 	ld\.sh r10,sp\[r6<<0x2\]
 47.9965 ++ *[0-9a-f]*:	e4 02 04 0c 	ld\.sh r12,r2\[r2\]
 47.9966 ++
 47.9967 ++[0-9a-f]* <ld_uh5>:
 47.9968 ++ *[0-9a-f]*:	fe 0f 05 0f 	ld\.uh pc,pc\[pc\]
 47.9969 ++ *[0-9a-f]*:	f8 0c 05 3c 	ld\.uh r12,r12\[r12<<0x3\]
 47.9970 ++ *[0-9a-f]*:	ea 05 05 25 	ld\.uh r5,r5\[r5<<0x2\]
 47.9971 ++ *[0-9a-f]*:	e8 04 05 14 	ld\.uh r4,r4\[r4<<0x1\]
 47.9972 ++ *[0-9a-f]*:	fc 0e 05 1e 	ld\.uh lr,lr\[lr<<0x1\]
 47.9973 ++ *[0-9a-f]*:	fe 0e 05 38 	ld\.uh r8,pc\[lr<<0x3\]
 47.9974 ++ *[0-9a-f]*:	e2 0f 05 16 	ld\.uh r6,r1\[pc<<0x1\]
 47.9975 ++ *[0-9a-f]*:	fc 0d 05 16 	ld\.uh r6,lr\[sp<<0x1\]
 47.9976 ++
 47.9977 ++[0-9a-f]* <ld_sb2>:
 47.9978 ++ *[0-9a-f]*:	fe 0f 06 0f 	ld\.sb pc,pc\[pc\]
 47.9979 ++ *[0-9a-f]*:	f8 0c 06 3c 	ld\.sb r12,r12\[r12<<0x3\]
 47.9980 ++ *[0-9a-f]*:	ea 05 06 25 	ld\.sb r5,r5\[r5<<0x2\]
 47.9981 ++ *[0-9a-f]*:	e8 04 06 14 	ld\.sb r4,r4\[r4<<0x1\]
 47.9982 ++ *[0-9a-f]*:	fc 0e 06 1e 	ld\.sb lr,lr\[lr<<0x1\]
 47.9983 ++ *[0-9a-f]*:	e2 0f 06 39 	ld\.sb r9,r1\[pc<<0x3\]
 47.9984 ++ *[0-9a-f]*:	e6 0b 06 10 	ld\.sb r0,r3\[r11<<0x1\]
 47.9985 ++ *[0-9a-f]*:	ea 05 06 1a 	ld\.sb r10,r5\[r5<<0x1\]
 47.9986 ++
 47.9987 ++[0-9a-f]* <ld_ub5>:
 47.9988 ++ *[0-9a-f]*:	fe 0f 07 0f 	ld\.ub pc,pc\[pc\]
 47.9989 ++ *[0-9a-f]*:	f8 0c 07 3c 	ld\.ub r12,r12\[r12<<0x3\]
 47.9990 ++ *[0-9a-f]*:	ea 05 07 25 	ld\.ub r5,r5\[r5<<0x2\]
 47.9991 ++ *[0-9a-f]*:	e8 04 07 14 	ld\.ub r4,r4\[r4<<0x1\]
 47.9992 ++ *[0-9a-f]*:	fc 0e 07 1e 	ld\.ub lr,lr\[lr<<0x1\]
 47.9993 ++ *[0-9a-f]*:	f8 07 07 36 	ld\.ub r6,r12\[r7<<0x3\]
 47.9994 ++ *[0-9a-f]*:	ec 0c 07 02 	ld\.ub r2,r6\[r12\]
 47.9995 ++ *[0-9a-f]*:	ee 0b 07 10 	ld\.ub r0,r7\[r11<<0x1\]
 47.9996 ++
 47.9997 ++[0-9a-f]* <st_d5>:
 47.9998 ++ *[0-9a-f]*:	fe 0f 08 0e 	st\.d pc\[pc\],lr
 47.9999 ++ *[0-9a-f]*:	f8 0c 08 3c 	st\.d r12\[r12<<0x3\],r12
47.10000 ++ *[0-9a-f]*:	ea 05 08 26 	st\.d r5\[r5<<0x2\],r6
47.10001 ++ *[0-9a-f]*:	e8 04 08 14 	st\.d r4\[r4<<0x1\],r4
47.10002 ++ *[0-9a-f]*:	fc 0e 08 1e 	st\.d lr\[lr<<0x1\],lr
47.10003 ++ *[0-9a-f]*:	e2 09 08 14 	st\.d r1\[r9<<0x1\],r4
47.10004 ++ *[0-9a-f]*:	f4 02 08 14 	st\.d r10\[r2<<0x1\],r4
47.10005 ++ *[0-9a-f]*:	f8 06 08 0e 	st\.d r12\[r6\],lr
47.10006 ++
47.10007 ++[0-9a-f]* <st_w5>:
47.10008 ++ *[0-9a-f]*:	fe 0f 09 0f 	st\.w pc\[pc\],pc
47.10009 ++ *[0-9a-f]*:	f8 0c 09 3c 	st\.w r12\[r12<<0x3\],r12
47.10010 ++ *[0-9a-f]*:	ea 05 09 25 	st\.w r5\[r5<<0x2\],r5
47.10011 ++ *[0-9a-f]*:	e8 04 09 14 	st\.w r4\[r4<<0x1\],r4
47.10012 ++ *[0-9a-f]*:	fc 0e 09 1e 	st\.w lr\[lr<<0x1\],lr
47.10013 ++ *[0-9a-f]*:	e2 0a 09 03 	st\.w r1\[r10\],r3
47.10014 ++ *[0-9a-f]*:	e0 0a 09 19 	st\.w r0\[r10<<0x1\],r9
47.10015 ++ *[0-9a-f]*:	e8 05 09 3f 	st\.w r4\[r5<<0x3\],pc
47.10016 ++
47.10017 ++[0-9a-f]* <st_h5>:
47.10018 ++ *[0-9a-f]*:	fe 0f 0a 0f 	st\.h pc\[pc\],pc
47.10019 ++ *[0-9a-f]*:	f8 0c 0a 3c 	st\.h r12\[r12<<0x3\],r12
47.10020 ++ *[0-9a-f]*:	ea 05 0a 25 	st\.h r5\[r5<<0x2\],r5
47.10021 ++ *[0-9a-f]*:	e8 04 0a 14 	st\.h r4\[r4<<0x1\],r4
47.10022 ++ *[0-9a-f]*:	fc 0e 0a 1e 	st\.h lr\[lr<<0x1\],lr
47.10023 ++ *[0-9a-f]*:	e4 09 0a 0b 	st\.h r2\[r9\],r11
47.10024 ++ *[0-9a-f]*:	ea 01 0a 2c 	st\.h r5\[r1<<0x2\],r12
47.10025 ++ *[0-9a-f]*:	fe 08 0a 23 	st\.h pc\[r8<<0x2\],r3
47.10026 ++
47.10027 ++[0-9a-f]* <st_b5>:
47.10028 ++ *[0-9a-f]*:	fe 0f 0b 0f 	st\.b pc\[pc\],pc
47.10029 ++ *[0-9a-f]*:	f8 0c 0b 3c 	st\.b r12\[r12<<0x3\],r12
47.10030 ++ *[0-9a-f]*:	ea 05 0b 25 	st\.b r5\[r5<<0x2\],r5
47.10031 ++ *[0-9a-f]*:	e8 04 0b 14 	st\.b r4\[r4<<0x1\],r4
47.10032 ++ *[0-9a-f]*:	fc 0e 0b 1e 	st\.b lr\[lr<<0x1\],lr
47.10033 ++ *[0-9a-f]*:	e2 08 0b 16 	st\.b r1\[r8<<0x1\],r6
47.10034 ++ *[0-9a-f]*:	fc 0e 0b 31 	st\.b lr\[lr<<0x3\],r1
47.10035 ++ *[0-9a-f]*:	ea 00 0b 2f 	st\.b r5\[r0<<0x2\],pc
47.10036 ++
47.10037 ++[0-9a-f]* <divs>:
47.10038 ++ *[0-9a-f]*:	fe 0f 0c 0f 	divs pc,pc,pc
47.10039 ++ *[0-9a-f]*:	f8 0c 0c 0c 	divs r12,r12,r12
47.10040 ++ *[0-9a-f]*:	ea 05 0c 05 	divs r5,r5,r5
47.10041 ++ *[0-9a-f]*:	e8 04 0c 04 	divs r4,r4,r4
47.10042 ++ *[0-9a-f]*:	fc 0e 0c 0e 	divs lr,lr,lr
47.10043 ++ *[0-9a-f]*:	fe 0f 0c 03 	divs r3,pc,pc
47.10044 ++ *[0-9a-f]*:	f8 02 0c 09 	divs r9,r12,r2
47.10045 ++ *[0-9a-f]*:	e8 01 0c 07 	divs r7,r4,r1
47.10046 ++
47.10047 ++[0-9a-f]* <add1>:
47.10048 ++ *[0-9a-f]*:	1e 0f       	add pc,pc
47.10049 ++ *[0-9a-f]*:	18 0c       	add r12,r12
47.10050 ++ *[0-9a-f]*:	0a 05       	add r5,r5
47.10051 ++ *[0-9a-f]*:	08 04       	add r4,r4
47.10052 ++ *[0-9a-f]*:	1c 0e       	add lr,lr
47.10053 ++ *[0-9a-f]*:	12 0c       	add r12,r9
47.10054 ++ *[0-9a-f]*:	06 06       	add r6,r3
47.10055 ++ *[0-9a-f]*:	18 0a       	add r10,r12
47.10056 ++
47.10057 ++[0-9a-f]* <sub1>:
47.10058 ++ *[0-9a-f]*:	1e 1f       	sub pc,pc
47.10059 ++ *[0-9a-f]*:	18 1c       	sub r12,r12
47.10060 ++ *[0-9a-f]*:	0a 15       	sub r5,r5
47.10061 ++ *[0-9a-f]*:	08 14       	sub r4,r4
47.10062 ++ *[0-9a-f]*:	1c 1e       	sub lr,lr
47.10063 ++ *[0-9a-f]*:	0c 1e       	sub lr,r6
47.10064 ++ *[0-9a-f]*:	1a 10       	sub r0,sp
47.10065 ++ *[0-9a-f]*:	18 16       	sub r6,r12
47.10066 ++
47.10067 ++[0-9a-f]* <rsub1>:
47.10068 ++ *[0-9a-f]*:	1e 2f       	rsub pc,pc
47.10069 ++ *[0-9a-f]*:	18 2c       	rsub r12,r12
47.10070 ++ *[0-9a-f]*:	0a 25       	rsub r5,r5
47.10071 ++ *[0-9a-f]*:	08 24       	rsub r4,r4
47.10072 ++ *[0-9a-f]*:	1c 2e       	rsub lr,lr
47.10073 ++ *[0-9a-f]*:	1a 2b       	rsub r11,sp
47.10074 ++ *[0-9a-f]*:	08 27       	rsub r7,r4
47.10075 ++ *[0-9a-f]*:	02 29       	rsub r9,r1
47.10076 ++
47.10077 ++[0-9a-f]* <cp1>:
47.10078 ++ *[0-9a-f]*:	1e 3f       	cp\.w pc,pc
47.10079 ++ *[0-9a-f]*:	18 3c       	cp\.w r12,r12
47.10080 ++ *[0-9a-f]*:	0a 35       	cp\.w r5,r5
47.10081 ++ *[0-9a-f]*:	08 34       	cp\.w r4,r4
47.10082 ++ *[0-9a-f]*:	1c 3e       	cp\.w lr,lr
47.10083 ++ *[0-9a-f]*:	04 36       	cp\.w r6,r2
47.10084 ++ *[0-9a-f]*:	12 30       	cp\.w r0,r9
47.10085 ++ *[0-9a-f]*:	1a 33       	cp\.w r3,sp
47.10086 ++
47.10087 ++[0-9a-f]* <or1>:
47.10088 ++ *[0-9a-f]*:	1e 4f       	or pc,pc
47.10089 ++ *[0-9a-f]*:	18 4c       	or r12,r12
47.10090 ++ *[0-9a-f]*:	0a 45       	or r5,r5
47.10091 ++ *[0-9a-f]*:	08 44       	or r4,r4
47.10092 ++ *[0-9a-f]*:	1c 4e       	or lr,lr
47.10093 ++ *[0-9a-f]*:	12 44       	or r4,r9
47.10094 ++ *[0-9a-f]*:	08 4b       	or r11,r4
47.10095 ++ *[0-9a-f]*:	00 44       	or r4,r0
47.10096 ++
47.10097 ++[0-9a-f]* <eor1>:
47.10098 ++ *[0-9a-f]*:	1e 5f       	eor pc,pc
47.10099 ++ *[0-9a-f]*:	18 5c       	eor r12,r12
47.10100 ++ *[0-9a-f]*:	0a 55       	eor r5,r5
47.10101 ++ *[0-9a-f]*:	08 54       	eor r4,r4
47.10102 ++ *[0-9a-f]*:	1c 5e       	eor lr,lr
47.10103 ++ *[0-9a-f]*:	16 5c       	eor r12,r11
47.10104 ++ *[0-9a-f]*:	02 50       	eor r0,r1
47.10105 ++ *[0-9a-f]*:	1e 55       	eor r5,pc
47.10106 ++
47.10107 ++[0-9a-f]* <and1>:
47.10108 ++ *[0-9a-f]*:	1e 6f       	and pc,pc
47.10109 ++ *[0-9a-f]*:	18 6c       	and r12,r12
47.10110 ++ *[0-9a-f]*:	0a 65       	and r5,r5
47.10111 ++ *[0-9a-f]*:	08 64       	and r4,r4
47.10112 ++ *[0-9a-f]*:	1c 6e       	and lr,lr
47.10113 ++ *[0-9a-f]*:	02 68       	and r8,r1
47.10114 ++ *[0-9a-f]*:	1a 60       	and r0,sp
47.10115 ++ *[0-9a-f]*:	0a 6a       	and r10,r5
47.10116 ++
47.10117 ++[0-9a-f]* <tst>:
47.10118 ++ *[0-9a-f]*:	1e 7f       	tst pc,pc
47.10119 ++ *[0-9a-f]*:	18 7c       	tst r12,r12
47.10120 ++ *[0-9a-f]*:	0a 75       	tst r5,r5
47.10121 ++ *[0-9a-f]*:	08 74       	tst r4,r4
47.10122 ++ *[0-9a-f]*:	1c 7e       	tst lr,lr
47.10123 ++ *[0-9a-f]*:	18 70       	tst r0,r12
47.10124 ++ *[0-9a-f]*:	0c 7a       	tst r10,r6
47.10125 ++ *[0-9a-f]*:	08 7d       	tst sp,r4
47.10126 ++
47.10127 ++[0-9a-f]* <andn>:
47.10128 ++ *[0-9a-f]*:	1e 8f       	andn pc,pc
47.10129 ++ *[0-9a-f]*:	18 8c       	andn r12,r12
47.10130 ++ *[0-9a-f]*:	0a 85       	andn r5,r5
47.10131 ++ *[0-9a-f]*:	08 84       	andn r4,r4
47.10132 ++ *[0-9a-f]*:	1c 8e       	andn lr,lr
47.10133 ++ *[0-9a-f]*:	18 89       	andn r9,r12
47.10134 ++ *[0-9a-f]*:	1a 8b       	andn r11,sp
47.10135 ++ *[0-9a-f]*:	0a 8c       	andn r12,r5
47.10136 ++
47.10137 ++[0-9a-f]* <mov3>:
47.10138 ++ *[0-9a-f]*:	1e 9f       	mov pc,pc
47.10139 ++ *[0-9a-f]*:	18 9c       	mov r12,r12
47.10140 ++ *[0-9a-f]*:	0a 95       	mov r5,r5
47.10141 ++ *[0-9a-f]*:	08 94       	mov r4,r4
47.10142 ++ *[0-9a-f]*:	1c 9e       	mov lr,lr
47.10143 ++ *[0-9a-f]*:	12 95       	mov r5,r9
47.10144 ++ *[0-9a-f]*:	16 9b       	mov r11,r11
47.10145 ++ *[0-9a-f]*:	1c 92       	mov r2,lr
47.10146 ++
47.10147 ++[0-9a-f]* <st_w1>:
47.10148 ++ *[0-9a-f]*:	1e af       	st\.w pc\+\+,pc
47.10149 ++ *[0-9a-f]*:	18 ac       	st\.w r12\+\+,r12
47.10150 ++ *[0-9a-f]*:	0a a5       	st\.w r5\+\+,r5
47.10151 ++ *[0-9a-f]*:	08 a4       	st\.w r4\+\+,r4
47.10152 ++ *[0-9a-f]*:	1c ae       	st\.w lr\+\+,lr
47.10153 ++ *[0-9a-f]*:	02 ab       	st\.w r1\+\+,r11
47.10154 ++ *[0-9a-f]*:	1a a0       	st\.w sp\+\+,r0
47.10155 ++ *[0-9a-f]*:	1a a1       	st\.w sp\+\+,r1
47.10156 ++
47.10157 ++[0-9a-f]* <st_h1>:
47.10158 ++ *[0-9a-f]*:	1e bf       	st\.h pc\+\+,pc
47.10159 ++ *[0-9a-f]*:	18 bc       	st\.h r12\+\+,r12
47.10160 ++ *[0-9a-f]*:	0a b5       	st\.h r5\+\+,r5
47.10161 ++ *[0-9a-f]*:	08 b4       	st\.h r4\+\+,r4
47.10162 ++ *[0-9a-f]*:	1c be       	st\.h lr\+\+,lr
47.10163 ++ *[0-9a-f]*:	18 bd       	st\.h r12\+\+,sp
47.10164 ++ *[0-9a-f]*:	0e be       	st\.h r7\+\+,lr
47.10165 ++ *[0-9a-f]*:	0e b4       	st\.h r7\+\+,r4
47.10166 ++
47.10167 ++[0-9a-f]* <st_b1>:
47.10168 ++ *[0-9a-f]*:	1e cf       	st\.b pc\+\+,pc
47.10169 ++ *[0-9a-f]*:	18 cc       	st\.b r12\+\+,r12
47.10170 ++ *[0-9a-f]*:	0a c5       	st\.b r5\+\+,r5
47.10171 ++ *[0-9a-f]*:	08 c4       	st\.b r4\+\+,r4
47.10172 ++ *[0-9a-f]*:	1c ce       	st\.b lr\+\+,lr
47.10173 ++ *[0-9a-f]*:	12 cd       	st\.b r9\+\+,sp
47.10174 ++ *[0-9a-f]*:	02 cd       	st\.b r1\+\+,sp
47.10175 ++ *[0-9a-f]*:	00 c4       	st\.b r0\+\+,r4
47.10176 ++
47.10177 ++[0-9a-f]* <st_w2>:
47.10178 ++ *[0-9a-f]*:	1e df       	st\.w --pc,pc
47.10179 ++ *[0-9a-f]*:	18 dc       	st\.w --r12,r12
47.10180 ++ *[0-9a-f]*:	0a d5       	st\.w --r5,r5
47.10181 ++ *[0-9a-f]*:	08 d4       	st\.w --r4,r4
47.10182 ++ *[0-9a-f]*:	1c de       	st\.w --lr,lr
47.10183 ++ *[0-9a-f]*:	02 d7       	st\.w --r1,r7
47.10184 ++ *[0-9a-f]*:	06 d9       	st\.w --r3,r9
47.10185 ++ *[0-9a-f]*:	0a d5       	st\.w --r5,r5
47.10186 ++
47.10187 ++[0-9a-f]* <st_h2>:
47.10188 ++ *[0-9a-f]*:	1e ef       	st\.h --pc,pc
47.10189 ++ *[0-9a-f]*:	18 ec       	st\.h --r12,r12
47.10190 ++ *[0-9a-f]*:	0a e5       	st\.h --r5,r5
47.10191 ++ *[0-9a-f]*:	08 e4       	st\.h --r4,r4
47.10192 ++ *[0-9a-f]*:	1c ee       	st\.h --lr,lr
47.10193 ++ *[0-9a-f]*:	0a e7       	st\.h --r5,r7
47.10194 ++ *[0-9a-f]*:	10 e8       	st\.h --r8,r8
47.10195 ++ *[0-9a-f]*:	0e e2       	st\.h --r7,r2
47.10196 ++
47.10197 ++[0-9a-f]* <st_b2>:
47.10198 ++ *[0-9a-f]*:	1e ff       	st\.b --pc,pc
47.10199 ++ *[0-9a-f]*:	18 fc       	st\.b --r12,r12
47.10200 ++ *[0-9a-f]*:	0a f5       	st\.b --r5,r5
47.10201 ++ *[0-9a-f]*:	08 f4       	st\.b --r4,r4
47.10202 ++ *[0-9a-f]*:	1c fe       	st\.b --lr,lr
47.10203 ++ *[0-9a-f]*:	1a fd       	st\.b --sp,sp
47.10204 ++ *[0-9a-f]*:	1a fb       	st\.b --sp,r11
47.10205 ++ *[0-9a-f]*:	08 f5       	st\.b --r4,r5
47.10206 ++
47.10207 ++[0-9a-f]* <ld_w1>:
47.10208 ++ *[0-9a-f]*:	1f 0f       	ld\.w pc,pc\+\+
47.10209 ++ *[0-9a-f]*:	19 0c       	ld\.w r12,r12\+\+
47.10210 ++ *[0-9a-f]*:	0b 05       	ld\.w r5,r5\+\+
47.10211 ++ *[0-9a-f]*:	09 04       	ld\.w r4,r4\+\+
47.10212 ++ *[0-9a-f]*:	1d 0e       	ld\.w lr,lr\+\+
47.10213 ++ *[0-9a-f]*:	0f 03       	ld\.w r3,r7\+\+
47.10214 ++ *[0-9a-f]*:	1d 03       	ld\.w r3,lr\+\+
47.10215 ++ *[0-9a-f]*:	0b 0c       	ld\.w r12,r5\+\+
47.10216 ++
47.10217 ++[0-9a-f]* <ld_sh1>:
47.10218 ++ *[0-9a-f]*:	1f 1f       	ld\.sh pc,pc\+\+
47.10219 ++ *[0-9a-f]*:	19 1c       	ld\.sh r12,r12\+\+
47.10220 ++ *[0-9a-f]*:	0b 15       	ld\.sh r5,r5\+\+
47.10221 ++ *[0-9a-f]*:	09 14       	ld\.sh r4,r4\+\+
47.10222 ++ *[0-9a-f]*:	1d 1e       	ld\.sh lr,lr\+\+
47.10223 ++ *[0-9a-f]*:	05 1b       	ld\.sh r11,r2\+\+
47.10224 ++ *[0-9a-f]*:	11 12       	ld\.sh r2,r8\+\+
47.10225 ++ *[0-9a-f]*:	0d 17       	ld\.sh r7,r6\+\+
47.10226 ++
47.10227 ++[0-9a-f]* <ld_uh1>:
47.10228 ++ *[0-9a-f]*:	1f 2f       	ld\.uh pc,pc\+\+
47.10229 ++ *[0-9a-f]*:	19 2c       	ld\.uh r12,r12\+\+
47.10230 ++ *[0-9a-f]*:	0b 25       	ld\.uh r5,r5\+\+
47.10231 ++ *[0-9a-f]*:	09 24       	ld\.uh r4,r4\+\+
47.10232 ++ *[0-9a-f]*:	1d 2e       	ld\.uh lr,lr\+\+
47.10233 ++ *[0-9a-f]*:	0f 26       	ld\.uh r6,r7\+\+
47.10234 ++ *[0-9a-f]*:	17 2a       	ld\.uh r10,r11\+\+
47.10235 ++ *[0-9a-f]*:	09 2e       	ld\.uh lr,r4\+\+
47.10236 ++
47.10237 ++[0-9a-f]* <ld_ub1>:
47.10238 ++ *[0-9a-f]*:	1f 3f       	ld\.ub pc,pc\+\+
47.10239 ++ *[0-9a-f]*:	19 3c       	ld\.ub r12,r12\+\+
47.10240 ++ *[0-9a-f]*:	0b 35       	ld\.ub r5,r5\+\+
47.10241 ++ *[0-9a-f]*:	09 34       	ld\.ub r4,r4\+\+
47.10242 ++ *[0-9a-f]*:	1d 3e       	ld\.ub lr,lr\+\+
47.10243 ++ *[0-9a-f]*:	1d 38       	ld\.ub r8,lr\+\+
47.10244 ++ *[0-9a-f]*:	19 3c       	ld\.ub r12,r12\+\+
47.10245 ++ *[0-9a-f]*:	15 3b       	ld\.ub r11,r10\+\+
47.10246 ++
47.10247 ++[0-9a-f]* <ld_w2>:
47.10248 ++ *[0-9a-f]*:	1f 4f       	ld\.w pc,--pc
47.10249 ++ *[0-9a-f]*:	19 4c       	ld\.w r12,--r12
47.10250 ++ *[0-9a-f]*:	0b 45       	ld\.w r5,--r5
47.10251 ++ *[0-9a-f]*:	09 44       	ld\.w r4,--r4
47.10252 ++ *[0-9a-f]*:	1d 4e       	ld\.w lr,--lr
47.10253 ++ *[0-9a-f]*:	1d 4a       	ld\.w r10,--lr
47.10254 ++ *[0-9a-f]*:	13 4c       	ld\.w r12,--r9
47.10255 ++ *[0-9a-f]*:	0b 46       	ld\.w r6,--r5
47.10256 ++
47.10257 ++[0-9a-f]* <ld_sh2>:
47.10258 ++ *[0-9a-f]*:	1f 5f       	ld\.sh pc,--pc
47.10259 ++ *[0-9a-f]*:	19 5c       	ld\.sh r12,--r12
47.10260 ++ *[0-9a-f]*:	0b 55       	ld\.sh r5,--r5
47.10261 ++ *[0-9a-f]*:	09 54       	ld\.sh r4,--r4
47.10262 ++ *[0-9a-f]*:	1d 5e       	ld\.sh lr,--lr
47.10263 ++ *[0-9a-f]*:	15 5f       	ld\.sh pc,--r10
47.10264 ++ *[0-9a-f]*:	07 56       	ld\.sh r6,--r3
47.10265 ++ *[0-9a-f]*:	0d 54       	ld\.sh r4,--r6
47.10266 ++
47.10267 ++[0-9a-f]* <ld_uh2>:
47.10268 ++ *[0-9a-f]*:	1f 6f       	ld\.uh pc,--pc
47.10269 ++ *[0-9a-f]*:	19 6c       	ld\.uh r12,--r12
47.10270 ++ *[0-9a-f]*:	0b 65       	ld\.uh r5,--r5
47.10271 ++ *[0-9a-f]*:	09 64       	ld\.uh r4,--r4
47.10272 ++ *[0-9a-f]*:	1d 6e       	ld\.uh lr,--lr
47.10273 ++ *[0-9a-f]*:	05 63       	ld\.uh r3,--r2
47.10274 ++ *[0-9a-f]*:	01 61       	ld\.uh r1,--r0
47.10275 ++ *[0-9a-f]*:	13 62       	ld\.uh r2,--r9
47.10276 ++
47.10277 ++[0-9a-f]* <ld_ub2>:
47.10278 ++ *[0-9a-f]*:	1f 7f       	ld\.ub pc,--pc
47.10279 ++ *[0-9a-f]*:	19 7c       	ld\.ub r12,--r12
47.10280 ++ *[0-9a-f]*:	0b 75       	ld\.ub r5,--r5
47.10281 ++ *[0-9a-f]*:	09 74       	ld\.ub r4,--r4
47.10282 ++ *[0-9a-f]*:	1d 7e       	ld\.ub lr,--lr
47.10283 ++ *[0-9a-f]*:	03 71       	ld\.ub r1,--r1
47.10284 ++ *[0-9a-f]*:	0d 70       	ld\.ub r0,--r6
47.10285 ++ *[0-9a-f]*:	0f 72       	ld\.ub r2,--r7
47.10286 ++
47.10287 ++[0-9a-f]* <ld_ub3>:
47.10288 ++ *[0-9a-f]*:	1f 8f       	ld\.ub pc,pc\[0x0\]
47.10289 ++ *[0-9a-f]*:	19 fc       	ld\.ub r12,r12\[0x7\]
47.10290 ++ *[0-9a-f]*:	0b c5       	ld\.ub r5,r5\[0x4\]
47.10291 ++ *[0-9a-f]*:	09 b4       	ld\.ub r4,r4\[0x3\]
47.10292 ++ *[0-9a-f]*:	1d 9e       	ld\.ub lr,lr\[0x1\]
47.10293 ++ *[0-9a-f]*:	13 e6       	ld\.ub r6,r9\[0x6\]
47.10294 ++ *[0-9a-f]*:	1d c2       	ld\.ub r2,lr\[0x4\]
47.10295 ++ *[0-9a-f]*:	11 81       	ld\.ub r1,r8\[0x0\]
47.10296 ++
47.10297 ++[0-9a-f]* <sub3_sp>:
47.10298 ++ *[0-9a-f]*:	20 0d       	sub sp,0
47.10299 ++ *[0-9a-f]*:	2f fd       	sub sp,-4
47.10300 ++ *[0-9a-f]*:	28 0d       	sub sp,-512
47.10301 ++ *[0-9a-f]*:	27 fd       	sub sp,508
47.10302 ++ *[0-9a-f]*:	20 1d       	sub sp,4
47.10303 ++ *[0-9a-f]*:	20 bd       	sub sp,44
47.10304 ++ *[0-9a-f]*:	20 2d       	sub sp,8
47.10305 ++ *[0-9a-f]*:	25 7d       	sub sp,348
47.10306 ++
47.10307 ++[0-9a-f]* <sub3>:
47.10308 ++ *[0-9a-f]*:	20 0f       	sub pc,0
47.10309 ++ *[0-9a-f]*:	2f fc       	sub r12,-1
47.10310 ++ *[0-9a-f]*:	28 05       	sub r5,-128
47.10311 ++ *[0-9a-f]*:	27 f4       	sub r4,127
47.10312 ++ *[0-9a-f]*:	20 1e       	sub lr,1
47.10313 ++ *[0-9a-f]*:	2d 76       	sub r6,-41
47.10314 ++ *[0-9a-f]*:	22 54       	sub r4,37
47.10315 ++ *[0-9a-f]*:	23 8c       	sub r12,56
47.10316 ++
47.10317 ++[0-9a-f]* <mov1>:
47.10318 ++ *[0-9a-f]*:	30 0f       	mov pc,0
47.10319 ++ *[0-9a-f]*:	3f fc       	mov r12,-1
47.10320 ++ *[0-9a-f]*:	38 05       	mov r5,-128
47.10321 ++ *[0-9a-f]*:	37 f4       	mov r4,127
47.10322 ++ *[0-9a-f]*:	30 1e       	mov lr,1
47.10323 ++ *[0-9a-f]*:	30 ef       	mov pc,14
47.10324 ++ *[0-9a-f]*:	39 c6       	mov r6,-100
47.10325 ++ *[0-9a-f]*:	38 6e       	mov lr,-122
47.10326 ++
47.10327 ++[0-9a-f]* <lddsp>:
47.10328 ++ *[0-9a-f]*:	40 0f       	lddsp pc,sp\[0x0\]
47.10329 ++ *[0-9a-f]*:	47 fc       	lddsp r12,sp\[0x1fc\]
47.10330 ++ *[0-9a-f]*:	44 05       	lddsp r5,sp\[0x100\]
47.10331 ++ *[0-9a-f]*:	43 f4       	lddsp r4,sp\[0xfc\]
47.10332 ++ *[0-9a-f]*:	40 1e       	lddsp lr,sp\[0x4\]
47.10333 ++ *[0-9a-f]*:	44 0e       	lddsp lr,sp\[0x100\]
47.10334 ++ *[0-9a-f]*:	40 5c       	lddsp r12,sp\[0x14\]
47.10335 ++ *[0-9a-f]*:	47 69       	lddsp r9,sp\[0x1d8\]
47.10336 ++
47.10337 ++[0-9a-f]* <lddpc>:
47.10338 ++ *[0-9a-f]*:	48 0f       	lddpc pc,[0-9a-f]* <.*>
47.10339 ++ *[0-9a-f]*:	4f f0       	lddpc r0,[0-9a-f]* <.*>
47.10340 ++ *[0-9a-f]*:	4c 08       	lddpc r8,[0-9a-f]* <.*>
47.10341 ++ *[0-9a-f]*:	4b f7       	lddpc r7,[0-9a-f]* <.*>
47.10342 ++ *[0-9a-f]*:	48 1e       	lddpc lr,[0-9a-f]* <.*>
47.10343 ++ *[0-9a-f]*:	4f 6d       	lddpc sp,[0-9a-f]* <.*>
47.10344 ++ *[0-9a-f]*:	49 e6       	lddpc r6,[0-9a-f]* <.*>
47.10345 ++ *[0-9a-f]*:	48 7b       	lddpc r11,[0-9a-f]* <.*>
47.10346 ++
47.10347 ++[0-9a-f]* <stdsp>:
47.10348 ++ *[0-9a-f]*:	50 0f       	stdsp sp\[0x0\],pc
47.10349 ++ *[0-9a-f]*:	57 fc       	stdsp sp\[0x1fc\],r12
47.10350 ++ *[0-9a-f]*:	54 05       	stdsp sp\[0x100\],r5
47.10351 ++ *[0-9a-f]*:	53 f4       	stdsp sp\[0xfc\],r4
47.10352 ++ *[0-9a-f]*:	50 1e       	stdsp sp\[0x4\],lr
47.10353 ++ *[0-9a-f]*:	54 cf       	stdsp sp\[0x130\],pc
47.10354 ++ *[0-9a-f]*:	54 00       	stdsp sp\[0x100\],r0
47.10355 ++ *[0-9a-f]*:	55 45       	stdsp sp\[0x150\],r5
47.10356 ++
47.10357 ++[0-9a-f]* <cp2>:
47.10358 ++ *[0-9a-f]*:	58 0f       	cp.w pc,0
47.10359 ++ *[0-9a-f]*:	5b fc       	cp.w r12,-1
47.10360 ++ *[0-9a-f]*:	5a 05       	cp.w r5,-32
47.10361 ++ *[0-9a-f]*:	59 f4       	cp.w r4,31
47.10362 ++ *[0-9a-f]*:	58 1e       	cp.w lr,1
47.10363 ++ *[0-9a-f]*:	58 38       	cp.w r8,3
47.10364 ++ *[0-9a-f]*:	59 0e       	cp.w lr,16
47.10365 ++ *[0-9a-f]*:	5a 67       	cp.w r7,-26
47.10366 ++
47.10367 ++[0-9a-f]* <acr>:
47.10368 ++ *[0-9a-f]*:	5c 0f       	acr pc
47.10369 ++ *[0-9a-f]*:	5c 0c       	acr r12
47.10370 ++ *[0-9a-f]*:	5c 05       	acr r5
47.10371 ++ *[0-9a-f]*:	5c 04       	acr r4
47.10372 ++ *[0-9a-f]*:	5c 0e       	acr lr
47.10373 ++ *[0-9a-f]*:	5c 02       	acr r2
47.10374 ++ *[0-9a-f]*:	5c 0c       	acr r12
47.10375 ++ *[0-9a-f]*:	5c 0f       	acr pc
47.10376 ++
47.10377 ++[0-9a-f]* <scr>:
47.10378 ++ *[0-9a-f]*:	5c 1f       	scr pc
47.10379 ++ *[0-9a-f]*:	5c 1c       	scr r12
47.10380 ++ *[0-9a-f]*:	5c 15       	scr r5
47.10381 ++ *[0-9a-f]*:	5c 14       	scr r4
47.10382 ++ *[0-9a-f]*:	5c 1e       	scr lr
47.10383 ++ *[0-9a-f]*:	5c 1f       	scr pc
47.10384 ++ *[0-9a-f]*:	5c 16       	scr r6
47.10385 ++ *[0-9a-f]*:	5c 11       	scr r1
47.10386 ++
47.10387 ++[0-9a-f]* <cpc0>:
47.10388 ++ *[0-9a-f]*:	5c 2f       	cpc pc
47.10389 ++ *[0-9a-f]*:	5c 2c       	cpc r12
47.10390 ++ *[0-9a-f]*:	5c 25       	cpc r5
47.10391 ++ *[0-9a-f]*:	5c 24       	cpc r4
47.10392 ++ *[0-9a-f]*:	5c 2e       	cpc lr
47.10393 ++ *[0-9a-f]*:	5c 2f       	cpc pc
47.10394 ++ *[0-9a-f]*:	5c 24       	cpc r4
47.10395 ++ *[0-9a-f]*:	5c 29       	cpc r9
47.10396 ++
47.10397 ++[0-9a-f]* <neg>:
47.10398 ++ *[0-9a-f]*:	5c 3f       	neg pc
47.10399 ++ *[0-9a-f]*:	5c 3c       	neg r12
47.10400 ++ *[0-9a-f]*:	5c 35       	neg r5
47.10401 ++ *[0-9a-f]*:	5c 34       	neg r4
47.10402 ++ *[0-9a-f]*:	5c 3e       	neg lr
47.10403 ++ *[0-9a-f]*:	5c 37       	neg r7
47.10404 ++ *[0-9a-f]*:	5c 31       	neg r1
47.10405 ++ *[0-9a-f]*:	5c 39       	neg r9
47.10406 ++
47.10407 ++[0-9a-f]* <abs>:
47.10408 ++ *[0-9a-f]*:	5c 4f       	abs pc
47.10409 ++ *[0-9a-f]*:	5c 4c       	abs r12
47.10410 ++ *[0-9a-f]*:	5c 45       	abs r5
47.10411 ++ *[0-9a-f]*:	5c 44       	abs r4
47.10412 ++ *[0-9a-f]*:	5c 4e       	abs lr
47.10413 ++ *[0-9a-f]*:	5c 46       	abs r6
47.10414 ++ *[0-9a-f]*:	5c 46       	abs r6
47.10415 ++ *[0-9a-f]*:	5c 44       	abs r4
47.10416 ++
47.10417 ++[0-9a-f]* <castu_b>:
47.10418 ++ *[0-9a-f]*:	5c 5f       	castu\.b pc
47.10419 ++ *[0-9a-f]*:	5c 5c       	castu\.b r12
47.10420 ++ *[0-9a-f]*:	5c 55       	castu\.b r5
47.10421 ++ *[0-9a-f]*:	5c 54       	castu\.b r4
47.10422 ++ *[0-9a-f]*:	5c 5e       	castu\.b lr
47.10423 ++ *[0-9a-f]*:	5c 57       	castu\.b r7
47.10424 ++ *[0-9a-f]*:	5c 5d       	castu\.b sp
47.10425 ++ *[0-9a-f]*:	5c 59       	castu\.b r9
47.10426 ++
47.10427 ++[0-9a-f]* <casts_b>:
47.10428 ++ *[0-9a-f]*:	5c 6f       	casts\.b pc
47.10429 ++ *[0-9a-f]*:	5c 6c       	casts\.b r12
47.10430 ++ *[0-9a-f]*:	5c 65       	casts\.b r5
47.10431 ++ *[0-9a-f]*:	5c 64       	casts\.b r4
47.10432 ++ *[0-9a-f]*:	5c 6e       	casts\.b lr
47.10433 ++ *[0-9a-f]*:	5c 6b       	casts\.b r11
47.10434 ++ *[0-9a-f]*:	5c 61       	casts\.b r1
47.10435 ++ *[0-9a-f]*:	5c 6a       	casts\.b r10
47.10436 ++
47.10437 ++[0-9a-f]* <castu_h>:
47.10438 ++ *[0-9a-f]*:	5c 7f       	castu\.h pc
47.10439 ++ *[0-9a-f]*:	5c 7c       	castu\.h r12
47.10440 ++ *[0-9a-f]*:	5c 75       	castu\.h r5
47.10441 ++ *[0-9a-f]*:	5c 74       	castu\.h r4
47.10442 ++ *[0-9a-f]*:	5c 7e       	castu\.h lr
47.10443 ++ *[0-9a-f]*:	5c 7a       	castu\.h r10
47.10444 ++ *[0-9a-f]*:	5c 7b       	castu\.h r11
47.10445 ++ *[0-9a-f]*:	5c 71       	castu\.h r1
47.10446 ++
47.10447 ++[0-9a-f]* <casts_h>:
47.10448 ++ *[0-9a-f]*:	5c 8f       	casts\.h pc
47.10449 ++ *[0-9a-f]*:	5c 8c       	casts\.h r12
47.10450 ++ *[0-9a-f]*:	5c 85       	casts\.h r5
47.10451 ++ *[0-9a-f]*:	5c 84       	casts\.h r4
47.10452 ++ *[0-9a-f]*:	5c 8e       	casts\.h lr
47.10453 ++ *[0-9a-f]*:	5c 80       	casts\.h r0
47.10454 ++ *[0-9a-f]*:	5c 85       	casts\.h r5
47.10455 ++ *[0-9a-f]*:	5c 89       	casts\.h r9
47.10456 ++
47.10457 ++[0-9a-f]* <brev>:
47.10458 ++ *[0-9a-f]*:	5c 9f       	brev pc
47.10459 ++ *[0-9a-f]*:	5c 9c       	brev r12
47.10460 ++ *[0-9a-f]*:	5c 95       	brev r5
47.10461 ++ *[0-9a-f]*:	5c 94       	brev r4
47.10462 ++ *[0-9a-f]*:	5c 9e       	brev lr
47.10463 ++ *[0-9a-f]*:	5c 95       	brev r5
47.10464 ++ *[0-9a-f]*:	5c 9a       	brev r10
47.10465 ++ *[0-9a-f]*:	5c 98       	brev r8
47.10466 ++
47.10467 ++[0-9a-f]* <swap_h>:
47.10468 ++ *[0-9a-f]*:	5c af       	swap\.h pc
47.10469 ++ *[0-9a-f]*:	5c ac       	swap\.h r12
47.10470 ++ *[0-9a-f]*:	5c a5       	swap\.h r5
47.10471 ++ *[0-9a-f]*:	5c a4       	swap\.h r4
47.10472 ++ *[0-9a-f]*:	5c ae       	swap\.h lr
47.10473 ++ *[0-9a-f]*:	5c a7       	swap\.h r7
47.10474 ++ *[0-9a-f]*:	5c a0       	swap\.h r0
47.10475 ++ *[0-9a-f]*:	5c a8       	swap\.h r8
47.10476 ++
47.10477 ++[0-9a-f]* <swap_b>:
47.10478 ++ *[0-9a-f]*:	5c bf       	swap\.b pc
47.10479 ++ *[0-9a-f]*:	5c bc       	swap\.b r12
47.10480 ++ *[0-9a-f]*:	5c b5       	swap\.b r5
47.10481 ++ *[0-9a-f]*:	5c b4       	swap\.b r4
47.10482 ++ *[0-9a-f]*:	5c be       	swap\.b lr
47.10483 ++ *[0-9a-f]*:	5c ba       	swap\.b r10
47.10484 ++ *[0-9a-f]*:	5c bc       	swap\.b r12
47.10485 ++ *[0-9a-f]*:	5c b1       	swap\.b r1
47.10486 ++
47.10487 ++[0-9a-f]* <swap_bh>:
47.10488 ++ *[0-9a-f]*:	5c cf       	swap\.bh pc
47.10489 ++ *[0-9a-f]*:	5c cc       	swap\.bh r12
47.10490 ++ *[0-9a-f]*:	5c c5       	swap\.bh r5
47.10491 ++ *[0-9a-f]*:	5c c4       	swap\.bh r4
47.10492 ++ *[0-9a-f]*:	5c ce       	swap\.bh lr
47.10493 ++ *[0-9a-f]*:	5c c9       	swap\.bh r9
47.10494 ++ *[0-9a-f]*:	5c c4       	swap\.bh r4
47.10495 ++ *[0-9a-f]*:	5c c1       	swap\.bh r1
47.10496 ++
47.10497 ++[0-9a-f]* <One_s_compliment>:
47.10498 ++ *[0-9a-f]*:	5c df       	com pc
47.10499 ++ *[0-9a-f]*:	5c dc       	com r12
47.10500 ++ *[0-9a-f]*:	5c d5       	com r5
47.10501 ++ *[0-9a-f]*:	5c d4       	com r4
47.10502 ++ *[0-9a-f]*:	5c de       	com lr
47.10503 ++ *[0-9a-f]*:	5c d2       	com r2
47.10504 ++ *[0-9a-f]*:	5c d2       	com r2
47.10505 ++ *[0-9a-f]*:	5c d7       	com r7
47.10506 ++
47.10507 ++[0-9a-f]* <tnbz>:
47.10508 ++ *[0-9a-f]*:	5c ef       	tnbz pc
47.10509 ++ *[0-9a-f]*:	5c ec       	tnbz r12
47.10510 ++ *[0-9a-f]*:	5c e5       	tnbz r5
47.10511 ++ *[0-9a-f]*:	5c e4       	tnbz r4
47.10512 ++ *[0-9a-f]*:	5c ee       	tnbz lr
47.10513 ++ *[0-9a-f]*:	5c e8       	tnbz r8
47.10514 ++ *[0-9a-f]*:	5c ec       	tnbz r12
47.10515 ++ *[0-9a-f]*:	5c ef       	tnbz pc
47.10516 ++
47.10517 ++[0-9a-f]* <rol>:
47.10518 ++ *[0-9a-f]*:	5c ff       	rol pc
47.10519 ++ *[0-9a-f]*:	5c fc       	rol r12
47.10520 ++ *[0-9a-f]*:	5c f5       	rol r5
47.10521 ++ *[0-9a-f]*:	5c f4       	rol r4
47.10522 ++ *[0-9a-f]*:	5c fe       	rol lr
47.10523 ++ *[0-9a-f]*:	5c fa       	rol r10
47.10524 ++ *[0-9a-f]*:	5c f9       	rol r9
47.10525 ++ *[0-9a-f]*:	5c f5       	rol r5
47.10526 ++
47.10527 ++[0-9a-f]* <ror>:
47.10528 ++ *[0-9a-f]*:	5d 0f       	ror pc
47.10529 ++ *[0-9a-f]*:	5d 0c       	ror r12
47.10530 ++ *[0-9a-f]*:	5d 05       	ror r5
47.10531 ++ *[0-9a-f]*:	5d 04       	ror r4
47.10532 ++ *[0-9a-f]*:	5d 0e       	ror lr
47.10533 ++ *[0-9a-f]*:	5d 08       	ror r8
47.10534 ++ *[0-9a-f]*:	5d 04       	ror r4
47.10535 ++ *[0-9a-f]*:	5d 07       	ror r7
47.10536 ++
47.10537 ++[0-9a-f]* <icall>:
47.10538 ++ *[0-9a-f]*:	5d 1f       	icall pc
47.10539 ++ *[0-9a-f]*:	5d 1c       	icall r12
47.10540 ++ *[0-9a-f]*:	5d 15       	icall r5
47.10541 ++ *[0-9a-f]*:	5d 14       	icall r4
47.10542 ++ *[0-9a-f]*:	5d 1e       	icall lr
47.10543 ++ *[0-9a-f]*:	5d 13       	icall r3
47.10544 ++ *[0-9a-f]*:	5d 11       	icall r1
47.10545 ++ *[0-9a-f]*:	5d 13       	icall r3
47.10546 ++
47.10547 ++[0-9a-f]* <mustr>:
47.10548 ++ *[0-9a-f]*:	5d 2f       	mustr pc
47.10549 ++ *[0-9a-f]*:	5d 2c       	mustr r12
47.10550 ++ *[0-9a-f]*:	5d 25       	mustr r5
47.10551 ++ *[0-9a-f]*:	5d 24       	mustr r4
47.10552 ++ *[0-9a-f]*:	5d 2e       	mustr lr
47.10553 ++ *[0-9a-f]*:	5d 21       	mustr r1
47.10554 ++ *[0-9a-f]*:	5d 24       	mustr r4
47.10555 ++ *[0-9a-f]*:	5d 2c       	mustr r12
47.10556 ++
47.10557 ++[0-9a-f]* <musfr>:
47.10558 ++ *[0-9a-f]*:	5d 3f       	musfr pc
47.10559 ++ *[0-9a-f]*:	5d 3c       	musfr r12
47.10560 ++ *[0-9a-f]*:	5d 35       	musfr r5
47.10561 ++ *[0-9a-f]*:	5d 34       	musfr r4
47.10562 ++ *[0-9a-f]*:	5d 3e       	musfr lr
47.10563 ++ *[0-9a-f]*:	5d 3b       	musfr r11
47.10564 ++ *[0-9a-f]*:	5d 3c       	musfr r12
47.10565 ++ *[0-9a-f]*:	5d 32       	musfr r2
47.10566 ++
47.10567 ++[0-9a-f]* <ret_cond>:
47.10568 ++ *[0-9a-f]*:	5e 0f       	reteq 1
47.10569 ++ *[0-9a-f]*:	5e fc       	retal r12
47.10570 ++ *[0-9a-f]*:	5e 85       	retls r5
47.10571 ++ *[0-9a-f]*:	5e 74       	retpl r4
47.10572 ++ *[0-9a-f]*:	5e 1e       	retne -1
47.10573 ++ *[0-9a-f]*:	5e 90       	retgt r0
47.10574 ++ *[0-9a-f]*:	5e 9c       	retgt r12
47.10575 ++ *[0-9a-f]*:	5e 4a       	retge r10
47.10576 ++
47.10577 ++[0-9a-f]* <sr_cond>:
47.10578 ++ *[0-9a-f]*:	5f 0f       	sreq pc
47.10579 ++ *[0-9a-f]*:	5f fc       	sral r12
47.10580 ++ *[0-9a-f]*:	5f 85       	srls r5
47.10581 ++ *[0-9a-f]*:	5f 74       	srpl r4
47.10582 ++ *[0-9a-f]*:	5f 1e       	srne lr
47.10583 ++ *[0-9a-f]*:	5f 50       	srlt r0
47.10584 ++ *[0-9a-f]*:	5f fd       	sral sp
47.10585 ++ *[0-9a-f]*:	5f 49       	srge r9
47.10586 ++
47.10587 ++[0-9a-f]* <ld_w3>:
47.10588 ++ *[0-9a-f]*:	7e 0f       	ld\.w pc,pc\[0x0\]
47.10589 ++ *[0-9a-f]*:	79 fc       	ld\.w r12,r12\[0x7c\]
47.10590 ++ *[0-9a-f]*:	6b 05       	ld\.w r5,r5\[0x40\]
47.10591 ++ *[0-9a-f]*:	68 f4       	ld\.w r4,r4\[0x3c\]
47.10592 ++ *[0-9a-f]*:	7c 1e       	ld\.w lr,lr\[0x4\]
47.10593 ++ *[0-9a-f]*:	64 dd       	ld\.w sp,r2\[0x34\]
47.10594 ++ *[0-9a-f]*:	62 29       	ld\.w r9,r1\[0x8\]
47.10595 ++ *[0-9a-f]*:	7a f5       	ld\.w r5,sp\[0x3c\]
47.10596 ++
47.10597 ++[0-9a-f]* <ld_sh3>:
47.10598 ++ *[0-9a-f]*:	9e 0f       	ld\.sh pc,pc\[0x0\]
47.10599 ++ *[0-9a-f]*:	98 7c       	ld\.sh r12,r12\[0xe\]
47.10600 ++ *[0-9a-f]*:	8a 45       	ld\.sh r5,r5\[0x8\]
47.10601 ++ *[0-9a-f]*:	88 34       	ld\.sh r4,r4\[0x6\]
47.10602 ++ *[0-9a-f]*:	9c 1e       	ld\.sh lr,lr\[0x2\]
47.10603 ++ *[0-9a-f]*:	84 44       	ld\.sh r4,r2\[0x8\]
47.10604 ++ *[0-9a-f]*:	9c 5d       	ld\.sh sp,lr\[0xa\]
47.10605 ++ *[0-9a-f]*:	96 12       	ld\.sh r2,r11\[0x2\]
47.10606 ++
47.10607 ++[0-9a-f]* <ld_uh3>:
47.10608 ++ *[0-9a-f]*:	9e 8f       	ld\.uh pc,pc\[0x0\]
47.10609 ++ *[0-9a-f]*:	98 fc       	ld\.uh r12,r12\[0xe\]
47.10610 ++ *[0-9a-f]*:	8a c5       	ld\.uh r5,r5\[0x8\]
47.10611 ++ *[0-9a-f]*:	88 b4       	ld\.uh r4,r4\[0x6\]
47.10612 ++ *[0-9a-f]*:	9c 9e       	ld\.uh lr,lr\[0x2\]
47.10613 ++ *[0-9a-f]*:	80 da       	ld\.uh r10,r0\[0xa\]
47.10614 ++ *[0-9a-f]*:	96 c8       	ld\.uh r8,r11\[0x8\]
47.10615 ++ *[0-9a-f]*:	84 ea       	ld\.uh r10,r2\[0xc\]
47.10616 ++
47.10617 ++[0-9a-f]* <st_w3>:
47.10618 ++ *[0-9a-f]*:	9f 0f       	st\.w pc\[0x0\],pc
47.10619 ++ *[0-9a-f]*:	99 fc       	st\.w r12\[0x3c\],r12
47.10620 ++ *[0-9a-f]*:	8b 85       	st\.w r5\[0x20\],r5
47.10621 ++ *[0-9a-f]*:	89 74       	st\.w r4\[0x1c\],r4
47.10622 ++ *[0-9a-f]*:	9d 1e       	st\.w lr\[0x4\],lr
47.10623 ++ *[0-9a-f]*:	8f bb       	st\.w r7\[0x2c\],r11
47.10624 ++ *[0-9a-f]*:	85 66       	st\.w r2\[0x18\],r6
47.10625 ++ *[0-9a-f]*:	89 39       	st\.w r4\[0xc\],r9
47.10626 ++
47.10627 ++[0-9a-f]* <st_h3>:
47.10628 ++ *[0-9a-f]*:	be 0f       	st\.h pc\[0x0\],pc
47.10629 ++ *[0-9a-f]*:	b8 7c       	st\.h r12\[0xe\],r12
47.10630 ++ *[0-9a-f]*:	aa 45       	st\.h r5\[0x8\],r5
47.10631 ++ *[0-9a-f]*:	a8 34       	st\.h r4\[0x6\],r4
47.10632 ++ *[0-9a-f]*:	bc 1e       	st\.h lr\[0x2\],lr
47.10633 ++ *[0-9a-f]*:	bc 5c       	st\.h lr\[0xa\],r12
47.10634 ++ *[0-9a-f]*:	ac 20       	st\.h r6\[0x4\],r0
47.10635 ++ *[0-9a-f]*:	aa 6d       	st\.h r5\[0xc\],sp
47.10636 ++
47.10637 ++[0-9a-f]* <st_b3>:
47.10638 ++ *[0-9a-f]*:	be 8f       	st\.b pc\[0x0\],pc
47.10639 ++ *[0-9a-f]*:	b8 fc       	st\.b r12\[0x7\],r12
47.10640 ++ *[0-9a-f]*:	aa c5       	st\.b r5\[0x4\],r5
47.10641 ++ *[0-9a-f]*:	a8 b4       	st\.b r4\[0x3\],r4
47.10642 ++ *[0-9a-f]*:	bc 9e       	st\.b lr\[0x1\],lr
47.10643 ++ *[0-9a-f]*:	b8 e9       	st\.b r12\[0x6\],r9
47.10644 ++ *[0-9a-f]*:	a4 be       	st\.b r2\[0x3\],lr
47.10645 ++ *[0-9a-f]*:	a2 bb       	st\.b r1\[0x3\],r11
47.10646 ++
47.10647 ++[0-9a-f]* <ldd>:
47.10648 ++ *[0-9a-f]*:	bf 00       	ld\.d r0,pc
47.10649 ++ *[0-9a-f]*:	b9 0e       	ld\.d lr,r12
47.10650 ++ *[0-9a-f]*:	ab 08       	ld\.d r8,r5
47.10651 ++ *[0-9a-f]*:	a9 06       	ld\.d r6,r4
47.10652 ++ *[0-9a-f]*:	bd 02       	ld\.d r2,lr
47.10653 ++ *[0-9a-f]*:	af 0e       	ld\.d lr,r7
47.10654 ++ *[0-9a-f]*:	a9 04       	ld\.d r4,r4
47.10655 ++ *[0-9a-f]*:	bf 0e       	ld\.d lr,pc
47.10656 ++
47.10657 ++[0-9a-f]* <ldd_postinc>:
47.10658 ++ *[0-9a-f]*:	bf 01       	ld\.d r0,pc\+\+
47.10659 ++ *[0-9a-f]*:	b9 0f       	ld\.d lr,r12\+\+
47.10660 ++ *[0-9a-f]*:	ab 09       	ld\.d r8,r5\+\+
47.10661 ++ *[0-9a-f]*:	a9 07       	ld\.d r6,r4\+\+
47.10662 ++ *[0-9a-f]*:	bd 03       	ld\.d r2,lr\+\+
47.10663 ++ *[0-9a-f]*:	ab 0f       	ld\.d lr,r5\+\+
47.10664 ++ *[0-9a-f]*:	b7 0d       	ld\.d r12,r11\+\+
47.10665 ++ *[0-9a-f]*:	b9 03       	ld\.d r2,r12\+\+
47.10666 ++
47.10667 ++[0-9a-f]* <ldd_predec>:
47.10668 ++ *[0-9a-f]*:	bf 10       	ld\.d r0,--pc
47.10669 ++ *[0-9a-f]*:	b9 1e       	ld\.d lr,--r12
47.10670 ++ *[0-9a-f]*:	ab 18       	ld\.d r8,--r5
47.10671 ++ *[0-9a-f]*:	a9 16       	ld\.d r6,--r4
47.10672 ++ *[0-9a-f]*:	bd 12       	ld\.d r2,--lr
47.10673 ++ *[0-9a-f]*:	a1 18       	ld\.d r8,--r0
47.10674 ++ *[0-9a-f]*:	bf 1a       	ld\.d r10,--pc
47.10675 ++ *[0-9a-f]*:	a9 12       	ld\.d r2,--r4
47.10676 ++
47.10677 ++[0-9a-f]* <std>:
47.10678 ++ *[0-9a-f]*:	bf 11       	st\.d pc,r0
47.10679 ++ *[0-9a-f]*:	b9 1f       	st\.d r12,lr
47.10680 ++ *[0-9a-f]*:	ab 19       	st\.d r5,r8
47.10681 ++ *[0-9a-f]*:	a9 17       	st\.d r4,r6
47.10682 ++ *[0-9a-f]*:	bd 13       	st\.d lr,r2
47.10683 ++ *[0-9a-f]*:	a1 1d       	st\.d r0,r12
47.10684 ++ *[0-9a-f]*:	bb 15       	st\.d sp,r4
47.10685 ++ *[0-9a-f]*:	b9 1d       	st\.d r12,r12
47.10686 ++
47.10687 ++[0-9a-f]* <std_postinc>:
47.10688 ++ *[0-9a-f]*:	bf 20       	st\.d pc\+\+,r0
47.10689 ++ *[0-9a-f]*:	b9 2e       	st\.d r12\+\+,lr
47.10690 ++ *[0-9a-f]*:	ab 28       	st\.d r5\+\+,r8
47.10691 ++ *[0-9a-f]*:	a9 26       	st\.d r4\+\+,r6
47.10692 ++ *[0-9a-f]*:	bd 22       	st\.d lr\+\+,r2
47.10693 ++ *[0-9a-f]*:	bb 26       	st\.d sp\+\+,r6
47.10694 ++ *[0-9a-f]*:	b5 26       	st\.d r10\+\+,r6
47.10695 ++ *[0-9a-f]*:	af 22       	st\.d r7\+\+,r2
47.10696 ++
47.10697 ++[0-9a-f]* <std_predec>:
47.10698 ++ *[0-9a-f]*:	bf 21       	st\.d --pc,r0
47.10699 ++ *[0-9a-f]*:	b9 2f       	st\.d --r12,lr
47.10700 ++ *[0-9a-f]*:	ab 29       	st\.d --r5,r8
47.10701 ++ *[0-9a-f]*:	a9 27       	st\.d --r4,r6
47.10702 ++ *[0-9a-f]*:	bd 23       	st\.d --lr,r2
47.10703 ++ *[0-9a-f]*:	a7 27       	st\.d --r3,r6
47.10704 ++ *[0-9a-f]*:	bd 23       	st\.d --lr,r2
47.10705 ++ *[0-9a-f]*:	a1 25       	st\.d --r0,r4
47.10706 ++
47.10707 ++[0-9a-f]* <mul>:
47.10708 ++ *[0-9a-f]*:	bf 3f       	mul pc,pc
47.10709 ++ *[0-9a-f]*:	b9 3c       	mul r12,r12
47.10710 ++ *[0-9a-f]*:	ab 35       	mul r5,r5
47.10711 ++ *[0-9a-f]*:	a9 34       	mul r4,r4
47.10712 ++ *[0-9a-f]*:	bd 3e       	mul lr,lr
47.10713 ++ *[0-9a-f]*:	bd 3a       	mul r10,lr
47.10714 ++ *[0-9a-f]*:	b1 30       	mul r0,r8
47.10715 ++ *[0-9a-f]*:	ab 38       	mul r8,r5
47.10716 ++
47.10717 ++[0-9a-f]* <asr_imm5>:
47.10718 ++ *[0-9a-f]*:	a1 4f       	asr pc,0x0
47.10719 ++ *[0-9a-f]*:	bf 5c       	asr r12,0x1f
47.10720 ++ *[0-9a-f]*:	b1 45       	asr r5,0x10
47.10721 ++ *[0-9a-f]*:	af 54       	asr r4,0xf
47.10722 ++ *[0-9a-f]*:	a1 5e       	asr lr,0x1
47.10723 ++ *[0-9a-f]*:	b7 56       	asr r6,0x17
47.10724 ++ *[0-9a-f]*:	b3 46       	asr r6,0x12
47.10725 ++ *[0-9a-f]*:	a9 45       	asr r5,0x8
47.10726 ++
47.10727 ++[0-9a-f]* <lsl_imm5>:
47.10728 ++ *[0-9a-f]*:	a1 6f       	lsl pc,0x0
47.10729 ++ *[0-9a-f]*:	bf 7c       	lsl r12,0x1f
47.10730 ++ *[0-9a-f]*:	b1 65       	lsl r5,0x10
47.10731 ++ *[0-9a-f]*:	af 74       	lsl r4,0xf
47.10732 ++ *[0-9a-f]*:	a1 7e       	lsl lr,0x1
47.10733 ++ *[0-9a-f]*:	ad 7c       	lsl r12,0xd
47.10734 ++ *[0-9a-f]*:	b1 66       	lsl r6,0x10
47.10735 ++ *[0-9a-f]*:	b9 71       	lsl r1,0x19
47.10736 ++
47.10737 ++[0-9a-f]* <lsr_imm5>:
47.10738 ++ *[0-9a-f]*:	a1 8f       	lsr pc,0x0
47.10739 ++ *[0-9a-f]*:	bf 9c       	lsr r12,0x1f
47.10740 ++ *[0-9a-f]*:	b1 85       	lsr r5,0x10
47.10741 ++ *[0-9a-f]*:	af 94       	lsr r4,0xf
47.10742 ++ *[0-9a-f]*:	a1 9e       	lsr lr,0x1
47.10743 ++ *[0-9a-f]*:	a1 90       	lsr r0,0x1
47.10744 ++ *[0-9a-f]*:	ab 88       	lsr r8,0xa
47.10745 ++ *[0-9a-f]*:	bb 87       	lsr r7,0x1a
47.10746 ++
47.10747 ++[0-9a-f]* <sbr>:
47.10748 ++ *[0-9a-f]*:	a1 af       	sbr pc,0x0
47.10749 ++ *[0-9a-f]*:	bf bc       	sbr r12,0x1f
47.10750 ++ *[0-9a-f]*:	b1 a5       	sbr r5,0x10
47.10751 ++ *[0-9a-f]*:	af b4       	sbr r4,0xf
47.10752 ++ *[0-9a-f]*:	a1 be       	sbr lr,0x1
47.10753 ++ *[0-9a-f]*:	bf b8       	sbr r8,0x1f
47.10754 ++ *[0-9a-f]*:	b7 a6       	sbr r6,0x16
47.10755 ++ *[0-9a-f]*:	b7 b1       	sbr r1,0x17
47.10756 ++
47.10757 ++[0-9a-f]* <cbr>:
47.10758 ++ *[0-9a-f]*:	a1 cf       	cbr pc,0x0
47.10759 ++ *[0-9a-f]*:	bf dc       	cbr r12,0x1f
47.10760 ++ *[0-9a-f]*:	b1 c5       	cbr r5,0x10
47.10761 ++ *[0-9a-f]*:	af d4       	cbr r4,0xf
47.10762 ++ *[0-9a-f]*:	a1 de       	cbr lr,0x1
47.10763 ++ *[0-9a-f]*:	ab cc       	cbr r12,0xa
47.10764 ++ *[0-9a-f]*:	b7 c7       	cbr r7,0x16
47.10765 ++ *[0-9a-f]*:	a9 d8       	cbr r8,0x9
47.10766 ++
47.10767 ++[0-9a-f]* <brc1>:
47.10768 ++ *[0-9a-f]*:	c0 00       	breq [0-9a-f]* <.*>
47.10769 ++ *[0-9a-f]*:	cf f7       	brpl [0-9a-f]* <.*>
47.10770 ++ *[0-9a-f]*:	c8 04       	brge [0-9a-f]* <.*>
47.10771 ++ *[0-9a-f]*:	c7 f3       	brcs [0-9a-f]* <.*>
47.10772 ++ *[0-9a-f]*:	c0 11       	brne [0-9a-f]* <.*>
47.10773 ++ *[0-9a-f]*:	c7 33       	brcs [0-9a-f]* <.*>
47.10774 ++ *[0-9a-f]*:	cf 70       	breq [0-9a-f]* <.*>
47.10775 ++ *[0-9a-f]*:	c0 60       	breq [0-9a-f]* <.*>
47.10776 ++
47.10777 ++[0-9a-f]* <rjmp>:
47.10778 ++ *[0-9a-f]*:	c0 08       	rjmp [0-9a-f]* <.*>
47.10779 ++ *[0-9a-f]*:	cf fb       	rjmp [0-9a-f]* <.*>
47.10780 ++ *[0-9a-f]*:	c0 0a       	rjmp [0-9a-f]* <.*>
47.10781 ++ *[0-9a-f]*:	cf f9       	rjmp [0-9a-f]* <.*>
47.10782 ++ *[0-9a-f]*:	c0 18       	rjmp [0-9a-f]* <.*>
47.10783 ++ *[0-9a-f]*:	c1 fa       	rjmp [0-9a-f]* <.*>
47.10784 ++ *[0-9a-f]*:	c0 78       	rjmp [0-9a-f]* <.*>
47.10785 ++ *[0-9a-f]*:	cf ea       	rjmp [0-9a-f]* <.*>
47.10786 ++
47.10787 ++[0-9a-f]* <rcall1>:
47.10788 ++ *[0-9a-f]*:	c0 0c       	rcall [0-9a-f]* <.*>
47.10789 ++ *[0-9a-f]*:	cf ff       	rcall [0-9a-f]* <.*>
47.10790 ++ *[0-9a-f]*:	c0 0e       	rcall [0-9a-f]* <.*>
47.10791 ++ *[0-9a-f]*:	cf fd       	rcall [0-9a-f]* <.*>
47.10792 ++ *[0-9a-f]*:	c0 1c       	rcall [0-9a-f]* <.*>
47.10793 ++ *[0-9a-f]*:	c6 cc       	rcall [0-9a-f]* <.*>
47.10794 ++ *[0-9a-f]*:	cf 7e       	rcall [0-9a-f]* <.*>
47.10795 ++ *[0-9a-f]*:	c1 ae       	rcall [0-9a-f]* <.*>
47.10796 ++
47.10797 ++[0-9a-f]* <acall>:
47.10798 ++ *[0-9a-f]*:	d0 00       	acall 0x0
47.10799 ++ *[0-9a-f]*:	df f0       	acall 0x3fc
47.10800 ++ *[0-9a-f]*:	d8 00       	acall 0x200
47.10801 ++ *[0-9a-f]*:	d7 f0       	acall 0x1fc
47.10802 ++ *[0-9a-f]*:	d0 10       	acall 0x4
47.10803 ++ *[0-9a-f]*:	d5 90       	acall 0x164
47.10804 ++ *[0-9a-f]*:	d4 c0       	acall 0x130
47.10805 ++ *[0-9a-f]*:	d2 b0       	acall 0xac
47.10806 ++
47.10807 ++[0-9a-f]* <scall>:
47.10808 ++ *[0-9a-f]*:	d7 33       	scall
47.10809 ++ *[0-9a-f]*:	d7 33       	scall
47.10810 ++ *[0-9a-f]*:	d7 33       	scall
47.10811 ++ *[0-9a-f]*:	d7 33       	scall
47.10812 ++ *[0-9a-f]*:	d7 33       	scall
47.10813 ++ *[0-9a-f]*:	d7 33       	scall
47.10814 ++ *[0-9a-f]*:	d7 33       	scall
47.10815 ++ *[0-9a-f]*:	d7 33       	scall
47.10816 ++
47.10817 ++[0-9a-f]* <popm>:
47.10818 ++ *[0-9a-f]*:	d8 02       	popm pc
47.10819 ++ *[0-9a-f]*:	dd fa       	popm r0-r11,pc,r12=-1
47.10820 ++ *[0-9a-f]*:	d4 02       	popm lr
47.10821 ++ *[0-9a-f]*:	db fa       	popm r0-r11,pc,r12=1
47.10822 ++ *[0-9a-f]*:	d0 12       	popm r0-r3
47.10823 ++ *[0-9a-f]*:	d8 e2       	popm r4-r10,pc
47.10824 ++ *[0-9a-f]*:	d9 1a       	popm r0-r3,r11,pc,r12=0
47.10825 ++ *[0-9a-f]*:	d7 b2       	popm r0-r7,r10-r12,lr
47.10826 ++
47.10827 ++[0-9a-f]* <pushm>:
47.10828 ++ *[0-9a-f]*:	d8 01       	pushm pc
47.10829 ++ *[0-9a-f]*:	df f1       	pushm r0-r12,lr-pc
47.10830 ++ *[0-9a-f]*:	d8 01       	pushm pc
47.10831 ++ *[0-9a-f]*:	d7 f1       	pushm r0-r12,lr
47.10832 ++ *[0-9a-f]*:	d0 11       	pushm r0-r3
47.10833 ++ *[0-9a-f]*:	dc c1       	pushm r8-r10,lr-pc
47.10834 ++ *[0-9a-f]*:	d0 91       	pushm r0-r3,r10
47.10835 ++ *[0-9a-f]*:	d2 41       	pushm r8-r9,r12
47.10836 ++
47.10837 ++[0-9a-f]* <popm_n>:
47.10838 ++.*
47.10839 ++.*
47.10840 ++.*
47.10841 ++.*
47.10842 ++.*
47.10843 ++.*
47.10844 ++.*
47.10845 ++.*
47.10846 ++
47.10847 ++[0-9a-f]* <pushm_n>:
47.10848 ++.*
47.10849 ++.*
47.10850 ++.*
47.10851 ++.*
47.10852 ++.*
47.10853 ++.*
47.10854 ++.*
47.10855 ++.*
47.10856 ++
47.10857 ++[0-9a-f]* <csrfcz>:
47.10858 ++ *[0-9a-f]*:	d0 03       	csrfcz 0x0
47.10859 ++ *[0-9a-f]*:	d1 f3       	csrfcz 0x1f
47.10860 ++ *[0-9a-f]*:	d1 03       	csrfcz 0x10
47.10861 ++ *[0-9a-f]*:	d0 f3       	csrfcz 0xf
47.10862 ++ *[0-9a-f]*:	d0 13       	csrfcz 0x1
47.10863 ++ *[0-9a-f]*:	d0 53       	csrfcz 0x5
47.10864 ++ *[0-9a-f]*:	d0 d3       	csrfcz 0xd
47.10865 ++ *[0-9a-f]*:	d1 73       	csrfcz 0x17
47.10866 ++
47.10867 ++[0-9a-f]* <ssrf>:
47.10868 ++ *[0-9a-f]*:	d2 03       	ssrf 0x0
47.10869 ++ *[0-9a-f]*:	d3 f3       	ssrf 0x1f
47.10870 ++ *[0-9a-f]*:	d3 03       	ssrf 0x10
47.10871 ++ *[0-9a-f]*:	d2 f3       	ssrf 0xf
47.10872 ++ *[0-9a-f]*:	d2 13       	ssrf 0x1
47.10873 ++ *[0-9a-f]*:	d3 d3       	ssrf 0x1d
47.10874 ++ *[0-9a-f]*:	d2 d3       	ssrf 0xd
47.10875 ++ *[0-9a-f]*:	d2 d3       	ssrf 0xd
47.10876 ++
47.10877 ++[0-9a-f]* <csrf>:
47.10878 ++ *[0-9a-f]*:	d4 03       	csrf 0x0
47.10879 ++ *[0-9a-f]*:	d5 f3       	csrf 0x1f
47.10880 ++ *[0-9a-f]*:	d5 03       	csrf 0x10
47.10881 ++ *[0-9a-f]*:	d4 f3       	csrf 0xf
47.10882 ++ *[0-9a-f]*:	d4 13       	csrf 0x1
47.10883 ++ *[0-9a-f]*:	d4 a3       	csrf 0xa
47.10884 ++ *[0-9a-f]*:	d4 f3       	csrf 0xf
47.10885 ++ *[0-9a-f]*:	d4 b3       	csrf 0xb
47.10886 ++
47.10887 ++[0-9a-f]* <rete>:
47.10888 ++ *[0-9a-f]*:	d6 03       	rete
47.10889 ++
47.10890 ++[0-9a-f]* <rets>:
47.10891 ++ *[0-9a-f]*:	d6 13       	rets
47.10892 ++
47.10893 ++[0-9a-f]* <retd>:
47.10894 ++ *[0-9a-f]*:	d6 23       	retd
47.10895 ++
47.10896 ++[0-9a-f]* <retj>:
47.10897 ++ *[0-9a-f]*:	d6 33       	retj
47.10898 ++
47.10899 ++[0-9a-f]* <tlbr>:
47.10900 ++ *[0-9a-f]*:	d6 43       	tlbr
47.10901 ++
47.10902 ++[0-9a-f]* <tlbs>:
47.10903 ++ *[0-9a-f]*:	d6 53       	tlbs
47.10904 ++
47.10905 ++[0-9a-f]* <tlbw>:
47.10906 ++ *[0-9a-f]*:	d6 63       	tlbw
47.10907 ++
47.10908 ++[0-9a-f]* <breakpoint>:
47.10909 ++ *[0-9a-f]*:	d6 73       	breakpoint
47.10910 ++
47.10911 ++[0-9a-f]* <incjosp>:
47.10912 ++ *[0-9a-f]*:	d6 83       	incjosp 1
47.10913 ++ *[0-9a-f]*:	d6 93       	incjosp 2
47.10914 ++ *[0-9a-f]*:	d6 a3       	incjosp 3
47.10915 ++ *[0-9a-f]*:	d6 b3       	incjosp 4
47.10916 ++ *[0-9a-f]*:	d6 c3       	incjosp -4
47.10917 ++ *[0-9a-f]*:	d6 d3       	incjosp -3
47.10918 ++ *[0-9a-f]*:	d6 e3       	incjosp -2
47.10919 ++ *[0-9a-f]*:	d6 f3       	incjosp -1
47.10920 ++
47.10921 ++[0-9a-f]* <nop>:
47.10922 ++ *[0-9a-f]*:	d7 03       	nop
47.10923 ++
47.10924 ++[0-9a-f]* <popjc>:
47.10925 ++ *[0-9a-f]*:	d7 13       	popjc
47.10926 ++
47.10927 ++[0-9a-f]* <pushjc>:
47.10928 ++ *[0-9a-f]*:	d7 23       	pushjc
47.10929 ++
47.10930 ++[0-9a-f]* <add2>:
47.10931 ++ *[0-9a-f]*:	fe 0f 00 0f 	add pc,pc,pc
47.10932 ++ *[0-9a-f]*:	f8 0c 00 3c 	add r12,r12,r12<<0x3
47.10933 ++ *[0-9a-f]*:	ea 05 00 25 	add r5,r5,r5<<0x2
47.10934 ++ *[0-9a-f]*:	e8 04 00 14 	add r4,r4,r4<<0x1
47.10935 ++ *[0-9a-f]*:	fc 0e 00 1e 	add lr,lr,lr<<0x1
47.10936 ++ *[0-9a-f]*:	f8 00 00 10 	add r0,r12,r0<<0x1
47.10937 ++ *[0-9a-f]*:	f8 04 00 09 	add r9,r12,r4
47.10938 ++ *[0-9a-f]*:	f8 07 00 2c 	add r12,r12,r7<<0x2
47.10939 ++
47.10940 ++[0-9a-f]* <sub2>:
47.10941 ++ *[0-9a-f]*:	fe 0f 01 0f 	sub pc,pc,pc
47.10942 ++ *[0-9a-f]*:	f8 0c 01 3c 	sub r12,r12,r12<<0x3
47.10943 ++ *[0-9a-f]*:	ea 05 01 25 	sub r5,r5,r5<<0x2
47.10944 ++ *[0-9a-f]*:	e8 04 01 14 	sub r4,r4,r4<<0x1
47.10945 ++ *[0-9a-f]*:	fc 0e 01 1e 	sub lr,lr,lr<<0x1
47.10946 ++ *[0-9a-f]*:	e6 04 01 0d 	sub sp,r3,r4
47.10947 ++ *[0-9a-f]*:	ee 03 01 03 	sub r3,r7,r3
47.10948 ++ *[0-9a-f]*:	f4 0d 01 1d 	sub sp,r10,sp<<0x1
47.10949 ++
47.10950 ++[0-9a-f]* <divu>:
47.10951 ++ *[0-9a-f]*:	fe 0f 0d 0f 	divu pc,pc,pc
47.10952 ++ *[0-9a-f]*:	f8 0c 0d 0c 	divu r12,r12,r12
47.10953 ++ *[0-9a-f]*:	ea 05 0d 05 	divu r5,r5,r5
47.10954 ++ *[0-9a-f]*:	e8 04 0d 04 	divu r4,r4,r4
47.10955 ++ *[0-9a-f]*:	fc 0e 0d 0e 	divu lr,lr,lr
47.10956 ++ *[0-9a-f]*:	e8 0f 0d 0d 	divu sp,r4,pc
47.10957 ++ *[0-9a-f]*:	ea 0d 0d 05 	divu r5,r5,sp
47.10958 ++ *[0-9a-f]*:	fa 00 0d 0a 	divu r10,sp,r0
47.10959 ++
47.10960 ++[0-9a-f]* <addhh_w>:
47.10961 ++ *[0-9a-f]*:	fe 0f 0e 0f 	addhh\.w pc,pc:b,pc:b
47.10962 ++ *[0-9a-f]*:	f8 0c 0e 3c 	addhh\.w r12,r12:t,r12:t
47.10963 ++ *[0-9a-f]*:	ea 05 0e 35 	addhh\.w r5,r5:t,r5:t
47.10964 ++ *[0-9a-f]*:	e8 04 0e 04 	addhh\.w r4,r4:b,r4:b
47.10965 ++ *[0-9a-f]*:	fc 0e 0e 3e 	addhh\.w lr,lr:t,lr:t
47.10966 ++ *[0-9a-f]*:	e0 03 0e 00 	addhh\.w r0,r0:b,r3:b
47.10967 ++ *[0-9a-f]*:	f8 07 0e 2e 	addhh\.w lr,r12:t,r7:b
47.10968 ++ *[0-9a-f]*:	f4 02 0e 23 	addhh\.w r3,r10:t,r2:b
47.10969 ++
47.10970 ++[0-9a-f]* <subhh_w>:
47.10971 ++ *[0-9a-f]*:	fe 0f 0f 0f 	subhh\.w pc,pc:b,pc:b
47.10972 ++ *[0-9a-f]*:	f8 0c 0f 3c 	subhh\.w r12,r12:t,r12:t
47.10973 ++ *[0-9a-f]*:	ea 05 0f 35 	subhh\.w r5,r5:t,r5:t
47.10974 ++ *[0-9a-f]*:	e8 04 0f 04 	subhh\.w r4,r4:b,r4:b
47.10975 ++ *[0-9a-f]*:	fc 0e 0f 3e 	subhh\.w lr,lr:t,lr:t
47.10976 ++ *[0-9a-f]*:	e2 07 0f 2a 	subhh\.w r10,r1:t,r7:b
47.10977 ++ *[0-9a-f]*:	f4 0e 0f 3f 	subhh\.w pc,r10:t,lr:t
47.10978 ++ *[0-9a-f]*:	e0 0c 0f 23 	subhh\.w r3,r0:t,r12:b
47.10979 ++
47.10980 ++[0-9a-f]* <adc>:
47.10981 ++ *[0-9a-f]*:	fe 0f 00 4f 	adc pc,pc,pc
47.10982 ++ *[0-9a-f]*:	f8 0c 00 4c 	adc r12,r12,r12
47.10983 ++ *[0-9a-f]*:	ea 05 00 45 	adc r5,r5,r5
47.10984 ++ *[0-9a-f]*:	e8 04 00 44 	adc r4,r4,r4
47.10985 ++ *[0-9a-f]*:	fc 0e 00 4e 	adc lr,lr,lr
47.10986 ++ *[0-9a-f]*:	e0 07 00 44 	adc r4,r0,r7
47.10987 ++ *[0-9a-f]*:	e8 03 00 4d 	adc sp,r4,r3
47.10988 ++ *[0-9a-f]*:	f8 00 00 42 	adc r2,r12,r0
47.10989 ++
47.10990 ++[0-9a-f]* <sbc>:
47.10991 ++ *[0-9a-f]*:	fe 0f 01 4f 	sbc pc,pc,pc
47.10992 ++ *[0-9a-f]*:	f8 0c 01 4c 	sbc r12,r12,r12
47.10993 ++ *[0-9a-f]*:	ea 05 01 45 	sbc r5,r5,r5
47.10994 ++ *[0-9a-f]*:	e8 04 01 44 	sbc r4,r4,r4
47.10995 ++ *[0-9a-f]*:	fc 0e 01 4e 	sbc lr,lr,lr
47.10996 ++ *[0-9a-f]*:	ee 09 01 46 	sbc r6,r7,r9
47.10997 ++ *[0-9a-f]*:	f0 05 01 40 	sbc r0,r8,r5
47.10998 ++ *[0-9a-f]*:	e0 04 01 41 	sbc r1,r0,r4
47.10999 ++
47.11000 ++[0-9a-f]* <mul_2>:
47.11001 ++ *[0-9a-f]*:	fe 0f 02 4f 	mul pc,pc,pc
47.11002 ++ *[0-9a-f]*:	f8 0c 02 4c 	mul r12,r12,r12
47.11003 ++ *[0-9a-f]*:	ea 05 02 45 	mul r5,r5,r5
47.11004 ++ *[0-9a-f]*:	e8 04 02 44 	mul r4,r4,r4
47.11005 ++ *[0-9a-f]*:	fc 0e 02 4e 	mul lr,lr,lr
47.11006 ++ *[0-9a-f]*:	e0 00 02 4f 	mul pc,r0,r0
47.11007 ++ *[0-9a-f]*:	fe 0e 02 48 	mul r8,pc,lr
47.11008 ++ *[0-9a-f]*:	f8 0f 02 44 	mul r4,r12,pc
47.11009 ++
47.11010 ++[0-9a-f]* <mac>:
47.11011 ++ *[0-9a-f]*:	fe 0f 03 4f 	mac pc,pc,pc
47.11012 ++ *[0-9a-f]*:	f8 0c 03 4c 	mac r12,r12,r12
47.11013 ++ *[0-9a-f]*:	ea 05 03 45 	mac r5,r5,r5
47.11014 ++ *[0-9a-f]*:	e8 04 03 44 	mac r4,r4,r4
47.11015 ++ *[0-9a-f]*:	fc 0e 03 4e 	mac lr,lr,lr
47.11016 ++ *[0-9a-f]*:	e8 00 03 4a 	mac r10,r4,r0
47.11017 ++ *[0-9a-f]*:	fc 00 03 47 	mac r7,lr,r0
47.11018 ++ *[0-9a-f]*:	f2 0c 03 42 	mac r2,r9,r12
47.11019 ++
47.11020 ++[0-9a-f]* <mulsd>:
47.11021 ++ *[0-9a-f]*:	fe 0f 04 4f 	muls\.d pc,pc,pc
47.11022 ++ *[0-9a-f]*:	f8 0c 04 4c 	muls\.d r12,r12,r12
47.11023 ++ *[0-9a-f]*:	ea 05 04 45 	muls\.d r5,r5,r5
47.11024 ++ *[0-9a-f]*:	e8 04 04 44 	muls\.d r4,r4,r4
47.11025 ++ *[0-9a-f]*:	fc 0e 04 4e 	muls\.d lr,lr,lr
47.11026 ++ *[0-9a-f]*:	f0 0e 04 42 	muls\.d r2,r8,lr
47.11027 ++ *[0-9a-f]*:	e0 0b 04 44 	muls\.d r4,r0,r11
47.11028 ++ *[0-9a-f]*:	fc 06 04 45 	muls\.d r5,lr,r6
47.11029 ++
47.11030 ++[0-9a-f]* <macsd>:
47.11031 ++ *[0-9a-f]*:	fe 0f 05 40 	macs\.d r0,pc,pc
47.11032 ++ *[0-9a-f]*:	f8 0c 05 4e 	macs\.d lr,r12,r12
47.11033 ++ *[0-9a-f]*:	ea 05 05 48 	macs\.d r8,r5,r5
47.11034 ++ *[0-9a-f]*:	e8 04 05 46 	macs\.d r6,r4,r4
47.11035 ++ *[0-9a-f]*:	fc 0e 05 42 	macs\.d r2,lr,lr
47.11036 ++ *[0-9a-f]*:	e2 09 05 48 	macs\.d r8,r1,r9
47.11037 ++ *[0-9a-f]*:	f0 08 05 4e 	macs\.d lr,r8,r8
47.11038 ++ *[0-9a-f]*:	e6 0c 05 44 	macs\.d r4,r3,r12
47.11039 ++
47.11040 ++[0-9a-f]* <mulud>:
47.11041 ++ *[0-9a-f]*:	fe 0f 06 40 	mulu\.d r0,pc,pc
47.11042 ++ *[0-9a-f]*:	f8 0c 06 4e 	mulu\.d lr,r12,r12
47.11043 ++ *[0-9a-f]*:	ea 05 06 48 	mulu\.d r8,r5,r5
47.11044 ++ *[0-9a-f]*:	e8 04 06 46 	mulu\.d r6,r4,r4
47.11045 ++ *[0-9a-f]*:	fc 0e 06 42 	mulu\.d r2,lr,lr
47.11046 ++ *[0-9a-f]*:	ea 00 06 46 	mulu\.d r6,r5,r0
47.11047 ++ *[0-9a-f]*:	ec 01 06 44 	mulu\.d r4,r6,r1
47.11048 ++ *[0-9a-f]*:	f0 02 06 48 	mulu\.d r8,r8,r2
47.11049 ++
47.11050 ++[0-9a-f]* <macud>:
47.11051 ++ *[0-9a-f]*:	fe 0f 07 40 	macu\.d r0,pc,pc
47.11052 ++ *[0-9a-f]*:	f8 0c 07 4e 	macu\.d lr,r12,r12
47.11053 ++ *[0-9a-f]*:	ea 05 07 48 	macu\.d r8,r5,r5
47.11054 ++ *[0-9a-f]*:	e8 04 07 46 	macu\.d r6,r4,r4
47.11055 ++ *[0-9a-f]*:	fc 0e 07 42 	macu\.d r2,lr,lr
47.11056 ++ *[0-9a-f]*:	fa 0b 07 46 	macu\.d r6,sp,r11
47.11057 ++ *[0-9a-f]*:	e8 08 07 42 	macu\.d r2,r4,r8
47.11058 ++ *[0-9a-f]*:	f4 09 07 46 	macu\.d r6,r10,r9
47.11059 ++
47.11060 ++[0-9a-f]* <asr_1>:
47.11061 ++ *[0-9a-f]*:	fe 0f 08 4f 	asr pc,pc,pc
47.11062 ++ *[0-9a-f]*:	f8 0c 08 4c 	asr r12,r12,r12
47.11063 ++ *[0-9a-f]*:	ea 05 08 45 	asr r5,r5,r5
47.11064 ++ *[0-9a-f]*:	e8 04 08 44 	asr r4,r4,r4
47.11065 ++ *[0-9a-f]*:	fc 0e 08 4e 	asr lr,lr,lr
47.11066 ++ *[0-9a-f]*:	ec 0f 08 4f 	asr pc,r6,pc
47.11067 ++ *[0-9a-f]*:	ec 0c 08 40 	asr r0,r6,r12
47.11068 ++ *[0-9a-f]*:	fa 00 08 44 	asr r4,sp,r0
47.11069 ++
47.11070 ++[0-9a-f]* <lsl_1>:
47.11071 ++ *[0-9a-f]*:	fe 0f 09 4f 	lsl pc,pc,pc
47.11072 ++ *[0-9a-f]*:	f8 0c 09 4c 	lsl r12,r12,r12
47.11073 ++ *[0-9a-f]*:	ea 05 09 45 	lsl r5,r5,r5
47.11074 ++ *[0-9a-f]*:	e8 04 09 44 	lsl r4,r4,r4
47.11075 ++ *[0-9a-f]*:	fc 0e 09 4e 	lsl lr,lr,lr
47.11076 ++ *[0-9a-f]*:	ea 0e 09 4e 	lsl lr,r5,lr
47.11077 ++ *[0-9a-f]*:	fe 03 09 45 	lsl r5,pc,r3
47.11078 ++ *[0-9a-f]*:	fe 09 09 41 	lsl r1,pc,r9
47.11079 ++
47.11080 ++[0-9a-f]* <lsr_1>:
47.11081 ++ *[0-9a-f]*:	fe 0f 0a 4f 	lsr pc,pc,pc
47.11082 ++ *[0-9a-f]*:	f8 0c 0a 4c 	lsr r12,r12,r12
47.11083 ++ *[0-9a-f]*:	ea 05 0a 45 	lsr r5,r5,r5
47.11084 ++ *[0-9a-f]*:	e8 04 0a 44 	lsr r4,r4,r4
47.11085 ++ *[0-9a-f]*:	fc 0e 0a 4e 	lsr lr,lr,lr
47.11086 ++ *[0-9a-f]*:	e8 01 0a 42 	lsr r2,r4,r1
47.11087 ++ *[0-9a-f]*:	e2 06 0a 45 	lsr r5,r1,r6
47.11088 ++ *[0-9a-f]*:	ec 07 0a 4d 	lsr sp,r6,r7
47.11089 ++
47.11090 ++[0-9a-f]* <xchg>:
47.11091 ++ *[0-9a-f]*:	fe 0f 0b 4f 	xchg pc,pc,pc
47.11092 ++ *[0-9a-f]*:	f8 0c 0b 4c 	xchg r12,r12,r12
47.11093 ++ *[0-9a-f]*:	ea 05 0b 45 	xchg r5,r5,r5
47.11094 ++ *[0-9a-f]*:	e8 04 0b 44 	xchg r4,r4,r4
47.11095 ++ *[0-9a-f]*:	fc 0e 0b 4e 	xchg lr,lr,lr
47.11096 ++ *[0-9a-f]*:	e8 0d 0b 4e 	xchg lr,r4,sp
47.11097 ++ *[0-9a-f]*:	ea 0c 0b 41 	xchg r1,r5,r12
47.11098 ++ *[0-9a-f]*:	f8 00 0b 4e 	xchg lr,r12,r0
47.11099 ++
47.11100 ++[0-9a-f]* <max>:
47.11101 ++ *[0-9a-f]*:	fe 0f 0c 4f 	max pc,pc,pc
47.11102 ++ *[0-9a-f]*:	f8 0c 0c 4c 	max r12,r12,r12
47.11103 ++ *[0-9a-f]*:	ea 05 0c 45 	max r5,r5,r5
47.11104 ++ *[0-9a-f]*:	e8 04 0c 44 	max r4,r4,r4
47.11105 ++ *[0-9a-f]*:	fc 0e 0c 4e 	max lr,lr,lr
47.11106 ++ *[0-9a-f]*:	e4 0d 0c 4e 	max lr,r2,sp
47.11107 ++ *[0-9a-f]*:	f4 09 0c 44 	max r4,r10,r9
47.11108 ++ *[0-9a-f]*:	f2 0e 0c 4e 	max lr,r9,lr
47.11109 ++
47.11110 ++[0-9a-f]* <min>:
47.11111 ++ *[0-9a-f]*:	fe 0f 0d 4f 	min pc,pc,pc
47.11112 ++ *[0-9a-f]*:	f8 0c 0d 4c 	min r12,r12,r12
47.11113 ++ *[0-9a-f]*:	ea 05 0d 45 	min r5,r5,r5
47.11114 ++ *[0-9a-f]*:	e8 04 0d 44 	min r4,r4,r4
47.11115 ++ *[0-9a-f]*:	fc 0e 0d 4e 	min lr,lr,lr
47.11116 ++ *[0-9a-f]*:	ee 08 0d 49 	min r9,r7,r8
47.11117 ++ *[0-9a-f]*:	ea 05 0d 4d 	min sp,r5,r5
47.11118 ++ *[0-9a-f]*:	e2 04 0d 44 	min r4,r1,r4
47.11119 ++
47.11120 ++[0-9a-f]* <addabs>:
47.11121 ++ *[0-9a-f]*:	fe 0f 0e 4f 	addabs pc,pc,pc
47.11122 ++ *[0-9a-f]*:	f8 0c 0e 4c 	addabs r12,r12,r12
47.11123 ++ *[0-9a-f]*:	ea 05 0e 45 	addabs r5,r5,r5
47.11124 ++ *[0-9a-f]*:	e8 04 0e 44 	addabs r4,r4,r4
47.11125 ++ *[0-9a-f]*:	fc 0e 0e 4e 	addabs lr,lr,lr
47.11126 ++ *[0-9a-f]*:	f4 00 0e 47 	addabs r7,r10,r0
47.11127 ++ *[0-9a-f]*:	f2 07 0e 49 	addabs r9,r9,r7
47.11128 ++ *[0-9a-f]*:	f0 0c 0e 42 	addabs r2,r8,r12
47.11129 ++
47.11130 ++[0-9a-f]* <mulnhh_w>:
47.11131 ++ *[0-9a-f]*:	fe 0f 01 8f 	mulnhh\.w pc,pc:b,pc:b
47.11132 ++ *[0-9a-f]*:	f8 0c 01 bc 	mulnhh\.w r12,r12:t,r12:t
47.11133 ++ *[0-9a-f]*:	ea 05 01 b5 	mulnhh\.w r5,r5:t,r5:t
47.11134 ++ *[0-9a-f]*:	e8 04 01 84 	mulnhh\.w r4,r4:b,r4:b
47.11135 ++ *[0-9a-f]*:	fc 0e 01 be 	mulnhh\.w lr,lr:t,lr:t
47.11136 ++ *[0-9a-f]*:	fa 09 01 ab 	mulnhh\.w r11,sp:t,r9:b
47.11137 ++ *[0-9a-f]*:	e8 0e 01 9d 	mulnhh\.w sp,r4:b,lr:t
47.11138 ++ *[0-9a-f]*:	e4 0b 01 ac 	mulnhh\.w r12,r2:t,r11:b
47.11139 ++
47.11140 ++[0-9a-f]* <mulnwh_d>:
47.11141 ++ *[0-9a-f]*:	fe 0f 02 80 	mulnwh\.d r0,pc,pc:b
47.11142 ++ *[0-9a-f]*:	f8 0c 02 9e 	mulnwh\.d lr,r12,r12:t
47.11143 ++ *[0-9a-f]*:	ea 05 02 98 	mulnwh\.d r8,r5,r5:t
47.11144 ++ *[0-9a-f]*:	e8 04 02 86 	mulnwh\.d r6,r4,r4:b
47.11145 ++ *[0-9a-f]*:	fc 0e 02 92 	mulnwh\.d r2,lr,lr:t
47.11146 ++ *[0-9a-f]*:	e6 02 02 9e 	mulnwh\.d lr,r3,r2:t
47.11147 ++ *[0-9a-f]*:	ea 09 02 84 	mulnwh\.d r4,r5,r9:b
47.11148 ++ *[0-9a-f]*:	e8 04 02 9c 	mulnwh\.d r12,r4,r4:t
47.11149 ++
47.11150 ++[0-9a-f]* <machh_w>:
47.11151 ++ *[0-9a-f]*:	fe 0f 04 8f 	machh\.w pc,pc:b,pc:b
47.11152 ++ *[0-9a-f]*:	f8 0c 04 bc 	machh\.w r12,r12:t,r12:t
47.11153 ++ *[0-9a-f]*:	ea 05 04 b5 	machh\.w r5,r5:t,r5:t
47.11154 ++ *[0-9a-f]*:	e8 04 04 84 	machh\.w r4,r4:b,r4:b
47.11155 ++ *[0-9a-f]*:	fc 0e 04 be 	machh\.w lr,lr:t,lr:t
47.11156 ++ *[0-9a-f]*:	ea 01 04 9e 	machh\.w lr,r5:b,r1:t
47.11157 ++ *[0-9a-f]*:	ec 07 04 89 	machh\.w r9,r6:b,r7:b
47.11158 ++ *[0-9a-f]*:	fc 0c 04 a5 	machh\.w r5,lr:t,r12:b
47.11159 ++
47.11160 ++[0-9a-f]* <machh_d>:
47.11161 ++ *[0-9a-f]*:	fe 0f 05 80 	machh\.d r0,pc:b,pc:b
47.11162 ++ *[0-9a-f]*:	f8 0c 05 be 	machh\.d lr,r12:t,r12:t
47.11163 ++ *[0-9a-f]*:	ea 05 05 b8 	machh\.d r8,r5:t,r5:t
47.11164 ++ *[0-9a-f]*:	e8 04 05 86 	machh\.d r6,r4:b,r4:b
47.11165 ++ *[0-9a-f]*:	fc 0e 05 b2 	machh\.d r2,lr:t,lr:t
47.11166 ++ *[0-9a-f]*:	e0 08 05 8a 	machh\.d r10,r0:b,r8:b
47.11167 ++ *[0-9a-f]*:	e8 05 05 9e 	machh\.d lr,r4:b,r5:t
47.11168 ++ *[0-9a-f]*:	e0 04 05 98 	machh\.d r8,r0:b,r4:t
47.11169 ++
47.11170 ++[0-9a-f]* <macsathh_w>:
47.11171 ++ *[0-9a-f]*:	fe 0f 06 8f 	macsathh\.w pc,pc:b,pc:b
47.11172 ++ *[0-9a-f]*:	f8 0c 06 bc 	macsathh\.w r12,r12:t,r12:t
47.11173 ++ *[0-9a-f]*:	ea 05 06 b5 	macsathh\.w r5,r5:t,r5:t
47.11174 ++ *[0-9a-f]*:	e8 04 06 84 	macsathh\.w r4,r4:b,r4:b
47.11175 ++ *[0-9a-f]*:	fc 0e 06 be 	macsathh\.w lr,lr:t,lr:t
47.11176 ++ *[0-9a-f]*:	ee 0f 06 b7 	macsathh\.w r7,r7:t,pc:t
47.11177 ++ *[0-9a-f]*:	e4 04 06 a4 	macsathh\.w r4,r2:t,r4:b
47.11178 ++ *[0-9a-f]*:	f0 03 06 b4 	macsathh\.w r4,r8:t,r3:t
47.11179 ++
47.11180 ++[0-9a-f]* <mulhh_w>:
47.11181 ++ *[0-9a-f]*:	fe 0f 07 8f 	mulhh\.w pc,pc:b,pc:b
47.11182 ++ *[0-9a-f]*:	f8 0c 07 bc 	mulhh\.w r12,r12:t,r12:t
47.11183 ++ *[0-9a-f]*:	ea 05 07 b5 	mulhh\.w r5,r5:t,r5:t
47.11184 ++ *[0-9a-f]*:	e8 04 07 84 	mulhh\.w r4,r4:b,r4:b
47.11185 ++ *[0-9a-f]*:	fc 0e 07 be 	mulhh\.w lr,lr:t,lr:t
47.11186 ++ *[0-9a-f]*:	e8 09 07 a7 	mulhh\.w r7,r4:t,r9:b
47.11187 ++ *[0-9a-f]*:	e6 07 07 bf 	mulhh\.w pc,r3:t,r7:t
47.11188 ++ *[0-9a-f]*:	e8 09 07 9f 	mulhh\.w pc,r4:b,r9:t
47.11189 ++
47.11190 ++[0-9a-f]* <mulsathh_h>:
47.11191 ++ *[0-9a-f]*:	fe 0f 08 8f 	mulsathh\.h pc,pc:b,pc:b
47.11192 ++ *[0-9a-f]*:	f8 0c 08 bc 	mulsathh\.h r12,r12:t,r12:t
47.11193 ++ *[0-9a-f]*:	ea 05 08 b5 	mulsathh\.h r5,r5:t,r5:t
47.11194 ++ *[0-9a-f]*:	e8 04 08 84 	mulsathh\.h r4,r4:b,r4:b
47.11195 ++ *[0-9a-f]*:	fc 0e 08 be 	mulsathh\.h lr,lr:t,lr:t
47.11196 ++ *[0-9a-f]*:	e2 0d 08 83 	mulsathh\.h r3,r1:b,sp:b
47.11197 ++ *[0-9a-f]*:	fc 0b 08 ab 	mulsathh\.h r11,lr:t,r11:b
47.11198 ++ *[0-9a-f]*:	f0 0b 08 98 	mulsathh\.h r8,r8:b,r11:t
47.11199 ++
47.11200 ++[0-9a-f]* <mulsathh_w>:
47.11201 ++ *[0-9a-f]*:	fe 0f 09 8f 	mulsathh\.w pc,pc:b,pc:b
47.11202 ++ *[0-9a-f]*:	f8 0c 09 bc 	mulsathh\.w r12,r12:t,r12:t
47.11203 ++ *[0-9a-f]*:	ea 05 09 b5 	mulsathh\.w r5,r5:t,r5:t
47.11204 ++ *[0-9a-f]*:	e8 04 09 84 	mulsathh\.w r4,r4:b,r4:b
47.11205 ++ *[0-9a-f]*:	fc 0e 09 be 	mulsathh\.w lr,lr:t,lr:t
47.11206 ++ *[0-9a-f]*:	f6 06 09 ae 	mulsathh\.w lr,r11:t,r6:b
47.11207 ++ *[0-9a-f]*:	ec 07 09 96 	mulsathh\.w r6,r6:b,r7:t
47.11208 ++ *[0-9a-f]*:	e4 03 09 8a 	mulsathh\.w r10,r2:b,r3:b
47.11209 ++
47.11210 ++[0-9a-f]* <mulsatrndhh_h>:
47.11211 ++ *[0-9a-f]*:	fe 0f 0a 8f 	mulsatrndhh\.h pc,pc:b,pc:b
47.11212 ++ *[0-9a-f]*:	f8 0c 0a bc 	mulsatrndhh\.h r12,r12:t,r12:t
47.11213 ++ *[0-9a-f]*:	ea 05 0a b5 	mulsatrndhh\.h r5,r5:t,r5:t
47.11214 ++ *[0-9a-f]*:	e8 04 0a 84 	mulsatrndhh\.h r4,r4:b,r4:b
47.11215 ++ *[0-9a-f]*:	fc 0e 0a be 	mulsatrndhh\.h lr,lr:t,lr:t
47.11216 ++ *[0-9a-f]*:	ec 09 0a 8b 	mulsatrndhh\.h r11,r6:b,r9:b
47.11217 ++ *[0-9a-f]*:	e6 08 0a 9b 	mulsatrndhh\.h r11,r3:b,r8:t
47.11218 ++ *[0-9a-f]*:	fa 07 0a b5 	mulsatrndhh\.h r5,sp:t,r7:t
47.11219 ++
47.11220 ++[0-9a-f]* <mulsatrndwh_w>:
47.11221 ++ *[0-9a-f]*:	fe 0f 0b 8f 	mulsatrndwh\.w pc,pc,pc:b
47.11222 ++ *[0-9a-f]*:	f8 0c 0b 9c 	mulsatrndwh\.w r12,r12,r12:t
47.11223 ++ *[0-9a-f]*:	ea 05 0b 95 	mulsatrndwh\.w r5,r5,r5:t
47.11224 ++ *[0-9a-f]*:	e8 04 0b 84 	mulsatrndwh\.w r4,r4,r4:b
47.11225 ++ *[0-9a-f]*:	fc 0e 0b 9e 	mulsatrndwh\.w lr,lr,lr:t
47.11226 ++ *[0-9a-f]*:	f8 00 0b 85 	mulsatrndwh\.w r5,r12,r0:b
47.11227 ++ *[0-9a-f]*:	f4 0f 0b 87 	mulsatrndwh\.w r7,r10,pc:b
47.11228 ++ *[0-9a-f]*:	f0 05 0b 9a 	mulsatrndwh\.w r10,r8,r5:t
47.11229 ++
47.11230 ++[0-9a-f]* <macwh_d>:
47.11231 ++ *[0-9a-f]*:	fe 0f 0c 80 	macwh\.d r0,pc,pc:b
47.11232 ++ *[0-9a-f]*:	f8 0c 0c 9e 	macwh\.d lr,r12,r12:t
47.11233 ++ *[0-9a-f]*:	ea 05 0c 98 	macwh\.d r8,r5,r5:t
47.11234 ++ *[0-9a-f]*:	e8 04 0c 86 	macwh\.d r6,r4,r4:b
47.11235 ++ *[0-9a-f]*:	fc 0e 0c 92 	macwh\.d r2,lr,lr:t
47.11236 ++ *[0-9a-f]*:	f4 0c 0c 94 	macwh\.d r4,r10,r12:t
47.11237 ++ *[0-9a-f]*:	ee 0d 0c 84 	macwh\.d r4,r7,sp:b
47.11238 ++ *[0-9a-f]*:	f2 0b 0c 8e 	macwh\.d lr,r9,r11:b
47.11239 ++
47.11240 ++[0-9a-f]* <mulwh_d>:
47.11241 ++ *[0-9a-f]*:	fe 0f 0d 80 	mulwh\.d r0,pc,pc:b
47.11242 ++ *[0-9a-f]*:	f8 0c 0d 9e 	mulwh\.d lr,r12,r12:t
47.11243 ++ *[0-9a-f]*:	ea 05 0d 98 	mulwh\.d r8,r5,r5:t
47.11244 ++ *[0-9a-f]*:	e8 04 0d 86 	mulwh\.d r6,r4,r4:b
47.11245 ++ *[0-9a-f]*:	fc 0e 0d 92 	mulwh\.d r2,lr,lr:t
47.11246 ++ *[0-9a-f]*:	ea 01 0d 8c 	mulwh\.d r12,r5,r1:b
47.11247 ++ *[0-9a-f]*:	e2 03 0d 90 	mulwh\.d r0,r1,r3:t
47.11248 ++ *[0-9a-f]*:	f2 02 0d 80 	mulwh\.d r0,r9,r2:b
47.11249 ++
47.11250 ++[0-9a-f]* <mulsatwh_w>:
47.11251 ++ *[0-9a-f]*:	fe 0f 0e 8f 	mulsatwh\.w pc,pc,pc:b
47.11252 ++ *[0-9a-f]*:	f8 0c 0e 9c 	mulsatwh\.w r12,r12,r12:t
47.11253 ++ *[0-9a-f]*:	ea 05 0e 95 	mulsatwh\.w r5,r5,r5:t
47.11254 ++ *[0-9a-f]*:	e8 04 0e 84 	mulsatwh\.w r4,r4,r4:b
47.11255 ++ *[0-9a-f]*:	fc 0e 0e 9e 	mulsatwh\.w lr,lr,lr:t
47.11256 ++ *[0-9a-f]*:	fe 0a 0e 9b 	mulsatwh\.w r11,pc,r10:t
47.11257 ++ *[0-9a-f]*:	f8 09 0e 9d 	mulsatwh\.w sp,r12,r9:t
47.11258 ++ *[0-9a-f]*:	e6 02 0e 90 	mulsatwh\.w r0,r3,r2:t
47.11259 ++
47.11260 ++[0-9a-f]* <ldw7>:
47.11261 ++ *[0-9a-f]*:	fe 0f 0f 8f 	ld\.w pc,pc\[pc:b<<2\]
47.11262 ++ *[0-9a-f]*:	f8 0c 0f bc 	ld\.w r12,r12\[r12:t<<2\]
47.11263 ++ *[0-9a-f]*:	ea 05 0f a5 	ld\.w r5,r5\[r5:u<<2\]
47.11264 ++ *[0-9a-f]*:	e8 04 0f 94 	ld\.w r4,r4\[r4:l<<2\]
47.11265 ++ *[0-9a-f]*:	fc 0e 0f 9e 	ld\.w lr,lr\[lr:l<<2\]
47.11266 ++ *[0-9a-f]*:	f4 06 0f 99 	ld\.w r9,r10\[r6:l<<2\]
47.11267 ++ *[0-9a-f]*:	f4 0a 0f 82 	ld\.w r2,r10\[r10:b<<2\]
47.11268 ++ *[0-9a-f]*:	ea 0f 0f 8b 	ld\.w r11,r5\[pc:b<<2\]
47.11269 ++
47.11270 ++[0-9a-f]* <satadd_w>:
47.11271 ++ *[0-9a-f]*:	fe 0f 00 cf 	satadd\.w pc,pc,pc
47.11272 ++ *[0-9a-f]*:	f8 0c 00 cc 	satadd\.w r12,r12,r12
47.11273 ++ *[0-9a-f]*:	ea 05 00 c5 	satadd\.w r5,r5,r5
47.11274 ++ *[0-9a-f]*:	e8 04 00 c4 	satadd\.w r4,r4,r4
47.11275 ++ *[0-9a-f]*:	fc 0e 00 ce 	satadd\.w lr,lr,lr
47.11276 ++ *[0-9a-f]*:	f0 0b 00 c4 	satadd\.w r4,r8,r11
47.11277 ++ *[0-9a-f]*:	f8 06 00 c3 	satadd\.w r3,r12,r6
47.11278 ++ *[0-9a-f]*:	fc 09 00 c3 	satadd\.w r3,lr,r9
47.11279 ++
47.11280 ++[0-9a-f]* <satsub_w1>:
47.11281 ++ *[0-9a-f]*:	fe 0f 01 cf 	satsub\.w pc,pc,pc
47.11282 ++ *[0-9a-f]*:	f8 0c 01 cc 	satsub\.w r12,r12,r12
47.11283 ++ *[0-9a-f]*:	ea 05 01 c5 	satsub\.w r5,r5,r5
47.11284 ++ *[0-9a-f]*:	e8 04 01 c4 	satsub\.w r4,r4,r4
47.11285 ++ *[0-9a-f]*:	fc 0e 01 ce 	satsub\.w lr,lr,lr
47.11286 ++ *[0-9a-f]*:	fa 00 01 c8 	satsub\.w r8,sp,r0
47.11287 ++ *[0-9a-f]*:	f0 04 01 c9 	satsub\.w r9,r8,r4
47.11288 ++ *[0-9a-f]*:	fc 02 01 cf 	satsub\.w pc,lr,r2
47.11289 ++
47.11290 ++[0-9a-f]* <satadd_h>:
47.11291 ++ *[0-9a-f]*:	fe 0f 02 cf 	satadd\.h pc,pc,pc
47.11292 ++ *[0-9a-f]*:	f8 0c 02 cc 	satadd\.h r12,r12,r12
47.11293 ++ *[0-9a-f]*:	ea 05 02 c5 	satadd\.h r5,r5,r5
47.11294 ++ *[0-9a-f]*:	e8 04 02 c4 	satadd\.h r4,r4,r4
47.11295 ++ *[0-9a-f]*:	fc 0e 02 ce 	satadd\.h lr,lr,lr
47.11296 ++ *[0-9a-f]*:	e6 09 02 c7 	satadd\.h r7,r3,r9
47.11297 ++ *[0-9a-f]*:	e0 02 02 c1 	satadd\.h r1,r0,r2
47.11298 ++ *[0-9a-f]*:	e8 0e 02 c1 	satadd\.h r1,r4,lr
47.11299 ++
47.11300 ++[0-9a-f]* <satsub_h>:
47.11301 ++ *[0-9a-f]*:	fe 0f 03 cf 	satsub\.h pc,pc,pc
47.11302 ++ *[0-9a-f]*:	f8 0c 03 cc 	satsub\.h r12,r12,r12
47.11303 ++ *[0-9a-f]*:	ea 05 03 c5 	satsub\.h r5,r5,r5
47.11304 ++ *[0-9a-f]*:	e8 04 03 c4 	satsub\.h r4,r4,r4
47.11305 ++ *[0-9a-f]*:	fc 0e 03 ce 	satsub\.h lr,lr,lr
47.11306 ++ *[0-9a-f]*:	fc 03 03 ce 	satsub\.h lr,lr,r3
47.11307 ++ *[0-9a-f]*:	ec 05 03 cb 	satsub\.h r11,r6,r5
47.11308 ++ *[0-9a-f]*:	fa 00 03 c3 	satsub\.h r3,sp,r0
47.11309 ++
47.11310 ++[0-9a-f]* <mul3>:
47.11311 ++ *[0-9a-f]*:	fe 0f 10 00 	mul pc,pc,0
47.11312 ++ *[0-9a-f]*:	f8 0c 10 ff 	mul r12,r12,-1
47.11313 ++ *[0-9a-f]*:	ea 05 10 80 	mul r5,r5,-128
47.11314 ++ *[0-9a-f]*:	e8 04 10 7f 	mul r4,r4,127
47.11315 ++ *[0-9a-f]*:	fc 0e 10 01 	mul lr,lr,1
47.11316 ++ *[0-9a-f]*:	e4 0c 10 f9 	mul r12,r2,-7
47.11317 ++ *[0-9a-f]*:	fe 01 10 5f 	mul r1,pc,95
47.11318 ++ *[0-9a-f]*:	ec 04 10 13 	mul r4,r6,19
47.11319 ++
47.11320 ++[0-9a-f]* <rsub2>:
47.11321 ++ *[0-9a-f]*:	fe 0f 11 00 	rsub pc,pc,0
47.11322 ++ *[0-9a-f]*:	f8 0c 11 ff 	rsub r12,r12,-1
47.11323 ++ *[0-9a-f]*:	ea 05 11 80 	rsub r5,r5,-128
47.11324 ++ *[0-9a-f]*:	e8 04 11 7f 	rsub r4,r4,127
47.11325 ++ *[0-9a-f]*:	fc 0e 11 01 	rsub lr,lr,1
47.11326 ++ *[0-9a-f]*:	fc 09 11 60 	rsub r9,lr,96
47.11327 ++ *[0-9a-f]*:	e2 0b 11 38 	rsub r11,r1,56
47.11328 ++ *[0-9a-f]*:	ee 00 11 a9 	rsub r0,r7,-87
47.11329 ++
47.11330 ++[0-9a-f]* <clz>:
47.11331 ++ *[0-9a-f]*:	fe 0f 12 00 	clz pc,pc
47.11332 ++ *[0-9a-f]*:	f8 0c 12 00 	clz r12,r12
47.11333 ++ *[0-9a-f]*:	ea 05 12 00 	clz r5,r5
47.11334 ++ *[0-9a-f]*:	e8 04 12 00 	clz r4,r4
47.11335 ++ *[0-9a-f]*:	fc 0e 12 00 	clz lr,lr
47.11336 ++ *[0-9a-f]*:	e6 02 12 00 	clz r2,r3
47.11337 ++ *[0-9a-f]*:	f6 05 12 00 	clz r5,r11
47.11338 ++ *[0-9a-f]*:	e6 0f 12 00 	clz pc,r3
47.11339 ++
47.11340 ++[0-9a-f]* <cpc1>:
47.11341 ++ *[0-9a-f]*:	fe 0f 13 00 	cpc pc,pc
47.11342 ++ *[0-9a-f]*:	f8 0c 13 00 	cpc r12,r12
47.11343 ++ *[0-9a-f]*:	ea 05 13 00 	cpc r5,r5
47.11344 ++ *[0-9a-f]*:	e8 04 13 00 	cpc r4,r4
47.11345 ++ *[0-9a-f]*:	fc 0e 13 00 	cpc lr,lr
47.11346 ++ *[0-9a-f]*:	e8 0f 13 00 	cpc pc,r4
47.11347 ++ *[0-9a-f]*:	f2 05 13 00 	cpc r5,r9
47.11348 ++ *[0-9a-f]*:	ee 06 13 00 	cpc r6,r7
47.11349 ++
47.11350 ++[0-9a-f]* <asr3>:
47.11351 ++ *[0-9a-f]*:	fe 0f 14 00 	asr pc,pc,0x0
47.11352 ++ *[0-9a-f]*:	f8 0c 14 1f 	asr r12,r12,0x1f
47.11353 ++ *[0-9a-f]*:	ea 05 14 10 	asr r5,r5,0x10
47.11354 ++ *[0-9a-f]*:	e8 04 14 0f 	asr r4,r4,0xf
47.11355 ++ *[0-9a-f]*:	fc 0e 14 01 	asr lr,lr,0x1
47.11356 ++ *[0-9a-f]*:	f6 04 14 13 	asr r4,r11,0x13
47.11357 ++ *[0-9a-f]*:	fe 0d 14 1a 	asr sp,pc,0x1a
47.11358 ++ *[0-9a-f]*:	fa 0b 14 08 	asr r11,sp,0x8
47.11359 ++
47.11360 ++[0-9a-f]* <lsl3>:
47.11361 ++ *[0-9a-f]*:	fe 0f 15 00 	lsl pc,pc,0x0
47.11362 ++ *[0-9a-f]*:	f8 0c 15 1f 	lsl r12,r12,0x1f
47.11363 ++ *[0-9a-f]*:	ea 05 15 10 	lsl r5,r5,0x10
47.11364 ++ *[0-9a-f]*:	e8 04 15 0f 	lsl r4,r4,0xf
47.11365 ++ *[0-9a-f]*:	fc 0e 15 01 	lsl lr,lr,0x1
47.11366 ++ *[0-9a-f]*:	f4 08 15 11 	lsl r8,r10,0x11
47.11367 ++ *[0-9a-f]*:	fc 02 15 03 	lsl r2,lr,0x3
47.11368 ++ *[0-9a-f]*:	f6 0e 15 0e 	lsl lr,r11,0xe
47.11369 ++
47.11370 ++[0-9a-f]* <lsr3>:
47.11371 ++ *[0-9a-f]*:	fe 0f 16 00 	lsr pc,pc,0x0
47.11372 ++ *[0-9a-f]*:	f8 0c 16 1f 	lsr r12,r12,0x1f
47.11373 ++ *[0-9a-f]*:	ea 05 16 10 	lsr r5,r5,0x10
47.11374 ++ *[0-9a-f]*:	e8 04 16 0f 	lsr r4,r4,0xf
47.11375 ++ *[0-9a-f]*:	fc 0e 16 01 	lsr lr,lr,0x1
47.11376 ++ *[0-9a-f]*:	e6 04 16 1f 	lsr r4,r3,0x1f
47.11377 ++ *[0-9a-f]*:	f2 0f 16 0e 	lsr pc,r9,0xe
47.11378 ++ *[0-9a-f]*:	e0 03 16 06 	lsr r3,r0,0x6
47.11379 ++
47.11380 ++[0-9a-f]* <movc1>:
47.11381 ++ *[0-9a-f]*:	fe 0f 17 00 	moveq pc,pc
47.11382 ++ *[0-9a-f]*:	f8 0c 17 f0 	moval r12,r12
47.11383 ++ *[0-9a-f]*:	ea 05 17 80 	movls r5,r5
47.11384 ++ *[0-9a-f]*:	e8 04 17 70 	movpl r4,r4
47.11385 ++ *[0-9a-f]*:	fc 0e 17 10 	movne lr,lr
47.11386 ++ *[0-9a-f]*:	f6 0f 17 10 	movne pc,r11
47.11387 ++ *[0-9a-f]*:	e4 0a 17 60 	movmi r10,r2
47.11388 ++ *[0-9a-f]*:	f8 08 17 80 	movls r8,r12
47.11389 ++
47.11390 ++[0-9a-f]* <padd_h>:
47.11391 ++ *[0-9a-f]*:	fe 0f 20 0f 	padd\.h pc,pc,pc
47.11392 ++ *[0-9a-f]*:	f8 0c 20 0c 	padd\.h r12,r12,r12
47.11393 ++ *[0-9a-f]*:	ea 05 20 05 	padd\.h r5,r5,r5
47.11394 ++ *[0-9a-f]*:	e8 04 20 04 	padd\.h r4,r4,r4
47.11395 ++ *[0-9a-f]*:	fc 0e 20 0e 	padd\.h lr,lr,lr
47.11396 ++ *[0-9a-f]*:	e4 07 20 08 	padd\.h r8,r2,r7
47.11397 ++ *[0-9a-f]*:	e0 03 20 00 	padd\.h r0,r0,r3
47.11398 ++ *[0-9a-f]*:	f6 06 20 0d 	padd\.h sp,r11,r6
47.11399 ++
47.11400 ++[0-9a-f]* <psub_h>:
47.11401 ++ *[0-9a-f]*:	fe 0f 20 1f 	psub\.h pc,pc,pc
47.11402 ++ *[0-9a-f]*:	f8 0c 20 1c 	psub\.h r12,r12,r12
47.11403 ++ *[0-9a-f]*:	ea 05 20 15 	psub\.h r5,r5,r5
47.11404 ++ *[0-9a-f]*:	e8 04 20 14 	psub\.h r4,r4,r4
47.11405 ++ *[0-9a-f]*:	fc 0e 20 1e 	psub\.h lr,lr,lr
47.11406 ++ *[0-9a-f]*:	ec 08 20 1e 	psub\.h lr,r6,r8
47.11407 ++ *[0-9a-f]*:	e2 0d 20 10 	psub\.h r0,r1,sp
47.11408 ++ *[0-9a-f]*:	fe 0d 20 1f 	psub\.h pc,pc,sp
47.11409 ++
47.11410 ++[0-9a-f]* <paddx_h>:
47.11411 ++ *[0-9a-f]*:	fe 0f 20 2f 	paddx\.h pc,pc,pc
47.11412 ++ *[0-9a-f]*:	f8 0c 20 2c 	paddx\.h r12,r12,r12
47.11413 ++ *[0-9a-f]*:	ea 05 20 25 	paddx\.h r5,r5,r5
47.11414 ++ *[0-9a-f]*:	e8 04 20 24 	paddx\.h r4,r4,r4
47.11415 ++ *[0-9a-f]*:	fc 0e 20 2e 	paddx\.h lr,lr,lr
47.11416 ++ *[0-9a-f]*:	fe 01 20 2f 	paddx\.h pc,pc,r1
47.11417 ++ *[0-9a-f]*:	e8 05 20 2a 	paddx\.h r10,r4,r5
47.11418 ++ *[0-9a-f]*:	fe 02 20 25 	paddx\.h r5,pc,r2
47.11419 ++
47.11420 ++[0-9a-f]* <psubx_h>:
47.11421 ++ *[0-9a-f]*:	fe 0f 20 3f 	psubx\.h pc,pc,pc
47.11422 ++ *[0-9a-f]*:	f8 0c 20 3c 	psubx\.h r12,r12,r12
47.11423 ++ *[0-9a-f]*:	ea 05 20 35 	psubx\.h r5,r5,r5
47.11424 ++ *[0-9a-f]*:	e8 04 20 34 	psubx\.h r4,r4,r4
47.11425 ++ *[0-9a-f]*:	fc 0e 20 3e 	psubx\.h lr,lr,lr
47.11426 ++ *[0-9a-f]*:	f8 05 20 35 	psubx\.h r5,r12,r5
47.11427 ++ *[0-9a-f]*:	f0 03 20 33 	psubx\.h r3,r8,r3
47.11428 ++ *[0-9a-f]*:	e4 03 20 35 	psubx\.h r5,r2,r3
47.11429 ++
47.11430 ++[0-9a-f]* <padds_sh>:
47.11431 ++ *[0-9a-f]*:	fe 0f 20 4f 	padds\.sh pc,pc,pc
47.11432 ++ *[0-9a-f]*:	f8 0c 20 4c 	padds\.sh r12,r12,r12
47.11433 ++ *[0-9a-f]*:	ea 05 20 45 	padds\.sh r5,r5,r5
47.11434 ++ *[0-9a-f]*:	e8 04 20 44 	padds\.sh r4,r4,r4
47.11435 ++ *[0-9a-f]*:	fc 0e 20 4e 	padds\.sh lr,lr,lr
47.11436 ++ *[0-9a-f]*:	fc 02 20 49 	padds\.sh r9,lr,r2
47.11437 ++ *[0-9a-f]*:	f0 01 20 46 	padds\.sh r6,r8,r1
47.11438 ++ *[0-9a-f]*:	e8 0a 20 46 	padds\.sh r6,r4,r10
47.11439 ++
47.11440 ++[0-9a-f]* <psubs_sh>:
47.11441 ++ *[0-9a-f]*:	fe 0f 20 5f 	psubs\.sh pc,pc,pc
47.11442 ++ *[0-9a-f]*:	f8 0c 20 5c 	psubs\.sh r12,r12,r12
47.11443 ++ *[0-9a-f]*:	ea 05 20 55 	psubs\.sh r5,r5,r5
47.11444 ++ *[0-9a-f]*:	e8 04 20 54 	psubs\.sh r4,r4,r4
47.11445 ++ *[0-9a-f]*:	fc 0e 20 5e 	psubs\.sh lr,lr,lr
47.11446 ++ *[0-9a-f]*:	fc 0b 20 56 	psubs\.sh r6,lr,r11
47.11447 ++ *[0-9a-f]*:	f8 04 20 52 	psubs\.sh r2,r12,r4
47.11448 ++ *[0-9a-f]*:	f2 00 20 50 	psubs\.sh r0,r9,r0
47.11449 ++
47.11450 ++[0-9a-f]* <paddxs_sh>:
47.11451 ++ *[0-9a-f]*:	fe 0f 20 6f 	paddxs\.sh pc,pc,pc
47.11452 ++ *[0-9a-f]*:	f8 0c 20 6c 	paddxs\.sh r12,r12,r12
47.11453 ++ *[0-9a-f]*:	ea 05 20 65 	paddxs\.sh r5,r5,r5
47.11454 ++ *[0-9a-f]*:	e8 04 20 64 	paddxs\.sh r4,r4,r4
47.11455 ++ *[0-9a-f]*:	fc 0e 20 6e 	paddxs\.sh lr,lr,lr
47.11456 ++ *[0-9a-f]*:	e6 09 20 60 	paddxs\.sh r0,r3,r9
47.11457 ++ *[0-9a-f]*:	f4 0b 20 6f 	paddxs\.sh pc,r10,r11
47.11458 ++ *[0-9a-f]*:	f4 0f 20 6f 	paddxs\.sh pc,r10,pc
47.11459 ++
47.11460 ++[0-9a-f]* <psubxs_sh>:
47.11461 ++ *[0-9a-f]*:	fe 0f 20 7f 	psubxs\.sh pc,pc,pc
47.11462 ++ *[0-9a-f]*:	f8 0c 20 7c 	psubxs\.sh r12,r12,r12
47.11463 ++ *[0-9a-f]*:	ea 05 20 75 	psubxs\.sh r5,r5,r5
47.11464 ++ *[0-9a-f]*:	e8 04 20 74 	psubxs\.sh r4,r4,r4
47.11465 ++ *[0-9a-f]*:	fc 0e 20 7e 	psubxs\.sh lr,lr,lr
47.11466 ++ *[0-9a-f]*:	e8 04 20 77 	psubxs\.sh r7,r4,r4
47.11467 ++ *[0-9a-f]*:	f0 03 20 77 	psubxs\.sh r7,r8,r3
47.11468 ++ *[0-9a-f]*:	ec 05 20 7f 	psubxs\.sh pc,r6,r5
47.11469 ++
47.11470 ++[0-9a-f]* <padds_uh>:
47.11471 ++ *[0-9a-f]*:	fe 0f 20 8f 	padds\.uh pc,pc,pc
47.11472 ++ *[0-9a-f]*:	f8 0c 20 8c 	padds\.uh r12,r12,r12
47.11473 ++ *[0-9a-f]*:	ea 05 20 85 	padds\.uh r5,r5,r5
47.11474 ++ *[0-9a-f]*:	e8 04 20 84 	padds\.uh r4,r4,r4
47.11475 ++ *[0-9a-f]*:	fc 0e 20 8e 	padds\.uh lr,lr,lr
47.11476 ++ *[0-9a-f]*:	f6 07 20 8c 	padds\.uh r12,r11,r7
47.11477 ++ *[0-9a-f]*:	f0 0e 20 87 	padds\.uh r7,r8,lr
47.11478 ++ *[0-9a-f]*:	f2 07 20 86 	padds\.uh r6,r9,r7
47.11479 ++
47.11480 ++[0-9a-f]* <psubs_uh>:
47.11481 ++ *[0-9a-f]*:	fe 0f 20 9f 	psubs\.uh pc,pc,pc
47.11482 ++ *[0-9a-f]*:	f8 0c 20 9c 	psubs\.uh r12,r12,r12
47.11483 ++ *[0-9a-f]*:	ea 05 20 95 	psubs\.uh r5,r5,r5
47.11484 ++ *[0-9a-f]*:	e8 04 20 94 	psubs\.uh r4,r4,r4
47.11485 ++ *[0-9a-f]*:	fc 0e 20 9e 	psubs\.uh lr,lr,lr
47.11486 ++ *[0-9a-f]*:	f4 06 20 9e 	psubs\.uh lr,r10,r6
47.11487 ++ *[0-9a-f]*:	e4 0f 20 9d 	psubs\.uh sp,r2,pc
47.11488 ++ *[0-9a-f]*:	f2 02 20 92 	psubs\.uh r2,r9,r2
47.11489 ++
47.11490 ++[0-9a-f]* <paddxs_uh>:
47.11491 ++ *[0-9a-f]*:	fe 0f 20 af 	paddxs\.uh pc,pc,pc
47.11492 ++ *[0-9a-f]*:	f8 0c 20 ac 	paddxs\.uh r12,r12,r12
47.11493 ++ *[0-9a-f]*:	ea 05 20 a5 	paddxs\.uh r5,r5,r5
47.11494 ++ *[0-9a-f]*:	e8 04 20 a4 	paddxs\.uh r4,r4,r4
47.11495 ++ *[0-9a-f]*:	fc 0e 20 ae 	paddxs\.uh lr,lr,lr
47.11496 ++ *[0-9a-f]*:	f2 05 20 a7 	paddxs\.uh r7,r9,r5
47.11497 ++ *[0-9a-f]*:	e2 04 20 a9 	paddxs\.uh r9,r1,r4
47.11498 ++ *[0-9a-f]*:	e4 03 20 a5 	paddxs\.uh r5,r2,r3
47.11499 ++
47.11500 ++[0-9a-f]* <psubxs_uh>:
47.11501 ++ *[0-9a-f]*:	fe 0f 20 bf 	psubxs\.uh pc,pc,pc
47.11502 ++ *[0-9a-f]*:	f8 0c 20 bc 	psubxs\.uh r12,r12,r12
47.11503 ++ *[0-9a-f]*:	ea 05 20 b5 	psubxs\.uh r5,r5,r5
47.11504 ++ *[0-9a-f]*:	e8 04 20 b4 	psubxs\.uh r4,r4,r4
47.11505 ++ *[0-9a-f]*:	fc 0e 20 be 	psubxs\.uh lr,lr,lr
47.11506 ++ *[0-9a-f]*:	ea 0d 20 bd 	psubxs\.uh sp,r5,sp
47.11507 ++ *[0-9a-f]*:	ec 06 20 bd 	psubxs\.uh sp,r6,r6
47.11508 ++ *[0-9a-f]*:	f6 08 20 b3 	psubxs\.uh r3,r11,r8
47.11509 ++
47.11510 ++[0-9a-f]* <paddh_sh>:
47.11511 ++ *[0-9a-f]*:	fe 0f 20 cf 	paddh\.sh pc,pc,pc
47.11512 ++ *[0-9a-f]*:	f8 0c 20 cc 	paddh\.sh r12,r12,r12
47.11513 ++ *[0-9a-f]*:	ea 05 20 c5 	paddh\.sh r5,r5,r5
47.11514 ++ *[0-9a-f]*:	e8 04 20 c4 	paddh\.sh r4,r4,r4
47.11515 ++ *[0-9a-f]*:	fc 0e 20 ce 	paddh\.sh lr,lr,lr
47.11516 ++ *[0-9a-f]*:	fa 03 20 cc 	paddh\.sh r12,sp,r3
47.11517 ++ *[0-9a-f]*:	ea 03 20 cf 	paddh\.sh pc,r5,r3
47.11518 ++ *[0-9a-f]*:	f0 0d 20 c8 	paddh\.sh r8,r8,sp
47.11519 ++
47.11520 ++[0-9a-f]* <psubh_sh>:
47.11521 ++ *[0-9a-f]*:	fe 0f 20 df 	psubh\.sh pc,pc,pc
47.11522 ++ *[0-9a-f]*:	f8 0c 20 dc 	psubh\.sh r12,r12,r12
47.11523 ++ *[0-9a-f]*:	ea 05 20 d5 	psubh\.sh r5,r5,r5
47.11524 ++ *[0-9a-f]*:	e8 04 20 d4 	psubh\.sh r4,r4,r4
47.11525 ++ *[0-9a-f]*:	fc 0e 20 de 	psubh\.sh lr,lr,lr
47.11526 ++ *[0-9a-f]*:	ea 08 20 d1 	psubh\.sh r1,r5,r8
47.11527 ++ *[0-9a-f]*:	e6 06 20 d7 	psubh\.sh r7,r3,r6
47.11528 ++ *[0-9a-f]*:	e6 03 20 d4 	psubh\.sh r4,r3,r3
47.11529 ++
47.11530 ++[0-9a-f]* <paddxh_sh>:
47.11531 ++ *[0-9a-f]*:	fe 0f 20 ef 	paddxh\.sh pc,pc,pc
47.11532 ++ *[0-9a-f]*:	f8 0c 20 ec 	paddxh\.sh r12,r12,r12
47.11533 ++ *[0-9a-f]*:	ea 05 20 e5 	paddxh\.sh r5,r5,r5
47.11534 ++ *[0-9a-f]*:	e8 04 20 e4 	paddxh\.sh r4,r4,r4
47.11535 ++ *[0-9a-f]*:	fc 0e 20 ee 	paddxh\.sh lr,lr,lr
47.11536 ++ *[0-9a-f]*:	e0 04 20 e6 	paddxh\.sh r6,r0,r4
47.11537 ++ *[0-9a-f]*:	f0 09 20 e9 	paddxh\.sh r9,r8,r9
47.11538 ++ *[0-9a-f]*:	e0 0d 20 e3 	paddxh\.sh r3,r0,sp
47.11539 ++
47.11540 ++[0-9a-f]* <psubxh_sh>:
47.11541 ++ *[0-9a-f]*:	fe 0f 20 ff 	psubxh\.sh pc,pc,pc
47.11542 ++ *[0-9a-f]*:	f8 0c 20 fc 	psubxh\.sh r12,r12,r12
47.11543 ++ *[0-9a-f]*:	ea 05 20 f5 	psubxh\.sh r5,r5,r5
47.11544 ++ *[0-9a-f]*:	e8 04 20 f4 	psubxh\.sh r4,r4,r4
47.11545 ++ *[0-9a-f]*:	fc 0e 20 fe 	psubxh\.sh lr,lr,lr
47.11546 ++ *[0-9a-f]*:	fe 0c 20 f4 	psubxh\.sh r4,pc,r12
47.11547 ++ *[0-9a-f]*:	e8 06 20 f8 	psubxh\.sh r8,r4,r6
47.11548 ++ *[0-9a-f]*:	f2 04 20 fc 	psubxh\.sh r12,r9,r4
47.11549 ++
47.11550 ++[0-9a-f]* <paddsub_h>:
47.11551 ++ *[0-9a-f]*:	fe 0f 21 0f 	paddsub\.h pc,pc:b,pc:b
47.11552 ++ *[0-9a-f]*:	f8 0c 21 3c 	paddsub\.h r12,r12:t,r12:t
47.11553 ++ *[0-9a-f]*:	ea 05 21 35 	paddsub\.h r5,r5:t,r5:t
47.11554 ++ *[0-9a-f]*:	e8 04 21 04 	paddsub\.h r4,r4:b,r4:b
47.11555 ++ *[0-9a-f]*:	fc 0e 21 3e 	paddsub\.h lr,lr:t,lr:t
47.11556 ++ *[0-9a-f]*:	e4 0e 21 25 	paddsub\.h r5,r2:t,lr:b
47.11557 ++ *[0-9a-f]*:	e2 08 21 07 	paddsub\.h r7,r1:b,r8:b
47.11558 ++ *[0-9a-f]*:	f4 05 21 36 	paddsub\.h r6,r10:t,r5:t
47.11559 ++
47.11560 ++[0-9a-f]* <psubadd_h>:
47.11561 ++ *[0-9a-f]*:	fe 0f 21 4f 	psubadd\.h pc,pc:b,pc:b
47.11562 ++ *[0-9a-f]*:	f8 0c 21 7c 	psubadd\.h r12,r12:t,r12:t
47.11563 ++ *[0-9a-f]*:	ea 05 21 75 	psubadd\.h r5,r5:t,r5:t
47.11564 ++ *[0-9a-f]*:	e8 04 21 44 	psubadd\.h r4,r4:b,r4:b
47.11565 ++ *[0-9a-f]*:	fc 0e 21 7e 	psubadd\.h lr,lr:t,lr:t
47.11566 ++ *[0-9a-f]*:	f6 08 21 79 	psubadd\.h r9,r11:t,r8:t
47.11567 ++ *[0-9a-f]*:	ee 0e 21 7a 	psubadd\.h r10,r7:t,lr:t
47.11568 ++ *[0-9a-f]*:	fe 0f 21 66 	psubadd\.h r6,pc:t,pc:b
47.11569 ++
47.11570 ++[0-9a-f]* <paddsubs_sh>:
47.11571 ++ *[0-9a-f]*:	fe 0f 21 8f 	paddsubs\.sh pc,pc:b,pc:b
47.11572 ++ *[0-9a-f]*:	f8 0c 21 bc 	paddsubs\.sh r12,r12:t,r12:t
47.11573 ++ *[0-9a-f]*:	ea 05 21 b5 	paddsubs\.sh r5,r5:t,r5:t
47.11574 ++ *[0-9a-f]*:	e8 04 21 84 	paddsubs\.sh r4,r4:b,r4:b
47.11575 ++ *[0-9a-f]*:	fc 0e 21 be 	paddsubs\.sh lr,lr:t,lr:t
47.11576 ++ *[0-9a-f]*:	fc 00 21 a0 	paddsubs\.sh r0,lr:t,r0:b
47.11577 ++ *[0-9a-f]*:	e4 04 21 b9 	paddsubs\.sh r9,r2:t,r4:t
47.11578 ++ *[0-9a-f]*:	f2 0d 21 bc 	paddsubs\.sh r12,r9:t,sp:t
47.11579 ++
47.11580 ++[0-9a-f]* <psubadds_sh>:
47.11581 ++ *[0-9a-f]*:	fe 0f 21 cf 	psubadds\.sh pc,pc:b,pc:b
47.11582 ++ *[0-9a-f]*:	f8 0c 21 fc 	psubadds\.sh r12,r12:t,r12:t
47.11583 ++ *[0-9a-f]*:	ea 05 21 f5 	psubadds\.sh r5,r5:t,r5:t
47.11584 ++ *[0-9a-f]*:	e8 04 21 c4 	psubadds\.sh r4,r4:b,r4:b
47.11585 ++ *[0-9a-f]*:	fc 0e 21 fe 	psubadds\.sh lr,lr:t,lr:t
47.11586 ++ *[0-9a-f]*:	fc 01 21 df 	psubadds\.sh pc,lr:b,r1:t
47.11587 ++ *[0-9a-f]*:	e6 0c 21 cb 	psubadds\.sh r11,r3:b,r12:b
47.11588 ++ *[0-9a-f]*:	e4 08 21 fa 	psubadds\.sh r10,r2:t,r8:t
47.11589 ++
47.11590 ++[0-9a-f]* <paddsubs_uh>:
47.11591 ++ *[0-9a-f]*:	fe 0f 22 0f 	paddsubs\.uh pc,pc:b,pc:b
47.11592 ++ *[0-9a-f]*:	f8 0c 22 3c 	paddsubs\.uh r12,r12:t,r12:t
47.11593 ++ *[0-9a-f]*:	ea 05 22 35 	paddsubs\.uh r5,r5:t,r5:t
47.11594 ++ *[0-9a-f]*:	e8 04 22 04 	paddsubs\.uh r4,r4:b,r4:b
47.11595 ++ *[0-9a-f]*:	fc 0e 22 3e 	paddsubs\.uh lr,lr:t,lr:t
47.11596 ++ *[0-9a-f]*:	e4 03 22 09 	paddsubs\.uh r9,r2:b,r3:b
47.11597 ++ *[0-9a-f]*:	fa 07 22 1d 	paddsubs\.uh sp,sp:b,r7:t
47.11598 ++ *[0-9a-f]*:	e0 0a 22 1e 	paddsubs\.uh lr,r0:b,r10:t
47.11599 ++
47.11600 ++[0-9a-f]* <psubadds_uh>:
47.11601 ++ *[0-9a-f]*:	fe 0f 22 4f 	psubadds\.uh pc,pc:b,pc:b
47.11602 ++ *[0-9a-f]*:	f8 0c 22 7c 	psubadds\.uh r12,r12:t,r12:t
47.11603 ++ *[0-9a-f]*:	ea 05 22 75 	psubadds\.uh r5,r5:t,r5:t
47.11604 ++ *[0-9a-f]*:	e8 04 22 44 	psubadds\.uh r4,r4:b,r4:b
47.11605 ++ *[0-9a-f]*:	fc 0e 22 7e 	psubadds\.uh lr,lr:t,lr:t
47.11606 ++ *[0-9a-f]*:	f2 0f 22 7c 	psubadds\.uh r12,r9:t,pc:t
47.11607 ++ *[0-9a-f]*:	ec 08 22 48 	psubadds\.uh r8,r6:b,r8:b
47.11608 ++ *[0-9a-f]*:	f0 04 22 48 	psubadds\.uh r8,r8:b,r4:b
47.11609 ++
47.11610 ++[0-9a-f]* <paddsubh_sh>:
47.11611 ++ *[0-9a-f]*:	fe 0f 22 8f 	paddsubh\.sh pc,pc:b,pc:b
47.11612 ++ *[0-9a-f]*:	f8 0c 22 bc 	paddsubh\.sh r12,r12:t,r12:t
47.11613 ++ *[0-9a-f]*:	ea 05 22 b5 	paddsubh\.sh r5,r5:t,r5:t
47.11614 ++ *[0-9a-f]*:	e8 04 22 84 	paddsubh\.sh r4,r4:b,r4:b
47.11615 ++ *[0-9a-f]*:	fc 0e 22 be 	paddsubh\.sh lr,lr:t,lr:t
47.11616 ++ *[0-9a-f]*:	f2 09 22 a8 	paddsubh\.sh r8,r9:t,r9:b
47.11617 ++ *[0-9a-f]*:	fa 01 22 b0 	paddsubh\.sh r0,sp:t,r1:t
47.11618 ++ *[0-9a-f]*:	e2 00 22 93 	paddsubh\.sh r3,r1:b,r0:t
47.11619 ++
47.11620 ++[0-9a-f]* <psubaddh_sh>:
47.11621 ++ *[0-9a-f]*:	fe 0f 22 cf 	psubaddh\.sh pc,pc:b,pc:b
47.11622 ++ *[0-9a-f]*:	f8 0c 22 fc 	psubaddh\.sh r12,r12:t,r12:t
47.11623 ++ *[0-9a-f]*:	ea 05 22 f5 	psubaddh\.sh r5,r5:t,r5:t
47.11624 ++ *[0-9a-f]*:	e8 04 22 c4 	psubaddh\.sh r4,r4:b,r4:b
47.11625 ++ *[0-9a-f]*:	fc 0e 22 fe 	psubaddh\.sh lr,lr:t,lr:t
47.11626 ++ *[0-9a-f]*:	e6 0a 22 e7 	psubaddh\.sh r7,r3:t,r10:b
47.11627 ++ *[0-9a-f]*:	e4 01 22 f7 	psubaddh\.sh r7,r2:t,r1:t
47.11628 ++ *[0-9a-f]*:	e6 06 22 cb 	psubaddh\.sh r11,r3:b,r6:b
47.11629 ++
47.11630 ++[0-9a-f]* <padd_b>:
47.11631 ++ *[0-9a-f]*:	fe 0f 23 0f 	padd\.b pc,pc,pc
47.11632 ++ *[0-9a-f]*:	f8 0c 23 0c 	padd\.b r12,r12,r12
47.11633 ++ *[0-9a-f]*:	ea 05 23 05 	padd\.b r5,r5,r5
47.11634 ++ *[0-9a-f]*:	e8 04 23 04 	padd\.b r4,r4,r4
47.11635 ++ *[0-9a-f]*:	fc 0e 23 0e 	padd\.b lr,lr,lr
47.11636 ++ *[0-9a-f]*:	ec 0f 23 02 	padd\.b r2,r6,pc
47.11637 ++ *[0-9a-f]*:	f2 0c 23 08 	padd\.b r8,r9,r12
47.11638 ++ *[0-9a-f]*:	f8 03 23 05 	padd\.b r5,r12,r3
47.11639 ++
47.11640 ++[0-9a-f]* <psub_b>:
47.11641 ++ *[0-9a-f]*:	fe 0f 23 1f 	psub\.b pc,pc,pc
47.11642 ++ *[0-9a-f]*:	f8 0c 23 1c 	psub\.b r12,r12,r12
47.11643 ++ *[0-9a-f]*:	ea 05 23 15 	psub\.b r5,r5,r5
47.11644 ++ *[0-9a-f]*:	e8 04 23 14 	psub\.b r4,r4,r4
47.11645 ++ *[0-9a-f]*:	fc 0e 23 1e 	psub\.b lr,lr,lr
47.11646 ++ *[0-9a-f]*:	f8 0f 23 10 	psub\.b r0,r12,pc
47.11647 ++ *[0-9a-f]*:	fa 0a 23 17 	psub\.b r7,sp,r10
47.11648 ++ *[0-9a-f]*:	fa 0c 23 15 	psub\.b r5,sp,r12
47.11649 ++
47.11650 ++[0-9a-f]* <padds_sb>:
47.11651 ++ *[0-9a-f]*:	fe 0f 23 2f 	padds\.sb pc,pc,pc
47.11652 ++ *[0-9a-f]*:	f8 0c 23 2c 	padds\.sb r12,r12,r12
47.11653 ++ *[0-9a-f]*:	ea 05 23 25 	padds\.sb r5,r5,r5
47.11654 ++ *[0-9a-f]*:	e8 04 23 24 	padds\.sb r4,r4,r4
47.11655 ++ *[0-9a-f]*:	fc 0e 23 2e 	padds\.sb lr,lr,lr
47.11656 ++ *[0-9a-f]*:	f6 04 23 2d 	padds\.sb sp,r11,r4
47.11657 ++ *[0-9a-f]*:	f4 0b 23 2b 	padds\.sb r11,r10,r11
47.11658 ++ *[0-9a-f]*:	f8 06 23 25 	padds\.sb r5,r12,r6
47.11659 ++
47.11660 ++[0-9a-f]* <psubs_sb>:
47.11661 ++ *[0-9a-f]*:	fe 0f 23 3f 	psubs\.sb pc,pc,pc
47.11662 ++ *[0-9a-f]*:	f8 0c 23 3c 	psubs\.sb r12,r12,r12
47.11663 ++ *[0-9a-f]*:	ea 05 23 35 	psubs\.sb r5,r5,r5
47.11664 ++ *[0-9a-f]*:	e8 04 23 34 	psubs\.sb r4,r4,r4
47.11665 ++ *[0-9a-f]*:	fc 0e 23 3e 	psubs\.sb lr,lr,lr
47.11666 ++ *[0-9a-f]*:	ec 08 23 37 	psubs\.sb r7,r6,r8
47.11667 ++ *[0-9a-f]*:	f4 09 23 3c 	psubs\.sb r12,r10,r9
47.11668 ++ *[0-9a-f]*:	f6 00 23 3f 	psubs\.sb pc,r11,r0
47.11669 ++
47.11670 ++[0-9a-f]* <padds_ub>:
47.11671 ++ *[0-9a-f]*:	fe 0f 23 4f 	padds\.ub pc,pc,pc
47.11672 ++ *[0-9a-f]*:	f8 0c 23 4c 	padds\.ub r12,r12,r12
47.11673 ++ *[0-9a-f]*:	ea 05 23 45 	padds\.ub r5,r5,r5
47.11674 ++ *[0-9a-f]*:	e8 04 23 44 	padds\.ub r4,r4,r4
47.11675 ++ *[0-9a-f]*:	fc 0e 23 4e 	padds\.ub lr,lr,lr
47.11676 ++ *[0-9a-f]*:	e4 0b 23 43 	padds\.ub r3,r2,r11
47.11677 ++ *[0-9a-f]*:	f0 01 23 4a 	padds\.ub r10,r8,r1
47.11678 ++ *[0-9a-f]*:	f0 0a 23 4b 	padds\.ub r11,r8,r10
47.11679 ++
47.11680 ++[0-9a-f]* <psubs_ub>:
47.11681 ++ *[0-9a-f]*:	fe 0f 23 5f 	psubs\.ub pc,pc,pc
47.11682 ++ *[0-9a-f]*:	f8 0c 23 5c 	psubs\.ub r12,r12,r12
47.11683 ++ *[0-9a-f]*:	ea 05 23 55 	psubs\.ub r5,r5,r5
47.11684 ++ *[0-9a-f]*:	e8 04 23 54 	psubs\.ub r4,r4,r4
47.11685 ++ *[0-9a-f]*:	fc 0e 23 5e 	psubs\.ub lr,lr,lr
47.11686 ++ *[0-9a-f]*:	e4 07 23 50 	psubs\.ub r0,r2,r7
47.11687 ++ *[0-9a-f]*:	ea 03 23 5e 	psubs\.ub lr,r5,r3
47.11688 ++ *[0-9a-f]*:	ee 09 23 56 	psubs\.ub r6,r7,r9
47.11689 ++
47.11690 ++[0-9a-f]* <paddh_ub>:
47.11691 ++ *[0-9a-f]*:	fe 0f 23 6f 	paddh\.ub pc,pc,pc
47.11692 ++ *[0-9a-f]*:	f8 0c 23 6c 	paddh\.ub r12,r12,r12
47.11693 ++ *[0-9a-f]*:	ea 05 23 65 	paddh\.ub r5,r5,r5
47.11694 ++ *[0-9a-f]*:	e8 04 23 64 	paddh\.ub r4,r4,r4
47.11695 ++ *[0-9a-f]*:	fc 0e 23 6e 	paddh\.ub lr,lr,lr
47.11696 ++ *[0-9a-f]*:	e2 00 23 6e 	paddh\.ub lr,r1,r0
47.11697 ++ *[0-9a-f]*:	ee 07 23 62 	paddh\.ub r2,r7,r7
47.11698 ++ *[0-9a-f]*:	e2 02 23 62 	paddh\.ub r2,r1,r2
47.11699 ++
47.11700 ++[0-9a-f]* <psubh_ub>:
47.11701 ++ *[0-9a-f]*:	fe 0f 23 7f 	psubh\.ub pc,pc,pc
47.11702 ++ *[0-9a-f]*:	f8 0c 23 7c 	psubh\.ub r12,r12,r12
47.11703 ++ *[0-9a-f]*:	ea 05 23 75 	psubh\.ub r5,r5,r5
47.11704 ++ *[0-9a-f]*:	e8 04 23 74 	psubh\.ub r4,r4,r4
47.11705 ++ *[0-9a-f]*:	fc 0e 23 7e 	psubh\.ub lr,lr,lr
47.11706 ++ *[0-9a-f]*:	e2 06 23 70 	psubh\.ub r0,r1,r6
47.11707 ++ *[0-9a-f]*:	fc 0a 23 74 	psubh\.ub r4,lr,r10
47.11708 ++ *[0-9a-f]*:	f0 01 23 79 	psubh\.ub r9,r8,r1
47.11709 ++
47.11710 ++[0-9a-f]* <pmax_ub>:
47.11711 ++ *[0-9a-f]*:	fe 0f 23 8f 	pmax\.ub pc,pc,pc
47.11712 ++ *[0-9a-f]*:	f8 0c 23 8c 	pmax\.ub r12,r12,r12
47.11713 ++ *[0-9a-f]*:	ea 05 23 85 	pmax\.ub r5,r5,r5
47.11714 ++ *[0-9a-f]*:	e8 04 23 84 	pmax\.ub r4,r4,r4
47.11715 ++ *[0-9a-f]*:	fc 0e 23 8e 	pmax\.ub lr,lr,lr
47.11716 ++ *[0-9a-f]*:	e4 0b 23 8f 	pmax\.ub pc,r2,r11
47.11717 ++ *[0-9a-f]*:	e2 01 23 8c 	pmax\.ub r12,r1,r1
47.11718 ++ *[0-9a-f]*:	e4 00 23 85 	pmax\.ub r5,r2,r0
47.11719 ++
47.11720 ++[0-9a-f]* <pmax_sh>:
47.11721 ++ *[0-9a-f]*:	fe 0f 23 9f 	pmax\.sh pc,pc,pc
47.11722 ++ *[0-9a-f]*:	f8 0c 23 9c 	pmax\.sh r12,r12,r12
47.11723 ++ *[0-9a-f]*:	ea 05 23 95 	pmax\.sh r5,r5,r5
47.11724 ++ *[0-9a-f]*:	e8 04 23 94 	pmax\.sh r4,r4,r4
47.11725 ++ *[0-9a-f]*:	fc 0e 23 9e 	pmax\.sh lr,lr,lr
47.11726 ++ *[0-9a-f]*:	ec 0c 23 9e 	pmax\.sh lr,r6,r12
47.11727 ++ *[0-9a-f]*:	fe 05 23 92 	pmax\.sh r2,pc,r5
47.11728 ++ *[0-9a-f]*:	e4 07 23 9f 	pmax\.sh pc,r2,r7
47.11729 ++
47.11730 ++[0-9a-f]* <pmin_ub>:
47.11731 ++ *[0-9a-f]*:	fe 0f 23 af 	pmin\.ub pc,pc,pc
47.11732 ++ *[0-9a-f]*:	f8 0c 23 ac 	pmin\.ub r12,r12,r12
47.11733 ++ *[0-9a-f]*:	ea 05 23 a5 	pmin\.ub r5,r5,r5
47.11734 ++ *[0-9a-f]*:	e8 04 23 a4 	pmin\.ub r4,r4,r4
47.11735 ++ *[0-9a-f]*:	fc 0e 23 ae 	pmin\.ub lr,lr,lr
47.11736 ++ *[0-9a-f]*:	e2 05 23 a8 	pmin\.ub r8,r1,r5
47.11737 ++ *[0-9a-f]*:	f0 03 23 a1 	pmin\.ub r1,r8,r3
47.11738 ++ *[0-9a-f]*:	e4 07 23 a0 	pmin\.ub r0,r2,r7
47.11739 ++
47.11740 ++[0-9a-f]* <pmin_sh>:
47.11741 ++ *[0-9a-f]*:	fe 0f 23 bf 	pmin\.sh pc,pc,pc
47.11742 ++ *[0-9a-f]*:	f8 0c 23 bc 	pmin\.sh r12,r12,r12
47.11743 ++ *[0-9a-f]*:	ea 05 23 b5 	pmin\.sh r5,r5,r5
47.11744 ++ *[0-9a-f]*:	e8 04 23 b4 	pmin\.sh r4,r4,r4
47.11745 ++ *[0-9a-f]*:	fc 0e 23 be 	pmin\.sh lr,lr,lr
47.11746 ++ *[0-9a-f]*:	e8 0a 23 b8 	pmin\.sh r8,r4,r10
47.11747 ++ *[0-9a-f]*:	f4 0c 23 be 	pmin\.sh lr,r10,r12
47.11748 ++ *[0-9a-f]*:	ec 02 23 b2 	pmin\.sh r2,r6,r2
47.11749 ++
47.11750 ++[0-9a-f]* <pavg_ub>:
47.11751 ++ *[0-9a-f]*:	fe 0f 23 cf 	pavg\.ub pc,pc,pc
47.11752 ++ *[0-9a-f]*:	f8 0c 23 cc 	pavg\.ub r12,r12,r12
47.11753 ++ *[0-9a-f]*:	ea 05 23 c5 	pavg\.ub r5,r5,r5
47.11754 ++ *[0-9a-f]*:	e8 04 23 c4 	pavg\.ub r4,r4,r4
47.11755 ++ *[0-9a-f]*:	fc 0e 23 ce 	pavg\.ub lr,lr,lr
47.11756 ++ *[0-9a-f]*:	e2 06 23 c0 	pavg\.ub r0,r1,r6
47.11757 ++ *[0-9a-f]*:	e6 06 23 c8 	pavg\.ub r8,r3,r6
47.11758 ++ *[0-9a-f]*:	f8 0a 23 cf 	pavg\.ub pc,r12,r10
47.11759 ++
47.11760 ++[0-9a-f]* <pavg_sh>:
47.11761 ++ *[0-9a-f]*:	fe 0f 23 df 	pavg\.sh pc,pc,pc
47.11762 ++ *[0-9a-f]*:	f8 0c 23 dc 	pavg\.sh r12,r12,r12
47.11763 ++ *[0-9a-f]*:	ea 05 23 d5 	pavg\.sh r5,r5,r5
47.11764 ++ *[0-9a-f]*:	e8 04 23 d4 	pavg\.sh r4,r4,r4
47.11765 ++ *[0-9a-f]*:	fc 0e 23 de 	pavg\.sh lr,lr,lr
47.11766 ++ *[0-9a-f]*:	fe 0d 23 d9 	pavg\.sh r9,pc,sp
47.11767 ++ *[0-9a-f]*:	fa 03 23 df 	pavg\.sh pc,sp,r3
47.11768 ++ *[0-9a-f]*:	e2 09 23 d6 	pavg\.sh r6,r1,r9
47.11769 ++
47.11770 ++[0-9a-f]* <pabs_sb>:
47.11771 ++ *[0-9a-f]*:	e0 0f 23 ef 	pabs\.sb pc,pc
47.11772 ++ *[0-9a-f]*:	e0 0c 23 ec 	pabs\.sb r12,r12
47.11773 ++ *[0-9a-f]*:	e0 05 23 e5 	pabs\.sb r5,r5
47.11774 ++ *[0-9a-f]*:	e0 04 23 e4 	pabs\.sb r4,r4
47.11775 ++ *[0-9a-f]*:	e0 0e 23 ee 	pabs\.sb lr,lr
47.11776 ++ *[0-9a-f]*:	e0 06 23 eb 	pabs\.sb r11,r6
47.11777 ++ *[0-9a-f]*:	e0 09 23 ee 	pabs\.sb lr,r9
47.11778 ++ *[0-9a-f]*:	e0 07 23 ed 	pabs\.sb sp,r7
47.11779 ++
47.11780 ++[0-9a-f]* <pabs_sh>:
47.11781 ++ *[0-9a-f]*:	e0 0f 23 ff 	pabs\.sh pc,pc
47.11782 ++ *[0-9a-f]*:	e0 0c 23 fc 	pabs\.sh r12,r12
47.11783 ++ *[0-9a-f]*:	e0 05 23 f5 	pabs\.sh r5,r5
47.11784 ++ *[0-9a-f]*:	e0 04 23 f4 	pabs\.sh r4,r4
47.11785 ++ *[0-9a-f]*:	e0 0e 23 fe 	pabs\.sh lr,lr
47.11786 ++ *[0-9a-f]*:	e0 03 23 ff 	pabs\.sh pc,r3
47.11787 ++ *[0-9a-f]*:	e0 07 23 f5 	pabs\.sh r5,r7
47.11788 ++ *[0-9a-f]*:	e0 00 23 f4 	pabs\.sh r4,r0
47.11789 ++
47.11790 ++[0-9a-f]* <psad>:
47.11791 ++ *[0-9a-f]*:	fe 0f 24 0f 	psad pc,pc,pc
47.11792 ++ *[0-9a-f]*:	f8 0c 24 0c 	psad r12,r12,r12
47.11793 ++ *[0-9a-f]*:	ea 05 24 05 	psad r5,r5,r5
47.11794 ++ *[0-9a-f]*:	e8 04 24 04 	psad r4,r4,r4
47.11795 ++ *[0-9a-f]*:	fc 0e 24 0e 	psad lr,lr,lr
47.11796 ++ *[0-9a-f]*:	f6 0b 24 09 	psad r9,r11,r11
47.11797 ++ *[0-9a-f]*:	e8 0d 24 0e 	psad lr,r4,sp
47.11798 ++ *[0-9a-f]*:	e8 05 24 0e 	psad lr,r4,r5
47.11799 ++
47.11800 ++[0-9a-f]* <pasr_b>:
47.11801 ++ *[0-9a-f]*:	fe 00 24 1f 	pasr\.b pc,pc,0x0
47.11802 ++ *[0-9a-f]*:	f8 07 24 1c 	pasr\.b r12,r12,0x7
47.11803 ++ *[0-9a-f]*:	ea 04 24 15 	pasr\.b r5,r5,0x4
47.11804 ++ *[0-9a-f]*:	e8 03 24 14 	pasr\.b r4,r4,0x3
47.11805 ++ *[0-9a-f]*:	fc 01 24 1e 	pasr\.b lr,lr,0x1
47.11806 ++ *[0-9a-f]*:	ee 01 24 1f 	pasr\.b pc,r7,0x1
47.11807 ++ *[0-9a-f]*:	fc 06 24 1d 	pasr\.b sp,lr,0x6
47.11808 ++ *[0-9a-f]*:	e6 02 24 1d 	pasr\.b sp,r3,0x2
47.11809 ++
47.11810 ++[0-9a-f]* <plsl_b>:
47.11811 ++ *[0-9a-f]*:	fe 00 24 2f 	plsl\.b pc,pc,0x0
47.11812 ++ *[0-9a-f]*:	f8 07 24 2c 	plsl\.b r12,r12,0x7
47.11813 ++ *[0-9a-f]*:	ea 04 24 25 	plsl\.b r5,r5,0x4
47.11814 ++ *[0-9a-f]*:	e8 03 24 24 	plsl\.b r4,r4,0x3
47.11815 ++ *[0-9a-f]*:	fc 01 24 2e 	plsl\.b lr,lr,0x1
47.11816 ++ *[0-9a-f]*:	f6 04 24 22 	plsl\.b r2,r11,0x4
47.11817 ++ *[0-9a-f]*:	ea 07 24 28 	plsl\.b r8,r5,0x7
47.11818 ++ *[0-9a-f]*:	e0 02 24 2f 	plsl\.b pc,r0,0x2
47.11819 ++
47.11820 ++[0-9a-f]* <plsr_b>:
47.11821 ++ *[0-9a-f]*:	fe 00 24 3f 	plsr\.b pc,pc,0x0
47.11822 ++ *[0-9a-f]*:	f8 07 24 3c 	plsr\.b r12,r12,0x7
47.11823 ++ *[0-9a-f]*:	ea 04 24 35 	plsr\.b r5,r5,0x4
47.11824 ++ *[0-9a-f]*:	e8 03 24 34 	plsr\.b r4,r4,0x3
47.11825 ++ *[0-9a-f]*:	fc 01 24 3e 	plsr\.b lr,lr,0x1
47.11826 ++ *[0-9a-f]*:	e2 02 24 3c 	plsr\.b r12,r1,0x2
47.11827 ++ *[0-9a-f]*:	fe 07 24 36 	plsr\.b r6,pc,0x7
47.11828 ++ *[0-9a-f]*:	f6 02 24 3c 	plsr\.b r12,r11,0x2
47.11829 ++
47.11830 ++[0-9a-f]* <pasr_h>:
47.11831 ++ *[0-9a-f]*:	fe 00 24 4f 	pasr\.h pc,pc,0x0
47.11832 ++ *[0-9a-f]*:	f8 0f 24 4c 	pasr\.h r12,r12,0xf
47.11833 ++ *[0-9a-f]*:	ea 08 24 45 	pasr\.h r5,r5,0x8
47.11834 ++ *[0-9a-f]*:	e8 07 24 44 	pasr\.h r4,r4,0x7
47.11835 ++ *[0-9a-f]*:	fc 01 24 4e 	pasr\.h lr,lr,0x1
47.11836 ++ *[0-9a-f]*:	f6 0a 24 40 	pasr\.h r0,r11,0xa
47.11837 ++ *[0-9a-f]*:	ec 08 24 44 	pasr\.h r4,r6,0x8
47.11838 ++ *[0-9a-f]*:	e4 04 24 46 	pasr\.h r6,r2,0x4
47.11839 ++
47.11840 ++[0-9a-f]* <plsl_h>:
47.11841 ++ *[0-9a-f]*:	fe 00 24 5f 	plsl\.h pc,pc,0x0
47.11842 ++ *[0-9a-f]*:	f8 0f 24 5c 	plsl\.h r12,r12,0xf
47.11843 ++ *[0-9a-f]*:	ea 08 24 55 	plsl\.h r5,r5,0x8
47.11844 ++ *[0-9a-f]*:	e8 07 24 54 	plsl\.h r4,r4,0x7
47.11845 ++ *[0-9a-f]*:	fc 01 24 5e 	plsl\.h lr,lr,0x1
47.11846 ++ *[0-9a-f]*:	f4 09 24 55 	plsl\.h r5,r10,0x9
47.11847 ++ *[0-9a-f]*:	fc 08 24 5d 	plsl\.h sp,lr,0x8
47.11848 ++ *[0-9a-f]*:	fc 07 24 50 	plsl\.h r0,lr,0x7
47.11849 ++
47.11850 ++[0-9a-f]* <plsr_h>:
47.11851 ++ *[0-9a-f]*:	fe 00 24 6f 	plsr\.h pc,pc,0x0
47.11852 ++ *[0-9a-f]*:	f8 0f 24 6c 	plsr\.h r12,r12,0xf
47.11853 ++ *[0-9a-f]*:	ea 08 24 65 	plsr\.h r5,r5,0x8
47.11854 ++ *[0-9a-f]*:	e8 07 24 64 	plsr\.h r4,r4,0x7
47.11855 ++ *[0-9a-f]*:	fc 01 24 6e 	plsr\.h lr,lr,0x1
47.11856 ++ *[0-9a-f]*:	e0 0f 24 6b 	plsr\.h r11,r0,0xf
47.11857 ++ *[0-9a-f]*:	e6 03 24 6e 	plsr\.h lr,r3,0x3
47.11858 ++ *[0-9a-f]*:	fc 0a 24 68 	plsr\.h r8,lr,0xa
47.11859 ++
47.11860 ++[0-9a-f]* <packw_sh>:
47.11861 ++ *[0-9a-f]*:	fe 0f 24 7f 	packw\.sh pc,pc,pc
47.11862 ++ *[0-9a-f]*:	f8 0c 24 7c 	packw\.sh r12,r12,r12
47.11863 ++ *[0-9a-f]*:	ea 05 24 75 	packw\.sh r5,r5,r5
47.11864 ++ *[0-9a-f]*:	e8 04 24 74 	packw\.sh r4,r4,r4
47.11865 ++ *[0-9a-f]*:	fc 0e 24 7e 	packw\.sh lr,lr,lr
47.11866 ++ *[0-9a-f]*:	f6 0a 24 7d 	packw\.sh sp,r11,r10
47.11867 ++ *[0-9a-f]*:	e4 0c 24 78 	packw\.sh r8,r2,r12
47.11868 ++ *[0-9a-f]*:	e2 05 24 78 	packw\.sh r8,r1,r5
47.11869 ++
47.11870 ++[0-9a-f]* <punpckub_h>:
47.11871 ++ *[0-9a-f]*:	fe 00 24 8f 	punpckub\.h pc,pc:b
47.11872 ++ *[0-9a-f]*:	f8 00 24 9c 	punpckub\.h r12,r12:t
47.11873 ++ *[0-9a-f]*:	ea 00 24 95 	punpckub\.h r5,r5:t
47.11874 ++ *[0-9a-f]*:	e8 00 24 84 	punpckub\.h r4,r4:b
47.11875 ++ *[0-9a-f]*:	fc 00 24 9e 	punpckub\.h lr,lr:t
47.11876 ++ *[0-9a-f]*:	e2 00 24 96 	punpckub\.h r6,r1:t
47.11877 ++ *[0-9a-f]*:	ea 00 24 8e 	punpckub\.h lr,r5:b
47.11878 ++ *[0-9a-f]*:	e4 00 24 9e 	punpckub\.h lr,r2:t
47.11879 ++
47.11880 ++[0-9a-f]* <punpcksb_h>:
47.11881 ++ *[0-9a-f]*:	fe 00 24 af 	punpcksb\.h pc,pc:b
47.11882 ++ *[0-9a-f]*:	f8 00 24 bc 	punpcksb\.h r12,r12:t
47.11883 ++ *[0-9a-f]*:	ea 00 24 b5 	punpcksb\.h r5,r5:t
47.11884 ++ *[0-9a-f]*:	e8 00 24 a4 	punpcksb\.h r4,r4:b
47.11885 ++ *[0-9a-f]*:	fc 00 24 be 	punpcksb\.h lr,lr:t
47.11886 ++ *[0-9a-f]*:	ee 00 24 b4 	punpcksb\.h r4,r7:t
47.11887 ++ *[0-9a-f]*:	fc 00 24 a6 	punpcksb\.h r6,lr:b
47.11888 ++ *[0-9a-f]*:	f8 00 24 bc 	punpcksb\.h r12,r12:t
47.11889 ++
47.11890 ++[0-9a-f]* <packsh_ub>:
47.11891 ++ *[0-9a-f]*:	fe 0f 24 cf 	packsh\.ub pc,pc,pc
47.11892 ++ *[0-9a-f]*:	f8 0c 24 cc 	packsh\.ub r12,r12,r12
47.11893 ++ *[0-9a-f]*:	ea 05 24 c5 	packsh\.ub r5,r5,r5
47.11894 ++ *[0-9a-f]*:	e8 04 24 c4 	packsh\.ub r4,r4,r4
47.11895 ++ *[0-9a-f]*:	fc 0e 24 ce 	packsh\.ub lr,lr,lr
47.11896 ++ *[0-9a-f]*:	ec 03 24 c3 	packsh\.ub r3,r6,r3
47.11897 ++ *[0-9a-f]*:	e0 03 24 c8 	packsh\.ub r8,r0,r3
47.11898 ++ *[0-9a-f]*:	e6 0e 24 c9 	packsh\.ub r9,r3,lr
47.11899 ++
47.11900 ++[0-9a-f]* <packsh_sb>:
47.11901 ++ *[0-9a-f]*:	fe 0f 24 df 	packsh\.sb pc,pc,pc
47.11902 ++ *[0-9a-f]*:	f8 0c 24 dc 	packsh\.sb r12,r12,r12
47.11903 ++ *[0-9a-f]*:	ea 05 24 d5 	packsh\.sb r5,r5,r5
47.11904 ++ *[0-9a-f]*:	e8 04 24 d4 	packsh\.sb r4,r4,r4
47.11905 ++ *[0-9a-f]*:	fc 0e 24 de 	packsh\.sb lr,lr,lr
47.11906 ++ *[0-9a-f]*:	f0 01 24 d6 	packsh\.sb r6,r8,r1
47.11907 ++ *[0-9a-f]*:	f2 08 24 de 	packsh\.sb lr,r9,r8
47.11908 ++ *[0-9a-f]*:	ec 06 24 dd 	packsh\.sb sp,r6,r6
47.11909 ++
47.11910 ++[0-9a-f]* <andl>:
47.11911 ++ *[0-9a-f]*:	e0 1f 00 00 	andl pc,0x0
47.11912 ++ *[0-9a-f]*:	e0 1c ff ff 	andl r12,0xffff
47.11913 ++ *[0-9a-f]*:	e0 15 80 00 	andl r5,0x8000
47.11914 ++ *[0-9a-f]*:	e0 14 7f ff 	andl r4,0x7fff
47.11915 ++ *[0-9a-f]*:	e0 1e 00 01 	andl lr,0x1
47.11916 ++ *[0-9a-f]*:	e0 1f 5a 58 	andl pc,0x5a58
47.11917 ++ *[0-9a-f]*:	e0 18 b8 9e 	andl r8,0xb89e
47.11918 ++ *[0-9a-f]*:	e0 17 35 97 	andl r7,0x3597
47.11919 ++
47.11920 ++[0-9a-f]* <andl_coh>:
47.11921 ++ *[0-9a-f]*:	e2 1f 00 00 	andl pc,0x0,COH
47.11922 ++ *[0-9a-f]*:	e2 1c ff ff 	andl r12,0xffff,COH
47.11923 ++ *[0-9a-f]*:	e2 15 80 00 	andl r5,0x8000,COH
47.11924 ++ *[0-9a-f]*:	e2 14 7f ff 	andl r4,0x7fff,COH
47.11925 ++ *[0-9a-f]*:	e2 1e 00 01 	andl lr,0x1,COH
47.11926 ++ *[0-9a-f]*:	e2 16 58 e1 	andl r6,0x58e1,COH
47.11927 ++ *[0-9a-f]*:	e2 10 9e cd 	andl r0,0x9ecd,COH
47.11928 ++ *[0-9a-f]*:	e2 14 bd c4 	andl r4,0xbdc4,COH
47.11929 ++
47.11930 ++[0-9a-f]* <andh>:
47.11931 ++ *[0-9a-f]*:	e4 1f 00 00 	andh pc,0x0
47.11932 ++ *[0-9a-f]*:	e4 1c ff ff 	andh r12,0xffff
47.11933 ++ *[0-9a-f]*:	e4 15 80 00 	andh r5,0x8000
47.11934 ++ *[0-9a-f]*:	e4 14 7f ff 	andh r4,0x7fff
47.11935 ++ *[0-9a-f]*:	e4 1e 00 01 	andh lr,0x1
47.11936 ++ *[0-9a-f]*:	e4 1c cc 58 	andh r12,0xcc58
47.11937 ++ *[0-9a-f]*:	e4 13 21 e3 	andh r3,0x21e3
47.11938 ++ *[0-9a-f]*:	e4 12 a7 eb 	andh r2,0xa7eb
47.11939 ++
47.11940 ++[0-9a-f]* <andh_coh>:
47.11941 ++ *[0-9a-f]*:	e6 1f 00 00 	andh pc,0x0,COH
47.11942 ++ *[0-9a-f]*:	e6 1c ff ff 	andh r12,0xffff,COH
47.11943 ++ *[0-9a-f]*:	e6 15 80 00 	andh r5,0x8000,COH
47.11944 ++ *[0-9a-f]*:	e6 14 7f ff 	andh r4,0x7fff,COH
47.11945 ++ *[0-9a-f]*:	e6 1e 00 01 	andh lr,0x1,COH
47.11946 ++ *[0-9a-f]*:	e6 1b 86 0d 	andh r11,0x860d,COH
47.11947 ++ *[0-9a-f]*:	e6 18 ce f6 	andh r8,0xcef6,COH
47.11948 ++ *[0-9a-f]*:	e6 1a 5c 83 	andh r10,0x5c83,COH
47.11949 ++
47.11950 ++[0-9a-f]* <orl>:
47.11951 ++ *[0-9a-f]*:	e8 1f 00 00 	orl pc,0x0
47.11952 ++ *[0-9a-f]*:	e8 1c ff ff 	orl r12,0xffff
47.11953 ++ *[0-9a-f]*:	e8 15 80 00 	orl r5,0x8000
47.11954 ++ *[0-9a-f]*:	e8 14 7f ff 	orl r4,0x7fff
47.11955 ++ *[0-9a-f]*:	e8 1e 00 01 	orl lr,0x1
47.11956 ++ *[0-9a-f]*:	e8 1d 41 7e 	orl sp,0x417e
47.11957 ++ *[0-9a-f]*:	e8 10 52 bd 	orl r0,0x52bd
47.11958 ++ *[0-9a-f]*:	e8 1f ac 47 	orl pc,0xac47
47.11959 ++
47.11960 ++[0-9a-f]* <orh>:
47.11961 ++ *[0-9a-f]*:	ea 1f 00 00 	orh pc,0x0
47.11962 ++ *[0-9a-f]*:	ea 1c ff ff 	orh r12,0xffff
47.11963 ++ *[0-9a-f]*:	ea 15 80 00 	orh r5,0x8000
47.11964 ++ *[0-9a-f]*:	ea 14 7f ff 	orh r4,0x7fff
47.11965 ++ *[0-9a-f]*:	ea 1e 00 01 	orh lr,0x1
47.11966 ++ *[0-9a-f]*:	ea 18 6e 7d 	orh r8,0x6e7d
47.11967 ++ *[0-9a-f]*:	ea 1c 77 1c 	orh r12,0x771c
47.11968 ++ *[0-9a-f]*:	ea 11 ea 1a 	orh r1,0xea1a
47.11969 ++
47.11970 ++[0-9a-f]* <eorl>:
47.11971 ++ *[0-9a-f]*:	ec 1f 00 00 	eorl pc,0x0
47.11972 ++ *[0-9a-f]*:	ec 1c ff ff 	eorl r12,0xffff
47.11973 ++ *[0-9a-f]*:	ec 15 80 00 	eorl r5,0x8000
47.11974 ++ *[0-9a-f]*:	ec 14 7f ff 	eorl r4,0x7fff
47.11975 ++ *[0-9a-f]*:	ec 1e 00 01 	eorl lr,0x1
47.11976 ++ *[0-9a-f]*:	ec 14 c7 b9 	eorl r4,0xc7b9
47.11977 ++ *[0-9a-f]*:	ec 16 fb dd 	eorl r6,0xfbdd
47.11978 ++ *[0-9a-f]*:	ec 11 51 b1 	eorl r1,0x51b1
47.11979 ++
47.11980 ++[0-9a-f]* <eorh>:
47.11981 ++ *[0-9a-f]*:	ee 1f 00 00 	eorh pc,0x0
47.11982 ++ *[0-9a-f]*:	ee 1c ff ff 	eorh r12,0xffff
47.11983 ++ *[0-9a-f]*:	ee 15 80 00 	eorh r5,0x8000
47.11984 ++ *[0-9a-f]*:	ee 14 7f ff 	eorh r4,0x7fff
47.11985 ++ *[0-9a-f]*:	ee 1e 00 01 	eorh lr,0x1
47.11986 ++ *[0-9a-f]*:	ee 10 2d d4 	eorh r0,0x2dd4
47.11987 ++ *[0-9a-f]*:	ee 1a 94 b5 	eorh r10,0x94b5
47.11988 ++ *[0-9a-f]*:	ee 19 df 2a 	eorh r9,0xdf2a
47.11989 ++
47.11990 ++[0-9a-f]* <mcall>:
47.11991 ++ *[0-9a-f]*:	f0 1f 00 00 	mcall [0-9a-f]* <.*>
47.11992 ++ *[0-9a-f]*:	f0 1c ff ff 	mcall r12\[-4\]
47.11993 ++ *[0-9a-f]*:	f0 15 80 00 	mcall r5\[-131072\]
47.11994 ++ *[0-9a-f]*:	f0 14 7f ff 	mcall r4\[131068\]
47.11995 ++ *[0-9a-f]*:	f0 1e 00 01 	mcall lr\[4\]
47.11996 ++ *[0-9a-f]*:	f0 1d 3b bf 	mcall sp\[61180\]
47.11997 ++ *[0-9a-f]*:	f0 14 dd d2 	mcall r4\[-35000\]
47.11998 ++ *[0-9a-f]*:	f0 10 09 b1 	mcall r0\[9924\]
47.11999 ++
47.12000 ++[0-9a-f]* <pref>:
47.12001 ++ *[0-9a-f]*:	f2 1f 00 00 	pref pc\[0\]
47.12002 ++ *[0-9a-f]*:	f2 1c ff ff 	pref r12\[-1\]
47.12003 ++ *[0-9a-f]*:	f2 15 80 00 	pref r5\[-32768\]
47.12004 ++ *[0-9a-f]*:	f2 14 7f ff 	pref r4\[32767\]
47.12005 ++ *[0-9a-f]*:	f2 1e 00 01 	pref lr\[1\]
47.12006 ++ *[0-9a-f]*:	f2 17 1e 44 	pref r7\[7748\]
47.12007 ++ *[0-9a-f]*:	f2 17 e1 ed 	pref r7\[-7699\]
47.12008 ++ *[0-9a-f]*:	f2 12 9a dc 	pref r2\[-25892\]
47.12009 ++
47.12010 ++[0-9a-f]* <cache>:
47.12011 ++ *[0-9a-f]*:	f4 1f 00 00 	cache pc\[0\],0x0
47.12012 ++ *[0-9a-f]*:	f4 1c ff ff 	cache r12\[-1\],0x1f
47.12013 ++ *[0-9a-f]*:	f4 15 84 00 	cache r5\[-1024\],0x10
47.12014 ++ *[0-9a-f]*:	f4 14 7b ff 	cache r4\[1023\],0xf
47.12015 ++ *[0-9a-f]*:	f4 1e 08 01 	cache lr\[1\],0x1
47.12016 ++ *[0-9a-f]*:	f4 13 8c 3c 	cache r3\[-964\],0x11
47.12017 ++ *[0-9a-f]*:	f4 14 b6 89 	cache r4\[-375\],0x16
47.12018 ++ *[0-9a-f]*:	f4 13 8c 88 	cache r3\[-888\],0x11
47.12019 ++
47.12020 ++[0-9a-f]* <sub4>:
47.12021 ++ *[0-9a-f]*:	20 0f       	sub pc,0
47.12022 ++ *[0-9a-f]*:	2f fc       	sub r12,-1
47.12023 ++ *[0-9a-f]*:	f0 25 00 00 	sub r5,-1048576
47.12024 ++ *[0-9a-f]*:	ee 34 ff ff 	sub r4,1048575
47.12025 ++ *[0-9a-f]*:	20 1e       	sub lr,1
47.12026 ++ *[0-9a-f]*:	f6 22 8d 6c 	sub r2,-619156
47.12027 ++ *[0-9a-f]*:	e6 3e 0a cd 	sub lr,461517
47.12028 ++ *[0-9a-f]*:	fc 38 2d 25 	sub r8,-185051
47.12029 ++
47.12030 ++[0-9a-f]* <cp3>:
47.12031 ++ *[0-9a-f]*:	58 0f       	cp.w pc,0
47.12032 ++ *[0-9a-f]*:	5b fc       	cp.w r12,-1
47.12033 ++ *[0-9a-f]*:	f0 45 00 00 	cp.w r5,-1048576
47.12034 ++ *[0-9a-f]*:	ee 54 ff ff 	cp.w r4,1048575
47.12035 ++ *[0-9a-f]*:	58 1e       	cp.w lr,1
47.12036 ++ *[0-9a-f]*:	e0 51 e4 ae 	cp.w r1,124078
47.12037 ++ *[0-9a-f]*:	fa 40 37 e3 	cp.w r0,-378909
47.12038 ++ *[0-9a-f]*:	fc 44 4a 14 	cp.w r4,-243180
47.12039 ++
47.12040 ++[0-9a-f]* <mov2>:
47.12041 ++ *[0-9a-f]*:	30 0f       	mov pc,0
47.12042 ++ *[0-9a-f]*:	3f fc       	mov r12,-1
47.12043 ++ *[0-9a-f]*:	f0 65 00 00 	mov r5,-1048576
47.12044 ++ *[0-9a-f]*:	ee 74 ff ff 	mov r4,1048575
47.12045 ++ *[0-9a-f]*:	30 1e       	mov lr,1
47.12046 ++ *[0-9a-f]*:	fa 75 29 a3 	mov r5,-317021
47.12047 ++ *[0-9a-f]*:	f4 6d 91 94 	mov sp,-749164
47.12048 ++ *[0-9a-f]*:	ee 65 58 93 	mov r5,940179
47.12049 ++
47.12050 ++[0-9a-f]* <brc2>:
47.12051 ++ *[0-9a-f]*:	c0 00       	breq [0-9a-f]* <.*>
47.12052 ++ *[0-9a-f]*:	fe 9f ff ff 	bral [0-9a-f]* <.*>
47.12053 ++ *[0-9a-f]*:	f0 88 00 00 	brls [0-9a-f]* <.*>
47.12054 ++ *[0-9a-f]*:	ee 97 ff ff 	brpl [0-9a-f]* <.*>
47.12055 ++ *[0-9a-f]*:	c0 11       	brne [0-9a-f]* <.*>
47.12056 ++ *[0-9a-f]*:	f2 8b 4a 4d 	brhi [0-9a-f]* <.*>
47.12057 ++ *[0-9a-f]*:	ea 8e 14 cc 	brqs [0-9a-f]* <.*>
47.12058 ++ *[0-9a-f]*:	fa 98 98 33 	brls [0-9a-f]* <.*>
47.12059 ++
47.12060 ++[0-9a-f]* <rcall2>:
47.12061 ++ *[0-9a-f]*:	c0 0c       	rcall [0-9a-f]* <.*>
47.12062 ++ *[0-9a-f]*:	cf ff       	rcall [0-9a-f]* <.*>
47.12063 ++ *[0-9a-f]*:	f0 a0 00 00 	rcall [0-9a-f]* <.*>
47.12064 ++ *[0-9a-f]*:	ee b0 ff ff 	rcall [0-9a-f]* <.*>
47.12065 ++ *[0-9a-f]*:	c0 1c       	rcall [0-9a-f]* <.*>
47.12066 ++ *[0-9a-f]*:	e2 b0 ca 5a 	rcall [0-9a-f]* <.*>
47.12067 ++ *[0-9a-f]*:	e8 a0 47 52 	rcall [0-9a-f]* <.*>
47.12068 ++ *[0-9a-f]*:	fe b0 fd ef 	rcall [0-9a-f]* <.*>
47.12069 ++
47.12070 ++[0-9a-f]* <sub5>:
47.12071 ++ *[0-9a-f]*:	fe cf 00 00 	sub pc,pc,0
47.12072 ++ *[0-9a-f]*:	f8 cc ff ff 	sub r12,r12,-1
47.12073 ++ *[0-9a-f]*:	ea c5 80 00 	sub r5,r5,-32768
47.12074 ++ *[0-9a-f]*:	e8 c4 7f ff 	sub r4,r4,32767
47.12075 ++ *[0-9a-f]*:	fc ce 00 01 	sub lr,lr,1
47.12076 ++ *[0-9a-f]*:	fe cf ce 38 	sub pc,pc,-12744
47.12077 ++ *[0-9a-f]*:	ee c7 95 1b 	sub r7,r7,-27365
47.12078 ++ *[0-9a-f]*:	f2 c2 bc 32 	sub r2,r9,-17358
47.12079 ++
47.12080 ++[0-9a-f]* <satsub_w2>:
47.12081 ++ *[0-9a-f]*:	fe df 00 00 	satsub\.w pc,pc,0
47.12082 ++ *[0-9a-f]*:	f8 dc ff ff 	satsub\.w r12,r12,-1
47.12083 ++ *[0-9a-f]*:	ea d5 80 00 	satsub\.w r5,r5,-32768
47.12084 ++ *[0-9a-f]*:	e8 d4 7f ff 	satsub\.w r4,r4,32767
47.12085 ++ *[0-9a-f]*:	fc de 00 01 	satsub\.w lr,lr,1
47.12086 ++ *[0-9a-f]*:	fc d2 f8 29 	satsub\.w r2,lr,-2007
47.12087 ++ *[0-9a-f]*:	f8 d7 fc f0 	satsub\.w r7,r12,-784
47.12088 ++ *[0-9a-f]*:	ee d4 5a 8c 	satsub\.w r4,r7,23180
47.12089 ++
47.12090 ++[0-9a-f]* <ld_d4>:
47.12091 ++ *[0-9a-f]*:	fe e0 00 00 	ld\.d r0,pc\[0\]
47.12092 ++ *[0-9a-f]*:	f8 ee ff ff 	ld\.d lr,r12\[-1\]
47.12093 ++ *[0-9a-f]*:	ea e8 80 00 	ld\.d r8,r5\[-32768\]
47.12094 ++ *[0-9a-f]*:	e8 e6 7f ff 	ld\.d r6,r4\[32767\]
47.12095 ++ *[0-9a-f]*:	fc e2 00 01 	ld\.d r2,lr\[1\]
47.12096 ++ *[0-9a-f]*:	f6 ee 39 c0 	ld\.d lr,r11\[14784\]
47.12097 ++ *[0-9a-f]*:	f2 e6 b6 27 	ld\.d r6,r9\[-18905\]
47.12098 ++ *[0-9a-f]*:	e6 e2 e7 2d 	ld\.d r2,r3\[-6355\]
47.12099 ++
47.12100 ++[0-9a-f]* <ld_w4>:
47.12101 ++ *[0-9a-f]*:	7e 0f       	ld\.w pc,pc\[0x0\]
47.12102 ++ *[0-9a-f]*:	f8 fc ff ff 	ld\.w r12,r12\[-1\]
47.12103 ++ *[0-9a-f]*:	ea f5 80 00 	ld\.w r5,r5\[-32768\]
47.12104 ++ *[0-9a-f]*:	e8 f4 7f ff 	ld\.w r4,r4\[32767\]
47.12105 ++ *[0-9a-f]*:	fc fe 00 01 	ld\.w lr,lr\[1\]
47.12106 ++ *[0-9a-f]*:	f8 f0 a9 8b 	ld\.w r0,r12\[-22133\]
47.12107 ++ *[0-9a-f]*:	fe fd af d7 	ld\.w sp,pc\[-20521\]
47.12108 ++ *[0-9a-f]*:	d7 03       	nop
47.12109 ++
47.12110 ++[0-9a-f]* <ld_sh4>:
47.12111 ++ *[0-9a-f]*:	9e 0f       	ld\.sh pc,pc\[0x0\]
47.12112 ++ *[0-9a-f]*:	f9 0c ff ff 	ld\.sh r12,r12\[-1\]
47.12113 ++ *[0-9a-f]*:	eb 05 80 00 	ld\.sh r5,r5\[-32768\]
47.12114 ++ *[0-9a-f]*:	e9 04 7f ff 	ld\.sh r4,r4\[32767\]
47.12115 ++ *[0-9a-f]*:	fd 0e 00 01 	ld\.sh lr,lr\[1\]
47.12116 ++ *[0-9a-f]*:	f5 06 78 d2 	ld\.sh r6,r10\[30930\]
47.12117 ++ *[0-9a-f]*:	f5 06 55 d5 	ld\.sh r6,r10\[21973\]
47.12118 ++ *[0-9a-f]*:	d7 03       	nop
47.12119 ++
47.12120 ++[0-9a-f]* <ld_uh4>:
47.12121 ++ *[0-9a-f]*:	9e 8f       	ld\.uh pc,pc\[0x0\]
47.12122 ++ *[0-9a-f]*:	f9 1c ff ff 	ld\.uh r12,r12\[-1\]
47.12123 ++ *[0-9a-f]*:	eb 15 80 00 	ld\.uh r5,r5\[-32768\]
47.12124 ++ *[0-9a-f]*:	e9 14 7f ff 	ld\.uh r4,r4\[32767\]
47.12125 ++ *[0-9a-f]*:	fd 1e 00 01 	ld\.uh lr,lr\[1\]
47.12126 ++ *[0-9a-f]*:	f3 11 cb d6 	ld\.uh r1,r9\[-13354\]
47.12127 ++ *[0-9a-f]*:	f7 1e 53 59 	ld\.uh lr,r11\[21337\]
47.12128 ++ *[0-9a-f]*:	d7 03       	nop
47.12129 ++
47.12130 ++[0-9a-f]* <ld_sb1>:
47.12131 ++ *[0-9a-f]*:	ff 2f 00 00 	ld\.sb pc,pc\[0\]
47.12132 ++ *[0-9a-f]*:	f9 2c ff ff 	ld\.sb r12,r12\[-1\]
47.12133 ++ *[0-9a-f]*:	eb 25 80 00 	ld\.sb r5,r5\[-32768\]
47.12134 ++ *[0-9a-f]*:	e9 24 7f ff 	ld\.sb r4,r4\[32767\]
47.12135 ++ *[0-9a-f]*:	fd 2e 00 01 	ld\.sb lr,lr\[1\]
47.12136 ++ *[0-9a-f]*:	fb 27 90 09 	ld\.sb r7,sp\[-28663\]
47.12137 ++ *[0-9a-f]*:	e3 22 e9 09 	ld\.sb r2,r1\[-5879\]
47.12138 ++ *[0-9a-f]*:	e7 2c 49 2e 	ld\.sb r12,r3\[18734\]
47.12139 ++
47.12140 ++[0-9a-f]* <ld_ub4>:
47.12141 ++ *[0-9a-f]*:	1f 8f       	ld\.ub pc,pc\[0x0\]
47.12142 ++ *[0-9a-f]*:	f9 3c ff ff 	ld\.ub r12,r12\[-1\]
47.12143 ++ *[0-9a-f]*:	eb 35 80 00 	ld\.ub r5,r5\[-32768\]
47.12144 ++ *[0-9a-f]*:	e9 34 7f ff 	ld\.ub r4,r4\[32767\]
47.12145 ++ *[0-9a-f]*:	1d 9e       	ld\.ub lr,lr\[0x1\]
47.12146 ++ *[0-9a-f]*:	e9 3f 20 55 	ld\.ub pc,r4\[8277\]
47.12147 ++ *[0-9a-f]*:	f9 35 4a e4 	ld\.ub r5,r12\[19172\]
47.12148 ++ *[0-9a-f]*:	fd 3a 66 eb 	ld\.ub r10,lr\[26347\]
47.12149 ++
47.12150 ++[0-9a-f]* <st_d4>:
47.12151 ++ *[0-9a-f]*:	fe e1 00 00 	st\.d pc\[0\],r0
47.12152 ++ *[0-9a-f]*:	f8 ef ff ff 	st\.d r12\[-1\],lr
47.12153 ++ *[0-9a-f]*:	ea e9 80 00 	st\.d r5\[-32768\],r8
47.12154 ++ *[0-9a-f]*:	e8 e7 7f ff 	st\.d r4\[32767\],r6
47.12155 ++ *[0-9a-f]*:	fc e3 00 01 	st\.d lr\[1\],r2
47.12156 ++ *[0-9a-f]*:	ea eb 33 90 	st\.d r5\[13200\],r10
47.12157 ++ *[0-9a-f]*:	ea eb 24 88 	st\.d r5\[9352\],r10
47.12158 ++ *[0-9a-f]*:	ea e5 7e 75 	st\.d r5\[32373\],r4
47.12159 ++
47.12160 ++[0-9a-f]* <st_w4>:
47.12161 ++ *[0-9a-f]*:	9f 0f       	st\.w pc\[0x0\],pc
47.12162 ++ *[0-9a-f]*:	f9 4c ff ff 	st\.w r12\[-1\],r12
47.12163 ++ *[0-9a-f]*:	eb 45 80 00 	st\.w r5\[-32768\],r5
47.12164 ++ *[0-9a-f]*:	e9 44 7f ff 	st\.w r4\[32767\],r4
47.12165 ++ *[0-9a-f]*:	fd 4e 00 01 	st\.w lr\[1\],lr
47.12166 ++ *[0-9a-f]*:	fb 47 17 f8 	st\.w sp\[6136\],r7
47.12167 ++ *[0-9a-f]*:	ed 4c 69 cf 	st\.w r6\[27087\],r12
47.12168 ++ *[0-9a-f]*:	d7 03       	nop
47.12169 ++
47.12170 ++[0-9a-f]* <st_h4>:
47.12171 ++ *[0-9a-f]*:	be 0f       	st\.h pc\[0x0\],pc
47.12172 ++ *[0-9a-f]*:	f9 5c ff ff 	st\.h r12\[-1\],r12
47.12173 ++ *[0-9a-f]*:	eb 55 80 00 	st\.h r5\[-32768\],r5
47.12174 ++ *[0-9a-f]*:	e9 54 7f ff 	st\.h r4\[32767\],r4
47.12175 ++ *[0-9a-f]*:	fd 5e 00 01 	st\.h lr\[1\],lr
47.12176 ++ *[0-9a-f]*:	e9 57 d9 16 	st\.h r4\[-9962\],r7
47.12177 ++ *[0-9a-f]*:	f3 53 c0 86 	st\.h r9\[-16250\],r3
47.12178 ++ *[0-9a-f]*:	d7 03       	nop
47.12179 ++
47.12180 ++[0-9a-f]* <st_b4>:
47.12181 ++ *[0-9a-f]*:	be 8f       	st\.b pc\[0x0\],pc
47.12182 ++ *[0-9a-f]*:	f9 6c ff ff 	st\.b r12\[-1\],r12
47.12183 ++ *[0-9a-f]*:	eb 65 80 00 	st\.b r5\[-32768\],r5
47.12184 ++ *[0-9a-f]*:	e9 64 7f ff 	st\.b r4\[32767\],r4
47.12185 ++ *[0-9a-f]*:	bc 9e       	st\.b lr\[0x1\],lr
47.12186 ++ *[0-9a-f]*:	f9 66 75 96 	st\.b r12\[30102\],r6
47.12187 ++ *[0-9a-f]*:	eb 61 71 31 	st\.b r5\[28977\],r1
47.12188 ++ *[0-9a-f]*:	e1 61 15 5e 	st\.b r0\[5470\],r1
47.12189 ++
47.12190 ++[0-9a-f]* <mfsr>:
47.12191 ++ *[0-9a-f]*:	e1 bf 00 00 	mfsr pc,0x0
47.12192 ++ *[0-9a-f]*:	e1 bc 00 ff 	mfsr r12,0x3fc
47.12193 ++ *[0-9a-f]*:	e1 b5 00 80 	mfsr r5,0x200
47.12194 ++ *[0-9a-f]*:	e1 b4 00 7f 	mfsr r4,0x1fc
47.12195 ++ *[0-9a-f]*:	e1 be 00 01 	mfsr lr,0x4
47.12196 ++ *[0-9a-f]*:	e1 b2 00 ae 	mfsr r2,0x2b8
47.12197 ++ *[0-9a-f]*:	e1 b4 00 41 	mfsr r4,0x104
47.12198 ++ *[0-9a-f]*:	e1 ba 00 fe 	mfsr r10,0x3f8
47.12199 ++
47.12200 ++[0-9a-f]* <mtsr>:
47.12201 ++ *[0-9a-f]*:	e3 bf 00 00 	mtsr 0x0,pc
47.12202 ++ *[0-9a-f]*:	e3 bc 00 ff 	mtsr 0x3fc,r12
47.12203 ++ *[0-9a-f]*:	e3 b5 00 80 	mtsr 0x200,r5
47.12204 ++ *[0-9a-f]*:	e3 b4 00 7f 	mtsr 0x1fc,r4
47.12205 ++ *[0-9a-f]*:	e3 be 00 01 	mtsr 0x4,lr
47.12206 ++ *[0-9a-f]*:	e3 ba 00 38 	mtsr 0xe0,r10
47.12207 ++ *[0-9a-f]*:	e3 bc 00 d1 	mtsr 0x344,r12
47.12208 ++ *[0-9a-f]*:	e3 b9 00 4c 	mtsr 0x130,r9
47.12209 ++
47.12210 ++[0-9a-f]* <mfdr>:
47.12211 ++ *[0-9a-f]*:	e5 bf 00 00 	mfdr pc,0x0
47.12212 ++ *[0-9a-f]*:	e5 bc 00 ff 	mfdr r12,0x3fc
47.12213 ++ *[0-9a-f]*:	e5 b5 00 80 	mfdr r5,0x200
47.12214 ++ *[0-9a-f]*:	e5 b4 00 7f 	mfdr r4,0x1fc
47.12215 ++ *[0-9a-f]*:	e5 be 00 01 	mfdr lr,0x4
47.12216 ++ *[0-9a-f]*:	e5 b6 00 e9 	mfdr r6,0x3a4
47.12217 ++ *[0-9a-f]*:	e5 b5 00 09 	mfdr r5,0x24
47.12218 ++ *[0-9a-f]*:	e5 b9 00 4b 	mfdr r9,0x12c
47.12219 ++
47.12220 ++[0-9a-f]* <mtdr>:
47.12221 ++ *[0-9a-f]*:	e7 bf 00 00 	mtdr 0x0,pc
47.12222 ++ *[0-9a-f]*:	e7 bc 00 ff 	mtdr 0x3fc,r12
47.12223 ++ *[0-9a-f]*:	e7 b5 00 80 	mtdr 0x200,r5
47.12224 ++ *[0-9a-f]*:	e7 b4 00 7f 	mtdr 0x1fc,r4
47.12225 ++ *[0-9a-f]*:	e7 be 00 01 	mtdr 0x4,lr
47.12226 ++ *[0-9a-f]*:	e7 b8 00 2d 	mtdr 0xb4,r8
47.12227 ++ *[0-9a-f]*:	e7 ba 00 b4 	mtdr 0x2d0,r10
47.12228 ++ *[0-9a-f]*:	e7 be 00 66 	mtdr 0x198,lr
47.12229 ++
47.12230 ++[0-9a-f]* <sleep>:
47.12231 ++ *[0-9a-f]*:	e9 b0 00 00 	sleep 0x0
47.12232 ++ *[0-9a-f]*:	e9 b0 00 ff 	sleep 0xff
47.12233 ++ *[0-9a-f]*:	e9 b0 00 80 	sleep 0x80
47.12234 ++ *[0-9a-f]*:	e9 b0 00 7f 	sleep 0x7f
47.12235 ++ *[0-9a-f]*:	e9 b0 00 01 	sleep 0x1
47.12236 ++ *[0-9a-f]*:	e9 b0 00 fe 	sleep 0xfe
47.12237 ++ *[0-9a-f]*:	e9 b0 00 0f 	sleep 0xf
47.12238 ++ *[0-9a-f]*:	e9 b0 00 2b 	sleep 0x2b
47.12239 ++
47.12240 ++[0-9a-f]* <sync>:
47.12241 ++ *[0-9a-f]*:	eb b0 00 00 	sync 0x0
47.12242 ++ *[0-9a-f]*:	eb b0 00 ff 	sync 0xff
47.12243 ++ *[0-9a-f]*:	eb b0 00 80 	sync 0x80
47.12244 ++ *[0-9a-f]*:	eb b0 00 7f 	sync 0x7f
47.12245 ++ *[0-9a-f]*:	eb b0 00 01 	sync 0x1
47.12246 ++ *[0-9a-f]*:	eb b0 00 a6 	sync 0xa6
47.12247 ++ *[0-9a-f]*:	eb b0 00 e6 	sync 0xe6
47.12248 ++ *[0-9a-f]*:	eb b0 00 b4 	sync 0xb4
47.12249 ++
47.12250 ++[0-9a-f]* <bld>:
47.12251 ++ *[0-9a-f]*:	ed bf 00 00 	bld pc,0x0
47.12252 ++ *[0-9a-f]*:	ed bc 00 1f 	bld r12,0x1f
47.12253 ++ *[0-9a-f]*:	ed b5 00 10 	bld r5,0x10
47.12254 ++ *[0-9a-f]*:	ed b4 00 0f 	bld r4,0xf
47.12255 ++ *[0-9a-f]*:	ed be 00 01 	bld lr,0x1
47.12256 ++ *[0-9a-f]*:	ed b9 00 0f 	bld r9,0xf
47.12257 ++ *[0-9a-f]*:	ed b0 00 04 	bld r0,0x4
47.12258 ++ *[0-9a-f]*:	ed be 00 1a 	bld lr,0x1a
47.12259 ++
47.12260 ++[0-9a-f]* <bst>:
47.12261 ++ *[0-9a-f]*:	ef bf 00 00 	bst pc,0x0
47.12262 ++ *[0-9a-f]*:	ef bc 00 1f 	bst r12,0x1f
47.12263 ++ *[0-9a-f]*:	ef b5 00 10 	bst r5,0x10
47.12264 ++ *[0-9a-f]*:	ef b4 00 0f 	bst r4,0xf
47.12265 ++ *[0-9a-f]*:	ef be 00 01 	bst lr,0x1
47.12266 ++ *[0-9a-f]*:	ef ba 00 1c 	bst r10,0x1c
47.12267 ++ *[0-9a-f]*:	ef b0 00 03 	bst r0,0x3
47.12268 ++ *[0-9a-f]*:	ef bd 00 02 	bst sp,0x2
47.12269 ++
47.12270 ++[0-9a-f]* <sats>:
47.12271 ++ *[0-9a-f]*:	f1 bf 00 00 	sats pc,0x0
47.12272 ++ *[0-9a-f]*:	f1 bc 03 ff 	sats r12>>0x1f,0x1f
47.12273 ++ *[0-9a-f]*:	f1 b5 02 10 	sats r5>>0x10,0x10
47.12274 ++ *[0-9a-f]*:	f1 b4 01 ef 	sats r4>>0xf,0xf
47.12275 ++ *[0-9a-f]*:	f1 be 00 21 	sats lr>>0x1,0x1
47.12276 ++ *[0-9a-f]*:	f1 ba 02 63 	sats r10>>0x3,0x13
47.12277 ++ *[0-9a-f]*:	f1 ba 03 42 	sats r10>>0x2,0x1a
47.12278 ++ *[0-9a-f]*:	f1 b1 00 34 	sats r1>>0x14,0x1
47.12279 ++
47.12280 ++[0-9a-f]* <satu>:
47.12281 ++ *[0-9a-f]*:	f1 bf 04 00 	satu pc,0x0
47.12282 ++ *[0-9a-f]*:	f1 bc 07 ff 	satu r12>>0x1f,0x1f
47.12283 ++ *[0-9a-f]*:	f1 b5 06 10 	satu r5>>0x10,0x10
47.12284 ++ *[0-9a-f]*:	f1 b4 05 ef 	satu r4>>0xf,0xf
47.12285 ++ *[0-9a-f]*:	f1 be 04 21 	satu lr>>0x1,0x1
47.12286 ++ *[0-9a-f]*:	f1 bf 04 e5 	satu pc>>0x5,0x7
47.12287 ++ *[0-9a-f]*:	f1 b7 04 a5 	satu r7>>0x5,0x5
47.12288 ++ *[0-9a-f]*:	f1 b2 06 7a 	satu r2>>0x1a,0x13
47.12289 ++
47.12290 ++[0-9a-f]* <satrnds>:
47.12291 ++ *[0-9a-f]*:	f3 bf 00 00 	satrnds pc,0x0
47.12292 ++ *[0-9a-f]*:	f3 bc 03 ff 	satrnds r12>>0x1f,0x1f
47.12293 ++ *[0-9a-f]*:	f3 b5 02 10 	satrnds r5>>0x10,0x10
47.12294 ++ *[0-9a-f]*:	f3 b4 01 ef 	satrnds r4>>0xf,0xf
47.12295 ++ *[0-9a-f]*:	f3 be 00 21 	satrnds lr>>0x1,0x1
47.12296 ++ *[0-9a-f]*:	f3 b0 02 75 	satrnds r0>>0x15,0x13
47.12297 ++ *[0-9a-f]*:	f3 bd 00 40 	satrnds sp,0x2
47.12298 ++ *[0-9a-f]*:	f3 b7 03 a6 	satrnds r7>>0x6,0x1d
47.12299 ++
47.12300 ++[0-9a-f]* <satrndu>:
47.12301 ++ *[0-9a-f]*:	f3 bf 04 00 	satrndu pc,0x0
47.12302 ++ *[0-9a-f]*:	f3 bc 07 ff 	satrndu r12>>0x1f,0x1f
47.12303 ++ *[0-9a-f]*:	f3 b5 06 10 	satrndu r5>>0x10,0x10
47.12304 ++ *[0-9a-f]*:	f3 b4 05 ef 	satrndu r4>>0xf,0xf
47.12305 ++ *[0-9a-f]*:	f3 be 04 21 	satrndu lr>>0x1,0x1
47.12306 ++ *[0-9a-f]*:	f3 bc 07 40 	satrndu r12,0x1a
47.12307 ++ *[0-9a-f]*:	f3 b4 04 75 	satrndu r4>>0x15,0x3
47.12308 ++ *[0-9a-f]*:	f3 ba 06 03 	satrndu r10>>0x3,0x10
47.12309 ++
47.12310 ++[0-9a-f]* <subfc>:
47.12311 ++ *[0-9a-f]*:	f5 bf 00 00 	subfeq pc,0
47.12312 ++ *[0-9a-f]*:	f5 bc 0f ff 	subfal r12,-1
47.12313 ++ *[0-9a-f]*:	f5 b5 08 80 	subfls r5,-128
47.12314 ++ *[0-9a-f]*:	f5 b4 07 7f 	subfpl r4,127
47.12315 ++ *[0-9a-f]*:	f5 be 01 01 	subfne lr,1
47.12316 ++ *[0-9a-f]*:	f5 ba 08 08 	subfls r10,8
47.12317 ++ *[0-9a-f]*:	f5 bb 0d 63 	subfvc r11,99
47.12318 ++ *[0-9a-f]*:	f5 b2 0c 49 	subfvs r2,73
47.12319 ++
47.12320 ++[0-9a-f]* <subc>:
47.12321 ++ *[0-9a-f]*:	f7 bf 00 00 	subeq pc,0
47.12322 ++ *[0-9a-f]*:	f7 bc 0f ff 	subal r12,-1
47.12323 ++ *[0-9a-f]*:	f7 b5 08 80 	subls r5,-128
47.12324 ++ *[0-9a-f]*:	f7 b4 07 7f 	subpl r4,127
47.12325 ++ *[0-9a-f]*:	f7 be 01 01 	subne lr,1
47.12326 ++ *[0-9a-f]*:	f7 bc 08 76 	subls r12,118
47.12327 ++ *[0-9a-f]*:	f7 be 0d f4 	subvc lr,-12
47.12328 ++ *[0-9a-f]*:	f7 b4 06 f3 	submi r4,-13
47.12329 ++
47.12330 ++[0-9a-f]* <movc2>:
47.12331 ++ *[0-9a-f]*:	f9 bf 00 00 	moveq pc,0
47.12332 ++ *[0-9a-f]*:	f9 bc 0f ff 	moval r12,-1
47.12333 ++ *[0-9a-f]*:	f9 b5 08 80 	movls r5,-128
47.12334 ++ *[0-9a-f]*:	f9 b4 07 7f 	movpl r4,127
47.12335 ++ *[0-9a-f]*:	f9 be 01 01 	movne lr,1
47.12336 ++ *[0-9a-f]*:	f9 b3 05 86 	movlt r3,-122
47.12337 ++ *[0-9a-f]*:	f9 b8 0d 02 	movvc r8,2
47.12338 ++ *[0-9a-f]*:	f9 b7 01 91 	movne r7,-111
47.12339 ++
47.12340 ++[0-9a-f]* <cp_b>:
47.12341 ++ *[0-9a-f]*:	e0 0f 18 00 	cp\.b pc,r0
47.12342 ++ *[0-9a-f]*:	fe 00 18 00 	cp\.b r0,pc
47.12343 ++ *[0-9a-f]*:	f0 07 18 00 	cp\.b r7,r8
47.12344 ++ *[0-9a-f]*:	ee 08 18 00 	cp\.b r8,r7
47.12345 ++
47.12346 ++[0-9a-f]* <cp_h>:
47.12347 ++ *[0-9a-f]*:	e0 0f 19 00 	cp\.h pc,r0
47.12348 ++ *[0-9a-f]*:	fe 00 19 00 	cp\.h r0,pc
47.12349 ++ *[0-9a-f]*:	f0 07 19 00 	cp\.h r7,r8
47.12350 ++ *[0-9a-f]*:	ee 08 19 00 	cp\.h r8,r7
47.12351 ++
47.12352 ++[0-9a-f]* <ldm>:
47.12353 ++ *[0-9a-f]*:	e1 cf 00 7e 	ldm pc,r1-r6
47.12354 ++ *[0-9a-f]*:	e1 cc ff ff 	ldm r12,r0-pc
47.12355 ++ *[0-9a-f]*:	e1 c5 80 00 	ldm r5,pc
47.12356 ++ *[0-9a-f]*:	e1 c4 7f ff 	ldm r4,r0-lr
47.12357 ++ *[0-9a-f]*:	e1 ce 00 01 	ldm lr,r0
47.12358 ++ *[0-9a-f]*:	e1 c9 40 22 	ldm r9,r1,r5,lr
47.12359 ++ *[0-9a-f]*:	e1 cb 81 ec 	ldm r11,r2-r3,r5-r8,pc
47.12360 ++ *[0-9a-f]*:	e1 c6 a2 09 	ldm r6,r0,r3,r9,sp,pc
47.12361 ++
47.12362 ++[0-9a-f]* <ldm_pu>:
47.12363 ++ *[0-9a-f]*:	e3 cf 03 c0 	ldm pc\+\+,r6-r9
47.12364 ++ *[0-9a-f]*:	e3 cc ff ff 	ldm r12\+\+,r0-pc
47.12365 ++ *[0-9a-f]*:	e3 c5 80 00 	ldm r5\+\+,pc
47.12366 ++ *[0-9a-f]*:	e3 c4 7f ff 	ldm r4\+\+,r0-lr
47.12367 ++ *[0-9a-f]*:	e3 ce 00 01 	ldm lr\+\+,r0
47.12368 ++ *[0-9a-f]*:	e3 cc d5 38 	ldm r12\+\+,r3-r5,r8,r10,r12,lr-pc
47.12369 ++ *[0-9a-f]*:	e3 ca c0 74 	ldm r10\+\+,r2,r4-r6,lr-pc
47.12370 ++ *[0-9a-f]*:	e3 c6 7e 1a 	ldm r6\+\+,r1,r3-r4,r9-lr
47.12371 ++
47.12372 ++[0-9a-f]* <ldmts>:
47.12373 ++ *[0-9a-f]*:	e5 cf 01 80 	ldmts pc,r7-r8
47.12374 ++ *[0-9a-f]*:	e5 cc ff ff 	ldmts r12,r0-pc
47.12375 ++ *[0-9a-f]*:	e5 c5 80 00 	ldmts r5,pc
47.12376 ++ *[0-9a-f]*:	e5 c4 7f ff 	ldmts r4,r0-lr
47.12377 ++ *[0-9a-f]*:	e5 ce 00 01 	ldmts lr,r0
47.12378 ++ *[0-9a-f]*:	e5 c0 18 06 	ldmts r0,r1-r2,r11-r12
47.12379 ++ *[0-9a-f]*:	e5 ce 61 97 	ldmts lr,r0-r2,r4,r7-r8,sp-lr
47.12380 ++ *[0-9a-f]*:	e5 cc c2 3b 	ldmts r12,r0-r1,r3-r5,r9,lr-pc
47.12381 ++
47.12382 ++[0-9a-f]* <ldmts_pu>:
47.12383 ++ *[0-9a-f]*:	e7 cf 02 00 	ldmts pc\+\+,r9
47.12384 ++ *[0-9a-f]*:	e7 cc ff ff 	ldmts r12\+\+,r0-pc
47.12385 ++ *[0-9a-f]*:	e7 c5 80 00 	ldmts r5\+\+,pc
47.12386 ++ *[0-9a-f]*:	e7 c4 7f ff 	ldmts r4\+\+,r0-lr
47.12387 ++ *[0-9a-f]*:	e7 ce 00 01 	ldmts lr\+\+,r0
47.12388 ++ *[0-9a-f]*:	e7 cd 0a bd 	ldmts sp\+\+,r0,r2-r5,r7,r9,r11
47.12389 ++ *[0-9a-f]*:	e7 c5 0c 8e 	ldmts r5\+\+,r1-r3,r7,r10-r11
47.12390 ++ *[0-9a-f]*:	e7 c8 a1 9c 	ldmts r8\+\+,r2-r4,r7-r8,sp,pc
47.12391 ++
47.12392 ++[0-9a-f]* <stm>:
47.12393 ++ *[0-9a-f]*:	e9 cf 00 80 	stm pc,r7
47.12394 ++ *[0-9a-f]*:	e9 cc ff ff 	stm r12,r0-pc
47.12395 ++ *[0-9a-f]*:	e9 c5 80 00 	stm r5,pc
47.12396 ++ *[0-9a-f]*:	e9 c4 7f ff 	stm r4,r0-lr
47.12397 ++ *[0-9a-f]*:	e9 ce 00 01 	stm lr,r0
47.12398 ++ *[0-9a-f]*:	e9 cd 49 2c 	stm sp,r2-r3,r5,r8,r11,lr
47.12399 ++ *[0-9a-f]*:	e9 c4 4c 5f 	stm r4,r0-r4,r6,r10-r11,lr
47.12400 ++ *[0-9a-f]*:	e9 c9 f2 22 	stm r9,r1,r5,r9,r12-pc
47.12401 ++
47.12402 ++[0-9a-f]* <stm_pu>:
47.12403 ++ *[0-9a-f]*:	eb cf 00 70 	stm --pc,r4-r6
47.12404 ++ *[0-9a-f]*:	eb cc ff ff 	stm --r12,r0-pc
47.12405 ++ *[0-9a-f]*:	eb c5 80 00 	stm --r5,pc
47.12406 ++ *[0-9a-f]*:	eb c4 7f ff 	stm --r4,r0-lr
47.12407 ++ *[0-9a-f]*:	eb ce 00 01 	stm --lr,r0
47.12408 ++ *[0-9a-f]*:	eb cb fb f1 	stm --r11,r0,r4-r9,r11-pc
47.12409 ++ *[0-9a-f]*:	eb cb 56 09 	stm --r11,r0,r3,r9-r10,r12,lr
47.12410 ++ *[0-9a-f]*:	eb c6 63 04 	stm --r6,r2,r8-r9,sp-lr
47.12411 ++
47.12412 ++[0-9a-f]* <stmts>:
47.12413 ++ *[0-9a-f]*:	ed cf 01 00 	stmts pc,r8
47.12414 ++ *[0-9a-f]*:	ed cc ff ff 	stmts r12,r0-pc
47.12415 ++ *[0-9a-f]*:	ed c5 80 00 	stmts r5,pc
47.12416 ++ *[0-9a-f]*:	ed c4 7f ff 	stmts r4,r0-lr
47.12417 ++ *[0-9a-f]*:	ed ce 00 01 	stmts lr,r0
47.12418 ++ *[0-9a-f]*:	ed c1 c6 5b 	stmts r1,r0-r1,r3-r4,r6,r9-r10,lr-pc
47.12419 ++ *[0-9a-f]*:	ed c3 1d c1 	stmts r3,r0,r6-r8,r10-r12
47.12420 ++ *[0-9a-f]*:	ed cb d6 d1 	stmts r11,r0,r4,r6-r7,r9-r10,r12,lr-pc
47.12421 ++
47.12422 ++[0-9a-f]* <stmts_pu>:
47.12423 ++ *[0-9a-f]*:	ef cf 01 c0 	stmts --pc,r6-r8
47.12424 ++ *[0-9a-f]*:	ef cc ff ff 	stmts --r12,r0-pc
47.12425 ++ *[0-9a-f]*:	ef c5 80 00 	stmts --r5,pc
47.12426 ++ *[0-9a-f]*:	ef c4 7f ff 	stmts --r4,r0-lr
47.12427 ++ *[0-9a-f]*:	ef ce 00 01 	stmts --lr,r0
47.12428 ++ *[0-9a-f]*:	ef c2 36 19 	stmts --r2,r0,r3-r4,r9-r10,r12-sp
47.12429 ++ *[0-9a-f]*:	ef c3 c0 03 	stmts --r3,r0-r1,lr-pc
47.12430 ++ *[0-9a-f]*:	ef c0 44 7d 	stmts --r0,r0,r2-r6,r10,lr
47.12431 ++
47.12432 ++[0-9a-f]* <ldins_h>:
47.12433 ++ *[0-9a-f]*:	ff df 00 00 	ldins\.h pc:b,pc\[0\]
47.12434 ++ *[0-9a-f]*:	f9 dc 1f ff 	ldins\.h r12:t,r12\[-2\]
47.12435 ++ *[0-9a-f]*:	eb d5 18 00 	ldins\.h r5:t,r5\[-4096\]
47.12436 ++ *[0-9a-f]*:	e9 d4 07 ff 	ldins\.h r4:b,r4\[4094\]
47.12437 ++ *[0-9a-f]*:	fd de 10 01 	ldins\.h lr:t,lr\[2\]
47.12438 ++ *[0-9a-f]*:	fd d0 13 c5 	ldins\.h r0:t,lr\[1930\]
47.12439 ++ *[0-9a-f]*:	ef d3 0e f5 	ldins\.h r3:b,r7\[-534\]
47.12440 ++ *[0-9a-f]*:	f9 d2 0b 9a 	ldins\.h r2:b,r12\[-2252\]
47.12441 ++
47.12442 ++[0-9a-f]* <ldins_b>:
47.12443 ++ *[0-9a-f]*:	ff df 40 00 	ldins\.b pc:b,pc\[0\]
47.12444 ++ *[0-9a-f]*:	f9 dc 7f ff 	ldins\.b r12:t,r12\[-1\]
47.12445 ++ *[0-9a-f]*:	eb d5 68 00 	ldins\.b r5:u,r5\[-2048\]
47.12446 ++ *[0-9a-f]*:	e9 d4 57 ff 	ldins\.b r4:l,r4\[2047\]
47.12447 ++ *[0-9a-f]*:	fd de 50 01 	ldins\.b lr:l,lr\[1\]
47.12448 ++ *[0-9a-f]*:	e9 d6 7d 6a 	ldins\.b r6:t,r4\[-662\]
47.12449 ++ *[0-9a-f]*:	e3 d5 4f 69 	ldins\.b r5:b,r1\[-151\]
47.12450 ++ *[0-9a-f]*:	f7 da 78 7d 	ldins\.b r10:t,r11\[-1923\]
47.12451 ++
47.12452 ++[0-9a-f]* <ldswp_sh>:
47.12453 ++ *[0-9a-f]*:	ff df 20 00 	ldswp\.sh pc,pc\[0\]
47.12454 ++ *[0-9a-f]*:	f9 dc 2f ff 	ldswp\.sh r12,r12\[-2\]
47.12455 ++ *[0-9a-f]*:	eb d5 28 00 	ldswp\.sh r5,r5\[-4096\]
47.12456 ++ *[0-9a-f]*:	e9 d4 27 ff 	ldswp\.sh r4,r4\[4094\]
47.12457 ++ *[0-9a-f]*:	fd de 20 01 	ldswp\.sh lr,lr\[2\]
47.12458 ++ *[0-9a-f]*:	f5 d9 27 84 	ldswp\.sh r9,r10\[3848\]
47.12459 ++ *[0-9a-f]*:	f9 d4 2c 04 	ldswp\.sh r4,r12\[-2040\]
47.12460 ++ *[0-9a-f]*:	e5 da 26 08 	ldswp\.sh r10,r2\[3088\]
47.12461 ++
47.12462 ++[0-9a-f]* <ldswp_uh>:
47.12463 ++ *[0-9a-f]*:	ff df 30 00 	ldswp\.uh pc,pc\[0\]
47.12464 ++ *[0-9a-f]*:	f9 dc 3f ff 	ldswp\.uh r12,r12\[-2\]
47.12465 ++ *[0-9a-f]*:	eb d5 38 00 	ldswp\.uh r5,r5\[-4096\]
47.12466 ++ *[0-9a-f]*:	e9 d4 37 ff 	ldswp\.uh r4,r4\[4094\]
47.12467 ++ *[0-9a-f]*:	fd de 30 01 	ldswp\.uh lr,lr\[2\]
47.12468 ++ *[0-9a-f]*:	f3 d4 37 46 	ldswp\.uh r4,r9\[3724\]
47.12469 ++ *[0-9a-f]*:	fb de 3c bc 	ldswp\.uh lr,sp\[-1672\]
47.12470 ++ *[0-9a-f]*:	f9 d8 38 7d 	ldswp\.uh r8,r12\[-3846\]
47.12471 ++
47.12472 ++[0-9a-f]* <ldswp_w>:
47.12473 ++ *[0-9a-f]*:	ff df 80 00 	ldswp\.w pc,pc\[0\]
47.12474 ++ *[0-9a-f]*:	f9 dc 8f ff 	ldswp\.w r12,r12\[-4\]
47.12475 ++ *[0-9a-f]*:	eb d5 88 00 	ldswp\.w r5,r5\[-8192\]
47.12476 ++ *[0-9a-f]*:	e9 d4 87 ff 	ldswp\.w r4,r4\[8188\]
47.12477 ++ *[0-9a-f]*:	fd de 80 01 	ldswp\.w lr,lr\[4\]
47.12478 ++ *[0-9a-f]*:	ef dd 81 d1 	ldswp\.w sp,r7\[1860\]
47.12479 ++ *[0-9a-f]*:	eb df 8c c1 	ldswp\.w pc,r5\[-3324\]
47.12480 ++ *[0-9a-f]*:	f5 dc 8c c8 	ldswp\.w r12,r10\[-3296\]
47.12481 ++
47.12482 ++[0-9a-f]* <stswp_h>:
47.12483 ++ *[0-9a-f]*:	ff df 90 00 	stswp\.h pc\[0\],pc
47.12484 ++ *[0-9a-f]*:	f9 dc 9f ff 	stswp\.h r12\[-2\],r12
47.12485 ++ *[0-9a-f]*:	eb d5 98 00 	stswp\.h r5\[-4096\],r5
47.12486 ++ *[0-9a-f]*:	e9 d4 97 ff 	stswp\.h r4\[4094\],r4
47.12487 ++ *[0-9a-f]*:	fd de 90 01 	stswp\.h lr\[2\],lr
47.12488 ++ *[0-9a-f]*:	ef da 90 20 	stswp\.h r7\[64\],r10
47.12489 ++ *[0-9a-f]*:	f5 d2 95 e8 	stswp\.h r10\[3024\],r2
47.12490 ++ *[0-9a-f]*:	e1 da 9b 74 	stswp\.h r0\[-2328\],r10
47.12491 ++
47.12492 ++[0-9a-f]* <stswp_w>:
47.12493 ++ *[0-9a-f]*:	ff df a0 00 	stswp\.w pc\[0\],pc
47.12494 ++ *[0-9a-f]*:	f9 dc af ff 	stswp\.w r12\[-4\],r12
47.12495 ++ *[0-9a-f]*:	eb d5 a8 00 	stswp\.w r5\[-8192\],r5
47.12496 ++ *[0-9a-f]*:	e9 d4 a7 ff 	stswp\.w r4\[8188\],r4
47.12497 ++ *[0-9a-f]*:	fd de a0 01 	stswp\.w lr\[4\],lr
47.12498 ++ *[0-9a-f]*:	ff d8 a1 21 	stswp\.w pc\[1156\],r8
47.12499 ++ *[0-9a-f]*:	fb da a7 ce 	stswp\.w sp\[7992\],r10
47.12500 ++ *[0-9a-f]*:	f1 d5 ae db 	stswp\.w r8\[-1172\],r5
47.12501 ++
47.12502 ++[0-9a-f]* <and2>:
47.12503 ++ *[0-9a-f]*:	ff ef 00 0f 	and pc,pc,pc
47.12504 ++ *[0-9a-f]*:	f9 ec 01 fc 	and r12,r12,r12<<0x1f
47.12505 ++ *[0-9a-f]*:	eb e5 01 05 	and r5,r5,r5<<0x10
47.12506 ++ *[0-9a-f]*:	e9 e4 00 f4 	and r4,r4,r4<<0xf
47.12507 ++ *[0-9a-f]*:	fd ee 00 1e 	and lr,lr,lr<<0x1
47.12508 ++ *[0-9a-f]*:	e5 e1 00 1a 	and r10,r2,r1<<0x1
47.12509 ++ *[0-9a-f]*:	f1 eb 01 bc 	and r12,r8,r11<<0x1b
47.12510 ++ *[0-9a-f]*:	ef e0 00 3a 	and r10,r7,r0<<0x3
47.12511 ++
47.12512 ++[0-9a-f]* <and3>:
47.12513 ++ *[0-9a-f]*:	ff ef 02 0f 	and pc,pc,pc
47.12514 ++ *[0-9a-f]*:	f9 ec 03 fc 	and r12,r12,r12>>0x1f
47.12515 ++ *[0-9a-f]*:	eb e5 03 05 	and r5,r5,r5>>0x10
47.12516 ++ *[0-9a-f]*:	e9 e4 02 f4 	and r4,r4,r4>>0xf
47.12517 ++ *[0-9a-f]*:	fd ee 02 1e 	and lr,lr,lr>>0x1
47.12518 ++ *[0-9a-f]*:	f1 e7 03 1c 	and r12,r8,r7>>0x11
47.12519 ++ *[0-9a-f]*:	e9 e9 03 4f 	and pc,r4,r9>>0x14
47.12520 ++ *[0-9a-f]*:	f3 ea 02 ca 	and r10,r9,r10>>0xc
47.12521 ++
47.12522 ++[0-9a-f]* <or2>:
47.12523 ++ *[0-9a-f]*:	ff ef 10 0f 	or pc,pc,pc
47.12524 ++ *[0-9a-f]*:	f9 ec 11 fc 	or r12,r12,r12<<0x1f
47.12525 ++ *[0-9a-f]*:	eb e5 11 05 	or r5,r5,r5<<0x10
47.12526 ++ *[0-9a-f]*:	e9 e4 10 f4 	or r4,r4,r4<<0xf
47.12527 ++ *[0-9a-f]*:	fd ee 10 1e 	or lr,lr,lr<<0x1
47.12528 ++ *[0-9a-f]*:	fb eb 11 d8 	or r8,sp,r11<<0x1d
47.12529 ++ *[0-9a-f]*:	f3 e2 11 cf 	or pc,r9,r2<<0x1c
47.12530 ++ *[0-9a-f]*:	e3 e2 10 35 	or r5,r1,r2<<0x3
47.12531 ++
47.12532 ++[0-9a-f]* <or3>:
47.12533 ++ *[0-9a-f]*:	ff ef 12 0f 	or pc,pc,pc
47.12534 ++ *[0-9a-f]*:	f9 ec 13 fc 	or r12,r12,r12>>0x1f
47.12535 ++ *[0-9a-f]*:	eb e5 13 05 	or r5,r5,r5>>0x10
47.12536 ++ *[0-9a-f]*:	e9 e4 12 f4 	or r4,r4,r4>>0xf
47.12537 ++ *[0-9a-f]*:	fd ee 12 1e 	or lr,lr,lr>>0x1
47.12538 ++ *[0-9a-f]*:	fb ed 12 21 	or r1,sp,sp>>0x2
47.12539 ++ *[0-9a-f]*:	e3 e1 13 d0 	or r0,r1,r1>>0x1d
47.12540 ++ *[0-9a-f]*:	f9 e8 12 84 	or r4,r12,r8>>0x8
47.12541 ++
47.12542 ++[0-9a-f]* <eor2>:
47.12543 ++ *[0-9a-f]*:	ff ef 20 0f 	eor pc,pc,pc
47.12544 ++ *[0-9a-f]*:	f9 ec 21 fc 	eor r12,r12,r12<<0x1f
47.12545 ++ *[0-9a-f]*:	eb e5 21 05 	eor r5,r5,r5<<0x10
47.12546 ++ *[0-9a-f]*:	e9 e4 20 f4 	eor r4,r4,r4<<0xf
47.12547 ++ *[0-9a-f]*:	fd ee 20 1e 	eor lr,lr,lr<<0x1
47.12548 ++ *[0-9a-f]*:	f3 e4 20 ba 	eor r10,r9,r4<<0xb
47.12549 ++ *[0-9a-f]*:	e1 e1 21 f4 	eor r4,r0,r1<<0x1f
47.12550 ++ *[0-9a-f]*:	e5 ec 20 d6 	eor r6,r2,r12<<0xd
47.12551 ++
47.12552 ++[0-9a-f]* <eor3>:
47.12553 ++ *[0-9a-f]*:	ff ef 22 0f 	eor pc,pc,pc
47.12554 ++ *[0-9a-f]*:	f9 ec 23 fc 	eor r12,r12,r12>>0x1f
47.12555 ++ *[0-9a-f]*:	eb e5 23 05 	eor r5,r5,r5>>0x10
47.12556 ++ *[0-9a-f]*:	e9 e4 22 f4 	eor r4,r4,r4>>0xf
47.12557 ++ *[0-9a-f]*:	fd ee 22 1e 	eor lr,lr,lr>>0x1
47.12558 ++ *[0-9a-f]*:	eb e5 23 65 	eor r5,r5,r5>>0x16
47.12559 ++ *[0-9a-f]*:	e3 ee 22 3a 	eor r10,r1,lr>>0x3
47.12560 ++ *[0-9a-f]*:	fd ed 23 a7 	eor r7,lr,sp>>0x1a
47.12561 ++
47.12562 ++[0-9a-f]* <sthh_w2>:
47.12563 ++ *[0-9a-f]*:	ff ef 8f 0f 	sthh\.w pc\[pc\],pc:b,pc:b
47.12564 ++ *[0-9a-f]*:	f9 ec bc 3c 	sthh\.w r12\[r12<<0x3\],r12:t,r12:t
47.12565 ++ *[0-9a-f]*:	eb e5 b5 25 	sthh\.w r5\[r5<<0x2\],r5:t,r5:t
47.12566 ++ *[0-9a-f]*:	e9 e4 84 14 	sthh\.w r4\[r4<<0x1\],r4:b,r4:b
47.12567 ++ *[0-9a-f]*:	fd ee be 1e 	sthh\.w lr\[lr<<0x1\],lr:t,lr:t
47.12568 ++ *[0-9a-f]*:	e3 ec b6 3d 	sthh\.w sp\[r6<<0x3\],r1:t,r12:t
47.12569 ++ *[0-9a-f]*:	f3 e9 b6 06 	sthh\.w r6\[r6\],r9:t,r9:t
47.12570 ++ *[0-9a-f]*:	e1 eb 93 0a 	sthh\.w r10\[r3\],r0:b,r11:t
47.12571 ++
47.12572 ++[0-9a-f]* <sthh_w1>:
47.12573 ++ *[0-9a-f]*:	ff ef c0 0f 	sthh\.w pc\[0x0\],pc:b,pc:b
47.12574 ++ *[0-9a-f]*:	f9 ec ff fc 	sthh\.w r12\[0x3fc\],r12:t,r12:t
47.12575 ++ *[0-9a-f]*:	eb e5 f8 05 	sthh\.w r5\[0x200\],r5:t,r5:t
47.12576 ++ *[0-9a-f]*:	e9 e4 c7 f4 	sthh\.w r4\[0x1fc\],r4:b,r4:b
47.12577 ++ *[0-9a-f]*:	fd ee f0 1e 	sthh\.w lr\[0x4\],lr:t,lr:t
47.12578 ++ *[0-9a-f]*:	f3 e0 e6 54 	sthh\.w r4\[0x194\],r9:t,r0:b
47.12579 ++ *[0-9a-f]*:	e5 ea e5 78 	sthh\.w r8\[0x15c\],r2:t,r10:b
47.12580 ++ *[0-9a-f]*:	f3 e2 c2 bd 	sthh\.w sp\[0xac\],r9:b,r2:b
47.12581 ++
47.12582 ++[0-9a-f]* <cop>:
47.12583 ++ *[0-9a-f]*:	e1 a0 00 00 	cop cp0,cr0,cr0,cr0,0x0
47.12584 ++ *[0-9a-f]*:	e7 af ff ff 	cop cp7,cr15,cr15,cr15,0x7f
47.12585 ++ *[0-9a-f]*:	e3 a8 75 55 	cop cp3,cr5,cr5,cr5,0x31
47.12586 ++ *[0-9a-f]*:	e3 a8 44 44 	cop cp2,cr4,cr4,cr4,0x30
47.12587 ++ *[0-9a-f]*:	e5 ad a8 37 	cop cp5,cr8,cr3,cr7,0x5a
47.12588 ++
47.12589 ++[0-9a-f]* <ldc_w1>:
47.12590 ++ *[0-9a-f]*:	e9 a0 00 00 	ldc\.w cp0,cr0,r0\[0x0\]
47.12591 ++ *[0-9a-f]*:	e9 af ef ff 	ldc\.w cp7,cr15,pc\[0x3fc\]
47.12592 ++ *[0-9a-f]*:	e9 a5 65 80 	ldc\.w cp3,cr5,r5\[0x200\]
47.12593 ++ *[0-9a-f]*:	e9 a4 44 7f 	ldc\.w cp2,cr4,r4\[0x1fc\]
47.12594 ++ *[0-9a-f]*:	e9 ad 89 24 	ldc\.w cp4,cr9,sp\[0x90\]
47.12595 ++
47.12596 ++[0-9a-f]* <ldc_w2>:
47.12597 ++ *[0-9a-f]*:	ef a0 00 40 	ldc\.w cp0,cr0,--r0
47.12598 ++ *[0-9a-f]*:	ef af ef 40 	ldc\.w cp7,cr15,--pc
47.12599 ++ *[0-9a-f]*:	ef a5 65 40 	ldc\.w cp3,cr5,--r5
47.12600 ++ *[0-9a-f]*:	ef a4 44 40 	ldc\.w cp2,cr4,--r4
47.12601 ++ *[0-9a-f]*:	ef ad 89 40 	ldc\.w cp4,cr9,--sp
47.12602 ++
47.12603 ++[0-9a-f]* <ldc_w3>:
47.12604 ++ *[0-9a-f]*:	ef a0 10 00 	ldc\.w cp0,cr0,r0\[r0\]
47.12605 ++ *[0-9a-f]*:	ef af ff 3f 	ldc\.w cp7,cr15,pc\[pc<<0x3\]
47.12606 ++ *[0-9a-f]*:	ef a5 75 24 	ldc\.w cp3,cr5,r5\[r4<<0x2\]
47.12607 ++ *[0-9a-f]*:	ef a4 54 13 	ldc\.w cp2,cr4,r4\[r3<<0x1\]
47.12608 ++ *[0-9a-f]*:	ef ad 99 0c 	ldc\.w cp4,cr9,sp\[r12\]
47.12609 ++
47.12610 ++[0-9a-f]* <ldc_d1>:
47.12611 ++ *[0-9a-f]*:	e9 a0 10 00 	ldc\.d cp0,cr0,r0\[0x0\]
47.12612 ++ *[0-9a-f]*:	e9 af fe ff 	ldc\.d cp7,cr14,pc\[0x3fc\]
47.12613 ++ *[0-9a-f]*:	e9 a5 76 80 	ldc\.d cp3,cr6,r5\[0x200\]
47.12614 ++ *[0-9a-f]*:	e9 a4 54 7f 	ldc\.d cp2,cr4,r4\[0x1fc\]
47.12615 ++ *[0-9a-f]*:	e9 ad 98 24 	ldc\.d cp4,cr8,sp\[0x90\]
47.12616 ++
47.12617 ++[0-9a-f]* <ldc_d2>:
47.12618 ++ *[0-9a-f]*:	ef a0 00 50 	ldc\.d cp0,cr0,--r0
47.12619 ++ *[0-9a-f]*:	ef af ee 50 	ldc\.d cp7,cr14,--pc
47.12620 ++ *[0-9a-f]*:	ef a5 66 50 	ldc\.d cp3,cr6,--r5
47.12621 ++ *[0-9a-f]*:	ef a4 44 50 	ldc\.d cp2,cr4,--r4
47.12622 ++ *[0-9a-f]*:	ef ad 88 50 	ldc\.d cp4,cr8,--sp
47.12623 ++
47.12624 ++[0-9a-f]* <ldc_d3>:
47.12625 ++ *[0-9a-f]*:	ef a0 10 40 	ldc\.d cp0,cr0,r0\[r0\]
47.12626 ++ *[0-9a-f]*:	ef af fe 7f 	ldc\.d cp7,cr14,pc\[pc<<0x3\]
47.12627 ++ *[0-9a-f]*:	ef a5 76 64 	ldc\.d cp3,cr6,r5\[r4<<0x2\]
47.12628 ++ *[0-9a-f]*:	ef a4 54 53 	ldc\.d cp2,cr4,r4\[r3<<0x1\]
47.12629 ++ *[0-9a-f]*:	ef ad 98 4c 	ldc\.d cp4,cr8,sp\[r12\]
47.12630 ++
47.12631 ++[0-9a-f]* <stc_w1>:
47.12632 ++ *[0-9a-f]*:	eb a0 00 00 	stc\.w cp0,r0\[0x0\],cr0
47.12633 ++ *[0-9a-f]*:	eb af ef ff 	stc\.w cp7,pc\[0x3fc\],cr15
47.12634 ++ *[0-9a-f]*:	eb a5 65 80 	stc\.w cp3,r5\[0x200\],cr5
47.12635 ++ *[0-9a-f]*:	eb a4 44 7f 	stc\.w cp2,r4\[0x1fc\],cr4
47.12636 ++ *[0-9a-f]*:	eb ad 89 24 	stc\.w cp4,sp\[0x90\],cr9
47.12637 ++
47.12638 ++[0-9a-f]* <stc_w2>:
47.12639 ++ *[0-9a-f]*:	ef a0 00 60 	stc\.w cp0,r0\+\+,cr0
47.12640 ++ *[0-9a-f]*:	ef af ef 60 	stc\.w cp7,pc\+\+,cr15
47.12641 ++ *[0-9a-f]*:	ef a5 65 60 	stc\.w cp3,r5\+\+,cr5
47.12642 ++ *[0-9a-f]*:	ef a4 44 60 	stc\.w cp2,r4\+\+,cr4
47.12643 ++ *[0-9a-f]*:	ef ad 89 60 	stc\.w cp4,sp\+\+,cr9
47.12644 ++
47.12645 ++[0-9a-f]* <stc_w3>:
47.12646 ++ *[0-9a-f]*:	ef a0 10 80 	stc\.w cp0,r0\[r0\],cr0
47.12647 ++ *[0-9a-f]*:	ef af ff bf 	stc\.w cp7,pc\[pc<<0x3\],cr15
47.12648 ++ *[0-9a-f]*:	ef a5 75 a4 	stc\.w cp3,r5\[r4<<0x2\],cr5
47.12649 ++ *[0-9a-f]*:	ef a4 54 93 	stc\.w cp2,r4\[r3<<0x1\],cr4
47.12650 ++ *[0-9a-f]*:	ef ad 99 8c 	stc\.w cp4,sp\[r12\],cr9
47.12651 ++
47.12652 ++[0-9a-f]* <stc_d1>:
47.12653 ++ *[0-9a-f]*:	eb a0 10 00 	stc\.d cp0,r0\[0x0\],cr0
47.12654 ++ *[0-9a-f]*:	eb af fe ff 	stc\.d cp7,pc\[0x3fc\],cr14
47.12655 ++ *[0-9a-f]*:	eb a5 76 80 	stc\.d cp3,r5\[0x200\],cr6
47.12656 ++ *[0-9a-f]*:	eb a4 54 7f 	stc\.d cp2,r4\[0x1fc\],cr4
47.12657 ++ *[0-9a-f]*:	eb ad 98 24 	stc\.d cp4,sp\[0x90\],cr8
47.12658 ++
47.12659 ++[0-9a-f]* <stc_d2>:
47.12660 ++ *[0-9a-f]*:	ef a0 00 70 	stc\.d cp0,r0\+\+,cr0
47.12661 ++ *[0-9a-f]*:	ef af ee 70 	stc\.d cp7,pc\+\+,cr14
47.12662 ++ *[0-9a-f]*:	ef a5 66 70 	stc\.d cp3,r5\+\+,cr6
47.12663 ++ *[0-9a-f]*:	ef a4 44 70 	stc\.d cp2,r4\+\+,cr4
47.12664 ++ *[0-9a-f]*:	ef ad 88 70 	stc\.d cp4,sp\+\+,cr8
47.12665 ++
47.12666 ++[0-9a-f]* <stc_d3>:
47.12667 ++ *[0-9a-f]*:	ef a0 10 c0 	stc\.d cp0,r0\[r0\],cr0
47.12668 ++ *[0-9a-f]*:	ef af fe ff 	stc\.d cp7,pc\[pc<<0x3\],cr14
47.12669 ++ *[0-9a-f]*:	ef a5 76 e4 	stc\.d cp3,r5\[r4<<0x2\],cr6
47.12670 ++ *[0-9a-f]*:	ef a4 54 d3 	stc\.d cp2,r4\[r3<<0x1\],cr4
47.12671 ++ *[0-9a-f]*:	ef ad 98 cc 	stc\.d cp4,sp\[r12\],cr8
47.12672 ++
47.12673 ++[0-9a-f]* <ldc0_w>:
47.12674 ++ *[0-9a-f]*:	f1 a0 00 00 	ldc0\.w cr0,r0\[0x0\]
47.12675 ++ *[0-9a-f]*:	f1 af ff ff 	ldc0\.w cr15,pc\[0x3ffc\]
47.12676 ++ *[0-9a-f]*:	f1 a5 85 00 	ldc0\.w cr5,r5\[0x2000\]
47.12677 ++ *[0-9a-f]*:	f1 a4 74 ff 	ldc0\.w cr4,r4\[0x1ffc\]
47.12678 ++ *[0-9a-f]*:	f1 ad 09 93 	ldc0\.w cr9,sp\[0x24c\]
47.12679 ++
47.12680 ++[0-9a-f]* <ldc0_d>:
47.12681 ++ *[0-9a-f]*:	f3 a0 00 00 	ldc0\.d cr0,r0\[0x0\]
47.12682 ++ *[0-9a-f]*:	f3 af fe ff 	ldc0\.d cr14,pc\[0x3ffc\]
47.12683 ++ *[0-9a-f]*:	f3 a5 86 00 	ldc0\.d cr6,r5\[0x2000\]
47.12684 ++ *[0-9a-f]*:	f3 a4 74 ff 	ldc0\.d cr4,r4\[0x1ffc\]
47.12685 ++ *[0-9a-f]*:	f3 ad 08 93 	ldc0\.d cr8,sp\[0x24c\]
47.12686 ++
47.12687 ++[0-9a-f]* <stc0_w>:
47.12688 ++ *[0-9a-f]*:	f5 a0 00 00 	stc0\.w r0\[0x0\],cr0
47.12689 ++ *[0-9a-f]*:	f5 af ff ff 	stc0\.w pc\[0x3ffc\],cr15
47.12690 ++ *[0-9a-f]*:	f5 a5 85 00 	stc0\.w r5\[0x2000\],cr5
47.12691 ++ *[0-9a-f]*:	f5 a4 74 ff 	stc0\.w r4\[0x1ffc\],cr4
47.12692 ++ *[0-9a-f]*:	f5 ad 09 93 	stc0\.w sp\[0x24c\],cr9
47.12693 ++
47.12694 ++[0-9a-f]* <stc0_d>:
47.12695 ++ *[0-9a-f]*:	f7 a0 00 00 	stc0\.d r0\[0x0\],cr0
47.12696 ++ *[0-9a-f]*:	f7 af fe ff 	stc0\.d pc\[0x3ffc\],cr14
47.12697 ++ *[0-9a-f]*:	f7 a5 86 00 	stc0\.d r5\[0x2000\],cr6
47.12698 ++ *[0-9a-f]*:	f7 a4 74 ff 	stc0\.d r4\[0x1ffc\],cr4
47.12699 ++ *[0-9a-f]*:	f7 ad 08 93 	stc0\.d sp\[0x24c\],cr8
47.12700 ++
47.12701 ++[0-9a-f]* <memc>:
47.12702 ++ *[0-9a-f]*:	f6 10 00 00 	memc 0,0x0
47.12703 ++ *[0-9a-f]*:	f6 1f ff ff 	memc -4,0x1f
47.12704 ++ *[0-9a-f]*:	f6 18 40 00 	memc -65536,0x10
47.12705 ++ *[0-9a-f]*:	f6 17 bf ff 	memc 65532,0xf
47.12706 ++
47.12707 ++[0-9a-f]* <mems>:
47.12708 ++ *[0-9a-f]*:	f8 10 00 00 	mems 0,0x0
47.12709 ++ *[0-9a-f]*:	f8 1f ff ff 	mems -4,0x1f
47.12710 ++ *[0-9a-f]*:	f8 18 40 00 	mems -65536,0x10
47.12711 ++ *[0-9a-f]*:	f8 17 bf ff 	mems 65532,0xf
47.12712 ++
47.12713 ++[0-9a-f]* <memt>:
47.12714 ++ *[0-9a-f]*:	fa 10 00 00 	memt 0,0x0
47.12715 ++ *[0-9a-f]*:	fa 1f ff ff 	memt -4,0x1f
47.12716 ++ *[0-9a-f]*:	fa 18 40 00 	memt -65536,0x10
47.12717 ++ *[0-9a-f]*:	fa 17 bf ff 	memt 65532,0xf
47.12718 ++
47.12719 ++[0-9a-f]* <stcond>:
47.12720 ++ *[0-9a-f]*:	e1 70 00 00 	stcond r0\[0\],r0
47.12721 ++ *[0-9a-f]*:	ff 7f ff ff 	stcond pc\[-1\],pc
47.12722 ++ *[0-9a-f]*:	f1 77 80 00 	stcond r8\[-32768\],r7
47.12723 ++ *[0-9a-f]*:	ef 78 7f ff 	stcond r7\[32767\],r8
47.12724 ++ *[0-9a-f]*:	eb 7a 12 34 	stcond r5\[4660\],r10
47.12725 ++
47.12726 ++[0-9a-f]* <ldcm_w>:
47.12727 ++ *[0-9a-f]*:	ed af 00 ff 	ldcm\.w cp0,pc,cr0-cr7
47.12728 ++ *[0-9a-f]*:	ed a0 e0 01 	ldcm\.w cp7,r0,cr0
47.12729 ++ *[0-9a-f]*:	ed a4 90 7f 	ldcm\.w cp4,r4\+\+,cr0-cr6
47.12730 ++ *[0-9a-f]*:	ed a7 60 80 	ldcm\.w cp3,r7,cr7
47.12731 ++ *[0-9a-f]*:	ed ac 30 72 	ldcm\.w cp1,r12\+\+,cr1,cr4-cr6
47.12732 ++ *[0-9a-f]*:	ed af 01 ff 	ldcm\.w cp0,pc,cr8-cr15
47.12733 ++ *[0-9a-f]*:	ed a0 e1 01 	ldcm\.w cp7,r0,cr8
47.12734 ++ *[0-9a-f]*:	ed a4 91 7f 	ldcm\.w cp4,r4\+\+,cr8-cr14
47.12735 ++ *[0-9a-f]*:	ed a7 61 80 	ldcm\.w cp3,r7,cr15
47.12736 ++ *[0-9a-f]*:	ed ac 31 72 	ldcm\.w cp1,r12\+\+,cr9,cr12-cr14
47.12737 ++
47.12738 ++[0-9a-f]* <ldcm_d>:
47.12739 ++ *[0-9a-f]*:	ed af 04 ff 	ldcm\.d cp0,pc,cr0-cr15
47.12740 ++ *[0-9a-f]*:	ed a0 e4 01 	ldcm\.d cp7,r0,cr0-cr1
47.12741 ++ *[0-9a-f]*:	ed a4 94 7f 	ldcm\.d cp4,r4\+\+,cr0-cr13
47.12742 ++ *[0-9a-f]*:	ed a7 64 80 	ldcm\.d cp3,r7,cr14-cr15
47.12743 ++ *[0-9a-f]*:	ed ac 54 93 	ldcm\.d cp2,r12\+\+,cr0-cr3,cr8-cr9,cr14-cr15
47.12744 ++
47.12745 ++[0-9a-f]* <stcm_w>:
47.12746 ++ *[0-9a-f]*:	ed af 02 ff 	stcm\.w cp0,pc,cr0-cr7
47.12747 ++ *[0-9a-f]*:	ed a0 e2 01 	stcm\.w cp7,r0,cr0
47.12748 ++ *[0-9a-f]*:	ed a4 92 7f 	stcm\.w cp4,--r4,cr0-cr6
47.12749 ++ *[0-9a-f]*:	ed a7 62 80 	stcm\.w cp3,r7,cr7
47.12750 ++ *[0-9a-f]*:	ed ac 32 72 	stcm\.w cp1,--r12,cr1,cr4-cr6
47.12751 ++ *[0-9a-f]*:	ed af 03 ff 	stcm\.w cp0,pc,cr8-cr15
47.12752 ++ *[0-9a-f]*:	ed a0 e3 01 	stcm\.w cp7,r0,cr8
47.12753 ++ *[0-9a-f]*:	ed a4 93 7f 	stcm\.w cp4,--r4,cr8-cr14
47.12754 ++ *[0-9a-f]*:	ed a7 63 80 	stcm\.w cp3,r7,cr15
47.12755 ++ *[0-9a-f]*:	ed ac 33 72 	stcm\.w cp1,--r12,cr9,cr12-cr14
47.12756 ++
47.12757 ++[0-9a-f]* <stcm_d>:
47.12758 ++ *[0-9a-f]*:	ed af 05 ff 	stcm\.d cp0,pc,cr0-cr15
47.12759 ++ *[0-9a-f]*:	ed a0 e5 01 	stcm\.d cp7,r0,cr0-cr1
47.12760 ++ *[0-9a-f]*:	ed a4 95 7f 	stcm\.d cp4,--r4,cr0-cr13
47.12761 ++ *[0-9a-f]*:	ed a7 65 80 	stcm\.d cp3,r7,cr14-cr15
47.12762 ++ *[0-9a-f]*:	ed ac 55 93 	stcm\.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
47.12763 ++
47.12764 ++[0-9a-f]* <mvcr_w>:
47.12765 ++ *[0-9a-f]*:	ef af ef 00 	mvcr\.w cp7,pc,cr15
47.12766 ++ *[0-9a-f]*:	ef a0 00 00 	mvcr\.w cp0,r0,cr0
47.12767 ++ *[0-9a-f]*:	ef af 0f 00 	mvcr\.w cp0,pc,cr15
47.12768 ++ *[0-9a-f]*:	ef a0 ef 00 	mvcr\.w cp7,r0,cr15
47.12769 ++ *[0-9a-f]*:	ef af e0 00 	mvcr\.w cp7,pc,cr0
47.12770 ++ *[0-9a-f]*:	ef a7 88 00 	mvcr\.w cp4,r7,cr8
47.12771 ++ *[0-9a-f]*:	ef a8 67 00 	mvcr\.w cp3,r8,cr7
47.12772 ++
47.12773 ++[0-9a-f]* <mvcr_d>:
47.12774 ++ *[0-9a-f]*:	ef ae ee 10 	mvcr\.d cp7,lr,cr14
47.12775 ++ *[0-9a-f]*:	ef a0 00 10 	mvcr\.d cp0,r0,cr0
47.12776 ++ *[0-9a-f]*:	ef ae 0e 10 	mvcr\.d cp0,lr,cr14
47.12777 ++ *[0-9a-f]*:	ef a0 ee 10 	mvcr\.d cp7,r0,cr14
47.12778 ++ *[0-9a-f]*:	ef ae e0 10 	mvcr\.d cp7,lr,cr0
47.12779 ++ *[0-9a-f]*:	ef a6 88 10 	mvcr\.d cp4,r6,cr8
47.12780 ++ *[0-9a-f]*:	ef a8 66 10 	mvcr\.d cp3,r8,cr6
47.12781 ++
47.12782 ++[0-9a-f]* <mvrc_w>:
47.12783 ++ *[0-9a-f]*:	ef af ef 20 	mvrc\.w cp7,cr15,pc
47.12784 ++ *[0-9a-f]*:	ef a0 00 20 	mvrc\.w cp0,cr0,r0
47.12785 ++ *[0-9a-f]*:	ef af 0f 20 	mvrc\.w cp0,cr15,pc
47.12786 ++ *[0-9a-f]*:	ef a0 ef 20 	mvrc\.w cp7,cr15,r0
47.12787 ++ *[0-9a-f]*:	ef af e0 20 	mvrc\.w cp7,cr0,pc
47.12788 ++ *[0-9a-f]*:	ef a7 88 20 	mvrc\.w cp4,cr8,r7
47.12789 ++ *[0-9a-f]*:	ef a8 67 20 	mvrc\.w cp3,cr7,r8
47.12790 ++
47.12791 ++[0-9a-f]* <mvrc_d>:
47.12792 ++ *[0-9a-f]*:	ef ae ee 30 	mvrc\.d cp7,cr14,lr
47.12793 ++ *[0-9a-f]*:	ef a0 00 30 	mvrc\.d cp0,cr0,r0
47.12794 ++ *[0-9a-f]*:	ef ae 0e 30 	mvrc\.d cp0,cr14,lr
47.12795 ++ *[0-9a-f]*:	ef a0 ee 30 	mvrc\.d cp7,cr14,r0
47.12796 ++ *[0-9a-f]*:	ef ae e0 30 	mvrc\.d cp7,cr0,lr
47.12797 ++ *[0-9a-f]*:	ef a6 88 30 	mvrc\.d cp4,cr8,r6
47.12798 ++ *[0-9a-f]*:	ef a8 66 30 	mvrc\.d cp3,cr6,r8
47.12799 ++
47.12800 ++[0-9a-f]* <bfexts>:
47.12801 ++ *[0-9a-f]*:	ff df b3 ff 	bfexts pc,pc,0x1f,0x1f
47.12802 ++ *[0-9a-f]*:	e1 d0 b0 00 	bfexts r0,r0,0x0,0x0
47.12803 ++ *[0-9a-f]*:	e1 df b3 ff 	bfexts r0,pc,0x1f,0x1f
47.12804 ++ *[0-9a-f]*:	ff d0 b3 ff 	bfexts pc,r0,0x1f,0x1f
47.12805 ++ *[0-9a-f]*:	ff df b0 1f 	bfexts pc,pc,0x0,0x1f
47.12806 ++ *[0-9a-f]*:	ff df b3 e0 	bfexts pc,pc,0x1f,0x0
47.12807 ++ *[0-9a-f]*:	ef d8 b1 f0 	bfexts r7,r8,0xf,0x10
47.12808 ++ *[0-9a-f]*:	f1 d7 b2 0f 	bfexts r8,r7,0x10,0xf
47.12809 ++
47.12810 ++[0-9a-f]* <bfextu>:
47.12811 ++ *[0-9a-f]*:	ff df c3 ff 	bfextu pc,pc,0x1f,0x1f
47.12812 ++ *[0-9a-f]*:	e1 d0 c0 00 	bfextu r0,r0,0x0,0x0
47.12813 ++ *[0-9a-f]*:	e1 df c3 ff 	bfextu r0,pc,0x1f,0x1f
47.12814 ++ *[0-9a-f]*:	ff d0 c3 ff 	bfextu pc,r0,0x1f,0x1f
47.12815 ++ *[0-9a-f]*:	ff df c0 1f 	bfextu pc,pc,0x0,0x1f
47.12816 ++ *[0-9a-f]*:	ff df c3 e0 	bfextu pc,pc,0x1f,0x0
47.12817 ++ *[0-9a-f]*:	ef d8 c1 f0 	bfextu r7,r8,0xf,0x10
47.12818 ++ *[0-9a-f]*:	f1 d7 c2 0f 	bfextu r8,r7,0x10,0xf
47.12819 ++
47.12820 ++[0-9a-f]* <bfins>:
47.12821 ++ *[0-9a-f]*:	ff df d3 ff 	bfins pc,pc,0x1f,0x1f
47.12822 ++ *[0-9a-f]*:	e1 d0 d0 00 	bfins r0,r0,0x0,0x0
47.12823 ++ *[0-9a-f]*:	e1 df d3 ff 	bfins r0,pc,0x1f,0x1f
47.12824 ++ *[0-9a-f]*:	ff d0 d3 ff 	bfins pc,r0,0x1f,0x1f
47.12825 ++ *[0-9a-f]*:	ff df d0 1f 	bfins pc,pc,0x0,0x1f
47.12826 ++ *[0-9a-f]*:	ff df d3 e0 	bfins pc,pc,0x1f,0x0
47.12827 ++ *[0-9a-f]*:	ef d8 d1 f0 	bfins r7,r8,0xf,0x10
47.12828 ++ *[0-9a-f]*:	f1 d7 d2 0f 	bfins r8,r7,0x10,0xf
47.12829 ++
47.12830 ++[0-9a-f]* <rsubc>:
47.12831 ++ *[0-9a-f]*:	fb bf 00 00 	rsubeq pc,0
47.12832 ++ *[0-9a-f]*:	fb bc 0f ff 	rsubal r12,-1
47.12833 ++ *[0-9a-f]*:	fb b5 08 80 	rsubls r5,-128
47.12834 ++ *[0-9a-f]*:	fb b4 07 7f 	rsubpl r4,127
47.12835 ++ *[0-9a-f]*:	fb be 01 01 	rsubne lr,1
47.12836 ++ *[0-9a-f]*:	fb bc 08 76 	rsubls r12,118
47.12837 ++ *[0-9a-f]*:	fb be 0d f4 	rsubvc lr,-12
47.12838 ++ *[0-9a-f]*:	fb b4 06 f3 	rsubmi r4,-13
47.12839 ++
47.12840 ++[0-9a-f]* <addc>:
47.12841 ++ *[0-9a-f]*:	ff df e0 0f 	addeq pc,pc,pc
47.12842 ++ *[0-9a-f]*:	f9 dc ef 0c 	addal r12,r12,r12
47.12843 ++ *[0-9a-f]*:	eb d5 e8 05 	addls r5,r5,r5
47.12844 ++ *[0-9a-f]*:	e9 d4 e7 04 	addpl r4,r4,r4   
47.12845 ++ *[0-9a-f]*:	fd de e1 0e 	addne lr,lr,lr
47.12846 ++ *[0-9a-f]*:	e5 d1 e8 0a 	addls r10,r2,r1
47.12847 ++ *[0-9a-f]*:	f1 db ed 0c 	addvc r12,r8,r11
47.12848 ++ *[0-9a-f]*:	ef d0 e6 0a 	addmi r10,r7,r0
47.12849 ++
47.12850 ++[0-9a-f]* <subc2>:
47.12851 ++ *[0-9a-f]*:	ff df e0 1f 	subeq pc,pc,pc
47.12852 ++ *[0-9a-f]*:	f9 dc ef 1c 	subal r12,r12,r12
47.12853 ++ *[0-9a-f]*:	eb d5 e8 15 	subls r5,r5,r5
47.12854 ++ *[0-9a-f]*:	e9 d4 e7 14 	subpl r4,r4,r4   
47.12855 ++ *[0-9a-f]*:	fd de e1 1e 	subne lr,lr,lr
47.12856 ++ *[0-9a-f]*:	e5 d1 e8 1a 	subls r10,r2,r1
47.12857 ++ *[0-9a-f]*:	f1 db ed 1c 	subvc r12,r8,r11
47.12858 ++ *[0-9a-f]*:	ef d0 e6 1a 	submi r10,r7,r0
47.12859 ++
47.12860 ++[0-9a-f]* <andc>:
47.12861 ++ *[0-9a-f]*:	ff df e0 2f 	andeq pc,pc,pc
47.12862 ++ *[0-9a-f]*:	f9 dc ef 2c 	andal r12,r12,r12
47.12863 ++ *[0-9a-f]*:	eb d5 e8 25 	andls r5,r5,r5
47.12864 ++ *[0-9a-f]*:	e9 d4 e7 24 	andpl r4,r4,r4   
47.12865 ++ *[0-9a-f]*:	fd de e1 2e 	andne lr,lr,lr
47.12866 ++ *[0-9a-f]*:	e5 d1 e8 2a 	andls r10,r2,r1
47.12867 ++ *[0-9a-f]*:	f1 db ed 2c 	andvc r12,r8,r11
47.12868 ++ *[0-9a-f]*:	ef d0 e6 2a 	andmi r10,r7,r0
47.12869 ++
47.12870 ++[0-9a-f]* <orc>:
47.12871 ++ *[0-9a-f]*:	ff df e0 3f 	oreq pc,pc,pc
47.12872 ++ *[0-9a-f]*:	f9 dc ef 3c 	oral r12,r12,r12
47.12873 ++ *[0-9a-f]*:	eb d5 e8 35 	orls r5,r5,r5
47.12874 ++ *[0-9a-f]*:	e9 d4 e7 34 	orpl r4,r4,r4   
47.12875 ++ *[0-9a-f]*:	fd de e1 3e 	orne lr,lr,lr
47.12876 ++ *[0-9a-f]*:	e5 d1 e8 3a 	orls r10,r2,r1
47.12877 ++ *[0-9a-f]*:	f1 db ed 3c 	orvc r12,r8,r11
47.12878 ++ *[0-9a-f]*:	ef d0 e6 3a 	ormi r10,r7,r0
47.12879 ++
47.12880 ++[0-9a-f]* <eorc>:
47.12881 ++ *[0-9a-f]*:	ff df e0 4f 	eoreq pc,pc,pc
47.12882 ++ *[0-9a-f]*:	f9 dc ef 4c 	eoral r12,r12,r12
47.12883 ++ *[0-9a-f]*:	eb d5 e8 45 	eorls r5,r5,r5
47.12884 ++ *[0-9a-f]*:	e9 d4 e7 44 	eorpl r4,r4,r4   
47.12885 ++ *[0-9a-f]*:	fd de e1 4e 	eorne lr,lr,lr
47.12886 ++ *[0-9a-f]*:	e5 d1 e8 4a 	eorls r10,r2,r1
47.12887 ++ *[0-9a-f]*:	f1 db ed 4c 	eorvc r12,r8,r11
47.12888 ++ *[0-9a-f]*:	ef d0 e6 4a 	eormi r10,r7,r0
47.12889 ++
47.12890 ++[0-9a-f]* <ldcond>:
47.12891 ++ *[0-9a-f]*:	ff ff 01 ff     ld.weq  pc,pc[0x7fc]
47.12892 ++ *[0-9a-f]*:	f9 fc f3 ff     ld.shal r12,r12[0x3fe]
47.12893 ++ *[0-9a-f]*:	eb f5 84 00     ld.shls r5,r5[0x0]
47.12894 ++ *[0-9a-f]*:	e9 f4 79 ff     ld.ubpl r4,r4[0x1ff]
47.12895 ++ *[0-9a-f]*:	fd fe 16 00     ld.sbne lr,lr[0x0]
47.12896 ++ *[0-9a-f]*:	e5 fa 80 00     ld.wls  r10,r2[0x0]
47.12897 ++ *[0-9a-f]*:	f1 fc d3 ff     ld.shvc r12,r8[0x3fe]
47.12898 ++ *[0-9a-f]*:	ef fa 68 01     ld.ubmi r10,r7[0x1]
47.12899 ++
47.12900 ++[0-9a-f]* <stcond2>:
47.12901 ++ *[0-9a-f]*:	ff ff 0b ff     st.weq pc[0x7fc],pc
47.12902 ++ *[0-9a-f]*:	f9 fc fd ff     st.hal r12[0x3fe],r12
47.12903 ++ *[0-9a-f]*:	eb f5 8c 00     st.hls r5[0x0],r5
47.12904 ++ *[0-9a-f]*:	e9 f4 7f ff     st.bpl r4[0x1ff],r4
47.12905 ++ *[0-9a-f]*:	fd fe 1e 00     st.bne lr[0x0],lr
47.12906 ++ *[0-9a-f]*:	e5 fa 8a 00     st.wls r2[0x0],r10
47.12907 ++ *[0-9a-f]*:	f1 fc dd ff     st.hvc r8[0x3fe],r12
47.12908 ++ *[0-9a-f]*:	ef fa 6e 01     st.bmi r7[0x1],r10
47.12909 ++
47.12910 ++[0-9a-f]* <movh>:
47.12911 ++ *[0-9a-f]*:	fc 1f ff ff     movh pc,0xffff
47.12912 ++ *[0-9a-f]*:	fc 10 00 00     movh r0,0x0
47.12913 ++ *[0-9a-f]*:	fc 15 00 01     movh r5,0x1
47.12914 ++ *[0-9a-f]*:	fc 1c 7f ff     movh r12,0x7fff
47.12915 ++
47.12916 +--- /dev/null
47.12917 ++++ b/gas/testsuite/gas/avr32/allinsn.exp
47.12918 +@@ -0,0 +1,5 @@
47.12919 ++# AVR32 assembler testsuite. -*- Tcl -*-
47.12920 ++
47.12921 ++if [istarget avr32-*-*] {
47.12922 ++    run_dump_test "allinsn"
47.12923 ++}
47.12924 +--- /dev/null
47.12925 ++++ b/gas/testsuite/gas/avr32/allinsn.s
47.12926 +@@ -0,0 +1,3330 @@
47.12927 ++ .data
47.12928 ++foodata: .word 42
47.12929 ++ .text
47.12930 ++footext:
47.12931 ++	.text
47.12932 ++	.global ld_d5
47.12933 ++ld_d5:
47.12934 ++	ld.d lr,pc[pc<<3]
47.12935 ++	ld.d r0,r0[r0<<0]
47.12936 ++	ld.d r6,r5[r5<<2]
47.12937 ++	ld.d r4,r4[r4<<1]
47.12938 ++	ld.d lr,lr[lr<<1]
47.12939 ++	ld.d r10,r3[sp<<2]
47.12940 ++	ld.d r8,r10[r6<<2]
47.12941 ++	ld.d r2,r7[r9<<0]
47.12942 ++	.text
47.12943 ++	.global ld_w5
47.12944 ++ld_w5:
47.12945 ++	ld.w pc,pc[pc<<0]
47.12946 ++	ld.w r12,r12[r12<<3]
47.12947 ++	ld.w r5,r5[r5<<2]
47.12948 ++	ld.w r4,r4[r4<<1]
47.12949 ++	ld.w lr,lr[lr<<1]
47.12950 ++	ld.w r2,r9[r9<<0]
47.12951 ++	ld.w r11,r2[r6<<0]
47.12952 ++	ld.w r0,r2[sp<<3]
47.12953 ++	.text
47.12954 ++	.global ld_sh5
47.12955 ++ld_sh5:
47.12956 ++	ld.sh pc,pc[pc<<0]
47.12957 ++	ld.sh r12,r12[r12<<3]
47.12958 ++	ld.sh r5,r5[r5<<2]
47.12959 ++	ld.sh r4,r4[r4<<1]
47.12960 ++	ld.sh lr,lr[lr<<1]
47.12961 ++	ld.sh r11,r0[pc<<2]
47.12962 ++	ld.sh r10,sp[r6<<2]
47.12963 ++	ld.sh r12,r2[r2<<0]
47.12964 ++	.text
47.12965 ++	.global ld_uh5
47.12966 ++ld_uh5:
47.12967 ++	ld.uh pc,pc[pc<<0]
47.12968 ++	ld.uh r12,r12[r12<<3]
47.12969 ++	ld.uh r5,r5[r5<<2]
47.12970 ++	ld.uh r4,r4[r4<<1]
47.12971 ++	ld.uh lr,lr[lr<<1]
47.12972 ++	ld.uh r8,pc[lr<<3]
47.12973 ++	ld.uh r6,r1[pc<<1]
47.12974 ++	ld.uh r6,lr[sp<<1]
47.12975 ++	.text
47.12976 ++	.global ld_sb2
47.12977 ++ld_sb2:
47.12978 ++	ld.sb pc,pc[pc<<0]
47.12979 ++	ld.sb r12,r12[r12<<3]
47.12980 ++	ld.sb r5,r5[r5<<2]
47.12981 ++	ld.sb r4,r4[r4<<1]
47.12982 ++	ld.sb lr,lr[lr<<1]
47.12983 ++	ld.sb r9,r1[pc<<3]
47.12984 ++	ld.sb r0,r3[r11<<1]
47.12985 ++	ld.sb r10,r5[r5<<1]
47.12986 ++	.text
47.12987 ++	.global ld_ub5
47.12988 ++ld_ub5:
47.12989 ++	ld.ub pc,pc[pc<<0]
47.12990 ++	ld.ub r12,r12[r12<<3]
47.12991 ++	ld.ub r5,r5[r5<<2]
47.12992 ++	ld.ub r4,r4[r4<<1]
47.12993 ++	ld.ub lr,lr[lr<<1]
47.12994 ++	ld.ub r6,r12[r7<<3]
47.12995 ++	ld.ub r2,r6[r12<<0]
47.12996 ++	ld.ub r0,r7[r11<<1]
47.12997 ++	.text
47.12998 ++	.global st_d5
47.12999 ++st_d5:
47.13000 ++	st.d pc[pc<<0],r14
47.13001 ++	st.d r12[r12<<3],r12
47.13002 ++	st.d r5[r5<<2],r6
47.13003 ++	st.d r4[r4<<1],r4
47.13004 ++	st.d lr[lr<<1],lr
47.13005 ++	st.d r1[r9<<1],r4
47.13006 ++	st.d r10[r2<<1],r4
47.13007 ++	st.d r12[r6<<0],lr
47.13008 ++	.text
47.13009 ++	.global st_w5
47.13010 ++st_w5:
47.13011 ++	st.w pc[pc<<0],pc
47.13012 ++	st.w r12[r12<<3],r12
47.13013 ++	st.w r5[r5<<2],r5
47.13014 ++	st.w r4[r4<<1],r4
47.13015 ++	st.w lr[lr<<1],lr
47.13016 ++	st.w r1[r10<<0],r3
47.13017 ++	st.w r0[r10<<1],r9
47.13018 ++	st.w r4[r5<<3],pc
47.13019 ++	.text
47.13020 ++	.global st_h5
47.13021 ++st_h5:
47.13022 ++	st.h pc[pc<<0],pc
47.13023 ++	st.h r12[r12<<3],r12
47.13024 ++	st.h r5[r5<<2],r5
47.13025 ++	st.h r4[r4<<1],r4
47.13026 ++	st.h lr[lr<<1],lr
47.13027 ++	st.h r2[r9<<0],r11
47.13028 ++	st.h r5[r1<<2],r12
47.13029 ++	st.h pc[r8<<2],r3
47.13030 ++	.text
47.13031 ++	.global st_b5
47.13032 ++st_b5:
47.13033 ++	st.b pc[pc<<0],pc
47.13034 ++	st.b r12[r12<<3],r12
47.13035 ++	st.b r5[r5<<2],r5
47.13036 ++	st.b r4[r4<<1],r4
47.13037 ++	st.b lr[lr<<1],lr
47.13038 ++	st.b r1[r8<<1],r6
47.13039 ++	st.b lr[lr<<3],r1
47.13040 ++	st.b r5[r0<<2],pc
47.13041 ++	.text
47.13042 ++	.global divs
47.13043 ++divs:
47.13044 ++	divs pc,pc,pc
47.13045 ++	divs r12,r12,r12
47.13046 ++	divs r5,r5,r5
47.13047 ++	divs r4,r4,r4
47.13048 ++	divs lr,lr,lr
47.13049 ++	divs r3,pc,pc
47.13050 ++	divs r9,r12,r2
47.13051 ++	divs r7,r4,r1
47.13052 ++	.text
47.13053 ++	.global add1
47.13054 ++add1:
47.13055 ++	add pc,pc
47.13056 ++	add r12,r12
47.13057 ++	add r5,r5
47.13058 ++	add r4,r4
47.13059 ++	add lr,lr
47.13060 ++	add r12,r9
47.13061 ++	add r6,r3
47.13062 ++	add r10,r12
47.13063 ++	.text
47.13064 ++	.global sub1
47.13065 ++sub1:
47.13066 ++	sub pc,pc
47.13067 ++	sub r12,r12
47.13068 ++	sub r5,r5
47.13069 ++	sub r4,r4
47.13070 ++	sub lr,lr
47.13071 ++	sub lr,r6
47.13072 ++	sub r0,sp
47.13073 ++	sub r6,r12
47.13074 ++	.text
47.13075 ++	.global rsub1
47.13076 ++rsub1:
47.13077 ++	rsub pc,pc
47.13078 ++	rsub r12,r12
47.13079 ++	rsub r5,r5
47.13080 ++	rsub r4,r4
47.13081 ++	rsub lr,lr
47.13082 ++	rsub r11,sp
47.13083 ++	rsub r7,r4
47.13084 ++	rsub r9,r1
47.13085 ++	.text
47.13086 ++	.global cp1
47.13087 ++cp1:
47.13088 ++	cp pc,pc
47.13089 ++	cp r12,r12
47.13090 ++	cp r5,r5
47.13091 ++	cp r4,r4
47.13092 ++	cp lr,lr
47.13093 ++	cp r6,r2
47.13094 ++	cp r0,r9
47.13095 ++	cp r3,sp
47.13096 ++	.text
47.13097 ++	.global or1
47.13098 ++or1:
47.13099 ++	or pc,pc
47.13100 ++	or r12,r12
47.13101 ++	or r5,r5
47.13102 ++	or r4,r4
47.13103 ++	or lr,lr
47.13104 ++	or r4,r9
47.13105 ++	or r11,r4
47.13106 ++	or r4,r0
47.13107 ++	.text
47.13108 ++	.global eor1
47.13109 ++eor1:
47.13110 ++	eor pc,pc
47.13111 ++	eor r12,r12
47.13112 ++	eor r5,r5
47.13113 ++	eor r4,r4
47.13114 ++	eor lr,lr
47.13115 ++	eor r12,r11
47.13116 ++	eor r0,r1
47.13117 ++	eor r5,pc
47.13118 ++	.text
47.13119 ++	.global and1
47.13120 ++and1:
47.13121 ++	and pc,pc
47.13122 ++	and r12,r12
47.13123 ++	and r5,r5
47.13124 ++	and r4,r4
47.13125 ++	and lr,lr
47.13126 ++	and r8,r1
47.13127 ++	and r0,sp
47.13128 ++	and r10,r5
47.13129 ++	.text
47.13130 ++	.global tst
47.13131 ++tst:
47.13132 ++	tst pc,pc
47.13133 ++	tst r12,r12
47.13134 ++	tst r5,r5
47.13135 ++	tst r4,r4
47.13136 ++	tst lr,lr
47.13137 ++	tst r0,r12
47.13138 ++	tst r10,r6
47.13139 ++	tst sp,r4
47.13140 ++	.text
47.13141 ++	.global andn
47.13142 ++andn:
47.13143 ++	andn pc,pc
47.13144 ++	andn r12,r12
47.13145 ++	andn r5,r5
47.13146 ++	andn r4,r4
47.13147 ++	andn lr,lr
47.13148 ++	andn r9,r12
47.13149 ++	andn r11,sp
47.13150 ++	andn r12,r5
47.13151 ++	.text
47.13152 ++	.global mov3
47.13153 ++mov3:
47.13154 ++	mov pc,pc
47.13155 ++	mov r12,r12
47.13156 ++	mov r5,r5
47.13157 ++	mov r4,r4
47.13158 ++	mov lr,lr
47.13159 ++	mov r5,r9
47.13160 ++	mov r11,r11
47.13161 ++	mov r2,lr
47.13162 ++	.text
47.13163 ++	.global st_w1
47.13164 ++st_w1:
47.13165 ++	st.w pc++,pc
47.13166 ++	st.w r12++,r12
47.13167 ++	st.w r5++,r5
47.13168 ++	st.w r4++,r4
47.13169 ++	st.w lr++,lr
47.13170 ++	st.w r1++,r11
47.13171 ++	st.w sp++,r0
47.13172 ++	st.w sp++,r1
47.13173 ++	.text
47.13174 ++	.global st_h1
47.13175 ++st_h1:
47.13176 ++	st.h pc++,pc
47.13177 ++	st.h r12++,r12
47.13178 ++	st.h r5++,r5
47.13179 ++	st.h r4++,r4
47.13180 ++	st.h lr++,lr
47.13181 ++	st.h r12++,sp
47.13182 ++	st.h r7++,lr
47.13183 ++	st.h r7++,r4
47.13184 ++	.text
47.13185 ++	.global st_b1
47.13186 ++st_b1:
47.13187 ++	st.b pc++,pc
47.13188 ++	st.b r12++,r12
47.13189 ++	st.b r5++,r5
47.13190 ++	st.b r4++,r4
47.13191 ++	st.b lr++,lr
47.13192 ++	st.b r9++,sp
47.13193 ++	st.b r1++,sp
47.13194 ++	st.b r0++,r4
47.13195 ++	.text
47.13196 ++	.global st_w2
47.13197 ++st_w2:
47.13198 ++	st.w --pc,pc
47.13199 ++	st.w --r12,r12
47.13200 ++	st.w --r5,r5
47.13201 ++	st.w --r4,r4
47.13202 ++	st.w --lr,lr
47.13203 ++	st.w --r1,r7
47.13204 ++	st.w --r3,r9
47.13205 ++	st.w --r5,r5
47.13206 ++	.text
47.13207 ++	.global st_h2
47.13208 ++st_h2:
47.13209 ++	st.h --pc,pc
47.13210 ++	st.h --r12,r12
47.13211 ++	st.h --r5,r5
47.13212 ++	st.h --r4,r4
47.13213 ++	st.h --lr,lr
47.13214 ++	st.h --r5,r7
47.13215 ++	st.h --r8,r8
47.13216 ++	st.h --r7,r2
47.13217 ++	.text
47.13218 ++	.global st_b2
47.13219 ++st_b2:
47.13220 ++	st.b --pc,pc
47.13221 ++	st.b --r12,r12
47.13222 ++	st.b --r5,r5
47.13223 ++	st.b --r4,r4
47.13224 ++	st.b --lr,lr
47.13225 ++	st.b --sp,sp
47.13226 ++	st.b --sp,r11
47.13227 ++	st.b --r4,r5
47.13228 ++	.text
47.13229 ++	.global ld_w1
47.13230 ++ld_w1:
47.13231 ++	ld.w pc,pc++
47.13232 ++	ld.w r12,r12++
47.13233 ++	ld.w r5,r5++
47.13234 ++	ld.w r4,r4++
47.13235 ++	ld.w lr,lr++
47.13236 ++	ld.w r3,r7++
47.13237 ++	ld.w r3,lr++
47.13238 ++	ld.w r12,r5++
47.13239 ++	.text
47.13240 ++	.global ld_sh1
47.13241 ++ld_sh1:
47.13242 ++	ld.sh pc,pc++
47.13243 ++	ld.sh r12,r12++
47.13244 ++	ld.sh r5,r5++
47.13245 ++	ld.sh r4,r4++
47.13246 ++	ld.sh lr,lr++
47.13247 ++	ld.sh r11,r2++
47.13248 ++	ld.sh r2,r8++
47.13249 ++	ld.sh r7,r6++
47.13250 ++	.text
47.13251 ++	.global ld_uh1
47.13252 ++ld_uh1:
47.13253 ++	ld.uh pc,pc++
47.13254 ++	ld.uh r12,r12++
47.13255 ++	ld.uh r5,r5++
47.13256 ++	ld.uh r4,r4++
47.13257 ++	ld.uh lr,lr++
47.13258 ++	ld.uh r6,r7++
47.13259 ++	ld.uh r10,r11++
47.13260 ++	ld.uh lr,r4++
47.13261 ++	.text
47.13262 ++	.global ld_ub1
47.13263 ++ld_ub1:
47.13264 ++	ld.ub pc,pc++
47.13265 ++	ld.ub r12,r12++
47.13266 ++	ld.ub r5,r5++
47.13267 ++	ld.ub r4,r4++
47.13268 ++	ld.ub lr,lr++
47.13269 ++	ld.ub r8,lr++
47.13270 ++	ld.ub r12,r12++
47.13271 ++	ld.ub r11,r10++
47.13272 ++	.text
47.13273 ++	.global ld_w2
47.13274 ++ld_w2:
47.13275 ++	ld.w pc,--pc
47.13276 ++	ld.w r12,--r12
47.13277 ++	ld.w r5,--r5
47.13278 ++	ld.w r4,--r4
47.13279 ++	ld.w lr,--lr
47.13280 ++	ld.w r10,--lr
47.13281 ++	ld.w r12,--r9
47.13282 ++	ld.w r6,--r5
47.13283 ++	.text
47.13284 ++	.global ld_sh2
47.13285 ++ld_sh2:
47.13286 ++	ld.sh pc,--pc
47.13287 ++	ld.sh r12,--r12
47.13288 ++	ld.sh r5,--r5
47.13289 ++	ld.sh r4,--r4
47.13290 ++	ld.sh lr,--lr
47.13291 ++	ld.sh pc,--r10
47.13292 ++	ld.sh r6,--r3
47.13293 ++	ld.sh r4,--r6
47.13294 ++	.text
47.13295 ++	.global ld_uh2
47.13296 ++ld_uh2:
47.13297 ++	ld.uh pc,--pc
47.13298 ++	ld.uh r12,--r12
47.13299 ++	ld.uh r5,--r5
47.13300 ++	ld.uh r4,--r4
47.13301 ++	ld.uh lr,--lr
47.13302 ++	ld.uh r3,--r2
47.13303 ++	ld.uh r1,--r0
47.13304 ++	ld.uh r2,--r9
47.13305 ++	.text
47.13306 ++	.global ld_ub2
47.13307 ++ld_ub2:
47.13308 ++	ld.ub pc,--pc
47.13309 ++	ld.ub r12,--r12
47.13310 ++	ld.ub r5,--r5
47.13311 ++	ld.ub r4,--r4
47.13312 ++	ld.ub lr,--lr
47.13313 ++	ld.ub r1,--r1
47.13314 ++	ld.ub r0,--r6
47.13315 ++	ld.ub r2,--r7
47.13316 ++	.text
47.13317 ++	.global ld_ub3
47.13318 ++ld_ub3:
47.13319 ++	ld.ub pc,pc[0]
47.13320 ++	ld.ub r12,r12[7]
47.13321 ++	ld.ub r5,r5[4]
47.13322 ++	ld.ub r4,r4[3]
47.13323 ++	ld.ub lr,lr[1]
47.13324 ++	ld.ub r6,r9[6]
47.13325 ++	ld.ub r2,lr[4]
47.13326 ++	ld.ub r1,r8[0]
47.13327 ++	.text
47.13328 ++	.global sub3_sp
47.13329 ++sub3_sp:
47.13330 ++	sub sp,0
47.13331 ++	sub sp,-4
47.13332 ++	sub sp,-512
47.13333 ++	sub sp,508
47.13334 ++	sub sp,4
47.13335 ++	sub sp,44
47.13336 ++	sub sp,8
47.13337 ++	sub sp,348
47.13338 ++	.text
47.13339 ++	.global sub3
47.13340 ++sub3:
47.13341 ++	sub pc,0
47.13342 ++	sub r12,-1
47.13343 ++	sub r5,-128
47.13344 ++	sub r4,127
47.13345 ++	sub lr,1
47.13346 ++	sub r6,-41
47.13347 ++	sub r4,37
47.13348 ++	sub r12,56
47.13349 ++	.text
47.13350 ++	.global mov1
47.13351 ++mov1:
47.13352 ++	mov pc,0
47.13353 ++	mov r12,-1
47.13354 ++	mov r5,-128
47.13355 ++	mov r4,127
47.13356 ++	mov lr,1
47.13357 ++	mov pc,14
47.13358 ++	mov r6,-100
47.13359 ++	mov lr,-122
47.13360 ++	.text
47.13361 ++	.global lddsp
47.13362 ++lddsp:
47.13363 ++	lddsp pc,sp[0]
47.13364 ++	lddsp r12,sp[508]
47.13365 ++	lddsp r5,sp[256]
47.13366 ++	lddsp r4,sp[252]
47.13367 ++	lddsp lr,sp[4]
47.13368 ++	lddsp lr,sp[256]
47.13369 ++	lddsp r12,sp[20]
47.13370 ++	lddsp r9,sp[472]
47.13371 ++	.text
47.13372 ++	.global lddpc
47.13373 ++lddpc:
47.13374 ++	lddpc pc,pc[0]
47.13375 ++	lddpc r0,pc[508]
47.13376 ++	lddpc r8,pc[256]
47.13377 ++	lddpc r7,pc[252]
47.13378 ++	lddpc lr,pc[4]
47.13379 ++	lddpc sp,pc[472]
47.13380 ++	lddpc r6,pc[120]
47.13381 ++	lddpc r11,pc[28]
47.13382 ++	.text
47.13383 ++	.global stdsp
47.13384 ++stdsp:
47.13385 ++	stdsp sp[0],pc
47.13386 ++	stdsp sp[508],r12
47.13387 ++	stdsp sp[256],r5
47.13388 ++	stdsp sp[252],r4
47.13389 ++	stdsp sp[4],lr
47.13390 ++	stdsp sp[304],pc
47.13391 ++	stdsp sp[256],r0
47.13392 ++	stdsp sp[336],r5
47.13393 ++	.text
47.13394 ++	.global cp2
47.13395 ++cp2:
47.13396 ++	cp pc,0
47.13397 ++	cp r12,-1
47.13398 ++	cp r5,-32
47.13399 ++	cp r4,31
47.13400 ++	cp lr,1
47.13401 ++	cp r8,3
47.13402 ++	cp lr,16
47.13403 ++	cp r7,-26
47.13404 ++	.text
47.13405 ++	.global acr
47.13406 ++acr:
47.13407 ++	acr pc
47.13408 ++	acr r12
47.13409 ++	acr r5
47.13410 ++	acr r4
47.13411 ++	acr lr
47.13412 ++	acr r2
47.13413 ++	acr r12
47.13414 ++	acr pc
47.13415 ++	.text
47.13416 ++	.global scr
47.13417 ++scr:
47.13418 ++	scr pc
47.13419 ++	scr r12
47.13420 ++	scr r5
47.13421 ++	scr r4
47.13422 ++	scr lr
47.13423 ++	scr pc
47.13424 ++	scr r6
47.13425 ++	scr r1
47.13426 ++	.text
47.13427 ++	.global cpc0
47.13428 ++cpc0:
47.13429 ++	cpc pc
47.13430 ++	cpc r12
47.13431 ++	cpc r5
47.13432 ++	cpc r4
47.13433 ++	cpc lr
47.13434 ++	cpc pc
47.13435 ++	cpc r4
47.13436 ++	cpc r9
47.13437 ++	.text
47.13438 ++	.global neg
47.13439 ++neg:
47.13440 ++	neg pc
47.13441 ++	neg r12
47.13442 ++	neg r5
47.13443 ++	neg r4
47.13444 ++	neg lr
47.13445 ++	neg r7
47.13446 ++	neg r1
47.13447 ++	neg r9
47.13448 ++	.text
47.13449 ++	.global abs
47.13450 ++abs:
47.13451 ++	abs pc
47.13452 ++	abs r12
47.13453 ++	abs r5
47.13454 ++	abs r4
47.13455 ++	abs lr
47.13456 ++	abs r6
47.13457 ++	abs r6
47.13458 ++	abs r4
47.13459 ++	.text
47.13460 ++	.global castu_b
47.13461 ++castu_b:
47.13462 ++	castu.b pc
47.13463 ++	castu.b r12
47.13464 ++	castu.b r5
47.13465 ++	castu.b r4
47.13466 ++	castu.b lr
47.13467 ++	castu.b r7
47.13468 ++	castu.b sp
47.13469 ++	castu.b r9
47.13470 ++	.text
47.13471 ++	.global casts_b
47.13472 ++casts_b:
47.13473 ++	casts.b pc
47.13474 ++	casts.b r12
47.13475 ++	casts.b r5
47.13476 ++	casts.b r4
47.13477 ++	casts.b lr
47.13478 ++	casts.b r11
47.13479 ++	casts.b r1
47.13480 ++	casts.b r10
47.13481 ++	.text
47.13482 ++	.global castu_h
47.13483 ++castu_h:
47.13484 ++	castu.h pc
47.13485 ++	castu.h r12
47.13486 ++	castu.h r5
47.13487 ++	castu.h r4
47.13488 ++	castu.h lr
47.13489 ++	castu.h r10
47.13490 ++	castu.h r11
47.13491 ++	castu.h r1
47.13492 ++	.text
47.13493 ++	.global casts_h
47.13494 ++casts_h:
47.13495 ++	casts.h pc
47.13496 ++	casts.h r12
47.13497 ++	casts.h r5
47.13498 ++	casts.h r4
47.13499 ++	casts.h lr
47.13500 ++	casts.h r0
47.13501 ++	casts.h r5
47.13502 ++	casts.h r9
47.13503 ++	.text
47.13504 ++	.global brev
47.13505 ++brev:
47.13506 ++	brev pc
47.13507 ++	brev r12
47.13508 ++	brev r5
47.13509 ++	brev r4
47.13510 ++	brev lr
47.13511 ++	brev r5
47.13512 ++	brev r10
47.13513 ++	brev r8
47.13514 ++	.text
47.13515 ++	.global swap_h
47.13516 ++swap_h:
47.13517 ++	swap.h pc
47.13518 ++	swap.h r12
47.13519 ++	swap.h r5
47.13520 ++	swap.h r4
47.13521 ++	swap.h lr
47.13522 ++	swap.h r7
47.13523 ++	swap.h r0
47.13524 ++	swap.h r8
47.13525 ++	.text
47.13526 ++	.global swap_b
47.13527 ++swap_b:
47.13528 ++	swap.b pc
47.13529 ++	swap.b r12
47.13530 ++	swap.b r5
47.13531 ++	swap.b r4
47.13532 ++	swap.b lr
47.13533 ++	swap.b r10
47.13534 ++	swap.b r12
47.13535 ++	swap.b r1
47.13536 ++	.text
47.13537 ++	.global swap_bh
47.13538 ++swap_bh:
47.13539 ++	swap.bh pc
47.13540 ++	swap.bh r12
47.13541 ++	swap.bh r5
47.13542 ++	swap.bh r4
47.13543 ++	swap.bh lr
47.13544 ++	swap.bh r9
47.13545 ++	swap.bh r4
47.13546 ++	swap.bh r1
47.13547 ++	.text
47.13548 ++	.global One_s_compliment
47.13549 ++One_s_compliment:
47.13550 ++	com pc
47.13551 ++	com r12
47.13552 ++	com r5
47.13553 ++	com r4
47.13554 ++	com lr
47.13555 ++	com r2
47.13556 ++	com r2
47.13557 ++	com r7
47.13558 ++	.text
47.13559 ++	.global tnbz
47.13560 ++tnbz:
47.13561 ++	tnbz pc
47.13562 ++	tnbz r12
47.13563 ++	tnbz r5
47.13564 ++	tnbz r4
47.13565 ++	tnbz lr
47.13566 ++	tnbz r8
47.13567 ++	tnbz r12
47.13568 ++	tnbz pc
47.13569 ++	.text
47.13570 ++	.global rol
47.13571 ++rol:
47.13572 ++	rol pc
47.13573 ++	rol r12
47.13574 ++	rol r5
47.13575 ++	rol r4
47.13576 ++	rol lr
47.13577 ++	rol r10
47.13578 ++	rol r9
47.13579 ++	rol r5
47.13580 ++	.text
47.13581 ++	.global ror
47.13582 ++ror:
47.13583 ++	ror pc
47.13584 ++	ror r12
47.13585 ++	ror r5
47.13586 ++	ror r4
47.13587 ++	ror lr
47.13588 ++	ror r8
47.13589 ++	ror r4
47.13590 ++	ror r7
47.13591 ++	.text
47.13592 ++	.global icall
47.13593 ++icall:
47.13594 ++	icall pc
47.13595 ++	icall r12
47.13596 ++	icall r5
47.13597 ++	icall r4
47.13598 ++	icall lr
47.13599 ++	icall r3
47.13600 ++	icall r1
47.13601 ++	icall r3
47.13602 ++	.text
47.13603 ++	.global mustr
47.13604 ++mustr:
47.13605 ++	mustr pc
47.13606 ++	mustr r12
47.13607 ++	mustr r5
47.13608 ++	mustr r4
47.13609 ++	mustr lr
47.13610 ++	mustr r1
47.13611 ++	mustr r4
47.13612 ++	mustr r12
47.13613 ++	.text
47.13614 ++	.global musfr
47.13615 ++musfr:
47.13616 ++	musfr pc
47.13617 ++	musfr r12
47.13618 ++	musfr r5
47.13619 ++	musfr r4
47.13620 ++	musfr lr
47.13621 ++	musfr r11
47.13622 ++	musfr r12
47.13623 ++	musfr r2
47.13624 ++	.text
47.13625 ++	.global ret_cond
47.13626 ++ret_cond:
47.13627 ++	reteq pc
47.13628 ++	retal r12
47.13629 ++	retls r5
47.13630 ++	retpl r4
47.13631 ++	retne lr
47.13632 ++	retgt r0
47.13633 ++	retgt r12
47.13634 ++	retge r10
47.13635 ++	.text
47.13636 ++	.global sr_cond
47.13637 ++sr_cond:
47.13638 ++	sreq pc
47.13639 ++	sral r12
47.13640 ++	srls r5
47.13641 ++	srpl r4
47.13642 ++	srne lr
47.13643 ++	srlt r0
47.13644 ++	sral sp
47.13645 ++	srge r9
47.13646 ++	.text
47.13647 ++	.global ld_w3
47.13648 ++ld_w3:
47.13649 ++	ld.w pc,pc[0]
47.13650 ++	ld.w r12,r12[124]
47.13651 ++	ld.w r5,r5[64]
47.13652 ++	ld.w r4,r4[60]
47.13653 ++	ld.w lr,lr[4]
47.13654 ++	ld.w sp,r2[52]
47.13655 ++	ld.w r9,r1[8]
47.13656 ++	ld.w r5,sp[60]
47.13657 ++	.text
47.13658 ++	.global ld_sh3
47.13659 ++ld_sh3:
47.13660 ++	ld.sh pc,pc[0]
47.13661 ++	ld.sh r12,r12[14]
47.13662 ++	ld.sh r5,r5[8]
47.13663 ++	ld.sh r4,r4[6]
47.13664 ++	ld.sh lr,lr[2]
47.13665 ++	ld.sh r4,r2[8]
47.13666 ++	ld.sh sp,lr[10]
47.13667 ++	ld.sh r2,r11[2]
47.13668 ++	.text
47.13669 ++	.global ld_uh3
47.13670 ++ld_uh3:
47.13671 ++	ld.uh pc,pc[0]
47.13672 ++	ld.uh r12,r12[14]
47.13673 ++	ld.uh r5,r5[8]
47.13674 ++	ld.uh r4,r4[6]
47.13675 ++	ld.uh lr,lr[2]
47.13676 ++	ld.uh r10,r0[10]
47.13677 ++	ld.uh r8,r11[8]
47.13678 ++	ld.uh r10,r2[12]
47.13679 ++	.text
47.13680 ++	.global st_w3
47.13681 ++st_w3:
47.13682 ++	st.w pc[0],pc
47.13683 ++	st.w r12[60],r12
47.13684 ++	st.w r5[32],r5
47.13685 ++	st.w r4[28],r4
47.13686 ++	st.w lr[4],lr
47.13687 ++	st.w r7[44],r11
47.13688 ++	st.w r2[24],r6
47.13689 ++	st.w r4[12],r9
47.13690 ++	.text
47.13691 ++	.global st_h3
47.13692 ++st_h3:
47.13693 ++	st.h pc[0],pc
47.13694 ++	st.h r12[14],r12
47.13695 ++	st.h r5[8],r5
47.13696 ++	st.h r4[6],r4
47.13697 ++	st.h lr[2],lr
47.13698 ++	st.h lr[10],r12
47.13699 ++	st.h r6[4],r0
47.13700 ++	st.h r5[12],sp
47.13701 ++	.text
47.13702 ++	.global st_b3
47.13703 ++st_b3:
47.13704 ++	st.b pc[0],pc
47.13705 ++	st.b r12[7],r12
47.13706 ++	st.b r5[4],r5
47.13707 ++	st.b r4[3],r4
47.13708 ++	st.b lr[1],lr
47.13709 ++	st.b r12[6],r9
47.13710 ++	st.b r2[3],lr
47.13711 ++	st.b r1[3],r11
47.13712 ++	.text
47.13713 ++	.global ldd
47.13714 ++ldd:
47.13715 ++	ld.d r0,pc
47.13716 ++	ld.d r14,r12
47.13717 ++	ld.d r8,r5
47.13718 ++	ld.d r6,r4
47.13719 ++	ld.d r2,lr
47.13720 ++	ld.d r14,r7
47.13721 ++	ld.d r4,r4
47.13722 ++	ld.d r14,pc
47.13723 ++	.text
47.13724 ++	.global ldd_postinc
47.13725 ++ldd_postinc:
47.13726 ++	ld.d r0,pc++
47.13727 ++	ld.d r14,r12++
47.13728 ++	ld.d r8,r5++
47.13729 ++	ld.d r6,r4++
47.13730 ++	ld.d r2,lr++
47.13731 ++	ld.d r14,r5++
47.13732 ++	ld.d r12,r11++
47.13733 ++	ld.d r2,r12++
47.13734 ++	.text
47.13735 ++	.global ldd_predec
47.13736 ++ldd_predec:
47.13737 ++	ld.d r0,--pc
47.13738 ++	ld.d r14,--r12
47.13739 ++	ld.d r8,--r5
47.13740 ++	ld.d r6,--r4
47.13741 ++	ld.d r2,--lr
47.13742 ++	ld.d r8,--r0
47.13743 ++	ld.d r10,--pc
47.13744 ++	ld.d r2,--r4
47.13745 ++	.text
47.13746 ++	.global std
47.13747 ++std:
47.13748 ++	st.d pc,r0
47.13749 ++	st.d r12,r14
47.13750 ++	st.d r5,r8
47.13751 ++	st.d r4,r6
47.13752 ++	st.d lr,r2
47.13753 ++	st.d r0,r12
47.13754 ++	st.d sp,r4
47.13755 ++	st.d r12,r12
47.13756 ++	.text
47.13757 ++	.global std_postinc
47.13758 ++std_postinc:
47.13759 ++	st.d pc++,r0
47.13760 ++	st.d r12++,r14
47.13761 ++	st.d r5++,r8
47.13762 ++	st.d r4++,r6
47.13763 ++	st.d lr++,r2
47.13764 ++	st.d sp++,r6
47.13765 ++	st.d r10++,r6
47.13766 ++	st.d r7++,r2
47.13767 ++	.text
47.13768 ++	.global std_predec
47.13769 ++std_predec:
47.13770 ++	st.d --pc,r0
47.13771 ++	st.d --r12,r14
47.13772 ++	st.d --r5,r8
47.13773 ++	st.d --r4,r6
47.13774 ++	st.d --lr,r2
47.13775 ++	st.d --r3,r6
47.13776 ++	st.d --lr,r2
47.13777 ++	st.d --r0,r4
47.13778 ++	.text
47.13779 ++	.global mul
47.13780 ++mul:
47.13781 ++	mul pc,pc
47.13782 ++	mul r12,r12
47.13783 ++	mul r5,r5
47.13784 ++	mul r4,r4
47.13785 ++	mul lr,lr
47.13786 ++	mul r10,lr
47.13787 ++	mul r0,r8
47.13788 ++	mul r8,r5
47.13789 ++	.text
47.13790 ++	.global asr_imm5
47.13791 ++asr_imm5:
47.13792 ++	asr pc,0
47.13793 ++	asr r12,31
47.13794 ++	asr r5,16
47.13795 ++	asr r4,15
47.13796 ++	asr lr,1
47.13797 ++	asr r6,23
47.13798 ++	asr r6,18
47.13799 ++	asr r5,8
47.13800 ++	.text
47.13801 ++	.global lsl_imm5
47.13802 ++lsl_imm5:
47.13803 ++	lsl pc,0
47.13804 ++	lsl r12,31
47.13805 ++	lsl r5,16
47.13806 ++	lsl r4,15
47.13807 ++	lsl lr,1
47.13808 ++	lsl r12,13
47.13809 ++	lsl r6,16
47.13810 ++	lsl r1,25
47.13811 ++	.text
47.13812 ++	.global lsr_imm5
47.13813 ++lsr_imm5:
47.13814 ++	lsr pc,0
47.13815 ++	lsr r12,31
47.13816 ++	lsr r5,16
47.13817 ++	lsr r4,15
47.13818 ++	lsr lr,1
47.13819 ++	lsr r0,1
47.13820 ++	lsr r8,10
47.13821 ++	lsr r7,26
47.13822 ++	.text
47.13823 ++	.global sbr
47.13824 ++sbr:
47.13825 ++	sbr pc,0
47.13826 ++	sbr r12,31
47.13827 ++	sbr r5,16
47.13828 ++	sbr r4,15
47.13829 ++	sbr lr,1
47.13830 ++	sbr r8,31
47.13831 ++	sbr r6,22
47.13832 ++	sbr r1,23
47.13833 ++	.text
47.13834 ++	.global cbr
47.13835 ++cbr:
47.13836 ++	cbr pc,0
47.13837 ++	cbr r12,31
47.13838 ++	cbr r5,16
47.13839 ++	cbr r4,15
47.13840 ++	cbr lr,1
47.13841 ++	cbr r12,10
47.13842 ++	cbr r7,22
47.13843 ++	cbr r8,9
47.13844 ++	.text
47.13845 ++	.global brc1
47.13846 ++brc1:
47.13847 ++	breq 0
47.13848 ++	brpl -2
47.13849 ++	brge -256
47.13850 ++	brcs 254
47.13851 ++	brne 2
47.13852 ++	brcs 230
47.13853 ++	breq -18
47.13854 ++	breq 12
47.13855 ++	.text
47.13856 ++	.global rjmp
47.13857 ++rjmp:
47.13858 ++	rjmp 0
47.13859 ++	rjmp -2
47.13860 ++	rjmp -1024
47.13861 ++	rjmp 1022
47.13862 ++	rjmp 2
47.13863 ++	rjmp -962
47.13864 ++	rjmp 14
47.13865 ++	rjmp -516
47.13866 ++	.text
47.13867 ++	.global rcall1
47.13868 ++rcall1:
47.13869 ++	rcall 0
47.13870 ++	rcall -2
47.13871 ++	rcall -1024
47.13872 ++	rcall 1022
47.13873 ++	rcall 2
47.13874 ++	rcall 216
47.13875 ++	rcall -530
47.13876 ++	rcall -972
47.13877 ++	.text
47.13878 ++	.global acall
47.13879 ++acall:
47.13880 ++	acall 0
47.13881 ++	acall 1020
47.13882 ++	acall 512
47.13883 ++	acall 508
47.13884 ++	acall 4
47.13885 ++	acall 356
47.13886 ++	acall 304
47.13887 ++	acall 172
47.13888 ++	.text
47.13889 ++	.global scall
47.13890 ++scall:
47.13891 ++	scall
47.13892 ++	scall
47.13893 ++	scall
47.13894 ++	scall
47.13895 ++	scall
47.13896 ++	scall
47.13897 ++	scall
47.13898 ++	scall
47.13899 ++	.text
47.13900 ++	.global popm
47.13901 ++popm:
47.13902 ++	/* popm with no argument fails currently */
47.13903 ++	popm pc
47.13904 ++	popm r0-r11,pc,r12=-1
47.13905 ++	popm lr
47.13906 ++	popm r0-r11,pc,r12=1
47.13907 ++	popm r0-r3
47.13908 ++	popm r4-r10,pc
47.13909 ++	popm r0-r3,r11,pc,r12=0
47.13910 ++	popm r0-r7,r10-r12,lr
47.13911 ++	.text
47.13912 ++	.global pushm
47.13913 ++pushm:
47.13914 ++	pushm pc
47.13915 ++	pushm r0-r12,lr,pc
47.13916 ++	pushm pc
47.13917 ++	pushm r0-r12,lr
47.13918 ++	pushm r0-r3
47.13919 ++	pushm r8-r10,lr,pc
47.13920 ++	pushm r0-r3,r10
47.13921 ++	pushm r8-r9,r12
47.13922 ++	.text
47.13923 ++	.global popm_n
47.13924 ++popm_n:
47.13925 ++	popm pc
47.13926 ++	popm r0-r11,pc,r12=-1
47.13927 ++	popm lr
47.13928 ++	popm r0-r11,pc,r12=1
47.13929 ++	popm r0-r3
47.13930 ++	popm r4-r10,pc
47.13931 ++	popm r0-r3,r11,pc,r12=0
47.13932 ++	popm r0-r7,r10-r12,lr
47.13933 ++	.text
47.13934 ++	.global pushm_n
47.13935 ++pushm_n:
47.13936 ++	pushm pc
47.13937 ++	pushm r0-r12,lr,pc
47.13938 ++	pushm pc
47.13939 ++	pushm r0-r12,lr
47.13940 ++	pushm r0-r3
47.13941 ++	pushm r8-r10,lr,pc
47.13942 ++	pushm r0-r3,r10
47.13943 ++	pushm r8-r9,r12
47.13944 ++	.text
47.13945 ++	.global csrfcz
47.13946 ++csrfcz:
47.13947 ++	csrfcz 0
47.13948 ++	csrfcz 31
47.13949 ++	csrfcz 16
47.13950 ++	csrfcz 15
47.13951 ++	csrfcz 1
47.13952 ++	csrfcz 5
47.13953 ++	csrfcz 13
47.13954 ++	csrfcz 23
47.13955 ++	.text
47.13956 ++	.global ssrf
47.13957 ++ssrf:
47.13958 ++	ssrf 0
47.13959 ++	ssrf 31
47.13960 ++	ssrf 16
47.13961 ++	ssrf 15
47.13962 ++	ssrf 1
47.13963 ++	ssrf 29
47.13964 ++	ssrf 13
47.13965 ++	ssrf 13
47.13966 ++	.text
47.13967 ++	.global csrf
47.13968 ++csrf:
47.13969 ++	csrf 0
47.13970 ++	csrf 31
47.13971 ++	csrf 16
47.13972 ++	csrf 15
47.13973 ++	csrf 1
47.13974 ++	csrf 10
47.13975 ++	csrf 15
47.13976 ++	csrf 11
47.13977 ++	.text
47.13978 ++	.global rete
47.13979 ++rete:
47.13980 ++	rete
47.13981 ++	.text
47.13982 ++	.global rets
47.13983 ++rets:
47.13984 ++	rets
47.13985 ++	.text
47.13986 ++	.global retd
47.13987 ++retd:
47.13988 ++	retd
47.13989 ++	.text
47.13990 ++	.global retj
47.13991 ++retj:
47.13992 ++	retj
47.13993 ++	.text
47.13994 ++	.global tlbr
47.13995 ++tlbr:
47.13996 ++	tlbr
47.13997 ++	.text
47.13998 ++	.global tlbs
47.13999 ++tlbs:
47.14000 ++	tlbs
47.14001 ++	.text
47.14002 ++	.global tlbw
47.14003 ++tlbw:
47.14004 ++	tlbw
47.14005 ++	.text
47.14006 ++	.global breakpoint
47.14007 ++breakpoint:
47.14008 ++	breakpoint
47.14009 ++	.text
47.14010 ++	.global incjosp
47.14011 ++incjosp:
47.14012 ++	incjosp 1
47.14013 ++	incjosp 2
47.14014 ++	incjosp 3
47.14015 ++	incjosp 4
47.14016 ++	incjosp -4
47.14017 ++	incjosp -3
47.14018 ++	incjosp -2
47.14019 ++	incjosp -1
47.14020 ++	.text
47.14021 ++	.global nop
47.14022 ++nop:
47.14023 ++	nop
47.14024 ++	.text
47.14025 ++	.global popjc
47.14026 ++popjc:
47.14027 ++	popjc
47.14028 ++	.text
47.14029 ++	.global pushjc
47.14030 ++pushjc:
47.14031 ++	pushjc
47.14032 ++	.text
47.14033 ++	.global add2
47.14034 ++add2:
47.14035 ++	add pc,pc,pc<<0
47.14036 ++	add r12,r12,r12<<3
47.14037 ++	add r5,r5,r5<<2
47.14038 ++	add r4,r4,r4<<1
47.14039 ++	add lr,lr,lr<<1
47.14040 ++	add r0,r12,r0<<1
47.14041 ++	add r9,r12,r4<<0
47.14042 ++	add r12,r12,r7<<2
47.14043 ++	.text
47.14044 ++	.global sub2
47.14045 ++sub2:
47.14046 ++	sub pc,pc,pc<<0
47.14047 ++	sub r12,r12,r12<<3
47.14048 ++	sub r5,r5,r5<<2
47.14049 ++	sub r4,r4,r4<<1
47.14050 ++	sub lr,lr,lr<<1
47.14051 ++	sub sp,r3,r4<<0
47.14052 ++	sub r3,r7,r3<<0
47.14053 ++	sub sp,r10,sp<<1
47.14054 ++	.text
47.14055 ++	.global divu
47.14056 ++divu:
47.14057 ++	divu pc,pc,pc
47.14058 ++	divu r12,r12,r12
47.14059 ++	divu r5,r5,r5
47.14060 ++	divu r4,r4,r4
47.14061 ++	divu lr,lr,lr
47.14062 ++	divu sp,r4,pc
47.14063 ++	divu r5,r5,sp
47.14064 ++	divu r10,sp,r0
47.14065 ++	.text
47.14066 ++	.global addhh_w
47.14067 ++addhh_w:
47.14068 ++	addhh.w pc,pc:b,pc:b
47.14069 ++	addhh.w r12,r12:t,r12:t
47.14070 ++	addhh.w r5,r5:t,r5:t
47.14071 ++	addhh.w r4,r4:b,r4:b
47.14072 ++	addhh.w lr,lr:t,lr:t
47.14073 ++	addhh.w r0,r0:b,r3:b
47.14074 ++	addhh.w lr,r12:t,r7:b
47.14075 ++	addhh.w r3,r10:t,r2:b
47.14076 ++	.text
47.14077 ++	.global subhh_w
47.14078 ++subhh_w:
47.14079 ++	subhh.w pc,pc:b,pc:b
47.14080 ++	subhh.w r12,r12:t,r12:t
47.14081 ++	subhh.w r5,r5:t,r5:t
47.14082 ++	subhh.w r4,r4:b,r4:b
47.14083 ++	subhh.w lr,lr:t,lr:t
47.14084 ++	subhh.w r10,r1:t,r7:b
47.14085 ++	subhh.w pc,r10:t,lr:t
47.14086 ++	subhh.w r3,r0:t,r12:b
47.14087 ++	.text
47.14088 ++	.global adc
47.14089 ++adc:
47.14090 ++	adc pc,pc,pc
47.14091 ++	adc r12,r12,r12
47.14092 ++	adc r5,r5,r5
47.14093 ++	adc r4,r4,r4
47.14094 ++	adc lr,lr,lr
47.14095 ++	adc r4,r0,r7
47.14096 ++	adc sp,r4,r3
47.14097 ++	adc r2,r12,r0
47.14098 ++	.text
47.14099 ++	.global sbc
47.14100 ++sbc:
47.14101 ++	sbc pc,pc,pc
47.14102 ++	sbc r12,r12,r12
47.14103 ++	sbc r5,r5,r5
47.14104 ++	sbc r4,r4,r4
47.14105 ++	sbc lr,lr,lr
47.14106 ++	sbc r6,r7,r9
47.14107 ++	sbc r0,r8,r5
47.14108 ++	sbc r1,r0,r4
47.14109 ++	.text
47.14110 ++	.global mul_2
47.14111 ++mul_2:
47.14112 ++	mul pc,pc,pc
47.14113 ++	mul r12,r12,r12
47.14114 ++	mul r5,r5,r5
47.14115 ++	mul r4,r4,r4
47.14116 ++	mul lr,lr,lr
47.14117 ++	mul pc,r0,r0
47.14118 ++	mul r8,pc,lr
47.14119 ++	mul r4,r12,pc
47.14120 ++	.text
47.14121 ++	.global mac
47.14122 ++mac:
47.14123 ++	mac pc,pc,pc
47.14124 ++	mac r12,r12,r12
47.14125 ++	mac r5,r5,r5
47.14126 ++	mac r4,r4,r4
47.14127 ++	mac lr,lr,lr
47.14128 ++	mac r10,r4,r0
47.14129 ++	mac r7,lr,r0
47.14130 ++	mac r2,r9,r12
47.14131 ++	.text
47.14132 ++	.global mulsd
47.14133 ++mulsd:
47.14134 ++	muls.d pc,pc,pc
47.14135 ++	muls.d r12,r12,r12
47.14136 ++	muls.d r5,r5,r5
47.14137 ++	muls.d r4,r4,r4
47.14138 ++	muls.d lr,lr,lr
47.14139 ++	muls.d r2,r8,lr
47.14140 ++	muls.d r4,r0,r11
47.14141 ++	muls.d r5,lr,r6
47.14142 ++	.text
47.14143 ++	.global macsd
47.14144 ++macsd:
47.14145 ++	macs.d r0,pc,pc
47.14146 ++	macs.d r14,r12,r12
47.14147 ++	macs.d r8,r5,r5
47.14148 ++	macs.d r6,r4,r4
47.14149 ++	macs.d r2,lr,lr
47.14150 ++	macs.d r8,r1,r9
47.14151 ++	macs.d r14,r8,r8
47.14152 ++	macs.d r4,r3,r12
47.14153 ++	.text
47.14154 ++	.global mulud
47.14155 ++mulud:
47.14156 ++	mulu.d r0,pc,pc
47.14157 ++	mulu.d r14,r12,r12
47.14158 ++	mulu.d r8,r5,r5
47.14159 ++	mulu.d r6,r4,r4
47.14160 ++	mulu.d r2,lr,lr
47.14161 ++	mulu.d r6,r5,r0
47.14162 ++	mulu.d r4,r6,r1
47.14163 ++	mulu.d r8,r8,r2
47.14164 ++	.text
47.14165 ++	.global macud
47.14166 ++macud:
47.14167 ++	macu.d r0,pc,pc
47.14168 ++	macu.d r14,r12,r12
47.14169 ++	macu.d r8,r5,r5
47.14170 ++	macu.d r6,r4,r4
47.14171 ++	macu.d r2,lr,lr
47.14172 ++	macu.d r6,sp,r11
47.14173 ++	macu.d r2,r4,r8
47.14174 ++	macu.d r6,r10,r9
47.14175 ++	.text
47.14176 ++	.global asr_1
47.14177 ++asr_1:
47.14178 ++	asr pc,pc,pc
47.14179 ++	asr r12,r12,r12
47.14180 ++	asr r5,r5,r5
47.14181 ++	asr r4,r4,r4
47.14182 ++	asr lr,lr,lr
47.14183 ++	asr pc,r6,pc
47.14184 ++	asr r0,r6,r12
47.14185 ++	asr r4,sp,r0
47.14186 ++	.text
47.14187 ++	.global lsl_1
47.14188 ++lsl_1:
47.14189 ++	lsl pc,pc,pc
47.14190 ++	lsl r12,r12,r12
47.14191 ++	lsl r5,r5,r5
47.14192 ++	lsl r4,r4,r4
47.14193 ++	lsl lr,lr,lr
47.14194 ++	lsl lr,r5,lr
47.14195 ++	lsl r5,pc,r3
47.14196 ++	lsl r1,pc,r9
47.14197 ++	.text
47.14198 ++	.global lsr_1
47.14199 ++lsr_1:
47.14200 ++	lsr pc,pc,pc
47.14201 ++	lsr r12,r12,r12
47.14202 ++	lsr r5,r5,r5
47.14203 ++	lsr r4,r4,r4
47.14204 ++	lsr lr,lr,lr
47.14205 ++	lsr r2,r4,r1
47.14206 ++	lsr r5,r1,r6
47.14207 ++	lsr sp,r6,r7
47.14208 ++	.text
47.14209 ++	.global xchg
47.14210 ++xchg:
47.14211 ++	xchg pc,pc,pc
47.14212 ++	xchg r12,r12,r12
47.14213 ++	xchg r5,r5,r5
47.14214 ++	xchg r4,r4,r4
47.14215 ++	xchg lr,lr,lr
47.14216 ++	xchg lr,r4,sp
47.14217 ++	xchg r1,r5,r12
47.14218 ++	xchg lr,r12,r0
47.14219 ++	.text
47.14220 ++	.global max
47.14221 ++max:
47.14222 ++	max pc,pc,pc
47.14223 ++	max r12,r12,r12
47.14224 ++	max r5,r5,r5
47.14225 ++	max r4,r4,r4
47.14226 ++	max lr,lr,lr
47.14227 ++	max lr,r2,sp
47.14228 ++	max r4,r10,r9
47.14229 ++	max lr,r9,lr
47.14230 ++	.text
47.14231 ++	.global min
47.14232 ++min:
47.14233 ++	min pc,pc,pc
47.14234 ++	min r12,r12,r12
47.14235 ++	min r5,r5,r5
47.14236 ++	min r4,r4,r4
47.14237 ++	min lr,lr,lr
47.14238 ++	min r9,r7,r8
47.14239 ++	min sp,r5,r5
47.14240 ++	min r4,r1,r4
47.14241 ++	.text
47.14242 ++	.global addabs
47.14243 ++addabs:
47.14244 ++	addabs pc,pc,pc
47.14245 ++	addabs r12,r12,r12
47.14246 ++	addabs r5,r5,r5
47.14247 ++	addabs r4,r4,r4
47.14248 ++	addabs lr,lr,lr
47.14249 ++	addabs r7,r10,r0
47.14250 ++	addabs r9,r9,r7
47.14251 ++	addabs r2,r8,r12
47.14252 ++	.text
47.14253 ++	.global mulnhh_w
47.14254 ++mulnhh_w:
47.14255 ++	mulnhh.w pc,pc:b,pc:b
47.14256 ++	mulnhh.w r12,r12:t,r12:t
47.14257 ++	mulnhh.w r5,r5:t,r5:t
47.14258 ++	mulnhh.w r4,r4:b,r4:b
47.14259 ++	mulnhh.w lr,lr:t,lr:t
47.14260 ++	mulnhh.w r11,sp:t,r9:b
47.14261 ++	mulnhh.w sp,r4:b,lr:t
47.14262 ++	mulnhh.w r12,r2:t,r11:b
47.14263 ++	.text
47.14264 ++	.global mulnwh_d
47.14265 ++mulnwh_d:
47.14266 ++	mulnwh.d r0,pc,pc:b
47.14267 ++	mulnwh.d r14,r12,r12:t
47.14268 ++	mulnwh.d r8,r5,r5:t
47.14269 ++	mulnwh.d r6,r4,r4:b
47.14270 ++	mulnwh.d r2,lr,lr:t
47.14271 ++	mulnwh.d r14,r3,r2:t
47.14272 ++	mulnwh.d r4,r5,r9:b
47.14273 ++	mulnwh.d r12,r4,r4:t
47.14274 ++	.text
47.14275 ++	.global machh_w
47.14276 ++machh_w:
47.14277 ++	machh.w pc,pc:b,pc:b
47.14278 ++	machh.w r12,r12:t,r12:t
47.14279 ++	machh.w r5,r5:t,r5:t
47.14280 ++	machh.w r4,r4:b,r4:b
47.14281 ++	machh.w lr,lr:t,lr:t
47.14282 ++	machh.w lr,r5:b,r1:t
47.14283 ++	machh.w r9,r6:b,r7:b
47.14284 ++	machh.w r5,lr:t,r12:b
47.14285 ++	.text
47.14286 ++	.global machh_d
47.14287 ++machh_d:
47.14288 ++	machh.d r0,pc:b,pc:b
47.14289 ++	machh.d r14,r12:t,r12:t
47.14290 ++	machh.d r8,r5:t,r5:t
47.14291 ++	machh.d r6,r4:b,r4:b
47.14292 ++	machh.d r2,lr:t,lr:t
47.14293 ++	machh.d r10,r0:b,r8:b
47.14294 ++	machh.d r14,r4:b,r5:t
47.14295 ++	machh.d r8,r0:b,r4:t
47.14296 ++	.text
47.14297 ++	.global macsathh_w
47.14298 ++macsathh_w:
47.14299 ++	macsathh.w pc,pc:b,pc:b
47.14300 ++	macsathh.w r12,r12:t,r12:t
47.14301 ++	macsathh.w r5,r5:t,r5:t
47.14302 ++	macsathh.w r4,r4:b,r4:b
47.14303 ++	macsathh.w lr,lr:t,lr:t
47.14304 ++	macsathh.w r7,r7:t,pc:t
47.14305 ++	macsathh.w r4,r2:t,r4:b
47.14306 ++	macsathh.w r4,r8:t,r3:t
47.14307 ++	.text
47.14308 ++	.global mulhh_w
47.14309 ++mulhh_w:
47.14310 ++	mulhh.w pc,pc:b,pc:b
47.14311 ++	mulhh.w r12,r12:t,r12:t
47.14312 ++	mulhh.w r5,r5:t,r5:t
47.14313 ++	mulhh.w r4,r4:b,r4:b
47.14314 ++	mulhh.w lr,lr:t,lr:t
47.14315 ++	mulhh.w r7,r4:t,r9:b
47.14316 ++	mulhh.w pc,r3:t,r7:t
47.14317 ++	mulhh.w pc,r4:b,r9:t
47.14318 ++	.text
47.14319 ++	.global mulsathh_h
47.14320 ++mulsathh_h:
47.14321 ++	mulsathh.h pc,pc:b,pc:b
47.14322 ++	mulsathh.h r12,r12:t,r12:t
47.14323 ++	mulsathh.h r5,r5:t,r5:t
47.14324 ++	mulsathh.h r4,r4:b,r4:b
47.14325 ++	mulsathh.h lr,lr:t,lr:t
47.14326 ++	mulsathh.h r3,r1:b,sp:b
47.14327 ++	mulsathh.h r11,lr:t,r11:b
47.14328 ++	mulsathh.h r8,r8:b,r11:t
47.14329 ++	.text
47.14330 ++	.global mulsathh_w
47.14331 ++mulsathh_w:
47.14332 ++	mulsathh.w pc,pc:b,pc:b
47.14333 ++	mulsathh.w r12,r12:t,r12:t
47.14334 ++	mulsathh.w r5,r5:t,r5:t
47.14335 ++	mulsathh.w r4,r4:b,r4:b
47.14336 ++	mulsathh.w lr,lr:t,lr:t
47.14337 ++	mulsathh.w lr,r11:t,r6:b
47.14338 ++	mulsathh.w r6,r6:b,r7:t
47.14339 ++	mulsathh.w r10,r2:b,r3:b
47.14340 ++	.text
47.14341 ++	.global mulsatrndhh_h
47.14342 ++mulsatrndhh_h:
47.14343 ++	mulsatrndhh.h pc,pc:b,pc:b
47.14344 ++	mulsatrndhh.h r12,r12:t,r12:t
47.14345 ++	mulsatrndhh.h r5,r5:t,r5:t
47.14346 ++	mulsatrndhh.h r4,r4:b,r4:b
47.14347 ++	mulsatrndhh.h lr,lr:t,lr:t
47.14348 ++	mulsatrndhh.h r11,r6:b,r9:b
47.14349 ++	mulsatrndhh.h r11,r3:b,r8:t
47.14350 ++	mulsatrndhh.h r5,sp:t,r7:t
47.14351 ++	.text
47.14352 ++	.global mulsatrndwh_w
47.14353 ++mulsatrndwh_w:
47.14354 ++	mulsatrndwh.w pc,pc,pc:b
47.14355 ++	mulsatrndwh.w r12,r12,r12:t
47.14356 ++	mulsatrndwh.w r5,r5,r5:t
47.14357 ++	mulsatrndwh.w r4,r4,r4:b
47.14358 ++	mulsatrndwh.w lr,lr,lr:t
47.14359 ++	mulsatrndwh.w r5,r12,r0:b
47.14360 ++	mulsatrndwh.w r7,r10,pc:b
47.14361 ++	mulsatrndwh.w r10,r8,r5:t
47.14362 ++	.text
47.14363 ++	.global macwh_d
47.14364 ++macwh_d:
47.14365 ++	macwh.d r0,pc,pc:b
47.14366 ++	macwh.d r14,r12,r12:t
47.14367 ++	macwh.d r8,r5,r5:t
47.14368 ++	macwh.d r6,r4,r4:b
47.14369 ++	macwh.d r2,lr,lr:t
47.14370 ++	macwh.d r4,r10,r12:t
47.14371 ++	macwh.d r4,r7,sp:b
47.14372 ++	macwh.d r14,r9,r11:b
47.14373 ++	.text
47.14374 ++	.global mulwh_d
47.14375 ++mulwh_d:
47.14376 ++	mulwh.d r0,pc,pc:b
47.14377 ++	mulwh.d r14,r12,r12:t
47.14378 ++	mulwh.d r8,r5,r5:t
47.14379 ++	mulwh.d r6,r4,r4:b
47.14380 ++	mulwh.d r2,lr,lr:t
47.14381 ++	mulwh.d r12,r5,r1:b
47.14382 ++	mulwh.d r0,r1,r3:t
47.14383 ++	mulwh.d r0,r9,r2:b
47.14384 ++	.text
47.14385 ++	.global mulsatwh_w
47.14386 ++mulsatwh_w:
47.14387 ++	mulsatwh.w pc,pc,pc:b
47.14388 ++	mulsatwh.w r12,r12,r12:t
47.14389 ++	mulsatwh.w r5,r5,r5:t
47.14390 ++	mulsatwh.w r4,r4,r4:b
47.14391 ++	mulsatwh.w lr,lr,lr:t
47.14392 ++	mulsatwh.w r11,pc,r10:t
47.14393 ++	mulsatwh.w sp,r12,r9:t
47.14394 ++	mulsatwh.w r0,r3,r2:t
47.14395 ++	.text
47.14396 ++	.global ldw7
47.14397 ++ldw7:
47.14398 ++	ld.w pc,pc[pc:b<<2]
47.14399 ++	ld.w r12,r12[r12:t<<2]
47.14400 ++	ld.w r5,r5[r5:u<<2]
47.14401 ++	ld.w r4,r4[r4:l<<2]
47.14402 ++	ld.w lr,lr[lr:l<<2]
47.14403 ++	ld.w r9,r10[r6:l<<2]
47.14404 ++	ld.w r2,r10[r10:b<<2]
47.14405 ++	ld.w r11,r5[pc:b<<2]
47.14406 ++	.text
47.14407 ++	.global satadd_w
47.14408 ++satadd_w:
47.14409 ++	satadd.w pc,pc,pc
47.14410 ++	satadd.w r12,r12,r12
47.14411 ++	satadd.w r5,r5,r5
47.14412 ++	satadd.w r4,r4,r4
47.14413 ++	satadd.w lr,lr,lr
47.14414 ++	satadd.w r4,r8,r11
47.14415 ++	satadd.w r3,r12,r6
47.14416 ++	satadd.w r3,lr,r9
47.14417 ++	.text
47.14418 ++	.global satsub_w1
47.14419 ++satsub_w1:
47.14420 ++	satsub.w pc,pc,pc
47.14421 ++	satsub.w r12,r12,r12
47.14422 ++	satsub.w r5,r5,r5
47.14423 ++	satsub.w r4,r4,r4
47.14424 ++	satsub.w lr,lr,lr
47.14425 ++	satsub.w r8,sp,r0
47.14426 ++	satsub.w r9,r8,r4
47.14427 ++	satsub.w pc,lr,r2
47.14428 ++	.text
47.14429 ++	.global satadd_h
47.14430 ++satadd_h:
47.14431 ++	satadd.h pc,pc,pc
47.14432 ++	satadd.h r12,r12,r12
47.14433 ++	satadd.h r5,r5,r5
47.14434 ++	satadd.h r4,r4,r4
47.14435 ++	satadd.h lr,lr,lr
47.14436 ++	satadd.h r7,r3,r9
47.14437 ++	satadd.h r1,r0,r2
47.14438 ++	satadd.h r1,r4,lr
47.14439 ++	.text
47.14440 ++	.global satsub_h
47.14441 ++satsub_h:
47.14442 ++	satsub.h pc,pc,pc
47.14443 ++	satsub.h r12,r12,r12
47.14444 ++	satsub.h r5,r5,r5
47.14445 ++	satsub.h r4,r4,r4
47.14446 ++	satsub.h lr,lr,lr
47.14447 ++	satsub.h lr,lr,r3
47.14448 ++	satsub.h r11,r6,r5
47.14449 ++	satsub.h r3,sp,r0
47.14450 ++	.text
47.14451 ++	.global mul3
47.14452 ++mul3:
47.14453 ++	mul pc,pc,0
47.14454 ++	mul r12,r12,-1
47.14455 ++	mul r5,r5,-128
47.14456 ++	mul r4,r4,127
47.14457 ++	mul lr,lr,1
47.14458 ++	mul r12,r2,-7
47.14459 ++	mul r1,pc,95
47.14460 ++	mul r4,r6,19
47.14461 ++	.text
47.14462 ++	.global rsub2
47.14463 ++rsub2:
47.14464 ++	rsub pc,pc,0
47.14465 ++	rsub r12,r12,-1
47.14466 ++	rsub r5,r5,-128
47.14467 ++	rsub r4,r4,127
47.14468 ++	rsub lr,lr,1
47.14469 ++	rsub r9,lr,96
47.14470 ++	rsub r11,r1,56
47.14471 ++	rsub r0,r7,-87
47.14472 ++	.text
47.14473 ++	.global clz
47.14474 ++clz:
47.14475 ++	clz pc,pc
47.14476 ++	clz r12,r12
47.14477 ++	clz r5,r5
47.14478 ++	clz r4,r4
47.14479 ++	clz lr,lr
47.14480 ++	clz r2,r3
47.14481 ++	clz r5,r11
47.14482 ++	clz pc,r3
47.14483 ++	.text
47.14484 ++	.global cpc1
47.14485 ++cpc1:
47.14486 ++	cpc pc,pc
47.14487 ++	cpc r12,r12
47.14488 ++	cpc r5,r5
47.14489 ++	cpc r4,r4
47.14490 ++	cpc lr,lr
47.14491 ++	cpc pc,r4
47.14492 ++	cpc r5,r9
47.14493 ++	cpc r6,r7
47.14494 ++	.text
47.14495 ++	.global asr3
47.14496 ++asr3:
47.14497 ++	asr pc,pc,0
47.14498 ++	asr r12,r12,31
47.14499 ++	asr r5,r5,16
47.14500 ++	asr r4,r4,15
47.14501 ++	asr lr,lr,1
47.14502 ++	asr r4,r11,19
47.14503 ++	asr sp,pc,26
47.14504 ++	asr r11,sp,8
47.14505 ++	.text
47.14506 ++	.global lsl3
47.14507 ++lsl3:
47.14508 ++	lsl pc,pc,0
47.14509 ++	lsl r12,r12,31
47.14510 ++	lsl r5,r5,16
47.14511 ++	lsl r4,r4,15
47.14512 ++	lsl lr,lr,1
47.14513 ++	lsl r8,r10,17
47.14514 ++	lsl r2,lr,3
47.14515 ++	lsl lr,r11,14
47.14516 ++	.text
47.14517 ++	.global lsr3
47.14518 ++lsr3:
47.14519 ++	lsr pc,pc,0
47.14520 ++	lsr r12,r12,31
47.14521 ++	lsr r5,r5,16
47.14522 ++	lsr r4,r4,15
47.14523 ++	lsr lr,lr,1
47.14524 ++	lsr r4,r3,31
47.14525 ++	lsr pc,r9,14
47.14526 ++	lsr r3,r0,6
47.14527 ++/*	.text
47.14528 ++	.global extract_b
47.14529 ++extract_b:
47.14530 ++	extract.b pc,pc:b
47.14531 ++	extract.b r12,r12:t
47.14532 ++	extract.b r5,r5:u
47.14533 ++	extract.b r4,r4:l
47.14534 ++	extract.b lr,lr:l
47.14535 ++	extract.b r2,r5:l
47.14536 ++	extract.b r12,r3:l
47.14537 ++	extract.b sp,r3:l
47.14538 ++	.text
47.14539 ++	.global insert_b
47.14540 ++insert_b:
47.14541 ++	insert.b pc:b,pc
47.14542 ++	insert.b r12:t,r12
47.14543 ++	insert.b r5:u,r5
47.14544 ++	insert.b r4:l,r4
47.14545 ++	insert.b lr:l,lr
47.14546 ++	insert.b r12:u,r3
47.14547 ++	insert.b r10:l,lr
47.14548 ++	insert.b r11:l,r12
47.14549 ++	.text
47.14550 ++	.global extract_h
47.14551 ++extract_h:
47.14552 ++	extract.h pc,pc:b
47.14553 ++	extract.h r12,r12:t
47.14554 ++	extract.h r5,r5:t
47.14555 ++	extract.h r4,r4:b
47.14556 ++	extract.h lr,lr:t
47.14557 ++	extract.h r11,lr:b
47.14558 ++	extract.h r10,r0:b
47.14559 ++	extract.h r11,r12:b
47.14560 ++	.text
47.14561 ++	.global insert_h
47.14562 ++insert_h:
47.14563 ++	insert.h pc:b,pc
47.14564 ++	insert.h r12:t,r12
47.14565 ++	insert.h r5:t,r5
47.14566 ++	insert.h r4:b,r4
47.14567 ++	insert.h lr:t,lr
47.14568 ++	insert.h r12:t,r11
47.14569 ++	insert.h r7:b,r6
47.14570 ++	insert.h r1:t,r11 */
47.14571 ++	.text
47.14572 ++	.global movc1
47.14573 ++movc1:
47.14574 ++	moveq pc,pc
47.14575 ++	moval r12,r12
47.14576 ++	movls r5,r5
47.14577 ++	movpl r4,r4
47.14578 ++	movne lr,lr
47.14579 ++	movne pc,r11
47.14580 ++	movmi r10,r2
47.14581 ++	movls r8,r12
47.14582 ++	.text
47.14583 ++	.global padd_h
47.14584 ++padd_h:
47.14585 ++	padd.h pc,pc,pc
47.14586 ++	padd.h r12,r12,r12
47.14587 ++	padd.h r5,r5,r5
47.14588 ++	padd.h r4,r4,r4
47.14589 ++	padd.h lr,lr,lr
47.14590 ++	padd.h r8,r2,r7
47.14591 ++	padd.h r0,r0,r3
47.14592 ++	padd.h sp,r11,r6
47.14593 ++	.text
47.14594 ++	.global psub_h
47.14595 ++psub_h:
47.14596 ++	psub.h pc,pc,pc
47.14597 ++	psub.h r12,r12,r12
47.14598 ++	psub.h r5,r5,r5
47.14599 ++	psub.h r4,r4,r4
47.14600 ++	psub.h lr,lr,lr
47.14601 ++	psub.h lr,r6,r8
47.14602 ++	psub.h r0,r1,sp
47.14603 ++	psub.h pc,pc,sp
47.14604 ++	.text
47.14605 ++	.global paddx_h
47.14606 ++paddx_h:
47.14607 ++	paddx.h pc,pc,pc
47.14608 ++	paddx.h r12,r12,r12
47.14609 ++	paddx.h r5,r5,r5
47.14610 ++	paddx.h r4,r4,r4
47.14611 ++	paddx.h lr,lr,lr
47.14612 ++	paddx.h pc,pc,r1
47.14613 ++	paddx.h r10,r4,r5
47.14614 ++	paddx.h r5,pc,r2
47.14615 ++	.text
47.14616 ++	.global psubx_h
47.14617 ++psubx_h:
47.14618 ++	psubx.h pc,pc,pc
47.14619 ++	psubx.h r12,r12,r12
47.14620 ++	psubx.h r5,r5,r5
47.14621 ++	psubx.h r4,r4,r4
47.14622 ++	psubx.h lr,lr,lr
47.14623 ++	psubx.h r5,r12,r5
47.14624 ++	psubx.h r3,r8,r3
47.14625 ++	psubx.h r5,r2,r3
47.14626 ++	.text
47.14627 ++	.global padds_sh
47.14628 ++padds_sh:
47.14629 ++	padds.sh pc,pc,pc
47.14630 ++	padds.sh r12,r12,r12
47.14631 ++	padds.sh r5,r5,r5
47.14632 ++	padds.sh r4,r4,r4
47.14633 ++	padds.sh lr,lr,lr
47.14634 ++	padds.sh r9,lr,r2
47.14635 ++	padds.sh r6,r8,r1
47.14636 ++	padds.sh r6,r4,r10
47.14637 ++	.text
47.14638 ++	.global psubs_sh
47.14639 ++psubs_sh:
47.14640 ++	psubs.sh pc,pc,pc
47.14641 ++	psubs.sh r12,r12,r12
47.14642 ++	psubs.sh r5,r5,r5
47.14643 ++	psubs.sh r4,r4,r4
47.14644 ++	psubs.sh lr,lr,lr
47.14645 ++	psubs.sh r6,lr,r11
47.14646 ++	psubs.sh r2,r12,r4
47.14647 ++	psubs.sh r0,r9,r0
47.14648 ++	.text
47.14649 ++	.global paddxs_sh
47.14650 ++paddxs_sh:
47.14651 ++	paddxs.sh pc,pc,pc
47.14652 ++	paddxs.sh r12,r12,r12
47.14653 ++	paddxs.sh r5,r5,r5
47.14654 ++	paddxs.sh r4,r4,r4
47.14655 ++	paddxs.sh lr,lr,lr
47.14656 ++	paddxs.sh r0,r3,r9
47.14657 ++	paddxs.sh pc,r10,r11
47.14658 ++	paddxs.sh pc,r10,pc
47.14659 ++	.text
47.14660 ++	.global psubxs_sh
47.14661 ++psubxs_sh:
47.14662 ++	psubxs.sh pc,pc,pc
47.14663 ++	psubxs.sh r12,r12,r12
47.14664 ++	psubxs.sh r5,r5,r5
47.14665 ++	psubxs.sh r4,r4,r4
47.14666 ++	psubxs.sh lr,lr,lr
47.14667 ++	psubxs.sh r7,r4,r4
47.14668 ++	psubxs.sh r7,r8,r3
47.14669 ++	psubxs.sh pc,r6,r5
47.14670 ++	.text
47.14671 ++	.global padds_uh
47.14672 ++padds_uh:
47.14673 ++	padds.uh pc,pc,pc
47.14674 ++	padds.uh r12,r12,r12
47.14675 ++	padds.uh r5,r5,r5
47.14676 ++	padds.uh r4,r4,r4
47.14677 ++	padds.uh lr,lr,lr
47.14678 ++	padds.uh r12,r11,r7
47.14679 ++	padds.uh r7,r8,lr
47.14680 ++	padds.uh r6,r9,r7
47.14681 ++	.text
47.14682 ++	.global psubs_uh
47.14683 ++psubs_uh:
47.14684 ++	psubs.uh pc,pc,pc
47.14685 ++	psubs.uh r12,r12,r12
47.14686 ++	psubs.uh r5,r5,r5
47.14687 ++	psubs.uh r4,r4,r4
47.14688 ++	psubs.uh lr,lr,lr
47.14689 ++	psubs.uh lr,r10,r6
47.14690 ++	psubs.uh sp,r2,pc
47.14691 ++	psubs.uh r2,r9,r2
47.14692 ++	.text
47.14693 ++	.global paddxs_uh
47.14694 ++paddxs_uh:
47.14695 ++	paddxs.uh pc,pc,pc
47.14696 ++	paddxs.uh r12,r12,r12
47.14697 ++	paddxs.uh r5,r5,r5
47.14698 ++	paddxs.uh r4,r4,r4
47.14699 ++	paddxs.uh lr,lr,lr
47.14700 ++	paddxs.uh r7,r9,r5
47.14701 ++	paddxs.uh r9,r1,r4
47.14702 ++	paddxs.uh r5,r2,r3
47.14703 ++	.text
47.14704 ++	.global psubxs_uh
47.14705 ++psubxs_uh:
47.14706 ++	psubxs.uh pc,pc,pc
47.14707 ++	psubxs.uh r12,r12,r12
47.14708 ++	psubxs.uh r5,r5,r5
47.14709 ++	psubxs.uh r4,r4,r4
47.14710 ++	psubxs.uh lr,lr,lr
47.14711 ++	psubxs.uh sp,r5,sp
47.14712 ++	psubxs.uh sp,r6,r6
47.14713 ++	psubxs.uh r3,r11,r8
47.14714 ++	.text
47.14715 ++	.global paddh_sh
47.14716 ++paddh_sh:
47.14717 ++	paddh.sh pc,pc,pc
47.14718 ++	paddh.sh r12,r12,r12
47.14719 ++	paddh.sh r5,r5,r5
47.14720 ++	paddh.sh r4,r4,r4
47.14721 ++	paddh.sh lr,lr,lr
47.14722 ++	paddh.sh r12,sp,r3
47.14723 ++	paddh.sh pc,r5,r3
47.14724 ++	paddh.sh r8,r8,sp
47.14725 ++	.text
47.14726 ++	.global psubh_sh
47.14727 ++psubh_sh:
47.14728 ++	psubh.sh pc,pc,pc
47.14729 ++	psubh.sh r12,r12,r12
47.14730 ++	psubh.sh r5,r5,r5
47.14731 ++	psubh.sh r4,r4,r4
47.14732 ++	psubh.sh lr,lr,lr
47.14733 ++	psubh.sh r1,r5,r8
47.14734 ++	psubh.sh r7,r3,r6
47.14735 ++	psubh.sh r4,r3,r3
47.14736 ++	.text
47.14737 ++	.global paddxh_sh
47.14738 ++paddxh_sh:
47.14739 ++	paddxh.sh pc,pc,pc
47.14740 ++	paddxh.sh r12,r12,r12
47.14741 ++	paddxh.sh r5,r5,r5
47.14742 ++	paddxh.sh r4,r4,r4
47.14743 ++	paddxh.sh lr,lr,lr
47.14744 ++	paddxh.sh r6,r0,r4
47.14745 ++	paddxh.sh r9,r8,r9
47.14746 ++	paddxh.sh r3,r0,sp
47.14747 ++	.text
47.14748 ++	.global psubxh_sh
47.14749 ++psubxh_sh:
47.14750 ++	psubxh.sh pc,pc,pc
47.14751 ++	psubxh.sh r12,r12,r12
47.14752 ++	psubxh.sh r5,r5,r5
47.14753 ++	psubxh.sh r4,r4,r4
47.14754 ++	psubxh.sh lr,lr,lr
47.14755 ++	psubxh.sh r4,pc,r12
47.14756 ++	psubxh.sh r8,r4,r6
47.14757 ++	psubxh.sh r12,r9,r4
47.14758 ++	.text
47.14759 ++	.global paddsub_h
47.14760 ++paddsub_h:
47.14761 ++	paddsub.h pc,pc:b,pc:b
47.14762 ++	paddsub.h r12,r12:t,r12:t
47.14763 ++	paddsub.h r5,r5:t,r5:t
47.14764 ++	paddsub.h r4,r4:b,r4:b
47.14765 ++	paddsub.h lr,lr:t,lr:t
47.14766 ++	paddsub.h r5,r2:t,lr:b
47.14767 ++	paddsub.h r7,r1:b,r8:b
47.14768 ++	paddsub.h r6,r10:t,r5:t
47.14769 ++	.text
47.14770 ++	.global psubadd_h
47.14771 ++psubadd_h:
47.14772 ++	psubadd.h pc,pc:b,pc:b
47.14773 ++	psubadd.h r12,r12:t,r12:t
47.14774 ++	psubadd.h r5,r5:t,r5:t
47.14775 ++	psubadd.h r4,r4:b,r4:b
47.14776 ++	psubadd.h lr,lr:t,lr:t
47.14777 ++	psubadd.h r9,r11:t,r8:t
47.14778 ++	psubadd.h r10,r7:t,lr:t
47.14779 ++	psubadd.h r6,pc:t,pc:b
47.14780 ++	.text
47.14781 ++	.global paddsubs_sh
47.14782 ++paddsubs_sh:
47.14783 ++	paddsubs.sh pc,pc:b,pc:b
47.14784 ++	paddsubs.sh r12,r12:t,r12:t
47.14785 ++	paddsubs.sh r5,r5:t,r5:t
47.14786 ++	paddsubs.sh r4,r4:b,r4:b
47.14787 ++	paddsubs.sh lr,lr:t,lr:t
47.14788 ++	paddsubs.sh r0,lr:t,r0:b
47.14789 ++	paddsubs.sh r9,r2:t,r4:t
47.14790 ++	paddsubs.sh r12,r9:t,sp:t
47.14791 ++	.text
47.14792 ++	.global psubadds_sh
47.14793 ++psubadds_sh:
47.14794 ++	psubadds.sh pc,pc:b,pc:b
47.14795 ++	psubadds.sh r12,r12:t,r12:t
47.14796 ++	psubadds.sh r5,r5:t,r5:t
47.14797 ++	psubadds.sh r4,r4:b,r4:b
47.14798 ++	psubadds.sh lr,lr:t,lr:t
47.14799 ++	psubadds.sh pc,lr:b,r1:t
47.14800 ++	psubadds.sh r11,r3:b,r12:b
47.14801 ++	psubadds.sh r10,r2:t,r8:t
47.14802 ++	.text
47.14803 ++	.global paddsubs_uh
47.14804 ++paddsubs_uh:
47.14805 ++	paddsubs.uh pc,pc:b,pc:b
47.14806 ++	paddsubs.uh r12,r12:t,r12:t
47.14807 ++	paddsubs.uh r5,r5:t,r5:t
47.14808 ++	paddsubs.uh r4,r4:b,r4:b
47.14809 ++	paddsubs.uh lr,lr:t,lr:t
47.14810 ++	paddsubs.uh r9,r2:b,r3:b
47.14811 ++	paddsubs.uh sp,sp:b,r7:t
47.14812 ++	paddsubs.uh lr,r0:b,r10:t
47.14813 ++	.text
47.14814 ++	.global psubadds_uh
47.14815 ++psubadds_uh:
47.14816 ++	psubadds.uh pc,pc:b,pc:b
47.14817 ++	psubadds.uh r12,r12:t,r12:t
47.14818 ++	psubadds.uh r5,r5:t,r5:t
47.14819 ++	psubadds.uh r4,r4:b,r4:b
47.14820 ++	psubadds.uh lr,lr:t,lr:t
47.14821 ++	psubadds.uh r12,r9:t,pc:t
47.14822 ++	psubadds.uh r8,r6:b,r8:b
47.14823 ++	psubadds.uh r8,r8:b,r4:b
47.14824 ++	.text
47.14825 ++	.global paddsubh_sh
47.14826 ++paddsubh_sh:
47.14827 ++	paddsubh.sh pc,pc:b,pc:b
47.14828 ++	paddsubh.sh r12,r12:t,r12:t
47.14829 ++	paddsubh.sh r5,r5:t,r5:t
47.14830 ++	paddsubh.sh r4,r4:b,r4:b
47.14831 ++	paddsubh.sh lr,lr:t,lr:t
47.14832 ++	paddsubh.sh r8,r9:t,r9:b
47.14833 ++	paddsubh.sh r0,sp:t,r1:t
47.14834 ++	paddsubh.sh r3,r1:b,r0:t
47.14835 ++	.text
47.14836 ++	.global psubaddh_sh
47.14837 ++psubaddh_sh:
47.14838 ++	psubaddh.sh pc,pc:b,pc:b
47.14839 ++	psubaddh.sh r12,r12:t,r12:t
47.14840 ++	psubaddh.sh r5,r5:t,r5:t
47.14841 ++	psubaddh.sh r4,r4:b,r4:b
47.14842 ++	psubaddh.sh lr,lr:t,lr:t
47.14843 ++	psubaddh.sh r7,r3:t,r10:b
47.14844 ++	psubaddh.sh r7,r2:t,r1:t
47.14845 ++	psubaddh.sh r11,r3:b,r6:b
47.14846 ++	.text
47.14847 ++	.global padd_b
47.14848 ++padd_b:
47.14849 ++	padd.b pc,pc,pc
47.14850 ++	padd.b r12,r12,r12
47.14851 ++	padd.b r5,r5,r5
47.14852 ++	padd.b r4,r4,r4
47.14853 ++	padd.b lr,lr,lr
47.14854 ++	padd.b r2,r6,pc
47.14855 ++	padd.b r8,r9,r12
47.14856 ++	padd.b r5,r12,r3
47.14857 ++	.text
47.14858 ++	.global psub_b
47.14859 ++psub_b:
47.14860 ++	psub.b pc,pc,pc
47.14861 ++	psub.b r12,r12,r12
47.14862 ++	psub.b r5,r5,r5
47.14863 ++	psub.b r4,r4,r4
47.14864 ++	psub.b lr,lr,lr
47.14865 ++	psub.b r0,r12,pc
47.14866 ++	psub.b r7,sp,r10
47.14867 ++	psub.b r5,sp,r12
47.14868 ++	.text
47.14869 ++	.global padds_sb
47.14870 ++padds_sb:
47.14871 ++	padds.sb pc,pc,pc
47.14872 ++	padds.sb r12,r12,r12
47.14873 ++	padds.sb r5,r5,r5
47.14874 ++	padds.sb r4,r4,r4
47.14875 ++	padds.sb lr,lr,lr
47.14876 ++	padds.sb sp,r11,r4
47.14877 ++	padds.sb r11,r10,r11
47.14878 ++	padds.sb r5,r12,r6
47.14879 ++	.text
47.14880 ++	.global psubs_sb
47.14881 ++psubs_sb:
47.14882 ++	psubs.sb pc,pc,pc
47.14883 ++	psubs.sb r12,r12,r12
47.14884 ++	psubs.sb r5,r5,r5
47.14885 ++	psubs.sb r4,r4,r4
47.14886 ++	psubs.sb lr,lr,lr
47.14887 ++	psubs.sb r7,r6,r8
47.14888 ++	psubs.sb r12,r10,r9
47.14889 ++	psubs.sb pc,r11,r0
47.14890 ++	.text
47.14891 ++	.global padds_ub
47.14892 ++padds_ub:
47.14893 ++	padds.ub pc,pc,pc
47.14894 ++	padds.ub r12,r12,r12
47.14895 ++	padds.ub r5,r5,r5
47.14896 ++	padds.ub r4,r4,r4
47.14897 ++	padds.ub lr,lr,lr
47.14898 ++	padds.ub r3,r2,r11
47.14899 ++	padds.ub r10,r8,r1
47.14900 ++	padds.ub r11,r8,r10
47.14901 ++	.text
47.14902 ++	.global psubs_ub
47.14903 ++psubs_ub:
47.14904 ++	psubs.ub pc,pc,pc
47.14905 ++	psubs.ub r12,r12,r12
47.14906 ++	psubs.ub r5,r5,r5
47.14907 ++	psubs.ub r4,r4,r4
47.14908 ++	psubs.ub lr,lr,lr
47.14909 ++	psubs.ub r0,r2,r7
47.14910 ++	psubs.ub lr,r5,r3
47.14911 ++	psubs.ub r6,r7,r9
47.14912 ++	.text
47.14913 ++	.global paddh_ub
47.14914 ++paddh_ub:
47.14915 ++	paddh.ub pc,pc,pc
47.14916 ++	paddh.ub r12,r12,r12
47.14917 ++	paddh.ub r5,r5,r5
47.14918 ++	paddh.ub r4,r4,r4
47.14919 ++	paddh.ub lr,lr,lr
47.14920 ++	paddh.ub lr,r1,r0
47.14921 ++	paddh.ub r2,r7,r7
47.14922 ++	paddh.ub r2,r1,r2
47.14923 ++	.text
47.14924 ++	.global psubh_ub
47.14925 ++psubh_ub:
47.14926 ++	psubh.ub pc,pc,pc
47.14927 ++	psubh.ub r12,r12,r12
47.14928 ++	psubh.ub r5,r5,r5
47.14929 ++	psubh.ub r4,r4,r4
47.14930 ++	psubh.ub lr,lr,lr
47.14931 ++	psubh.ub r0,r1,r6
47.14932 ++	psubh.ub r4,lr,r10
47.14933 ++	psubh.ub r9,r8,r1
47.14934 ++	.text
47.14935 ++	.global pmax_ub
47.14936 ++pmax_ub:
47.14937 ++	pmax.ub pc,pc,pc
47.14938 ++	pmax.ub r12,r12,r12
47.14939 ++	pmax.ub r5,r5,r5
47.14940 ++	pmax.ub r4,r4,r4
47.14941 ++	pmax.ub lr,lr,lr
47.14942 ++	pmax.ub pc,r2,r11
47.14943 ++	pmax.ub r12,r1,r1
47.14944 ++	pmax.ub r5,r2,r0
47.14945 ++	.text
47.14946 ++	.global pmax_sh
47.14947 ++pmax_sh:
47.14948 ++	pmax.sh pc,pc,pc
47.14949 ++	pmax.sh r12,r12,r12
47.14950 ++	pmax.sh r5,r5,r5
47.14951 ++	pmax.sh r4,r4,r4
47.14952 ++	pmax.sh lr,lr,lr
47.14953 ++	pmax.sh lr,r6,r12
47.14954 ++	pmax.sh r2,pc,r5
47.14955 ++	pmax.sh pc,r2,r7
47.14956 ++	.text
47.14957 ++	.global pmin_ub
47.14958 ++pmin_ub:
47.14959 ++	pmin.ub pc,pc,pc
47.14960 ++	pmin.ub r12,r12,r12
47.14961 ++	pmin.ub r5,r5,r5
47.14962 ++	pmin.ub r4,r4,r4
47.14963 ++	pmin.ub lr,lr,lr
47.14964 ++	pmin.ub r8,r1,r5
47.14965 ++	pmin.ub r1,r8,r3
47.14966 ++	pmin.ub r0,r2,r7
47.14967 ++	.text
47.14968 ++	.global pmin_sh
47.14969 ++pmin_sh:
47.14970 ++	pmin.sh pc,pc,pc
47.14971 ++	pmin.sh r12,r12,r12
47.14972 ++	pmin.sh r5,r5,r5
47.14973 ++	pmin.sh r4,r4,r4
47.14974 ++	pmin.sh lr,lr,lr
47.14975 ++	pmin.sh r8,r4,r10
47.14976 ++	pmin.sh lr,r10,r12
47.14977 ++	pmin.sh r2,r6,r2
47.14978 ++	.text
47.14979 ++	.global pavg_ub
47.14980 ++pavg_ub:
47.14981 ++	pavg.ub pc,pc,pc
47.14982 ++	pavg.ub r12,r12,r12
47.14983 ++	pavg.ub r5,r5,r5
47.14984 ++	pavg.ub r4,r4,r4
47.14985 ++	pavg.ub lr,lr,lr
47.14986 ++	pavg.ub r0,r1,r6
47.14987 ++	pavg.ub r8,r3,r6
47.14988 ++	pavg.ub pc,r12,r10
47.14989 ++	.text
47.14990 ++	.global pavg_sh
47.14991 ++pavg_sh:
47.14992 ++	pavg.sh pc,pc,pc
47.14993 ++	pavg.sh r12,r12,r12
47.14994 ++	pavg.sh r5,r5,r5
47.14995 ++	pavg.sh r4,r4,r4
47.14996 ++	pavg.sh lr,lr,lr
47.14997 ++	pavg.sh r9,pc,sp
47.14998 ++	pavg.sh pc,sp,r3
47.14999 ++	pavg.sh r6,r1,r9
47.15000 ++	.text
47.15001 ++	.global pabs_sb
47.15002 ++pabs_sb:
47.15003 ++	pabs.sb pc,pc
47.15004 ++	pabs.sb r12,r12
47.15005 ++	pabs.sb r5,r5
47.15006 ++	pabs.sb r4,r4
47.15007 ++	pabs.sb lr,lr
47.15008 ++	pabs.sb r11,r6
47.15009 ++	pabs.sb lr,r9
47.15010 ++	pabs.sb sp,r7
47.15011 ++	.text
47.15012 ++	.global pabs_sh
47.15013 ++pabs_sh:
47.15014 ++	pabs.sh pc,pc
47.15015 ++	pabs.sh r12,r12
47.15016 ++	pabs.sh r5,r5
47.15017 ++	pabs.sh r4,r4
47.15018 ++	pabs.sh lr,lr
47.15019 ++	pabs.sh pc,r3
47.15020 ++	pabs.sh r5,r7
47.15021 ++	pabs.sh r4,r0
47.15022 ++	.text
47.15023 ++	.global psad
47.15024 ++psad:
47.15025 ++	psad pc,pc,pc
47.15026 ++	psad r12,r12,r12
47.15027 ++	psad r5,r5,r5
47.15028 ++	psad r4,r4,r4
47.15029 ++	psad lr,lr,lr
47.15030 ++	psad r9,r11,r11
47.15031 ++	psad lr,r4,sp
47.15032 ++	psad lr,r4,r5
47.15033 ++	.text
47.15034 ++	.global pasr_b
47.15035 ++pasr_b:
47.15036 ++	pasr.b pc,pc,0
47.15037 ++	pasr.b r12,r12,7
47.15038 ++	pasr.b r5,r5,4
47.15039 ++	pasr.b r4,r4,3
47.15040 ++	pasr.b lr,lr,1
47.15041 ++	pasr.b pc,r7,1
47.15042 ++	pasr.b sp,lr,6
47.15043 ++	pasr.b sp,r3,2
47.15044 ++	.text
47.15045 ++	.global plsl_b
47.15046 ++plsl_b:
47.15047 ++	plsl.b pc,pc,0
47.15048 ++	plsl.b r12,r12,7
47.15049 ++	plsl.b r5,r5,4
47.15050 ++	plsl.b r4,r4,3
47.15051 ++	plsl.b lr,lr,1
47.15052 ++	plsl.b r2,r11,4
47.15053 ++	plsl.b r8,r5,7
47.15054 ++	plsl.b pc,r0,2
47.15055 ++	.text
47.15056 ++	.global plsr_b
47.15057 ++plsr_b:
47.15058 ++	plsr.b pc,pc,0
47.15059 ++	plsr.b r12,r12,7
47.15060 ++	plsr.b r5,r5,4
47.15061 ++	plsr.b r4,r4,3
47.15062 ++	plsr.b lr,lr,1
47.15063 ++	plsr.b r12,r1,2
47.15064 ++	plsr.b r6,pc,7
47.15065 ++	plsr.b r12,r11,2
47.15066 ++	.text
47.15067 ++	.global pasr_h
47.15068 ++pasr_h:
47.15069 ++	pasr.h pc,pc,0
47.15070 ++	pasr.h r12,r12,15
47.15071 ++	pasr.h r5,r5,8
47.15072 ++	pasr.h r4,r4,7
47.15073 ++	pasr.h lr,lr,1
47.15074 ++	pasr.h r0,r11,10
47.15075 ++	pasr.h r4,r6,8
47.15076 ++	pasr.h r6,r2,4
47.15077 ++	.text
47.15078 ++	.global plsl_h
47.15079 ++plsl_h:
47.15080 ++	plsl.h pc,pc,0
47.15081 ++	plsl.h r12,r12,15
47.15082 ++	plsl.h r5,r5,8
47.15083 ++	plsl.h r4,r4,7
47.15084 ++	plsl.h lr,lr,1
47.15085 ++	plsl.h r5,r10,9
47.15086 ++	plsl.h sp,lr,8
47.15087 ++	plsl.h r0,lr,7
47.15088 ++	.text
47.15089 ++	.global plsr_h
47.15090 ++plsr_h:
47.15091 ++	plsr.h pc,pc,0
47.15092 ++	plsr.h r12,r12,15
47.15093 ++	plsr.h r5,r5,8
47.15094 ++	plsr.h r4,r4,7
47.15095 ++	plsr.h lr,lr,1
47.15096 ++	plsr.h r11,r0,15
47.15097 ++	plsr.h lr,r3,3
47.15098 ++	plsr.h r8,lr,10
47.15099 ++	.text
47.15100 ++	.global packw_sh
47.15101 ++packw_sh:
47.15102 ++	packw.sh pc,pc,pc
47.15103 ++	packw.sh r12,r12,r12
47.15104 ++	packw.sh r5,r5,r5
47.15105 ++	packw.sh r4,r4,r4
47.15106 ++	packw.sh lr,lr,lr
47.15107 ++	packw.sh sp,r11,r10
47.15108 ++	packw.sh r8,r2,r12
47.15109 ++	packw.sh r8,r1,r5
47.15110 ++	.text
47.15111 ++	.global punpckub_h
47.15112 ++punpckub_h:
47.15113 ++	punpckub.h pc,pc:b
47.15114 ++	punpckub.h r12,r12:t
47.15115 ++	punpckub.h r5,r5:t
47.15116 ++	punpckub.h r4,r4:b
47.15117 ++	punpckub.h lr,lr:t
47.15118 ++	punpckub.h r6,r1:t
47.15119 ++	punpckub.h lr,r5:b
47.15120 ++	punpckub.h lr,r2:t
47.15121 ++	.text
47.15122 ++	.global punpcksb_h
47.15123 ++punpcksb_h:
47.15124 ++	punpcksb.h pc,pc:b
47.15125 ++	punpcksb.h r12,r12:t
47.15126 ++	punpcksb.h r5,r5:t
47.15127 ++	punpcksb.h r4,r4:b
47.15128 ++	punpcksb.h lr,lr:t
47.15129 ++	punpcksb.h r4,r7:t
47.15130 ++	punpcksb.h r6,lr:b
47.15131 ++	punpcksb.h r12,r12:t
47.15132 ++	.text
47.15133 ++	.global packsh_ub
47.15134 ++packsh_ub:
47.15135 ++	packsh.ub pc,pc,pc
47.15136 ++	packsh.ub r12,r12,r12
47.15137 ++	packsh.ub r5,r5,r5
47.15138 ++	packsh.ub r4,r4,r4
47.15139 ++	packsh.ub lr,lr,lr
47.15140 ++	packsh.ub r3,r6,r3
47.15141 ++	packsh.ub r8,r0,r3
47.15142 ++	packsh.ub r9,r3,lr
47.15143 ++	.text
47.15144 ++	.global packsh_sb
47.15145 ++packsh_sb:
47.15146 ++	packsh.sb pc,pc,pc
47.15147 ++	packsh.sb r12,r12,r12
47.15148 ++	packsh.sb r5,r5,r5
47.15149 ++	packsh.sb r4,r4,r4
47.15150 ++	packsh.sb lr,lr,lr
47.15151 ++	packsh.sb r6,r8,r1
47.15152 ++	packsh.sb lr,r9,r8
47.15153 ++	packsh.sb sp,r6,r6
47.15154 ++	.text
47.15155 ++	.global andl
47.15156 ++andl:
47.15157 ++	andl pc,0
47.15158 ++	andl r12,65535
47.15159 ++	andl r5,32768
47.15160 ++	andl r4,32767
47.15161 ++	andl lr,1
47.15162 ++	andl pc,23128
47.15163 ++	andl r8,47262
47.15164 ++	andl r7,13719
47.15165 ++	.text
47.15166 ++	.global andl_coh
47.15167 ++andl_coh:
47.15168 ++	andl pc,0,COH
47.15169 ++	andl r12,65535,COH
47.15170 ++	andl r5,32768,COH
47.15171 ++	andl r4,32767,COH
47.15172 ++	andl lr,1,COH
47.15173 ++	andl r6,22753,COH
47.15174 ++	andl r0,40653,COH
47.15175 ++	andl r4,48580,COH
47.15176 ++	.text
47.15177 ++	.global andh
47.15178 ++andh:
47.15179 ++	andh pc,0
47.15180 ++	andh r12,65535
47.15181 ++	andh r5,32768
47.15182 ++	andh r4,32767
47.15183 ++	andh lr,1
47.15184 ++	andh r12,52312
47.15185 ++	andh r3,8675
47.15186 ++	andh r2,42987
47.15187 ++	.text
47.15188 ++	.global andh_coh
47.15189 ++andh_coh:
47.15190 ++	andh pc,0,COH
47.15191 ++	andh r12,65535,COH
47.15192 ++	andh r5,32768,COH
47.15193 ++	andh r4,32767,COH
47.15194 ++	andh lr,1,COH
47.15195 ++	andh r11,34317,COH
47.15196 ++	andh r8,52982,COH
47.15197 ++	andh r10,23683,COH
47.15198 ++	.text
47.15199 ++	.global orl
47.15200 ++orl:
47.15201 ++	orl pc,0
47.15202 ++	orl r12,65535
47.15203 ++	orl r5,32768
47.15204 ++	orl r4,32767
47.15205 ++	orl lr,1
47.15206 ++	orl sp,16766
47.15207 ++	orl r0,21181
47.15208 ++	orl pc,44103
47.15209 ++	.text
47.15210 ++	.global orh
47.15211 ++orh:
47.15212 ++	orh pc,0
47.15213 ++	orh r12,65535
47.15214 ++	orh r5,32768
47.15215 ++	orh r4,32767
47.15216 ++	orh lr,1
47.15217 ++	orh r8,28285
47.15218 ++	orh r12,30492
47.15219 ++	orh r1,59930
47.15220 ++	.text
47.15221 ++	.global eorl
47.15222 ++eorl:
47.15223 ++	eorl pc,0
47.15224 ++	eorl r12,65535
47.15225 ++	eorl r5,32768
47.15226 ++	eorl r4,32767
47.15227 ++	eorl lr,1
47.15228 ++	eorl r4,51129
47.15229 ++	eorl r6,64477
47.15230 ++	eorl r1,20913
47.15231 ++	.text
47.15232 ++	.global eorh
47.15233 ++eorh:
47.15234 ++	eorh pc,0
47.15235 ++	eorh r12,65535
47.15236 ++	eorh r5,32768
47.15237 ++	eorh r4,32767
47.15238 ++	eorh lr,1
47.15239 ++	eorh r0,11732
47.15240 ++	eorh r10,38069
47.15241 ++	eorh r9,57130
47.15242 ++	.text
47.15243 ++	.global mcall
47.15244 ++mcall:
47.15245 ++	mcall pc[0]
47.15246 ++	mcall r12[-4]
47.15247 ++	mcall r5[-131072]
47.15248 ++	mcall r4[131068]
47.15249 ++	mcall lr[4]
47.15250 ++	mcall sp[61180]
47.15251 ++	mcall r4[-35000]
47.15252 ++	mcall r0[9924]
47.15253 ++	.text
47.15254 ++	.global pref
47.15255 ++pref:
47.15256 ++	pref pc[0]
47.15257 ++	pref r12[-1]
47.15258 ++	pref r5[-32768]
47.15259 ++	pref r4[32767]
47.15260 ++	pref lr[1]
47.15261 ++	pref r7[7748]
47.15262 ++	pref r7[-7699]
47.15263 ++	pref r2[-25892]
47.15264 ++	.text
47.15265 ++	.global cache
47.15266 ++cache:
47.15267 ++	cache pc[0],0
47.15268 ++	cache r12[-1],31
47.15269 ++	cache r5[-1024],16
47.15270 ++	cache r4[1023],15
47.15271 ++	cache lr[1],1
47.15272 ++	cache r3[-964],17
47.15273 ++	cache r4[-375],22
47.15274 ++	cache r3[-888],17
47.15275 ++	.text
47.15276 ++	.global sub4
47.15277 ++sub4:
47.15278 ++	sub pc,0
47.15279 ++	sub r12,-1
47.15280 ++	sub r5,-1048576
47.15281 ++	sub r4,1048575
47.15282 ++	sub lr,1
47.15283 ++	sub r2,-619156
47.15284 ++	sub lr,461517
47.15285 ++	sub r8,-185051
47.15286 ++	.text
47.15287 ++	.global cp3
47.15288 ++cp3:
47.15289 ++	cp pc,0
47.15290 ++	cp r12,-1
47.15291 ++	cp r5,-1048576
47.15292 ++	cp r4,1048575
47.15293 ++	cp lr,1
47.15294 ++	cp r1,124078
47.15295 ++	cp r0,-378909
47.15296 ++	cp r4,-243180
47.15297 ++	.text
47.15298 ++	.global mov2
47.15299 ++mov2:
47.15300 ++	mov pc,0
47.15301 ++	mov r12,-1
47.15302 ++	mov r5,-1048576
47.15303 ++	mov r4,1048575
47.15304 ++	mov lr,1
47.15305 ++	mov r5,-317021
47.15306 ++	mov sp,-749164
47.15307 ++	mov r5,940179
47.15308 ++	.text
47.15309 ++	.global brc2
47.15310 ++brc2:
47.15311 ++	breq 0
47.15312 ++	bral -2
47.15313 ++	brls -2097152
47.15314 ++	brpl 2097150
47.15315 ++	brne 2
47.15316 ++	brhi -1796966
47.15317 ++	brqs 1321368
47.15318 ++	brls -577434
47.15319 ++	.text
47.15320 ++	.global rcall2
47.15321 ++rcall2:
47.15322 ++	rcall 0
47.15323 ++	rcall -2
47.15324 ++	rcall -2097152
47.15325 ++	rcall 2097150
47.15326 ++	rcall 2
47.15327 ++	rcall 496820
47.15328 ++	rcall 1085092
47.15329 ++	rcall -1058
47.15330 ++	.text
47.15331 ++	.global sub5
47.15332 ++sub5:
47.15333 ++	sub pc,pc,0
47.15334 ++	sub r12,r12,-1
47.15335 ++	sub r5,r5,-32768
47.15336 ++	sub r4,r4,32767
47.15337 ++	sub lr,lr,1
47.15338 ++	sub pc,pc,-12744
47.15339 ++	sub r7,r7,-27365
47.15340 ++	sub r2,r9,-17358
47.15341 ++	.text
47.15342 ++	.global satsub_w2
47.15343 ++satsub_w2:
47.15344 ++	satsub.w pc,pc,0
47.15345 ++	satsub.w r12,r12,-1
47.15346 ++	satsub.w r5,r5,-32768
47.15347 ++	satsub.w r4,r4,32767
47.15348 ++	satsub.w lr,lr,1
47.15349 ++	satsub.w r2,lr,-2007
47.15350 ++	satsub.w r7,r12,-784
47.15351 ++	satsub.w r4,r7,23180
47.15352 ++	.text
47.15353 ++	.global ld_d4
47.15354 ++ld_d4:
47.15355 ++	ld.d r0,pc[0]
47.15356 ++	ld.d r14,r12[-1]
47.15357 ++	ld.d r8,r5[-32768]
47.15358 ++	ld.d r6,r4[32767]
47.15359 ++	ld.d r2,lr[1]
47.15360 ++	ld.d r14,r11[14784]
47.15361 ++	ld.d r6,r9[-18905]
47.15362 ++	ld.d r2,r3[-6355]
47.15363 ++	.text
47.15364 ++	.global ld_w4
47.15365 ++ld_w4:
47.15366 ++	ld.w pc,pc[0]
47.15367 ++	ld.w r12,r12[-1]
47.15368 ++	ld.w r5,r5[-32768]
47.15369 ++	ld.w r4,r4[32767]
47.15370 ++	ld.w lr,lr[1]
47.15371 ++	ld.w r0,r12[-22133]
47.15372 ++	ld.w sp,pc[-20521]
47.15373 ++	/* ld.w r3,r5[29035] */
47.15374 ++	nop
47.15375 ++	.text
47.15376 ++	.global ld_sh4
47.15377 ++ld_sh4:
47.15378 ++	ld.sh pc,pc[0]
47.15379 ++	ld.sh r12,r12[-1]
47.15380 ++	ld.sh r5,r5[-32768]
47.15381 ++	ld.sh r4,r4[32767]
47.15382 ++	ld.sh lr,lr[1]
47.15383 ++	ld.sh r6,r10[30930]
47.15384 ++	ld.sh r6,r10[21973]
47.15385 ++	/* ld.sh r11,r10[-2058] */
47.15386 ++	nop
47.15387 ++	.text
47.15388 ++	.global ld_uh4
47.15389 ++ld_uh4:
47.15390 ++	ld.uh pc,pc[0]
47.15391 ++	ld.uh r12,r12[-1]
47.15392 ++	ld.uh r5,r5[-32768]
47.15393 ++	ld.uh r4,r4[32767]
47.15394 ++	ld.uh lr,lr[1]
47.15395 ++	ld.uh r1,r9[-13354]
47.15396 ++	ld.uh lr,r11[21337]
47.15397 ++	/* ld.uh r2,lr[-25370] */
47.15398 ++	nop
47.15399 ++	.text
47.15400 ++	.global ld_sb1
47.15401 ++ld_sb1:
47.15402 ++	ld.sb pc,pc[0]
47.15403 ++	ld.sb r12,r12[-1]
47.15404 ++	ld.sb r5,r5[-32768]
47.15405 ++	ld.sb r4,r4[32767]
47.15406 ++	ld.sb lr,lr[1]
47.15407 ++	ld.sb r7,sp[-28663]
47.15408 ++	ld.sb r2,r1[-5879]
47.15409 ++	ld.sb r12,r3[18734]
47.15410 ++	.text
47.15411 ++	.global ld_ub4
47.15412 ++ld_ub4:
47.15413 ++	ld.ub pc,pc[0]
47.15414 ++	ld.ub r12,r12[-1]
47.15415 ++	ld.ub r5,r5[-32768]
47.15416 ++	ld.ub r4,r4[32767]
47.15417 ++	ld.ub lr,lr[1]
47.15418 ++	ld.ub pc,r4[8277]
47.15419 ++	ld.ub r5,r12[19172]
47.15420 ++	ld.ub r10,lr[26347]
47.15421 ++	.text
47.15422 ++	.global st_d4
47.15423 ++st_d4:
47.15424 ++	st.d pc[0],r0
47.15425 ++	st.d r12[-1],r14
47.15426 ++	st.d r5[-32768],r8
47.15427 ++	st.d r4[32767],r6
47.15428 ++	st.d lr[1],r2
47.15429 ++	st.d r5[13200],r10
47.15430 ++	st.d r5[9352],r10
47.15431 ++	st.d r5[32373],r4
47.15432 ++	.text
47.15433 ++	.global st_w4
47.15434 ++st_w4:
47.15435 ++	st.w pc[0],pc
47.15436 ++	st.w r12[-1],r12
47.15437 ++	st.w r5[-32768],r5
47.15438 ++	st.w r4[32767],r4
47.15439 ++	st.w lr[1],lr
47.15440 ++	st.w sp[6136],r7
47.15441 ++	st.w r6[27087],r12
47.15442 ++	/* st.w r3[20143],r7 */
47.15443 ++	nop
47.15444 ++	.text
47.15445 ++	.global st_h4
47.15446 ++st_h4:
47.15447 ++	st.h pc[0],pc
47.15448 ++	st.h r12[-1],r12
47.15449 ++	st.h r5[-32768],r5
47.15450 ++	st.h r4[32767],r4
47.15451 ++	st.h lr[1],lr
47.15452 ++	st.h r4[-9962],r7
47.15453 ++	st.h r9[-16250],r3
47.15454 ++	/* st.h r8[-28810],r7 */
47.15455 ++	nop
47.15456 ++	.text
47.15457 ++	.global st_b4
47.15458 ++st_b4:
47.15459 ++	st.b pc[0],pc
47.15460 ++	st.b r12[-1],r12
47.15461 ++	st.b r5[-32768],r5
47.15462 ++	st.b r4[32767],r4
47.15463 ++	st.b lr[1],lr
47.15464 ++	st.b r12[30102],r6
47.15465 ++	st.b r5[28977],r1
47.15466 ++	st.b r0[5470],r1
47.15467 ++	.text
47.15468 ++	.global mfsr
47.15469 ++mfsr:
47.15470 ++	mfsr pc,0
47.15471 ++	mfsr r12,1020
47.15472 ++	mfsr r5,512
47.15473 ++	mfsr r4,508
47.15474 ++	mfsr lr,4
47.15475 ++	mfsr r2,696
47.15476 ++	mfsr r4,260
47.15477 ++	mfsr r10,1016
47.15478 ++	.text
47.15479 ++	.global mtsr
47.15480 ++mtsr:
47.15481 ++	mtsr 0,pc
47.15482 ++	mtsr 1020,r12
47.15483 ++	mtsr 512,r5
47.15484 ++	mtsr 508,r4
47.15485 ++	mtsr 4,lr
47.15486 ++	mtsr 224,r10
47.15487 ++	mtsr 836,r12
47.15488 ++	mtsr 304,r9
47.15489 ++	.text
47.15490 ++	.global mfdr
47.15491 ++mfdr:
47.15492 ++	mfdr pc,0
47.15493 ++	mfdr r12,1020
47.15494 ++	mfdr r5,512
47.15495 ++	mfdr r4,508
47.15496 ++	mfdr lr,4
47.15497 ++	mfdr r6,932
47.15498 ++	mfdr r5,36
47.15499 ++	mfdr r9,300
47.15500 ++	.text
47.15501 ++	.global mtdr
47.15502 ++mtdr:
47.15503 ++	mtdr 0,pc
47.15504 ++	mtdr 1020,r12
47.15505 ++	mtdr 512,r5
47.15506 ++	mtdr 508,r4
47.15507 ++	mtdr 4,lr
47.15508 ++	mtdr 180,r8
47.15509 ++	mtdr 720,r10
47.15510 ++	mtdr 408,lr
47.15511 ++	.text
47.15512 ++	.global sleep
47.15513 ++sleep:
47.15514 ++	sleep 0
47.15515 ++	sleep 255
47.15516 ++	sleep 128
47.15517 ++	sleep 127
47.15518 ++	sleep 1
47.15519 ++	sleep 254
47.15520 ++	sleep 15
47.15521 ++	sleep 43
47.15522 ++	.text
47.15523 ++	.global sync
47.15524 ++sync:
47.15525 ++	sync 0
47.15526 ++	sync 255
47.15527 ++	sync 128
47.15528 ++	sync 127
47.15529 ++	sync 1
47.15530 ++	sync 166
47.15531 ++	sync 230
47.15532 ++	sync 180
47.15533 ++	.text
47.15534 ++	.global bld
47.15535 ++bld:
47.15536 ++	bld pc,0
47.15537 ++	bld r12,31
47.15538 ++	bld r5,16
47.15539 ++	bld r4,15
47.15540 ++	bld lr,1
47.15541 ++	bld r9,15
47.15542 ++	bld r0,4
47.15543 ++	bld lr,26
47.15544 ++	.text
47.15545 ++	.global bst
47.15546 ++bst:
47.15547 ++	bst pc,0
47.15548 ++	bst r12,31
47.15549 ++	bst r5,16
47.15550 ++	bst r4,15
47.15551 ++	bst lr,1
47.15552 ++	bst r10,28
47.15553 ++	bst r0,3
47.15554 ++	bst sp,2
47.15555 ++	.text
47.15556 ++	.global sats
47.15557 ++sats:
47.15558 ++	sats pc>>0,0
47.15559 ++	sats r12>>31,31
47.15560 ++	sats r5>>16,16
47.15561 ++	sats r4>>15,15
47.15562 ++	sats lr>>1,1
47.15563 ++	sats r10>>3,19
47.15564 ++	sats r10>>2,26
47.15565 ++	sats r1>>20,1
47.15566 ++	.text
47.15567 ++	.global satu
47.15568 ++satu:
47.15569 ++	satu pc>>0,0
47.15570 ++	satu r12>>31,31
47.15571 ++	satu r5>>16,16
47.15572 ++	satu r4>>15,15
47.15573 ++	satu lr>>1,1
47.15574 ++	satu pc>>5,7
47.15575 ++	satu r7>>5,5
47.15576 ++	satu r2>>26,19
47.15577 ++	.text
47.15578 ++	.global satrnds
47.15579 ++satrnds:
47.15580 ++	satrnds pc>>0,0
47.15581 ++	satrnds r12>>31,31
47.15582 ++	satrnds r5>>16,16
47.15583 ++	satrnds r4>>15,15
47.15584 ++	satrnds lr>>1,1
47.15585 ++	satrnds r0>>21,19
47.15586 ++	satrnds sp>>0,2
47.15587 ++	satrnds r7>>6,29
47.15588 ++	.text
47.15589 ++	.global satrndu
47.15590 ++satrndu:
47.15591 ++	satrndu pc>>0,0
47.15592 ++	satrndu r12>>31,31
47.15593 ++	satrndu r5>>16,16
47.15594 ++	satrndu r4>>15,15
47.15595 ++	satrndu lr>>1,1
47.15596 ++	satrndu r12>>0,26
47.15597 ++	satrndu r4>>21,3
47.15598 ++	satrndu r10>>3,16
47.15599 ++	.text
47.15600 ++	.global subfc
47.15601 ++subfc:
47.15602 ++	subfeq pc,0
47.15603 ++	subfal r12,-1
47.15604 ++	subfls r5,-128
47.15605 ++	subfpl r4,127
47.15606 ++	subfne lr,1
47.15607 ++	subfls r10,8
47.15608 ++	subfvc r11,99
47.15609 ++	subfvs r2,73
47.15610 ++	.text
47.15611 ++	.global subc
47.15612 ++subc:
47.15613 ++	subeq pc,0
47.15614 ++	subal r12,-1
47.15615 ++	subls r5,-128
47.15616 ++	subpl r4,127
47.15617 ++	subne lr,1
47.15618 ++	subls r12,118
47.15619 ++	subvc lr,-12
47.15620 ++	submi r4,-13
47.15621 ++	.text
47.15622 ++	.global movc2
47.15623 ++movc2:
47.15624 ++	moveq pc,0
47.15625 ++	moval r12,-1
47.15626 ++	movls r5,-128
47.15627 ++	movpl r4,127
47.15628 ++	movne lr,1
47.15629 ++	movlt r3,-122
47.15630 ++	movvc r8,2
47.15631 ++	movne r7,-111
47.15632 ++	.text
47.15633 ++	.global cp_b
47.15634 ++cp_b:
47.15635 ++	cp.b pc,r0
47.15636 ++	cp.b r0,pc
47.15637 ++	cp.b r7,r8
47.15638 ++	cp.b r8,r7
47.15639 ++	.text
47.15640 ++	.global cp_h
47.15641 ++cp_h:
47.15642 ++	cp.h pc,r0
47.15643 ++	cp.h r0,pc
47.15644 ++	cp.h r7,r8
47.15645 ++	cp.h r8,r7
47.15646 ++	.text
47.15647 ++	.global ldm
47.15648 ++ldm:
47.15649 ++	ldm pc,r1-r6
47.15650 ++	ldm r12,r0-r15
47.15651 ++	ldm r5,r15
47.15652 ++	ldm r4,r0-r14
47.15653 ++	ldm lr,r0
47.15654 ++	ldm r9,r1,r5,r14
47.15655 ++	ldm r11,r2-r3,r5-r8,r15
47.15656 ++	ldm r6,r0,r3,r9,r13,r15
47.15657 ++	.text
47.15658 ++	.global ldm_pu
47.15659 ++ldm_pu:
47.15660 ++	ldm pc++,r6-r9
47.15661 ++	ldm r12++,r0-r15
47.15662 ++	ldm r5++,r15
47.15663 ++	ldm r4++,r0-r14
47.15664 ++	ldm lr++,r0
47.15665 ++	ldm r12++,r3-r5,r8,r10,r12,r14-r15
47.15666 ++	ldm r10++,r2,r4-r6,r14-r15
47.15667 ++	ldm r6++,r1,r3-r4,r9-r14
47.15668 ++	.text
47.15669 ++	.global ldmts
47.15670 ++ldmts:
47.15671 ++	ldmts pc,r7-r8
47.15672 ++	ldmts r12,r0-r15
47.15673 ++	ldmts r5,r15
47.15674 ++	ldmts r4,r0-r14
47.15675 ++	ldmts lr,r0
47.15676 ++	ldmts r0,r1-r2,r11-r12
47.15677 ++	ldmts lr,r0-r2,r4,r7-r8,r13-r14
47.15678 ++	ldmts r12,r0-r1,r3-r5,r9,r14-r15
47.15679 ++	.text
47.15680 ++	.global ldmts_pu
47.15681 ++ldmts_pu:
47.15682 ++	ldmts pc++,r9
47.15683 ++	ldmts r12++,r0-r15
47.15684 ++	ldmts r5++,r15
47.15685 ++	ldmts r4++,r0-r14
47.15686 ++	ldmts lr++,r0
47.15687 ++	ldmts sp++,r0,r2-r5,r7,r9,r11
47.15688 ++	ldmts r5++,r1-r3,r7,r10-r11
47.15689 ++	ldmts r8++,r2-r4,r7-r8,r13,r15
47.15690 ++	.text
47.15691 ++	.global stm
47.15692 ++stm:
47.15693 ++	stm pc,r7
47.15694 ++	stm r12,r0-r15
47.15695 ++	stm r5,r15
47.15696 ++	stm r4,r0-r14
47.15697 ++	stm lr,r0
47.15698 ++	stm sp,r2-r3,r5,r8,r11,r14
47.15699 ++	stm r4,r0-r4,r6,r10-r11,r14
47.15700 ++	stm r9,r1,r5,r9,r12-r15
47.15701 ++	.text
47.15702 ++	.global stm_pu
47.15703 ++stm_pu:
47.15704 ++	stm --pc,r4-r6
47.15705 ++	stm --r12,r0-r15
47.15706 ++	stm --r5,r15
47.15707 ++	stm --r4,r0-r14
47.15708 ++	stm --lr,r0
47.15709 ++	stm --r11,r0,r4-r9,r11-r15
47.15710 ++	stm --r11,r0,r3,r9-r10,r12,r14
47.15711 ++	stm --r6,r2,r8-r9,r13-r14
47.15712 ++	.text
47.15713 ++	.global stmts
47.15714 ++stmts:
47.15715 ++	stmts pc,r8
47.15716 ++	stmts r12,r0-r15
47.15717 ++	stmts r5,r15
47.15718 ++	stmts r4,r0-r14
47.15719 ++	stmts lr,r0
47.15720 ++	stmts r1,r0-r1,r3-r4,r6,r9-r10,r14-r15
47.15721 ++	stmts r3,r0,r6-r8,r10-r12
47.15722 ++	stmts r11,r0,r4,r6-r7,r9-r10,r12,r14-r15
47.15723 ++	.text
47.15724 ++	.global stmts_pu
47.15725 ++stmts_pu:
47.15726 ++	stmts --pc,r6-r8
47.15727 ++	stmts --r12,r0-r15
47.15728 ++	stmts --r5,r15
47.15729 ++	stmts --r4,r0-r14
47.15730 ++	stmts --lr,r0
47.15731 ++	stmts --r2,r0,r3-r4,r9-r10,r12-r13
47.15732 ++	stmts --r3,r0-r1,r14-r15
47.15733 ++	stmts --r0,r0,r2-r6,r10,r14
47.15734 ++	.text
47.15735 ++	.global ldins_h
47.15736 ++ldins_h:
47.15737 ++	ldins.h pc:b,pc[0]
47.15738 ++	ldins.h r12:t,r12[-2]
47.15739 ++	ldins.h r5:t,r5[-4096]
47.15740 ++	ldins.h r4:b,r4[4094]
47.15741 ++	ldins.h lr:t,lr[2]
47.15742 ++	ldins.h r0:t,lr[1930]
47.15743 ++	ldins.h r3:b,r7[-534]
47.15744 ++	ldins.h r2:b,r12[-2252]
47.15745 ++	.text
47.15746 ++	.global ldins_b
47.15747 ++ldins_b:
47.15748 ++	ldins.b pc:b,pc[0]
47.15749 ++	ldins.b r12:t,r12[-1]
47.15750 ++	ldins.b r5:u,r5[-2048]
47.15751 ++	ldins.b r4:l,r4[2047]
47.15752 ++	ldins.b lr:l,lr[1]
47.15753 ++	ldins.b r6:t,r4[-662]
47.15754 ++	ldins.b r5:b,r1[-151]
47.15755 ++	ldins.b r10:t,r11[-1923]
47.15756 ++	.text
47.15757 ++	.global ldswp_sh
47.15758 ++ldswp_sh:
47.15759 ++	ldswp.sh pc,pc[0]
47.15760 ++	ldswp.sh r12,r12[-2]
47.15761 ++	ldswp.sh r5,r5[-4096]
47.15762 ++	ldswp.sh r4,r4[4094]
47.15763 ++	ldswp.sh lr,lr[2]
47.15764 ++	ldswp.sh r9,r10[3848]
47.15765 ++	ldswp.sh r4,r12[-2040]
47.15766 ++	ldswp.sh r10,r2[3088]
47.15767 ++	.text
47.15768 ++	.global ldswp_uh
47.15769 ++ldswp_uh:
47.15770 ++	ldswp.uh pc,pc[0]
47.15771 ++	ldswp.uh r12,r12[-2]
47.15772 ++	ldswp.uh r5,r5[-4096]
47.15773 ++	ldswp.uh r4,r4[4094]
47.15774 ++	ldswp.uh lr,lr[2]
47.15775 ++	ldswp.uh r4,r9[3724]
47.15776 ++	ldswp.uh lr,sp[-1672]
47.15777 ++	ldswp.uh r8,r12[-3846]
47.15778 ++	.text
47.15779 ++	.global ldswp_w
47.15780 ++ldswp_w:
47.15781 ++	ldswp.w pc,pc[0]
47.15782 ++	ldswp.w r12,r12[-4]
47.15783 ++	ldswp.w r5,r5[-8192]
47.15784 ++	ldswp.w r4,r4[8188]
47.15785 ++	ldswp.w lr,lr[4]
47.15786 ++	ldswp.w sp,r7[1860]
47.15787 ++	ldswp.w pc,r5[-3324]
47.15788 ++	ldswp.w r12,r10[-3296]
47.15789 ++	.text
47.15790 ++	.global stswp_h
47.15791 ++stswp_h:
47.15792 ++	stswp.h pc[0],pc
47.15793 ++	stswp.h r12[-2],r12
47.15794 ++	stswp.h r5[-4096],r5
47.15795 ++	stswp.h r4[4094],r4
47.15796 ++	stswp.h lr[2],lr
47.15797 ++	stswp.h r7[64],r10
47.15798 ++	stswp.h r10[3024],r2
47.15799 ++	stswp.h r0[-2328],r10
47.15800 ++	.text
47.15801 ++	.global stswp_w
47.15802 ++stswp_w:
47.15803 ++	stswp.w pc[0],pc
47.15804 ++	stswp.w r12[-4],r12
47.15805 ++	stswp.w r5[-8192],r5
47.15806 ++	stswp.w r4[8188],r4
47.15807 ++	stswp.w lr[4],lr
47.15808 ++	stswp.w pc[1156],r8
47.15809 ++	stswp.w sp[7992],r10
47.15810 ++	stswp.w r8[-1172],r5
47.15811 ++	.text
47.15812 ++	.global and2
47.15813 ++and2:
47.15814 ++	and pc,pc,pc<<0
47.15815 ++	and r12,r12,r12<<31
47.15816 ++	and r5,r5,r5<<16
47.15817 ++	and r4,r4,r4<<15
47.15818 ++	and lr,lr,lr<<1
47.15819 ++	and r10,r2,r1<<1
47.15820 ++	and r12,r8,r11<<27
47.15821 ++	and r10,r7,r0<<3
47.15822 ++	.text
47.15823 ++	.global and3
47.15824 ++and3:
47.15825 ++	and pc,pc,pc>>0
47.15826 ++	and r12,r12,r12>>31
47.15827 ++	and r5,r5,r5>>16
47.15828 ++	and r4,r4,r4>>15
47.15829 ++	and lr,lr,lr>>1
47.15830 ++	and r12,r8,r7>>17
47.15831 ++	and pc,r4,r9>>20
47.15832 ++	and r10,r9,r10>>12
47.15833 ++	.text
47.15834 ++	.global or2
47.15835 ++or2:
47.15836 ++	or pc,pc,pc<<0
47.15837 ++	or r12,r12,r12<<31
47.15838 ++	or r5,r5,r5<<16
47.15839 ++	or r4,r4,r4<<15
47.15840 ++	or lr,lr,lr<<1
47.15841 ++	or r8,sp,r11<<29
47.15842 ++	or pc,r9,r2<<28
47.15843 ++	or r5,r1,r2<<3
47.15844 ++	.text
47.15845 ++	.global or3
47.15846 ++or3:
47.15847 ++	or pc,pc,pc>>0
47.15848 ++	or r12,r12,r12>>31
47.15849 ++	or r5,r5,r5>>16
47.15850 ++	or r4,r4,r4>>15
47.15851 ++	or lr,lr,lr>>1
47.15852 ++	or r1,sp,sp>>2
47.15853 ++	or r0,r1,r1>>29
47.15854 ++	or r4,r12,r8>>8
47.15855 ++	.text
47.15856 ++	.global eor2
47.15857 ++eor2:
47.15858 ++	eor pc,pc,pc<<0
47.15859 ++	eor r12,r12,r12<<31
47.15860 ++	eor r5,r5,r5<<16
47.15861 ++	eor r4,r4,r4<<15
47.15862 ++	eor lr,lr,lr<<1
47.15863 ++	eor r10,r9,r4<<11
47.15864 ++	eor r4,r0,r1<<31
47.15865 ++	eor r6,r2,r12<<13
47.15866 ++	.text
47.15867 ++	.global eor3
47.15868 ++eor3:
47.15869 ++	eor pc,pc,pc>>0
47.15870 ++	eor r12,r12,r12>>31
47.15871 ++	eor r5,r5,r5>>16
47.15872 ++	eor r4,r4,r4>>15
47.15873 ++	eor lr,lr,lr>>1
47.15874 ++	eor r5,r5,r5>>22
47.15875 ++	eor r10,r1,lr>>3
47.15876 ++	eor r7,lr,sp>>26
47.15877 ++	.text
47.15878 ++	.global sthh_w2
47.15879 ++sthh_w2:
47.15880 ++	sthh.w pc[pc<<0],pc:b,pc:b
47.15881 ++	sthh.w r12[r12<<3],r12:t,r12:t
47.15882 ++	sthh.w r5[r5<<2],r5:t,r5:t
47.15883 ++	sthh.w r4[r4<<1],r4:b,r4:b
47.15884 ++	sthh.w lr[lr<<1],lr:t,lr:t
47.15885 ++	sthh.w sp[r6<<3],r1:t,r12:t
47.15886 ++	sthh.w r6[r6<<0],r9:t,r9:t
47.15887 ++	sthh.w r10[r3<<0],r0:b,r11:t
47.15888 ++	.text
47.15889 ++	.global sthh_w1
47.15890 ++sthh_w1:
47.15891 ++	sthh.w pc[0],pc:b,pc:b
47.15892 ++	sthh.w r12[1020],r12:t,r12:t
47.15893 ++	sthh.w r5[512],r5:t,r5:t
47.15894 ++	sthh.w r4[508],r4:b,r4:b
47.15895 ++	sthh.w lr[4],lr:t,lr:t
47.15896 ++	sthh.w r4[404],r9:t,r0:b
47.15897 ++	sthh.w r8[348],r2:t,r10:b
47.15898 ++	sthh.w sp[172],r9:b,r2:b
47.15899 ++	.text
47.15900 ++	.global cop
47.15901 ++cop:
47.15902 ++	cop cp0,cr0,cr0,cr0,0
47.15903 ++	cop cp7,cr15,cr15,cr15,0x7f
47.15904 ++	cop cp3,cr5,cr5,cr5,0x31
47.15905 ++	cop cp2,cr4,cr4,cr4,0x30
47.15906 ++	cop cp5,cr8,cr3,cr7,0x5a
47.15907 ++	.text
47.15908 ++	.global ldc_w1
47.15909 ++ldc_w1:
47.15910 ++	ldc.w cp0,cr0,r0[0]
47.15911 ++	ldc.w cp7,cr15,pc[255<<2]
47.15912 ++	ldc.w cp3,cr5,r5[128<<2]
47.15913 ++	ldc.w cp2,cr4,r4[127<<2]
47.15914 ++	ldc.w cp4,cr9,r13[36<<2]
47.15915 ++	.text
47.15916 ++	.global ldc_w2
47.15917 ++ldc_w2:
47.15918 ++	ldc.w cp0,cr0,--r0
47.15919 ++	ldc.w cp7,cr15,--pc
47.15920 ++	ldc.w cp3,cr5,--r5
47.15921 ++	ldc.w cp2,cr4,--r4
47.15922 ++	ldc.w cp4,cr9,--r13
47.15923 ++	.text
47.15924 ++	.global ldc_w3
47.15925 ++ldc_w3:
47.15926 ++	ldc.w cp0,cr0,r0[r0]
47.15927 ++	ldc.w cp7,cr15,pc[pc<<3]
47.15928 ++	ldc.w cp3,cr5,r5[r4<<2]
47.15929 ++	ldc.w cp2,cr4,r4[r3<<1]
47.15930 ++	ldc.w cp4,cr9,r13[r12<<0]
47.15931 ++	.text
47.15932 ++	.global ldc_d1
47.15933 ++ldc_d1:
47.15934 ++	ldc.d cp0,cr0,r0[0]
47.15935 ++	ldc.d cp7,cr14,pc[255<<2]
47.15936 ++	ldc.d cp3,cr6,r5[128<<2]
47.15937 ++	ldc.d cp2,cr4,r4[127<<2]
47.15938 ++	ldc.d cp4,cr8,r13[36<<2]
47.15939 ++	.text
47.15940 ++	.global ldc_d2
47.15941 ++ldc_d2:
47.15942 ++	ldc.d cp0,cr0,--r0
47.15943 ++	ldc.d cp7,cr14,--pc
47.15944 ++	ldc.d cp3,cr6,--r5
47.15945 ++	ldc.d cp2,cr4,--r4
47.15946 ++	ldc.d cp4,cr8,--r13
47.15947 ++	.text
47.15948 ++	.global ldc_d3
47.15949 ++ldc_d3:
47.15950 ++	ldc.d cp0,cr0,r0[r0]
47.15951 ++	ldc.d cp7,cr14,pc[pc<<3]
47.15952 ++	ldc.d cp3,cr6,r5[r4<<2]
47.15953 ++	ldc.d cp2,cr4,r4[r3<<1]
47.15954 ++	ldc.d cp4,cr8,r13[r12<<0]
47.15955 ++	.text
47.15956 ++	.global stc_w1
47.15957 ++stc_w1:
47.15958 ++	stc.w cp0,r0[0],cr0
47.15959 ++	stc.w cp7,pc[255<<2],cr15
47.15960 ++	stc.w cp3,r5[128<<2],cr5
47.15961 ++	stc.w cp2,r4[127<<2],cr4
47.15962 ++	stc.w cp4,r13[36<<2],cr9
47.15963 ++	.text
47.15964 ++	.global stc_w2
47.15965 ++stc_w2:
47.15966 ++	stc.w cp0,r0++,cr0
47.15967 ++	stc.w cp7,pc++,cr15
47.15968 ++	stc.w cp3,r5++,cr5
47.15969 ++	stc.w cp2,r4++,cr4
47.15970 ++	stc.w cp4,r13++,cr9
47.15971 ++	.text
47.15972 ++	.global stc_w3
47.15973 ++stc_w3:
47.15974 ++	stc.w cp0,r0[r0],cr0
47.15975 ++	stc.w cp7,pc[pc<<3],cr15
47.15976 ++	stc.w cp3,r5[r4<<2],cr5
47.15977 ++	stc.w cp2,r4[r3<<1],cr4
47.15978 ++	stc.w cp4,r13[r12<<0],cr9
47.15979 ++	.text
47.15980 ++	.global stc_d1
47.15981 ++stc_d1:
47.15982 ++	stc.d cp0,r0[0],cr0
47.15983 ++	stc.d cp7,pc[255<<2],cr14
47.15984 ++	stc.d cp3,r5[128<<2],cr6
47.15985 ++	stc.d cp2,r4[127<<2],cr4
47.15986 ++	stc.d cp4,r13[36<<2],cr8
47.15987 ++	.text
47.15988 ++	.global stc_d2
47.15989 ++stc_d2:
47.15990 ++	stc.d cp0,r0++,cr0
47.15991 ++	stc.d cp7,pc++,cr14
47.15992 ++	stc.d cp3,r5++,cr6
47.15993 ++	stc.d cp2,r4++,cr4
47.15994 ++	stc.d cp4,r13++,cr8
47.15995 ++	.text
47.15996 ++	.global stc_d3
47.15997 ++stc_d3:
47.15998 ++	stc.d cp0,r0[r0],cr0
47.15999 ++	stc.d cp7,pc[pc<<3],cr14
47.16000 ++	stc.d cp3,r5[r4<<2],cr6
47.16001 ++	stc.d cp2,r4[r3<<1],cr4
47.16002 ++	stc.d cp4,r13[r12<<0],cr8
47.16003 ++	.text
47.16004 ++	.global ldc0_w
47.16005 ++ldc0_w:
47.16006 ++	ldc0.w cr0,r0[0]
47.16007 ++	ldc0.w cr15,pc[4095<<2]
47.16008 ++	ldc0.w cr5,r5[2048<<2]
47.16009 ++	ldc0.w cr4,r4[2047<<2]
47.16010 ++	ldc0.w cr9,r13[147<<2]
47.16011 ++	.text
47.16012 ++	.global ldc0_d
47.16013 ++ldc0_d:
47.16014 ++	ldc0.d cr0,r0[0]
47.16015 ++	ldc0.d cr14,pc[4095<<2]
47.16016 ++	ldc0.d cr6,r5[2048<<2]
47.16017 ++	ldc0.d cr4,r4[2047<<2]
47.16018 ++	ldc0.d cr8,r13[147<<2]
47.16019 ++	.text
47.16020 ++	.global stc0_w
47.16021 ++stc0_w:
47.16022 ++	stc0.w r0[0],cr0
47.16023 ++	stc0.w pc[4095<<2],cr15
47.16024 ++	stc0.w r5[2048<<2],cr5
47.16025 ++	stc0.w r4[2047<<2],cr4
47.16026 ++	stc0.w r13[147<<2],cr9
47.16027 ++	.text
47.16028 ++	.global stc0_d
47.16029 ++stc0_d:
47.16030 ++	stc0.d r0[0],cr0
47.16031 ++	stc0.d pc[4095<<2],cr14
47.16032 ++	stc0.d r5[2048<<2],cr6
47.16033 ++	stc0.d r4[2047<<2],cr4
47.16034 ++	stc0.d r13[147<<2],cr8
47.16035 ++	.text
47.16036 ++	.global memc
47.16037 ++memc:
47.16038 ++	memc 0, 0
47.16039 ++	memc -4, 31
47.16040 ++	memc -65536, 16
47.16041 ++	memc 65532, 15
47.16042 ++	.text
47.16043 ++	.global mems
47.16044 ++mems:
47.16045 ++	mems 0, 0
47.16046 ++	mems -4, 31
47.16047 ++	mems -65536, 16
47.16048 ++	mems 65532, 15
47.16049 ++	.text
47.16050 ++	.global memt
47.16051 ++memt:
47.16052 ++	memt 0, 0
47.16053 ++	memt -4, 31
47.16054 ++	memt -65536, 16
47.16055 ++	memt 65532, 15
47.16056 ++
47.16057 ++	.text
47.16058 ++	.global stcond
47.16059 ++stcond:
47.16060 ++	stcond r0[0], r0
47.16061 ++	stcond pc[-1], pc
47.16062 ++	stcond r8[-32768], r7
47.16063 ++	stcond r7[32767], r8
47.16064 ++	stcond r5[0x1234], r10
47.16065 ++
47.16066 ++ldcm_w:
47.16067 ++	ldcm.w cp0,pc,cr0-cr7
47.16068 ++	ldcm.w cp7,r0,cr0
47.16069 ++	ldcm.w cp4,r4++,cr0-cr6
47.16070 ++	ldcm.w cp3,r7,cr7
47.16071 ++	ldcm.w cp1,r12++,cr1,cr4-cr6
47.16072 ++	ldcm.w cp0,pc,cr8-cr15
47.16073 ++	ldcm.w cp7,r0,cr8
47.16074 ++	ldcm.w cp4,r4++,cr8-cr14
47.16075 ++	ldcm.w cp3,r7,cr15
47.16076 ++	ldcm.w cp1,r12++,cr9,cr12-cr14
47.16077 ++
47.16078 ++ldcm_d:
47.16079 ++	ldcm.d cp0,pc,cr0-cr15
47.16080 ++	ldcm.d cp7,r0,cr0,cr1
47.16081 ++	ldcm.d cp4,r4++,cr0-cr13
47.16082 ++	ldcm.d cp3,r7,cr14-cr15
47.16083 ++	ldcm.d cp2,r12++,cr0-cr3,cr8-cr9,cr14-cr15
47.16084 ++
47.16085 ++stcm_w:
47.16086 ++	stcm.w cp0,pc,cr0-cr7
47.16087 ++	stcm.w cp7,r0,cr0
47.16088 ++	stcm.w cp4,--r4,cr0-cr6
47.16089 ++	stcm.w cp3,r7,cr7
47.16090 ++	stcm.w cp1,--r12,cr1,cr4-cr6
47.16091 ++	stcm.w cp0,pc,cr8-cr15
47.16092 ++	stcm.w cp7,r0,cr8
47.16093 ++	stcm.w cp4,--r4,cr8-cr14
47.16094 ++	stcm.w cp3,r7,cr15
47.16095 ++	stcm.w cp1,--r12,cr9,cr12-cr14
47.16096 ++
47.16097 ++stcm_d:
47.16098 ++	stcm.d cp0,pc,cr0-cr15
47.16099 ++	stcm.d cp7,r0,cr0,cr1
47.16100 ++	stcm.d cp4,--r4,cr0-cr13
47.16101 ++	stcm.d cp3,r7,cr14-cr15
47.16102 ++	stcm.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
47.16103 ++
47.16104 ++mvcr_w:
47.16105 ++	mvcr.w cp7,pc,cr15
47.16106 ++	mvcr.w cp0,r0,cr0
47.16107 ++	mvcr.w cp0,pc,cr15
47.16108 ++	mvcr.w cp7,r0,cr15
47.16109 ++	mvcr.w cp7,pc,cr0
47.16110 ++	mvcr.w cp4,r7,cr8
47.16111 ++	mvcr.w cp3,r8,cr7
47.16112 ++
47.16113 ++mvcr_d:
47.16114 ++	mvcr.d cp7,lr,cr14
47.16115 ++	mvcr.d cp0,r0,cr0
47.16116 ++	mvcr.d cp0,lr,cr14
47.16117 ++	mvcr.d cp7,r0,cr14
47.16118 ++	mvcr.d cp7,lr,cr0
47.16119 ++	mvcr.d cp4,r6,cr8
47.16120 ++	mvcr.d cp3,r8,cr6
47.16121 ++
47.16122 ++mvrc_w:
47.16123 ++	mvrc.w cp7,cr15,pc
47.16124 ++	mvrc.w cp0,cr0,r0
47.16125 ++	mvrc.w cp0,cr15,pc
47.16126 ++	mvrc.w cp7,cr15,r0
47.16127 ++	mvrc.w cp7,cr0,pc
47.16128 ++	mvrc.w cp4,cr8,r7
47.16129 ++	mvrc.w cp3,cr7,r8
47.16130 ++
47.16131 ++mvrc_d:
47.16132 ++	mvrc.d cp7,cr14,lr
47.16133 ++	mvrc.d cp0,cr0,r0
47.16134 ++	mvrc.d cp0,cr14,lr
47.16135 ++	mvrc.d cp7,cr14,r0
47.16136 ++	mvrc.d cp7,cr0,lr
47.16137 ++	mvrc.d cp4,cr8,r6
47.16138 ++	mvrc.d cp3,cr6,r8
47.16139 ++
47.16140 ++bfexts:
47.16141 ++	bfexts pc,pc,31,31
47.16142 ++	bfexts r0,r0,0,0
47.16143 ++	bfexts r0,pc,31,31
47.16144 ++	bfexts pc,r0,31,31
47.16145 ++	bfexts pc,pc,0,31
47.16146 ++	bfexts pc,pc,31,0
47.16147 ++	bfexts r7,r8,15,16
47.16148 ++	bfexts r8,r7,16,15
47.16149 ++
47.16150 ++bfextu:
47.16151 ++	bfextu pc,pc,31,31
47.16152 ++	bfextu r0,r0,0,0
47.16153 ++	bfextu r0,pc,31,31
47.16154 ++	bfextu pc,r0,31,31
47.16155 ++	bfextu pc,pc,0,31
47.16156 ++	bfextu pc,pc,31,0
47.16157 ++	bfextu r7,r8,15,16
47.16158 ++	bfextu r8,r7,16,15
47.16159 ++
47.16160 ++bfins:
47.16161 ++	bfins pc,pc,31,31
47.16162 ++	bfins r0,r0,0,0
47.16163 ++	bfins r0,pc,31,31
47.16164 ++	bfins pc,r0,31,31
47.16165 ++	bfins pc,pc,0,31
47.16166 ++	bfins pc,pc,31,0
47.16167 ++	bfins r7,r8,15,16
47.16168 ++	bfins r8,r7,16,15
47.16169 ++
47.16170 ++rsubc:
47.16171 ++	rsubeq pc,0
47.16172 ++	rsubal r12,-1
47.16173 ++	rsubls r5,-128
47.16174 ++	rsubpl r4,127
47.16175 ++	rsubne lr,1
47.16176 ++	rsubls r12,118
47.16177 ++	rsubvc lr,-12
47.16178 ++	rsubmi r4,-13
47.16179 ++
47.16180 ++addc:
47.16181 ++	addeq pc,pc,pc
47.16182 ++	addal r12,r12,r12
47.16183 ++	addls r5,r5,r5
47.16184 ++	addpl r4,r4,r4
47.16185 ++	addne lr,lr,lr
47.16186 ++	addls r10,r2,r1
47.16187 ++	addvc r12,r8,r11
47.16188 ++	addmi r10,r7,r0   
47.16189 ++
47.16190 ++subc2:
47.16191 ++	subeq pc,pc,pc
47.16192 ++	subal r12,r12,r12
47.16193 ++	subls r5,r5,r5
47.16194 ++	subpl r4,r4,r4
47.16195 ++	subne lr,lr,lr
47.16196 ++	subls r10,r2,r1
47.16197 ++	subvc r12,r8,r11
47.16198 ++	submi r10,r7,r0   
47.16199 ++
47.16200 ++andc:
47.16201 ++	andeq pc,pc,pc
47.16202 ++	andal r12,r12,r12
47.16203 ++	andls r5,r5,r5
47.16204 ++	andpl r4,r4,r4
47.16205 ++	andne lr,lr,lr
47.16206 ++	andls r10,r2,r1
47.16207 ++	andvc r12,r8,r11
47.16208 ++	andmi r10,r7,r0   
47.16209 ++
47.16210 ++orc:
47.16211 ++	oreq pc,pc,pc
47.16212 ++	oral r12,r12,r12
47.16213 ++	orls r5,r5,r5
47.16214 ++	orpl r4,r4,r4
47.16215 ++	orne lr,lr,lr
47.16216 ++	orls r10,r2,r1
47.16217 ++	orvc r12,r8,r11
47.16218 ++	ormi r10,r7,r0   
47.16219 ++
47.16220 ++eorc:
47.16221 ++	eoreq pc,pc,pc
47.16222 ++	eoral r12,r12,r12
47.16223 ++	eorls r5,r5,r5
47.16224 ++	eorpl r4,r4,r4
47.16225 ++	eorne lr,lr,lr
47.16226 ++	eorls r10,r2,r1
47.16227 ++	eorvc r12,r8,r11
47.16228 ++	eormi r10,r7,r0   
47.16229 ++
47.16230 ++ldcond:
47.16231 ++	ld.weq  pc,pc[2044]
47.16232 ++	ld.shal r12,r12[1022]
47.16233 ++	ld.uhls r5,r5[0]
47.16234 ++	ld.ubpl r4,r4[511]
47.16235 ++	ld.sbne lr,lr[0]
47.16236 ++	ld.wls  r10,r2[0]
47.16237 ++	ld.shvc r12,r8[0x3fe]
47.16238 ++	ld.ubmi r10,r7[1]
47.16239 ++  
47.16240 ++stcond2:
47.16241 ++	st.weq pc[2044],pc
47.16242 ++	st.hal r12[1022],r12
47.16243 ++	st.hls r5[0],r5
47.16244 ++	st.bpl r4[511],r4
47.16245 ++	st.bne lr[0],lr
47.16246 ++	st.wls r2[0],r10
47.16247 ++	st.hvc r8[0x3fe],r12
47.16248 ++	st.bmi r7[1],r10
47.16249 ++	
47.16250 ++movh:	
47.16251 ++	movh	pc, 65535
47.16252 ++	movh	r0, 0
47.16253 ++	movh	r5, 1
47.16254 ++	movh	r12, 32767
47.16255 ++	
47.16256 ++		
47.16257 +--- /dev/null
47.16258 ++++ b/gas/testsuite/gas/avr32/avr32.exp
47.16259 +@@ -0,0 +1,23 @@
47.16260 ++# AVR32 assembler testsuite. -*- Tcl -*-
47.16261 ++
47.16262 ++if [istarget avr32-*-*] {
47.16263 ++    run_dump_test "hwrd-lwrd"
47.16264 ++    run_dump_test "pcrel"
47.16265 ++    run_dump_test "aliases"
47.16266 ++    run_dump_test "dwarf2"
47.16267 ++    run_dump_test "pic_reloc"
47.16268 ++    run_dump_test "fpinsn"
47.16269 ++    run_dump_test "pico"
47.16270 ++    run_dump_test "lda_pic"
47.16271 ++    run_dump_test "lda_pic_linkrelax"
47.16272 ++    run_dump_test "lda_nopic"
47.16273 ++    run_dump_test "lda_nopic_linkrelax"
47.16274 ++    run_dump_test "call_pic"
47.16275 ++    run_dump_test "call_pic_linkrelax"
47.16276 ++    run_dump_test "call_nopic"
47.16277 ++    run_dump_test "call_nopic_linkrelax"
47.16278 ++    run_dump_test "jmptable"
47.16279 ++    run_dump_test "jmptable_linkrelax"
47.16280 ++    run_dump_test "symdiff"
47.16281 ++    run_dump_test "symdiff_linkrelax"
47.16282 ++}
47.16283 +--- /dev/null
47.16284 ++++ b/gas/testsuite/gas/avr32/call_nopic.d
47.16285 +@@ -0,0 +1,36 @@
47.16286 ++#source: call.s
47.16287 ++#as:
47.16288 ++#objdump: -dr
47.16289 ++#name: call_nopic
47.16290 ++
47.16291 ++.*: +file format .*
47.16292 ++
47.16293 ++Disassembly of section \.text:
47.16294 ++
47.16295 ++00000000 <call_test>:
47.16296 ++       0:	d7 03       	nop
47.16297 ++
47.16298 ++00000002 <toofar_negative>:
47.16299 ++	\.\.\.
47.16300 ++  1ffffe:	00 00       	add r0,r0
47.16301 ++  200000:	f0 a0 00 00 	rcall 0 <call_test>
47.16302 ++  200004:	f0 1f 00 0c 	mcall 200034 <toofar_negative\+0x200032>
47.16303 ++  200008:	f0 1f 00 0c 	mcall 200038 <toofar_negative\+0x200036>
47.16304 ++  20000c:	f0 1f 00 0c 	mcall 20003c <toofar_negative\+0x20003a>
47.16305 ++  200010:	f0 1f 00 0c 	mcall 200040 <toofar_negative\+0x20003e>
47.16306 ++	\.\.\.
47.16307 ++  200030:	ee b0 ff ff 	rcall 40002e <far_positive>
47.16308 ++	\.\.\.
47.16309 ++			200034: R_AVR32_32_CPENT	\.text\+0x2
47.16310 ++			200038: R_AVR32_32_CPENT	\.text\.init
47.16311 ++			20003c: R_AVR32_32_CPENT	undefined
47.16312 ++			200040: R_AVR32_32_CPENT	\.text\+0x40002c
47.16313 ++
47.16314 ++0040002c <toofar_positive>:
47.16315 ++  40002c:	d7 03       	nop
47.16316 ++0040002e <far_positive>:
47.16317 ++  40002e:	d7 03       	nop
47.16318 ++Disassembly of section \.text\.init:
47.16319 ++
47.16320 ++00000000 <different_section>:
47.16321 ++   0:	e2 c0 00 00 	sub r0,r1,0
47.16322 +--- /dev/null
47.16323 ++++ b/gas/testsuite/gas/avr32/call_nopic_linkrelax.d
47.16324 +@@ -0,0 +1,43 @@
47.16325 ++#source: call.s
47.16326 ++#as: --linkrelax
47.16327 ++#objdump: -dr
47.16328 ++#name: call_nopic_linkrelax
47.16329 ++
47.16330 ++.*: +file format .*
47.16331 ++
47.16332 ++Disassembly of section \.text:
47.16333 ++
47.16334 ++00000000 <call_test>:
47.16335 ++       0:	d7 03       	nop
47.16336 ++
47.16337 ++00000002 <toofar_negative>:
47.16338 ++	\.\.\.
47.16339 ++  1ffffe:	00 00       	add r0,r0
47.16340 ++  200000:	e0 a0 00 00 	rcall 200000 <toofar_negative\+0x1ffffe>
47.16341 ++			200000: R_AVR32_22H_PCREL	\.text
47.16342 ++  200004:	f0 1f 00 00 	mcall 200004 <toofar_negative\+0x200002>
47.16343 ++			200004: R_AVR32_CPCALL	\.text\+0x200034
47.16344 ++  200008:	f0 1f 00 00 	mcall 200008 <toofar_negative\+0x200006>
47.16345 ++			200008: R_AVR32_CPCALL	\.text\+0x200038
47.16346 ++  20000c:	f0 1f 00 00 	mcall 20000c <toofar_negative\+0x20000a>
47.16347 ++			20000c: R_AVR32_CPCALL	\.text\+0x20003c
47.16348 ++  200010:	f0 1f 00 00 	mcall 200010 <toofar_negative\+0x20000e>
47.16349 ++			200010: R_AVR32_CPCALL	\.text\+0x200040
47.16350 ++	\.\.\.
47.16351 ++  200030:	e0 a0 00 00 	rcall 200030 <toofar_negative\+0x20002e>
47.16352 ++			200030: R_AVR32_22H_PCREL	\.text\+0x40002e
47.16353 ++	\.\.\.
47.16354 ++			200034: R_AVR32_ALIGN	\*ABS\*\+0x2
47.16355 ++			200034: R_AVR32_32_CPENT	\.text\+0x2
47.16356 ++			200038: R_AVR32_32_CPENT	\.text\.init
47.16357 ++			20003c: R_AVR32_32_CPENT	undefined
47.16358 ++			200040: R_AVR32_32_CPENT	\.text\+0x40002c
47.16359 ++
47.16360 ++0040002c <toofar_positive>:
47.16361 ++  40002c:	d7 03       	nop
47.16362 ++0040002e <far_positive>:
47.16363 ++  40002e:	d7 03       	nop
47.16364 ++Disassembly of section \.text\.init:
47.16365 ++
47.16366 ++00000000 <different_section>:
47.16367 ++   0:	e2 c0 00 00 	sub r0,r1,0
47.16368 +--- /dev/null
47.16369 ++++ b/gas/testsuite/gas/avr32/call_pic.d
47.16370 +@@ -0,0 +1,36 @@
47.16371 ++#source: call.s
47.16372 ++#as: --pic
47.16373 ++#objdump: -dr
47.16374 ++#name: call_pic
47.16375 ++
47.16376 ++.*: +file format .*
47.16377 ++
47.16378 ++Disassembly of section \.text:
47.16379 ++
47.16380 ++00000000 <call_test>:
47.16381 ++       0:	d7 03       	nop
47.16382 ++
47.16383 ++00000002 <toofar_negative>:
47.16384 ++	\.\.\.
47.16385 ++  1ffffe:	00 00       	add r0,r0
47.16386 ++  200000:	f0 a0 00 00 	rcall 0 <call_test>
47.16387 ++  200004:	f0 16 00 00 	mcall r6\[0\]
47.16388 ++			200004: R_AVR32_GOT18SW	toofar_negative
47.16389 ++  200008:	f0 16 00 00 	mcall r6\[0\]
47.16390 ++			200008: R_AVR32_GOT18SW	different_section
47.16391 ++  20000c:	f0 16 00 00 	mcall r6\[0\]
47.16392 ++			20000c: R_AVR32_GOT18SW	undefined
47.16393 ++  200010:	f0 16 00 00 	mcall r6\[0\]
47.16394 ++			200010: R_AVR32_GOT18SW	toofar_positive
47.16395 ++	\.\.\.
47.16396 ++  200030:	ee b0 ff ff 	rcall 40002e <far_positive>
47.16397 ++	\.\.\.
47.16398 ++
47.16399 ++0040002c <toofar_positive>:
47.16400 ++  40002c:	d7 03       	nop
47.16401 ++0040002e <far_positive>:
47.16402 ++  40002e:	d7 03       	nop
47.16403 ++Disassembly of section \.text\.init:
47.16404 ++
47.16405 ++00000000 <different_section>:
47.16406 ++   0:	e2 c0 00 00 	sub r0,r1,0
47.16407 +--- /dev/null
47.16408 ++++ b/gas/testsuite/gas/avr32/call_pic_linkrelax.d
47.16409 +@@ -0,0 +1,47 @@
47.16410 ++#source: call.s
47.16411 ++#as: --pic --linkrelax
47.16412 ++#objdump: -dr
47.16413 ++#name: call_pic_linkrelax
47.16414 ++
47.16415 ++.*: +file format .*
47.16416 ++
47.16417 ++Disassembly of section \.text:
47.16418 ++
47.16419 ++00000000 <call_test>:
47.16420 ++       0:	d7 03       	nop
47.16421 ++
47.16422 ++00000002 <toofar_negative>:
47.16423 ++	\.\.\.
47.16424 ++  1ffffe:	00 00       	add r0,r0
47.16425 ++  200000:	e0 a0 00 00 	rcall 200000 <toofar_negative\+0x1ffffe>
47.16426 ++			200000: R_AVR32_22H_PCREL	\.text
47.16427 ++  200004:	e0 6e 00 00 	mov lr,0
47.16428 ++			200004: R_AVR32_GOTCALL	toofar_negative
47.16429 ++  200008:	ec 0e 03 2e 	ld\.w lr,r6\[lr<<0x2\]
47.16430 ++  20000c:	5d 1e       	icall lr
47.16431 ++  20000e:	e0 6e 00 00 	mov lr,0
47.16432 ++			20000e: R_AVR32_GOTCALL	different_section
47.16433 ++  200012:	ec 0e 03 2e 	ld\.w lr,r6\[lr<<0x2\]
47.16434 ++  200016:	5d 1e       	icall lr
47.16435 ++  200018:	e0 6e 00 00 	mov lr,0
47.16436 ++			200018: R_AVR32_GOTCALL	undefined
47.16437 ++  20001c:	ec 0e 03 2e 	ld\.w lr,r6\[lr<<0x2\]
47.16438 ++  200020:	5d 1e       	icall lr
47.16439 ++  200022:	e0 6e 00 00 	mov lr,0
47.16440 ++			200022: R_AVR32_GOTCALL	toofar_positive
47.16441 ++  200026:	ec 0e 03 2e 	ld\.w lr,r6\[lr<<0x2\]
47.16442 ++  20002a:	5d 1e       	icall lr
47.16443 ++  20002c:	00 00       	add r0,r0
47.16444 ++  20002e:	00 00       	add r0,r0
47.16445 ++  200030:	e0 a0 00 00 	rcall 200030 <toofar_negative\+0x20002e>
47.16446 ++			200030: R_AVR32_22H_PCREL	\.text\+0x40002e
47.16447 ++	\.\.\.
47.16448 ++
47.16449 ++0040002c <toofar_positive>:
47.16450 ++  40002c:	d7 03       	nop
47.16451 ++0040002e <far_positive>:
47.16452 ++  40002e:	d7 03       	nop
47.16453 ++Disassembly of section \.text\.init:
47.16454 ++
47.16455 ++00000000 <different_section>:
47.16456 ++   0:	e2 c0 00 00 	sub r0,r1,0
47.16457 +--- /dev/null
47.16458 ++++ b/gas/testsuite/gas/avr32/call.s
47.16459 +@@ -0,0 +1,30 @@
47.16460 ++
47.16461 ++	.text
47.16462 ++	.global call_test
47.16463 ++call_test:
47.16464 ++far_negative:
47.16465 ++	nop
47.16466 ++toofar_negative:
47.16467 ++
47.16468 ++	.org	0x200000
47.16469 ++
47.16470 ++	call	far_negative
47.16471 ++	call	toofar_negative
47.16472 ++	call	different_section
47.16473 ++	call	undefined
47.16474 ++	call	toofar_positive
47.16475 ++	.org	0x200030
47.16476 ++	call	far_positive
47.16477 ++
47.16478 ++	.cpool
47.16479 ++
47.16480 ++	.org	0x40002c
47.16481 ++
47.16482 ++toofar_positive:
47.16483 ++	nop
47.16484 ++far_positive:
47.16485 ++	nop
47.16486 ++
47.16487 ++	.section .text.init,"ax",@progbits
47.16488 ++different_section:
47.16489 ++	sub	r0, r1, 0
47.16490 +--- /dev/null
47.16491 ++++ b/gas/testsuite/gas/avr32/dwarf2.d
47.16492 +@@ -0,0 +1,42 @@
47.16493 ++#readelf: -wl
47.16494 ++#name: dwarf2
47.16495 ++#source: dwarf2.s
47.16496 ++
47.16497 ++Dump of debug contents of section \.debug_line:
47.16498 ++
47.16499 ++  Length:                      53
47.16500 ++  DWARF Version:               2
47.16501 ++  Prologue Length:             26
47.16502 ++  Minimum Instruction Length:  1
47.16503 ++  Initial value of 'is_stmt':  1
47.16504 ++  Line Base:                   -5
47.16505 ++  Line Range:                  14
47.16506 ++  Opcode Base:                 10
47.16507 ++  \(Pointer size:               4\)
47.16508 ++
47.16509 ++ Opcodes:
47.16510 ++  Opcode 1 has 0 args
47.16511 ++  Opcode 2 has 1 args
47.16512 ++  Opcode 3 has 1 args
47.16513 ++  Opcode 4 has 1 args
47.16514 ++  Opcode 5 has 1 args
47.16515 ++  Opcode 6 has 0 args
47.16516 ++  Opcode 7 has 0 args
47.16517 ++  Opcode 8 has 0 args
47.16518 ++  Opcode 9 has 1 args
47.16519 ++
47.16520 ++ The Directory Table is empty\.
47.16521 ++
47.16522 ++ The File Name Table:
47.16523 ++  Entry	Dir	Time	Size	Name
47.16524 ++  1	0	0	0	main\.c
47.16525 ++
47.16526 ++ Line Number Statements:
47.16527 ++  Extended opcode 2: set Address to 0x0
47.16528 ++  Advance Line by 87 to 88
47.16529 ++  Copy
47.16530 ++  Advance Line by 23 to 111
47.16531 ++  Special opcode .*: advance Address by 4 to 0x4 and Line by 0 to 111
47.16532 ++  Special opcode .*: advance Address by 10 to 0xe and Line by 1 to 112
47.16533 ++  Advance PC by 530 to 220
47.16534 ++  Extended opcode 1: End of Sequence
47.16535 +--- /dev/null
47.16536 ++++ b/gas/testsuite/gas/avr32/dwarf2.s
47.16537 +@@ -0,0 +1,67 @@
47.16538 ++# Source file used to test DWARF2 information for AVR32.
47.16539 ++
47.16540 ++	.file	"main.c"
47.16541 ++
47.16542 ++	.section .debug_abbrev,"",@progbits
47.16543 ++.Ldebug_abbrev0:
47.16544 ++	.section .debug_info,"",@progbits
47.16545 ++.Ldebug_info0:
47.16546 ++	.section .debug_line,"",@progbits
47.16547 ++.Ldebug_line0:
47.16548 ++
47.16549 ++	.text
47.16550 ++	.align	1
47.16551 ++	.globl	main
47.16552 ++	.type	main, @function
47.16553 ++.Ltext0:
47.16554 ++main:
47.16555 ++	.file 1 "main.c"
47.16556 ++	.loc 1 88 0
47.16557 ++	pushm	r0-r7,lr
47.16558 ++	sub	sp, 4
47.16559 ++	.loc 1 111 0
47.16560 ++	lddpc	r12, .LC1
47.16561 ++	lddpc	r7, .LC1
47.16562 ++	icall	r7
47.16563 ++	.loc 1 112 0
47.16564 ++	lddpc	r6, .LC4
47.16565 ++
47.16566 ++	.align	2
47.16567 ++.LC4:	.int	0
47.16568 ++
47.16569 ++	.fill	256, 2, 0
47.16570 ++
47.16571 ++	.align	2
47.16572 ++.LC1:
47.16573 ++	.int	0
47.16574 ++.LC2:
47.16575 ++	.int	0
47.16576 ++.LC3:
47.16577 ++	.int	0
47.16578 ++	.size	main, . - main
47.16579 ++
47.16580 ++.Letext0:
47.16581 ++
47.16582 ++	.section .debug_info
47.16583 ++	.int	.Ledebug_info0 - .Ldebug_info0	// size
47.16584 ++	.short	2				// version
47.16585 ++	.int	.Ldebug_abbrev0			// abbrev offset
47.16586 ++	.byte	4				// bytes per addr
47.16587 ++
47.16588 ++	.uleb128 1				// abbrev 1
47.16589 ++	.int	.Ldebug_line0			// DW_AT_stmt_list
47.16590 ++	.int	.Letext0			// DW_AT_high_pc
47.16591 ++	.int	.Ltext0				// DW_AT_low_pc
47.16592 ++
47.16593 ++.Ledebug_info0:
47.16594 ++
47.16595 ++	.section .debug_abbrev
47.16596 ++	.uleb128 0x01
47.16597 ++	.uleb128 0x11		// DW_TAG_compile_unit
47.16598 ++	.byte	0		// DW_CHILDREN_no
47.16599 ++	.uleb128 0x10, 0x6	// DW_AT_stmt_list
47.16600 ++	.uleb128 0x12, 0x1	// DW_AT_high_pc
47.16601 ++	.uleb128 0x11, 0x1	// DW_AT_low_pc
47.16602 ++	.uleb128 0, 0
47.16603 ++
47.16604 ++	.byte	0
47.16605 +--- /dev/null
47.16606 ++++ b/gas/testsuite/gas/avr32/fpinsn.d
47.16607 +@@ -0,0 +1,271 @@
47.16608 ++#as:
47.16609 ++#objdump: -dr
47.16610 ++#name: fpinsn
47.16611 ++
47.16612 ++.*: +file format .*
47.16613 ++
47.16614 ++Disassembly of section \.text:
47.16615 ++
47.16616 ++[0-9a-f]* <fadd_s>:
47.16617 ++ *[0-9a-f]*:	e1 a2 0f ff 	cop cp0,cr15,cr15,cr15,0x4
47.16618 ++ *[0-9a-f]*:	e1 a2 00 00 	cop cp0,cr0,cr0,cr0,0x4
47.16619 ++ *[0-9a-f]*:	e1 a2 00 ff 	cop cp0,cr0,cr15,cr15,0x4
47.16620 ++ *[0-9a-f]*:	e1 a2 0f 0f 	cop cp0,cr15,cr0,cr15,0x4
47.16621 ++ *[0-9a-f]*:	e1 a2 0f f0 	cop cp0,cr15,cr15,cr0,0x4
47.16622 ++ *[0-9a-f]*:	e1 a2 07 88 	cop cp0,cr7,cr8,cr8,0x4
47.16623 ++ *[0-9a-f]*:	e1 a2 08 78 	cop cp0,cr8,cr7,cr8,0x4
47.16624 ++ *[0-9a-f]*:	e1 a2 08 87 	cop cp0,cr8,cr8,cr7,0x4
47.16625 ++
47.16626 ++[0-9a-f]* <fsub_s>:
47.16627 ++ *[0-9a-f]*:	e1 a2 1f ff 	cop cp0,cr15,cr15,cr15,0x5
47.16628 ++ *[0-9a-f]*:	e1 a2 10 00 	cop cp0,cr0,cr0,cr0,0x5
47.16629 ++ *[0-9a-f]*:	e1 a2 10 ff 	cop cp0,cr0,cr15,cr15,0x5
47.16630 ++ *[0-9a-f]*:	e1 a2 1f 0f 	cop cp0,cr15,cr0,cr15,0x5
47.16631 ++ *[0-9a-f]*:	e1 a2 1f f0 	cop cp0,cr15,cr15,cr0,0x5
47.16632 ++ *[0-9a-f]*:	e1 a2 17 88 	cop cp0,cr7,cr8,cr8,0x5
47.16633 ++ *[0-9a-f]*:	e1 a2 18 78 	cop cp0,cr8,cr7,cr8,0x5
47.16634 ++ *[0-9a-f]*:	e1 a2 18 87 	cop cp0,cr8,cr8,cr7,0x5
47.16635 ++
47.16636 ++[0-9a-f]* <fmac_s>:
47.16637 ++ *[0-9a-f]*:	e1 a0 0f ff 	cop cp0,cr15,cr15,cr15,0x0
47.16638 ++ *[0-9a-f]*:	e1 a0 00 00 	cop cp0,cr0,cr0,cr0,0x0
47.16639 ++ *[0-9a-f]*:	e1 a0 00 ff 	cop cp0,cr0,cr15,cr15,0x0
47.16640 ++ *[0-9a-f]*:	e1 a0 0f 0f 	cop cp0,cr15,cr0,cr15,0x0
47.16641 ++ *[0-9a-f]*:	e1 a0 0f f0 	cop cp0,cr15,cr15,cr0,0x0
47.16642 ++ *[0-9a-f]*:	e1 a0 07 88 	cop cp0,cr7,cr8,cr8,0x0
47.16643 ++ *[0-9a-f]*:	e1 a0 08 78 	cop cp0,cr8,cr7,cr8,0x0
47.16644 ++ *[0-9a-f]*:	e1 a0 08 87 	cop cp0,cr8,cr8,cr7,0x0
47.16645 ++
47.16646 ++[0-9a-f]* <fnmac_s>:
47.16647 ++ *[0-9a-f]*:	e1 a0 1f ff 	cop cp0,cr15,cr15,cr15,0x1
47.16648 ++ *[0-9a-f]*:	e1 a0 10 00 	cop cp0,cr0,cr0,cr0,0x1
47.16649 ++ *[0-9a-f]*:	e1 a0 10 ff 	cop cp0,cr0,cr15,cr15,0x1
47.16650 ++ *[0-9a-f]*:	e1 a0 1f 0f 	cop cp0,cr15,cr0,cr15,0x1
47.16651 ++ *[0-9a-f]*:	e1 a0 1f f0 	cop cp0,cr15,cr15,cr0,0x1
47.16652 ++ *[0-9a-f]*:	e1 a0 17 88 	cop cp0,cr7,cr8,cr8,0x1
47.16653 ++ *[0-9a-f]*:	e1 a0 18 78 	cop cp0,cr8,cr7,cr8,0x1
47.16654 ++ *[0-9a-f]*:	e1 a0 18 87 	cop cp0,cr8,cr8,cr7,0x1
47.16655 ++
47.16656 ++[0-9a-f]* <fmsc_s>:
47.16657 ++ *[0-9a-f]*:	e1 a1 0f ff 	cop cp0,cr15,cr15,cr15,0x2
47.16658 ++ *[0-9a-f]*:	e1 a1 00 00 	cop cp0,cr0,cr0,cr0,0x2
47.16659 ++ *[0-9a-f]*:	e1 a1 00 ff 	cop cp0,cr0,cr15,cr15,0x2
47.16660 ++ *[0-9a-f]*:	e1 a1 0f 0f 	cop cp0,cr15,cr0,cr15,0x2
47.16661 ++ *[0-9a-f]*:	e1 a1 0f f0 	cop cp0,cr15,cr15,cr0,0x2
47.16662 ++ *[0-9a-f]*:	e1 a1 07 88 	cop cp0,cr7,cr8,cr8,0x2
47.16663 ++ *[0-9a-f]*:	e1 a1 08 78 	cop cp0,cr8,cr7,cr8,0x2
47.16664 ++ *[0-9a-f]*:	e1 a1 08 87 	cop cp0,cr8,cr8,cr7,0x2
47.16665 ++
47.16666 ++[0-9a-f]* <fnmsc_s>:
47.16667 ++ *[0-9a-f]*:	e1 a1 1f ff 	cop cp0,cr15,cr15,cr15,0x3
47.16668 ++ *[0-9a-f]*:	e1 a1 10 00 	cop cp0,cr0,cr0,cr0,0x3
47.16669 ++ *[0-9a-f]*:	e1 a1 10 ff 	cop cp0,cr0,cr15,cr15,0x3
47.16670 ++ *[0-9a-f]*:	e1 a1 1f 0f 	cop cp0,cr15,cr0,cr15,0x3
47.16671 ++ *[0-9a-f]*:	e1 a1 1f f0 	cop cp0,cr15,cr15,cr0,0x3
47.16672 ++ *[0-9a-f]*:	e1 a1 17 88 	cop cp0,cr7,cr8,cr8,0x3
47.16673 ++ *[0-9a-f]*:	e1 a1 18 78 	cop cp0,cr8,cr7,cr8,0x3
47.16674 ++ *[0-9a-f]*:	e1 a1 18 87 	cop cp0,cr8,cr8,cr7,0x3
47.16675 ++
47.16676 ++[0-9a-f]* <fmul_s>:
47.16677 ++ *[0-9a-f]*:	e1 a3 0f ff 	cop cp0,cr15,cr15,cr15,0x6
47.16678 ++ *[0-9a-f]*:	e1 a3 00 00 	cop cp0,cr0,cr0,cr0,0x6
47.16679 ++ *[0-9a-f]*:	e1 a3 00 ff 	cop cp0,cr0,cr15,cr15,0x6
47.16680 ++ *[0-9a-f]*:	e1 a3 0f 0f 	cop cp0,cr15,cr0,cr15,0x6
47.16681 ++ *[0-9a-f]*:	e1 a3 0f f0 	cop cp0,cr15,cr15,cr0,0x6
47.16682 ++ *[0-9a-f]*:	e1 a3 07 88 	cop cp0,cr7,cr8,cr8,0x6
47.16683 ++ *[0-9a-f]*:	e1 a3 08 78 	cop cp0,cr8,cr7,cr8,0x6
47.16684 ++ *[0-9a-f]*:	e1 a3 08 87 	cop cp0,cr8,cr8,cr7,0x6
47.16685 ++
47.16686 ++[0-9a-f]* <fnmul_s>:
47.16687 ++ *[0-9a-f]*:	e1 a3 1f ff 	cop cp0,cr15,cr15,cr15,0x7
47.16688 ++ *[0-9a-f]*:	e1 a3 10 00 	cop cp0,cr0,cr0,cr0,0x7
47.16689 ++ *[0-9a-f]*:	e1 a3 10 ff 	cop cp0,cr0,cr15,cr15,0x7
47.16690 ++ *[0-9a-f]*:	e1 a3 1f 0f 	cop cp0,cr15,cr0,cr15,0x7
47.16691 ++ *[0-9a-f]*:	e1 a3 1f f0 	cop cp0,cr15,cr15,cr0,0x7
47.16692 ++ *[0-9a-f]*:	e1 a3 17 88 	cop cp0,cr7,cr8,cr8,0x7
47.16693 ++ *[0-9a-f]*:	e1 a3 18 78 	cop cp0,cr8,cr7,cr8,0x7
47.16694 ++ *[0-9a-f]*:	e1 a3 18 87 	cop cp0,cr8,cr8,cr7,0x7
47.16695 ++
47.16696 ++[0-9a-f]* <fneg_s>:
47.16697 ++ *[0-9a-f]*:	e1 a4 0f f0 	cop cp0,cr15,cr15,cr0,0x8
47.16698 ++ *[0-9a-f]*:	e1 a4 00 00 	cop cp0,cr0,cr0,cr0,0x8
47.16699 ++ *[0-9a-f]*:	e1 a4 00 f0 	cop cp0,cr0,cr15,cr0,0x8
47.16700 ++ *[0-9a-f]*:	e1 a4 0f 00 	cop cp0,cr15,cr0,cr0,0x8
47.16701 ++ *[0-9a-f]*:	e1 a4 07 80 	cop cp0,cr7,cr8,cr0,0x8
47.16702 ++ *[0-9a-f]*:	e1 a4 08 70 	cop cp0,cr8,cr7,cr0,0x8
47.16703 ++
47.16704 ++[0-9a-f]* <fabs_s>:
47.16705 ++ *[0-9a-f]*:	e1 a4 1f f0 	cop cp0,cr15,cr15,cr0,0x9
47.16706 ++ *[0-9a-f]*:	e1 a4 10 00 	cop cp0,cr0,cr0,cr0,0x9
47.16707 ++ *[0-9a-f]*:	e1 a4 10 f0 	cop cp0,cr0,cr15,cr0,0x9
47.16708 ++ *[0-9a-f]*:	e1 a4 1f 00 	cop cp0,cr15,cr0,cr0,0x9
47.16709 ++ *[0-9a-f]*:	e1 a4 17 80 	cop cp0,cr7,cr8,cr0,0x9
47.16710 ++ *[0-9a-f]*:	e1 a4 18 70 	cop cp0,cr8,cr7,cr0,0x9
47.16711 ++
47.16712 ++[0-9a-f]* <fcmp_s>:
47.16713 ++ *[0-9a-f]*:	e1 a6 10 ff 	cop cp0,cr0,cr15,cr15,0xd
47.16714 ++ *[0-9a-f]*:	e1 a6 10 00 	cop cp0,cr0,cr0,cr0,0xd
47.16715 ++ *[0-9a-f]*:	e1 a6 10 0f 	cop cp0,cr0,cr0,cr15,0xd
47.16716 ++ *[0-9a-f]*:	e1 a6 10 f0 	cop cp0,cr0,cr15,cr0,0xd
47.16717 ++ *[0-9a-f]*:	e1 a6 10 78 	cop cp0,cr0,cr7,cr8,0xd
47.16718 ++ *[0-9a-f]*:	e1 a6 10 87 	cop cp0,cr0,cr8,cr7,0xd
47.16719 ++
47.16720 ++[0-9a-f]* <fadd_d>:
47.16721 ++ *[0-9a-f]*:	e5 a2 0e ee 	cop cp0,cr14,cr14,cr14,0x44
47.16722 ++ *[0-9a-f]*:	e5 a2 00 00 	cop cp0,cr0,cr0,cr0,0x44
47.16723 ++ *[0-9a-f]*:	e5 a2 00 ee 	cop cp0,cr0,cr14,cr14,0x44
47.16724 ++ *[0-9a-f]*:	e5 a2 0e 0e 	cop cp0,cr14,cr0,cr14,0x44
47.16725 ++ *[0-9a-f]*:	e5 a2 0e e0 	cop cp0,cr14,cr14,cr0,0x44
47.16726 ++ *[0-9a-f]*:	e5 a2 06 88 	cop cp0,cr6,cr8,cr8,0x44
47.16727 ++ *[0-9a-f]*:	e5 a2 08 68 	cop cp0,cr8,cr6,cr8,0x44
47.16728 ++ *[0-9a-f]*:	e5 a2 08 86 	cop cp0,cr8,cr8,cr6,0x44
47.16729 ++
47.16730 ++[0-9a-f]* <fsub_d>:
47.16731 ++ *[0-9a-f]*:	e5 a2 1e ee 	cop cp0,cr14,cr14,cr14,0x45
47.16732 ++ *[0-9a-f]*:	e5 a2 10 00 	cop cp0,cr0,cr0,cr0,0x45
47.16733 ++ *[0-9a-f]*:	e5 a2 10 ee 	cop cp0,cr0,cr14,cr14,0x45
47.16734 ++ *[0-9a-f]*:	e5 a2 1e 0e 	cop cp0,cr14,cr0,cr14,0x45
47.16735 ++ *[0-9a-f]*:	e5 a2 1e e0 	cop cp0,cr14,cr14,cr0,0x45
47.16736 ++ *[0-9a-f]*:	e5 a2 16 88 	cop cp0,cr6,cr8,cr8,0x45
47.16737 ++ *[0-9a-f]*:	e5 a2 18 68 	cop cp0,cr8,cr6,cr8,0x45
47.16738 ++ *[0-9a-f]*:	e5 a2 18 86 	cop cp0,cr8,cr8,cr6,0x45
47.16739 ++
47.16740 ++[0-9a-f]* <fmac_d>:
47.16741 ++ *[0-9a-f]*:	e5 a0 0e ee 	cop cp0,cr14,cr14,cr14,0x40
47.16742 ++ *[0-9a-f]*:	e5 a0 00 00 	cop cp0,cr0,cr0,cr0,0x40
47.16743 ++ *[0-9a-f]*:	e5 a0 00 ee 	cop cp0,cr0,cr14,cr14,0x40
47.16744 ++ *[0-9a-f]*:	e5 a0 0e 0e 	cop cp0,cr14,cr0,cr14,0x40
47.16745 ++ *[0-9a-f]*:	e5 a0 0e e0 	cop cp0,cr14,cr14,cr0,0x40
47.16746 ++ *[0-9a-f]*:	e5 a0 06 88 	cop cp0,cr6,cr8,cr8,0x40
47.16747 ++ *[0-9a-f]*:	e5 a0 08 68 	cop cp0,cr8,cr6,cr8,0x40
47.16748 ++ *[0-9a-f]*:	e5 a0 08 86 	cop cp0,cr8,cr8,cr6,0x40
47.16749 ++
47.16750 ++[0-9a-f]* <fnmac_d>:
47.16751 ++ *[0-9a-f]*:	e5 a0 1e ee 	cop cp0,cr14,cr14,cr14,0x41
47.16752 ++ *[0-9a-f]*:	e5 a0 10 00 	cop cp0,cr0,cr0,cr0,0x41
47.16753 ++ *[0-9a-f]*:	e5 a0 10 ee 	cop cp0,cr0,cr14,cr14,0x41
47.16754 ++ *[0-9a-f]*:	e5 a0 1e 0e 	cop cp0,cr14,cr0,cr14,0x41
47.16755 ++ *[0-9a-f]*:	e5 a0 1e e0 	cop cp0,cr14,cr14,cr0,0x41
47.16756 ++ *[0-9a-f]*:	e5 a0 16 88 	cop cp0,cr6,cr8,cr8,0x41
47.16757 ++ *[0-9a-f]*:	e5 a0 18 68 	cop cp0,cr8,cr6,cr8,0x41
47.16758 ++ *[0-9a-f]*:	e5 a0 18 86 	cop cp0,cr8,cr8,cr6,0x41
47.16759 ++
47.16760 ++[0-9a-f]* <fmsc_d>:
47.16761 ++ *[0-9a-f]*:	e5 a1 0e ee 	cop cp0,cr14,cr14,cr14,0x42
47.16762 ++ *[0-9a-f]*:	e5 a1 00 00 	cop cp0,cr0,cr0,cr0,0x42
47.16763 ++ *[0-9a-f]*:	e5 a1 00 ee 	cop cp0,cr0,cr14,cr14,0x42
47.16764 ++ *[0-9a-f]*:	e5 a1 0e 0e 	cop cp0,cr14,cr0,cr14,0x42
47.16765 ++ *[0-9a-f]*:	e5 a1 0e e0 	cop cp0,cr14,cr14,cr0,0x42
47.16766 ++ *[0-9a-f]*:	e5 a1 06 88 	cop cp0,cr6,cr8,cr8,0x42
47.16767 ++ *[0-9a-f]*:	e5 a1 08 68 	cop cp0,cr8,cr6,cr8,0x42
47.16768 ++ *[0-9a-f]*:	e5 a1 08 86 	cop cp0,cr8,cr8,cr6,0x42
47.16769 ++
47.16770 ++[0-9a-f]* <fnmsc_d>:
47.16771 ++ *[0-9a-f]*:	e5 a1 1e ee 	cop cp0,cr14,cr14,cr14,0x43
47.16772 ++ *[0-9a-f]*:	e5 a1 10 00 	cop cp0,cr0,cr0,cr0,0x43
47.16773 ++ *[0-9a-f]*:	e5 a1 10 ee 	cop cp0,cr0,cr14,cr14,0x43
47.16774 ++ *[0-9a-f]*:	e5 a1 1e 0e 	cop cp0,cr14,cr0,cr14,0x43
47.16775 ++ *[0-9a-f]*:	e5 a1 1e e0 	cop cp0,cr14,cr14,cr0,0x43
47.16776 ++ *[0-9a-f]*:	e5 a1 16 88 	cop cp0,cr6,cr8,cr8,0x43
47.16777 ++ *[0-9a-f]*:	e5 a1 18 68 	cop cp0,cr8,cr6,cr8,0x43
47.16778 ++ *[0-9a-f]*:	e5 a1 18 86 	cop cp0,cr8,cr8,cr6,0x43
47.16779 ++
47.16780 ++[0-9a-f]* <fmul_d>:
47.16781 ++ *[0-9a-f]*:	e5 a3 0e ee 	cop cp0,cr14,cr14,cr14,0x46
47.16782 ++ *[0-9a-f]*:	e5 a3 00 00 	cop cp0,cr0,cr0,cr0,0x46
47.16783 ++ *[0-9a-f]*:	e5 a3 00 ee 	cop cp0,cr0,cr14,cr14,0x46
47.16784 ++ *[0-9a-f]*:	e5 a3 0e 0e 	cop cp0,cr14,cr0,cr14,0x46
47.16785 ++ *[0-9a-f]*:	e5 a3 0e e0 	cop cp0,cr14,cr14,cr0,0x46
47.16786 ++ *[0-9a-f]*:	e5 a3 06 88 	cop cp0,cr6,cr8,cr8,0x46
47.16787 ++ *[0-9a-f]*:	e5 a3 08 68 	cop cp0,cr8,cr6,cr8,0x46
47.16788 ++ *[0-9a-f]*:	e5 a3 08 86 	cop cp0,cr8,cr8,cr6,0x46
47.16789 ++
47.16790 ++[0-9a-f]* <fnmul_d>:
47.16791 ++ *[0-9a-f]*:	e5 a3 1e ee 	cop cp0,cr14,cr14,cr14,0x47
47.16792 ++ *[0-9a-f]*:	e5 a3 10 00 	cop cp0,cr0,cr0,cr0,0x47
47.16793 ++ *[0-9a-f]*:	e5 a3 10 ee 	cop cp0,cr0,cr14,cr14,0x47
47.16794 ++ *[0-9a-f]*:	e5 a3 1e 0e 	cop cp0,cr14,cr0,cr14,0x47
47.16795 ++ *[0-9a-f]*:	e5 a3 1e e0 	cop cp0,cr14,cr14,cr0,0x47
47.16796 ++ *[0-9a-f]*:	e5 a3 16 88 	cop cp0,cr6,cr8,cr8,0x47
47.16797 ++ *[0-9a-f]*:	e5 a3 18 68 	cop cp0,cr8,cr6,cr8,0x47
47.16798 ++ *[0-9a-f]*:	e5 a3 18 86 	cop cp0,cr8,cr8,cr6,0x47
47.16799 ++
47.16800 ++[0-9a-f]* <fneg_d>:
47.16801 ++ *[0-9a-f]*:	e5 a4 0e e0 	cop cp0,cr14,cr14,cr0,0x48
47.16802 ++ *[0-9a-f]*:	e5 a4 00 00 	cop cp0,cr0,cr0,cr0,0x48
47.16803 ++ *[0-9a-f]*:	e5 a4 00 e0 	cop cp0,cr0,cr14,cr0,0x48
47.16804 ++ *[0-9a-f]*:	e5 a4 0e 00 	cop cp0,cr14,cr0,cr0,0x48
47.16805 ++ *[0-9a-f]*:	e5 a4 06 80 	cop cp0,cr6,cr8,cr0,0x48
47.16806 ++ *[0-9a-f]*:	e5 a4 08 60 	cop cp0,cr8,cr6,cr0,0x48
47.16807 ++
47.16808 ++[0-9a-f]* <fabs_d>:
47.16809 ++ *[0-9a-f]*:	e5 a4 1e e0 	cop cp0,cr14,cr14,cr0,0x49
47.16810 ++ *[0-9a-f]*:	e5 a4 10 00 	cop cp0,cr0,cr0,cr0,0x49
47.16811 ++ *[0-9a-f]*:	e5 a4 10 e0 	cop cp0,cr0,cr14,cr0,0x49
47.16812 ++ *[0-9a-f]*:	e5 a4 1e 00 	cop cp0,cr14,cr0,cr0,0x49
47.16813 ++ *[0-9a-f]*:	e5 a4 16 80 	cop cp0,cr6,cr8,cr0,0x49
47.16814 ++ *[0-9a-f]*:	e5 a4 18 60 	cop cp0,cr8,cr6,cr0,0x49
47.16815 ++
47.16816 ++[0-9a-f]* <fcmp_d>:
47.16817 ++ *[0-9a-f]*:	e5 a6 10 ee 	cop cp0,cr0,cr14,cr14,0x4d
47.16818 ++ *[0-9a-f]*:	e5 a6 10 00 	cop cp0,cr0,cr0,cr0,0x4d
47.16819 ++ *[0-9a-f]*:	e5 a6 10 0e 	cop cp0,cr0,cr0,cr14,0x4d
47.16820 ++ *[0-9a-f]*:	e5 a6 10 e0 	cop cp0,cr0,cr14,cr0,0x4d
47.16821 ++ *[0-9a-f]*:	e5 a6 10 68 	cop cp0,cr0,cr6,cr8,0x4d
47.16822 ++ *[0-9a-f]*:	e5 a6 10 86 	cop cp0,cr0,cr8,cr6,0x4d
47.16823 ++
47.16824 ++[0-9a-f]* <fmov_s>:
47.16825 ++ *[0-9a-f]*:	e1 a5 0f f0 	cop cp0,cr15,cr15,cr0,0xa
47.16826 ++ *[0-9a-f]*:	e1 a5 00 00 	cop cp0,cr0,cr0,cr0,0xa
47.16827 ++ *[0-9a-f]*:	e1 a5 0f 00 	cop cp0,cr15,cr0,cr0,0xa
47.16828 ++ *[0-9a-f]*:	e1 a5 00 f0 	cop cp0,cr0,cr15,cr0,0xa
47.16829 ++ *[0-9a-f]*:	e1 a5 08 70 	cop cp0,cr8,cr7,cr0,0xa
47.16830 ++ *[0-9a-f]*:	e1 a5 07 80 	cop cp0,cr7,cr8,cr0,0xa
47.16831 ++ *[0-9a-f]*:	ef af 0f 00 	mvcr.w cp0,pc,cr15
47.16832 ++ *[0-9a-f]*:	ef a0 00 00 	mvcr.w cp0,r0,cr0
47.16833 ++ *[0-9a-f]*:	ef af 00 00 	mvcr.w cp0,pc,cr0
47.16834 ++ *[0-9a-f]*:	ef a0 0f 00 	mvcr.w cp0,r0,cr15
47.16835 ++ *[0-9a-f]*:	ef a8 07 00 	mvcr.w cp0,r8,cr7
47.16836 ++ *[0-9a-f]*:	ef a7 08 00 	mvcr.w cp0,r7,cr8
47.16837 ++ *[0-9a-f]*:	ef af 0f 20 	mvrc.w cp0,cr15,pc
47.16838 ++ *[0-9a-f]*:	ef a0 00 20 	mvrc.w cp0,cr0,r0
47.16839 ++ *[0-9a-f]*:	ef a0 0f 20 	mvrc.w cp0,cr15,r0
47.16840 ++ *[0-9a-f]*:	ef af 00 20 	mvrc.w cp0,cr0,pc
47.16841 ++ *[0-9a-f]*:	ef a7 08 20 	mvrc.w cp0,cr8,r7
47.16842 ++ *[0-9a-f]*:	ef a8 07 20 	mvrc.w cp0,cr7,r8
47.16843 ++
47.16844 ++[0-9a-f]* <fmov_d>:
47.16845 ++ *[0-9a-f]*:	e5 a5 0e e0 	cop cp0,cr14,cr14,cr0,0x4a
47.16846 ++ *[0-9a-f]*:	e5 a5 00 00 	cop cp0,cr0,cr0,cr0,0x4a
47.16847 ++ *[0-9a-f]*:	e5 a5 0e 00 	cop cp0,cr14,cr0,cr0,0x4a
47.16848 ++ *[0-9a-f]*:	e5 a5 00 e0 	cop cp0,cr0,cr14,cr0,0x4a
47.16849 ++ *[0-9a-f]*:	e5 a5 08 60 	cop cp0,cr8,cr6,cr0,0x4a
47.16850 ++ *[0-9a-f]*:	e5 a5 06 80 	cop cp0,cr6,cr8,cr0,0x4a
47.16851 ++ *[0-9a-f]*:	ef ae 0e 10 	mvcr.d cp0,lr,cr14
47.16852 ++ *[0-9a-f]*:	ef a0 00 10 	mvcr.d cp0,r0,cr0
47.16853 ++ *[0-9a-f]*:	ef ae 00 10 	mvcr.d cp0,lr,cr0
47.16854 ++ *[0-9a-f]*:	ef a0 0e 10 	mvcr.d cp0,r0,cr14
47.16855 ++ *[0-9a-f]*:	ef a8 06 10 	mvcr.d cp0,r8,cr6
47.16856 ++ *[0-9a-f]*:	ef a6 08 10 	mvcr.d cp0,r6,cr8
47.16857 ++ *[0-9a-f]*:	ef ae 0e 30 	mvrc.d cp0,cr14,lr
47.16858 ++ *[0-9a-f]*:	ef a0 00 30 	mvrc.d cp0,cr0,r0
47.16859 ++ *[0-9a-f]*:	ef a0 0e 30 	mvrc.d cp0,cr14,r0
47.16860 ++ *[0-9a-f]*:	ef ae 00 30 	mvrc.d cp0,cr0,lr
47.16861 ++ *[0-9a-f]*:	ef a6 08 30 	mvrc.d cp0,cr8,r6
47.16862 ++ *[0-9a-f]*:	ef a8 06 30 	mvrc.d cp0,cr6,r8
47.16863 ++
47.16864 ++[0-9a-f]* <fcasts_d>:
47.16865 ++ *[0-9a-f]*:	e1 a7 1f e0 	cop cp0,cr15,cr14,cr0,0xf
47.16866 ++ *[0-9a-f]*:	e1 a7 10 00 	cop cp0,cr0,cr0,cr0,0xf
47.16867 ++ *[0-9a-f]*:	e1 a7 1f 00 	cop cp0,cr15,cr0,cr0,0xf
47.16868 ++ *[0-9a-f]*:	e1 a7 10 e0 	cop cp0,cr0,cr14,cr0,0xf
47.16869 ++ *[0-9a-f]*:	e1 a7 18 60 	cop cp0,cr8,cr6,cr0,0xf
47.16870 ++ *[0-9a-f]*:	e1 a7 17 80 	cop cp0,cr7,cr8,cr0,0xf
47.16871 ++
47.16872 ++[0-9a-f]* <fcastd_s>:
47.16873 ++ *[0-9a-f]*:	e1 a8 0e f0 	cop cp0,cr14,cr15,cr0,0x10
47.16874 ++ *[0-9a-f]*:	e1 a8 00 00 	cop cp0,cr0,cr0,cr0,0x10
47.16875 ++ *[0-9a-f]*:	e1 a8 0e 00 	cop cp0,cr14,cr0,cr0,0x10
47.16876 ++ *[0-9a-f]*:	e1 a8 00 f0 	cop cp0,cr0,cr15,cr0,0x10
47.16877 ++ *[0-9a-f]*:	e1 a8 08 70 	cop cp0,cr8,cr7,cr0,0x10
47.16878 ++ *[0-9a-f]*:	e1 a8 06 80 	cop cp0,cr6,cr8,cr0,0x10
47.16879 +--- /dev/null
47.16880 ++++ b/gas/testsuite/gas/avr32/fpinsn.s
47.16881 +@@ -0,0 +1,266 @@
47.16882 ++
47.16883 ++	.text
47.16884 ++	.global	fadd_s
47.16885 ++fadd_s:
47.16886 ++	fadd.s fr15, fr15, fr15
47.16887 ++	fadd.s fr0, fr0, fr0
47.16888 ++	fadd.s fr0, fr15, fr15
47.16889 ++	fadd.s fr15, fr0, fr15
47.16890 ++	fadd.s fr15, fr15, fr0
47.16891 ++	fadd.s fr7, fr8, fr8
47.16892 ++	fadd.s fr8, fr7, fr8
47.16893 ++	fadd.s fr8, fr8, fr7
47.16894 ++	.global	fsub_s
47.16895 ++fsub_s:
47.16896 ++	fsub.s fr15, fr15, fr15
47.16897 ++	fsub.s fr0, fr0, fr0
47.16898 ++	fsub.s fr0, fr15, fr15
47.16899 ++	fsub.s fr15, fr0, fr15
47.16900 ++	fsub.s fr15, fr15, fr0
47.16901 ++	fsub.s fr7, fr8, fr8
47.16902 ++	fsub.s fr8, fr7, fr8
47.16903 ++	fsub.s fr8, fr8, fr7
47.16904 ++	.global	fmac_s
47.16905 ++fmac_s:
47.16906 ++	fmac.s fr15, fr15, fr15
47.16907 ++	fmac.s fr0, fr0, fr0
47.16908 ++	fmac.s fr0, fr15, fr15
47.16909 ++	fmac.s fr15, fr0, fr15
47.16910 ++	fmac.s fr15, fr15, fr0
47.16911 ++	fmac.s fr7, fr8, fr8
47.16912 ++	fmac.s fr8, fr7, fr8
47.16913 ++	fmac.s fr8, fr8, fr7
47.16914 ++	.global	fnmac_s
47.16915 ++fnmac_s:
47.16916 ++	fnmac.s fr15, fr15, fr15
47.16917 ++	fnmac.s fr0, fr0, fr0
47.16918 ++	fnmac.s fr0, fr15, fr15
47.16919 ++	fnmac.s fr15, fr0, fr15
47.16920 ++	fnmac.s fr15, fr15, fr0
47.16921 ++	fnmac.s fr7, fr8, fr8
47.16922 ++	fnmac.s fr8, fr7, fr8
47.16923 ++	fnmac.s fr8, fr8, fr7
47.16924 ++	.global	fmsc_s
47.16925 ++fmsc_s:
47.16926 ++	fmsc.s fr15, fr15, fr15
47.16927 ++	fmsc.s fr0, fr0, fr0
47.16928 ++	fmsc.s fr0, fr15, fr15
47.16929 ++	fmsc.s fr15, fr0, fr15
47.16930 ++	fmsc.s fr15, fr15, fr0
47.16931 ++	fmsc.s fr7, fr8, fr8
47.16932 ++	fmsc.s fr8, fr7, fr8
47.16933 ++	fmsc.s fr8, fr8, fr7
47.16934 ++	.global	fnmsc_s
47.16935 ++fnmsc_s:
47.16936 ++	fnmsc.s fr15, fr15, fr15
47.16937 ++	fnmsc.s fr0, fr0, fr0
47.16938 ++	fnmsc.s fr0, fr15, fr15
47.16939 ++	fnmsc.s fr15, fr0, fr15
47.16940 ++	fnmsc.s fr15, fr15, fr0
47.16941 ++	fnmsc.s fr7, fr8, fr8
47.16942 ++	fnmsc.s fr8, fr7, fr8
47.16943 ++	fnmsc.s fr8, fr8, fr7
47.16944 ++	.global	fmul_s
47.16945 ++fmul_s:
47.16946 ++	fmul.s fr15, fr15, fr15
47.16947 ++	fmul.s fr0, fr0, fr0
47.16948 ++	fmul.s fr0, fr15, fr15
47.16949 ++	fmul.s fr15, fr0, fr15
47.16950 ++	fmul.s fr15, fr15, fr0
47.16951 ++	fmul.s fr7, fr8, fr8
47.16952 ++	fmul.s fr8, fr7, fr8
47.16953 ++	fmul.s fr8, fr8, fr7
47.16954 ++	.global	fnmul_s
47.16955 ++fnmul_s:
47.16956 ++	fnmul.s fr15, fr15, fr15
47.16957 ++	fnmul.s fr0, fr0, fr0
47.16958 ++	fnmul.s fr0, fr15, fr15
47.16959 ++	fnmul.s fr15, fr0, fr15
47.16960 ++	fnmul.s fr15, fr15, fr0
47.16961 ++	fnmul.s fr7, fr8, fr8
47.16962 ++	fnmul.s fr8, fr7, fr8
47.16963 ++	fnmul.s fr8, fr8, fr7
47.16964 ++	.global	fneg_s
47.16965 ++fneg_s:
47.16966 ++	fneg.s fr15, fr15
47.16967 ++	fneg.s fr0, fr0
47.16968 ++	fneg.s fr0, fr15
47.16969 ++	fneg.s fr15, fr0
47.16970 ++	fneg.s fr7, fr8
47.16971 ++	fneg.s fr8, fr7
47.16972 ++	.global	fabs_s
47.16973 ++fabs_s:
47.16974 ++	fabs.s fr15, fr15
47.16975 ++	fabs.s fr0, fr0
47.16976 ++	fabs.s fr0, fr15
47.16977 ++	fabs.s fr15, fr0
47.16978 ++	fabs.s fr7, fr8
47.16979 ++	fabs.s fr8, fr7
47.16980 ++	.global	fcmp_s
47.16981 ++fcmp_s:
47.16982 ++	fcmp.s fr15, fr15
47.16983 ++	fcmp.s fr0, fr0
47.16984 ++	fcmp.s fr0, fr15
47.16985 ++	fcmp.s fr15, fr0
47.16986 ++	fcmp.s fr7, fr8
47.16987 ++	fcmp.s fr8, fr7
47.16988 ++	.global	fadd_d
47.16989 ++fadd_d:
47.16990 ++	fadd.d fr14, fr14, fr14
47.16991 ++	fadd.d fr0, fr0, fr0
47.16992 ++	fadd.d fr0, fr14, fr14
47.16993 ++	fadd.d fr14, fr0, fr14
47.16994 ++	fadd.d fr14, fr14, fr0
47.16995 ++	fadd.d fr6, fr8, fr8
47.16996 ++	fadd.d fr8, fr6, fr8
47.16997 ++	fadd.d fr8, fr8, fr6
47.16998 ++	.global	fsub_d
47.16999 ++fsub_d:
47.17000 ++	fsub.d fr14, fr14, fr14
47.17001 ++	fsub.d fr0, fr0, fr0
47.17002 ++	fsub.d fr0, fr14, fr14
47.17003 ++	fsub.d fr14, fr0, fr14
47.17004 ++	fsub.d fr14, fr14, fr0
47.17005 ++	fsub.d fr6, fr8, fr8
47.17006 ++	fsub.d fr8, fr6, fr8
47.17007 ++	fsub.d fr8, fr8, fr6
47.17008 ++	.global	fmac_d
47.17009 ++fmac_d:
47.17010 ++	fmac.d fr14, fr14, fr14
47.17011 ++	fmac.d fr0, fr0, fr0
47.17012 ++	fmac.d fr0, fr14, fr14
47.17013 ++	fmac.d fr14, fr0, fr14
47.17014 ++	fmac.d fr14, fr14, fr0
47.17015 ++	fmac.d fr6, fr8, fr8
47.17016 ++	fmac.d fr8, fr6, fr8
47.17017 ++	fmac.d fr8, fr8, fr6
47.17018 ++	.global	fnmac_d
47.17019 ++fnmac_d:
47.17020 ++	fnmac.d fr14, fr14, fr14
47.17021 ++	fnmac.d fr0, fr0, fr0
47.17022 ++	fnmac.d fr0, fr14, fr14
47.17023 ++	fnmac.d fr14, fr0, fr14
47.17024 ++	fnmac.d fr14, fr14, fr0
47.17025 ++	fnmac.d fr6, fr8, fr8
47.17026 ++	fnmac.d fr8, fr6, fr8
47.17027 ++	fnmac.d fr8, fr8, fr6
47.17028 ++	.global	fmsc_d
47.17029 ++fmsc_d:
47.17030 ++	fmsc.d fr14, fr14, fr14
47.17031 ++	fmsc.d fr0, fr0, fr0
47.17032 ++	fmsc.d fr0, fr14, fr14
47.17033 ++	fmsc.d fr14, fr0, fr14
47.17034 ++	fmsc.d fr14, fr14, fr0
47.17035 ++	fmsc.d fr6, fr8, fr8
47.17036 ++	fmsc.d fr8, fr6, fr8
47.17037 ++	fmsc.d fr8, fr8, fr6
47.17038 ++	.global	fnmsc_d
47.17039 ++fnmsc_d:
47.17040 ++	fnmsc.d fr14, fr14, fr14
47.17041 ++	fnmsc.d fr0, fr0, fr0
47.17042 ++	fnmsc.d fr0, fr14, fr14
47.17043 ++	fnmsc.d fr14, fr0, fr14
47.17044 ++	fnmsc.d fr14, fr14, fr0
47.17045 ++	fnmsc.d fr6, fr8, fr8
47.17046 ++	fnmsc.d fr8, fr6, fr8
47.17047 ++	fnmsc.d fr8, fr8, fr6
47.17048 ++	.global	fmul_d
47.17049 ++fmul_d:
47.17050 ++	fmul.d fr14, fr14, fr14
47.17051 ++	fmul.d fr0, fr0, fr0
47.17052 ++	fmul.d fr0, fr14, fr14
47.17053 ++	fmul.d fr14, fr0, fr14
47.17054 ++	fmul.d fr14, fr14, fr0
47.17055 ++	fmul.d fr6, fr8, fr8
47.17056 ++	fmul.d fr8, fr6, fr8
47.17057 ++	fmul.d fr8, fr8, fr6
47.17058 ++	.global	fnmul_d
47.17059 ++fnmul_d:
47.17060 ++	fnmul.d fr14, fr14, fr14
47.17061 ++	fnmul.d fr0, fr0, fr0
47.17062 ++	fnmul.d fr0, fr14, fr14
47.17063 ++	fnmul.d fr14, fr0, fr14
47.17064 ++	fnmul.d fr14, fr14, fr0
47.17065 ++	fnmul.d fr6, fr8, fr8
47.17066 ++	fnmul.d fr8, fr6, fr8
47.17067 ++	fnmul.d fr8, fr8, fr6
47.17068 ++	.global	fneg_d
47.17069 ++fneg_d:
47.17070 ++	fneg.d fr14, fr14
47.17071 ++	fneg.d fr0, fr0
47.17072 ++	fneg.d fr0, fr14
47.17073 ++	fneg.d fr14, fr0
47.17074 ++	fneg.d fr6, fr8
47.17075 ++	fneg.d fr8, fr6
47.17076 ++	.global	fabs_d
47.17077 ++fabs_d:
47.17078 ++	fabs.d fr14, fr14
47.17079 ++	fabs.d fr0, fr0
47.17080 ++	fabs.d fr0, fr14
47.17081 ++	fabs.d fr14, fr0
47.17082 ++	fabs.d fr6, fr8
47.17083 ++	fabs.d fr8, fr6
47.17084 ++	.global	fcmp_d
47.17085 ++fcmp_d:
47.17086 ++	fcmp.d fr14, fr14
47.17087 ++	fcmp.d fr0, fr0
47.17088 ++	fcmp.d fr0, fr14
47.17089 ++	fcmp.d fr14, fr0
47.17090 ++	fcmp.d fr6, fr8
47.17091 ++	fcmp.d fr8, fr6
47.17092 ++	.global fmov_s
47.17093 ++fmov_s:
47.17094 ++	fmov.s fr15, fr15
47.17095 ++	fmov.s fr0, fr0
47.17096 ++	fmov.s fr15, fr0
47.17097 ++	fmov.s fr0, fr15
47.17098 ++	fmov.s fr8, fr7
47.17099 ++	fmov.s fr7, fr8
47.17100 ++	fmov.s pc, fr15
47.17101 ++	fmov.s r0, fr0
47.17102 ++	fmov.s pc, fr0
47.17103 ++	fmov.s r0, fr15
47.17104 ++	fmov.s r8, fr7
47.17105 ++	fmov.s r7, fr8
47.17106 ++	fmov.s fr15, pc
47.17107 ++	fmov.s fr0, r0
47.17108 ++	fmov.s fr15, r0
47.17109 ++	fmov.s fr0, pc
47.17110 ++	fmov.s fr8, r7
47.17111 ++	fmov.s fr7, r8
47.17112 ++	.global fmov_d
47.17113 ++fmov_d:
47.17114 ++	fmov.d fr14, fr14
47.17115 ++	fmov.d fr0, fr0
47.17116 ++	fmov.d fr14, fr0
47.17117 ++	fmov.d fr0, fr14
47.17118 ++	fmov.d fr8, fr6
47.17119 ++	fmov.d fr6, fr8
47.17120 ++	fmov.d lr, fr14
47.17121 ++	fmov.d r0, fr0
47.17122 ++	fmov.d lr, fr0
47.17123 ++	fmov.d r0, fr14
47.17124 ++	fmov.d r8, fr6
47.17125 ++	fmov.d r6, fr8
47.17126 ++	fmov.d fr14, lr
47.17127 ++	fmov.d fr0, r0
47.17128 ++	fmov.d fr14, r0
47.17129 ++	fmov.d fr0, lr
47.17130 ++	fmov.d fr8, r6
47.17131 ++	fmov.d fr6, r8
47.17132 ++	.global fcasts_d
47.17133 ++fcasts_d:
47.17134 ++	fcasts.d fr15, fr14
47.17135 ++	fcasts.d fr0, fr0
47.17136 ++	fcasts.d fr15, fr0
47.17137 ++	fcasts.d fr0, fr14
47.17138 ++	fcasts.d fr8, fr6
47.17139 ++	fcasts.d fr7, fr8
47.17140 ++	.global fcastd_s
47.17141 ++fcastd_s:
47.17142 ++	fcastd.s fr14, fr15
47.17143 ++	fcastd.s fr0, fr0
47.17144 ++	fcastd.s fr14, fr0
47.17145 ++	fcastd.s fr0, fr15
47.17146 ++	fcastd.s fr8, fr7
47.17147 ++	fcastd.s fr6, fr8
47.17148 +--- /dev/null
47.17149 ++++ b/gas/testsuite/gas/avr32/hwrd-lwrd.d
47.17150 +@@ -0,0 +1,47 @@
47.17151 ++#as:
47.17152 ++#objdump: -dr
47.17153 ++#name: hwrd-lwrd
47.17154 ++
47.17155 ++.*: +file format .*
47.17156 ++
47.17157 ++Disassembly of section \.text:
47.17158 ++
47.17159 ++00000000 <test_hwrd>:
47.17160 ++   0:	e0 60 87 65 	mov r0,34661
47.17161 ++   4:	e0 60 12 34 	mov r0,4660
47.17162 ++   8:	e0 60 00 00 	mov r0,0
47.17163 ++			8: R_AVR32_HI16	\.text\+0x60
47.17164 ++   c:	e0 60 00 00 	mov r0,0
47.17165 ++			c: R_AVR32_HI16	extsym1
47.17166 ++  10:	ea 10 87 65 	orh r0,0x8765
47.17167 ++  14:	ea 10 12 34 	orh r0,0x1234
47.17168 ++  18:	ea 10 00 00 	orh r0,0x0
47.17169 ++			18: R_AVR32_HI16	\.text\+0x60
47.17170 ++  1c:	ea 10 00 00 	orh r0,0x0
47.17171 ++			1c: R_AVR32_HI16	extsym1
47.17172 ++  20:	e4 10 87 65 	andh r0,0x8765
47.17173 ++  24:	e4 10 12 34 	andh r0,0x1234
47.17174 ++  28:	e4 10 00 00 	andh r0,0x0
47.17175 ++			28: R_AVR32_HI16	\.text\+0x60
47.17176 ++  2c:	e4 10 00 00 	andh r0,0x0
47.17177 ++			2c: R_AVR32_HI16	extsym1
47.17178 ++
47.17179 ++00000030 <test_lwrd>:
47.17180 ++  30:	e0 60 43 21 	mov r0,17185
47.17181 ++  34:	e0 60 56 78 	mov r0,22136
47.17182 ++  38:	e0 60 00 00 	mov r0,0
47.17183 ++			38: R_AVR32_LO16	\.text\+0x60
47.17184 ++  3c:	e0 60 00 00 	mov r0,0
47.17185 ++			3c: R_AVR32_LO16	extsym1
47.17186 ++  40:	e8 10 43 21 	orl r0,0x4321
47.17187 ++  44:	e8 10 56 78 	orl r0,0x5678
47.17188 ++  48:	e8 10 00 00 	orl r0,0x0
47.17189 ++			48: R_AVR32_LO16	\.text\+0x60
47.17190 ++  4c:	e8 10 00 00 	orl r0,0x0
47.17191 ++			4c: R_AVR32_LO16	extsym1
47.17192 ++  50:	e0 10 43 21 	andl r0,0x4321
47.17193 ++  54:	e0 10 56 78 	andl r0,0x5678
47.17194 ++  58:	e0 10 00 00 	andl r0,0x0
47.17195 ++			58: R_AVR32_LO16	\.text\+0x60
47.17196 ++  5c:	e0 10 00 00 	andl r0,0x0
47.17197 ++			5c: R_AVR32_LO16	extsym1
47.17198 +--- /dev/null
47.17199 ++++ b/gas/testsuite/gas/avr32/hwrd-lwrd.s
47.17200 +@@ -0,0 +1,39 @@
47.17201 ++
47.17202 ++        .equ    sym1, 0x12345678
47.17203 ++
47.17204 ++        .text
47.17205 ++        .global test_hwrd
47.17206 ++test_hwrd:
47.17207 ++        mov     r0, hi(0x87654321)
47.17208 ++        mov     r0, hi(sym1)
47.17209 ++        mov     r0, hi(sym2)
47.17210 ++        mov     r0, hi(extsym1)
47.17211 ++
47.17212 ++        orh	r0, hi(0x87654321)
47.17213 ++        orh	r0, hi(sym1)
47.17214 ++        orh	r0, hi(sym2)
47.17215 ++        orh	r0, hi(extsym1)
47.17216 ++
47.17217 ++        andh	r0, hi(0x87654321)
47.17218 ++        andh	r0, hi(sym1)
47.17219 ++        andh	r0, hi(sym2)
47.17220 ++        andh	r0, hi(extsym1)
47.17221 ++
47.17222 ++        .global test_lwrd
47.17223 ++test_lwrd:
47.17224 ++        mov     r0, lo(0x87654321)
47.17225 ++        mov     r0, lo(sym1)
47.17226 ++        mov     r0, lo(sym2)
47.17227 ++        mov     r0, lo(extsym1)
47.17228 ++
47.17229 ++        orl	r0, lo(0x87654321)
47.17230 ++        orl	r0, lo(sym1)
47.17231 ++        orl	r0, lo(sym2)
47.17232 ++        orl	r0, lo(extsym1)
47.17233 ++
47.17234 ++        andl	r0, lo(0x87654321)
47.17235 ++        andl	r0, lo(sym1)
47.17236 ++        andl	r0, lo(sym2)
47.17237 ++        andl	r0, lo(extsym1)
47.17238 ++
47.17239 ++sym2:
47.17240 +--- /dev/null
47.17241 ++++ b/gas/testsuite/gas/avr32/jmptable.d
47.17242 +@@ -0,0 +1,20 @@
47.17243 ++#source: jmptable.s
47.17244 ++#as:
47.17245 ++#objdump: -dr
47.17246 ++#name: jmptable
47.17247 ++
47.17248 ++.*: +file format .*
47.17249 ++
47.17250 ++Disassembly of section \.text:
47.17251 ++
47.17252 ++00000000 <jmptable_test>:
47.17253 ++   0:	fe c8 ff f4 	sub r8,pc,-12
47.17254 ++   4:	f0 00 00 2f 	add pc,r8,r0<<0x2
47.17255 ++   8:	d7 03       	nop
47.17256 ++   a:	00 00       	add r0,r0
47.17257 ++   c:	c0 38       	rjmp 12 <jmptable_test\+0x12>
47.17258 ++   e:	c0 38       	rjmp 14 <jmptable_test\+0x14>
47.17259 ++  10:	c0 38       	rjmp 16 <jmptable_test\+0x16>
47.17260 ++  12:	d7 03       	nop
47.17261 ++  14:	d7 03       	nop
47.17262 ++  16:	d7 03       	nop
47.17263 +--- /dev/null
47.17264 ++++ b/gas/testsuite/gas/avr32/jmptable_linkrelax.d
47.17265 +@@ -0,0 +1,25 @@
47.17266 ++#source: jmptable.s
47.17267 ++#as: --linkrelax
47.17268 ++#objdump: -dr
47.17269 ++#name: jmptable_linkrelax
47.17270 ++
47.17271 ++.*: +file format .*
47.17272 ++
47.17273 ++Disassembly of section \.text:
47.17274 ++
47.17275 ++00000000 <jmptable_test>:
47.17276 ++   0:	fe c8 00 00 	sub r8,pc,0
47.17277 ++			0: R_AVR32_16N_PCREL	\.text\+0xc
47.17278 ++   4:	f0 00 00 2f 	add pc,r8,r0<<0x2
47.17279 ++   8:	d7 03       	nop
47.17280 ++   a:	00 00       	add r0,r0
47.17281 ++			a: R_AVR32_ALIGN	\*ABS\*\+0x2
47.17282 ++   c:	c0 08       	rjmp c <jmptable_test\+0xc>
47.17283 ++			c: R_AVR32_11H_PCREL	\.text\+0x12
47.17284 ++   e:	c0 08       	rjmp e <jmptable_test\+0xe>
47.17285 ++			e: R_AVR32_11H_PCREL	\.text\+0x14
47.17286 ++  10:	c0 08       	rjmp 10 <jmptable_test\+0x10>
47.17287 ++			10: R_AVR32_11H_PCREL	\.text\+0x16
47.17288 ++  12:	d7 03       	nop
47.17289 ++  14:	d7 03       	nop
47.17290 ++  16:	d7 03       	nop
47.17291 +--- /dev/null
47.17292 ++++ b/gas/testsuite/gas/avr32/jmptable.s
47.17293 +@@ -0,0 +1,14 @@
47.17294 ++
47.17295 ++	.text
47.17296 ++	.global	jmptable_test
47.17297 ++jmptable_test:
47.17298 ++	sub	r8, pc, -(.L1 - .)
47.17299 ++	add	pc, r8, r0 << 2
47.17300 ++	nop
47.17301 ++	.align	2
47.17302 ++.L1:	rjmp	1f
47.17303 ++	rjmp	2f
47.17304 ++	rjmp	3f
47.17305 ++1:	nop
47.17306 ++2:	nop
47.17307 ++3:	nop
47.17308 +--- /dev/null
47.17309 ++++ b/gas/testsuite/gas/avr32/lda_nopic.d
47.17310 +@@ -0,0 +1,32 @@
47.17311 ++#source: lda.s
47.17312 ++#as:
47.17313 ++#objdump: -dr
47.17314 ++#name: lda_nopic
47.17315 ++
47.17316 ++.*: +file format .*
47.17317 ++
47.17318 ++Disassembly of section \.text:
47.17319 ++
47.17320 ++00000000 <lda_test>:
47.17321 ++       0:	f2 c8 00 00 	sub r8,r9,0
47.17322 ++
47.17323 ++00000004 <far_negative>:
47.17324 ++       4:	f6 ca 00 00 	sub r10,r11,0
47.17325 ++	...
47.17326 ++    8000:	fe c0 7f fc 	sub r0,pc,32764
47.17327 ++    8004:	48 31       	lddpc r1,8010 <far_negative\+0x800c>
47.17328 ++    8006:	48 42       	lddpc r2,8014 <far_negative\+0x8010>
47.17329 ++    8008:	48 43       	lddpc r3,8018 <far_negative\+0x8014>
47.17330 ++    800a:	48 54       	lddpc r4,801c <far_negative\+0x8018>
47.17331 ++    800c:	fe c5 80 04 	sub r5,pc,-32764
47.17332 ++	...
47.17333 ++			8010: R_AVR32_32_CPENT	\.text
47.17334 ++			8014: R_AVR32_32_CPENT	\.data
47.17335 ++			8018: R_AVR32_32_CPENT	undefined
47.17336 ++			801c: R_AVR32_32_CPENT	\.text\+0x1001c
47.17337 ++
47.17338 ++00010008 <far_positive>:
47.17339 ++   10008:	fa cc 00 00 	sub r12,sp,0
47.17340 ++	...
47.17341 ++0001001c <toofar_positive>:
47.17342 ++   1001c:	fe ce 00 00 	sub lr,pc,0
47.17343 +--- /dev/null
47.17344 ++++ b/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d
47.17345 +@@ -0,0 +1,41 @@
47.17346 ++#source: lda.s
47.17347 ++#as: --linkrelax
47.17348 ++#objdump: -dr
47.17349 ++#name: lda_nopic_linkrelax
47.17350 ++
47.17351 ++.*: +file format .*
47.17352 ++
47.17353 ++Disassembly of section \.text:
47.17354 ++
47.17355 ++00000000 <lda_test>:
47.17356 ++       0:	f2 c8 00 00 	sub r8,r9,0
47.17357 ++
47.17358 ++00000004 <far_negative>:
47.17359 ++       4:	f6 ca 00 00 	sub r10,r11,0
47.17360 ++	\.\.\.
47.17361 ++    8000:	48 00       	lddpc r0,8000 <far_negative\+0x7ffc>
47.17362 ++			8000: R_AVR32_9W_CP	\.text\+0x800c
47.17363 ++    8002:	48 01       	lddpc r1,8000 <far_negative\+0x7ffc>
47.17364 ++			8002: R_AVR32_9W_CP	\.text\+0x8010
47.17365 ++    8004:	48 02       	lddpc r2,8004 <far_negative\+0x8000>
47.17366 ++			8004: R_AVR32_9W_CP	\.text\+0x8014
47.17367 ++    8006:	48 03       	lddpc r3,8004 <far_negative\+0x8000>
47.17368 ++			8006: R_AVR32_9W_CP	\.text\+0x8018
47.17369 ++    8008:	48 04       	lddpc r4,8008 <far_negative\+0x8004>
47.17370 ++			8008: R_AVR32_9W_CP	\.text\+0x801c
47.17371 ++    800a:	48 05       	lddpc r5,8008 <far_negative\+0x8004>
47.17372 ++			800a: R_AVR32_9W_CP	\.text\+0x8020
47.17373 ++	\.\.\.
47.17374 ++			800c: R_AVR32_ALIGN	\*ABS\*\+0x2
47.17375 ++			800c: R_AVR32_32_CPENT	\.text\+0x4
47.17376 ++			8010: R_AVR32_32_CPENT	\.text
47.17377 ++			8014: R_AVR32_32_CPENT	\.data
47.17378 ++			8018: R_AVR32_32_CPENT	undefined
47.17379 ++			801c: R_AVR32_32_CPENT	\.text\+0x10020
47.17380 ++			8020: R_AVR32_32_CPENT	\.text\+0x1000c
47.17381 ++
47.17382 ++0001000c <far_positive>:
47.17383 ++   1000c:	fa cc 00 00 	sub r12,sp,0
47.17384 ++	\.\.\.
47.17385 ++00010020 <toofar_positive>:
47.17386 ++   10020:	fe ce 00 00 	sub lr,pc,0
47.17387 +--- /dev/null
47.17388 ++++ b/gas/testsuite/gas/avr32/lda_pic.d
47.17389 +@@ -0,0 +1,32 @@
47.17390 ++#source: lda.s
47.17391 ++#as: --pic
47.17392 ++#objdump: -dr
47.17393 ++#name: lda_pic
47.17394 ++
47.17395 ++.*: +file format .*
47.17396 ++
47.17397 ++Disassembly of section \.text:
47.17398 ++
47.17399 ++00000000 <lda_test>:
47.17400 ++       0:	f2 c8 00 00 	sub r8,r9,0
47.17401 ++
47.17402 ++00000004 <far_negative>:
47.17403 ++       4:	f6 ca 00 00 	sub r10,r11,0
47.17404 ++	...
47.17405 ++    8000:	fe c0 7f fc 	sub r0,pc,32764
47.17406 ++    8004:	ec f1 00 00 	ld.w r1,r6\[0\]
47.17407 ++			8004: R_AVR32_GOT16S	toofar_negative
47.17408 ++    8008:	ec f2 00 00 	ld.w r2,r6\[0\]
47.17409 ++			8008: R_AVR32_GOT16S	different_section
47.17410 ++    800c:	ec f3 00 00 	ld.w r3,r6\[0\]
47.17411 ++			800c: R_AVR32_GOT16S	undefined
47.17412 ++    8010:	ec f4 00 00 	ld.w r4,r6\[0\]
47.17413 ++			8010: R_AVR32_GOT16S	toofar_positive
47.17414 ++    8014:	fe c5 80 14 	sub r5,pc,-32748
47.17415 ++	...
47.17416 ++
47.17417 ++00010000 <far_positive>:
47.17418 ++   10000:	fa cc 00 00 	sub r12,sp,0
47.17419 ++	...
47.17420 ++00010014 <toofar_positive>:
47.17421 ++   10014:	fe ce 00 00 	sub lr,pc,0
47.17422 +--- /dev/null
47.17423 ++++ b/gas/testsuite/gas/avr32/lda_pic_linkrelax.d
47.17424 +@@ -0,0 +1,40 @@
47.17425 ++#source: lda.s
47.17426 ++#as: --pic --linkrelax
47.17427 ++#objdump: -dr
47.17428 ++#name: lda_pic_linkrelax
47.17429 ++
47.17430 ++.*: +file format .*
47.17431 ++
47.17432 ++Disassembly of section \.text:
47.17433 ++
47.17434 ++00000000 <lda_test>:
47.17435 ++       0:	f2 c8 00 00 	sub r8,r9,0
47.17436 ++
47.17437 ++00000004 <far_negative>:
47.17438 ++       4:	f6 ca 00 00 	sub r10,r11,0
47.17439 ++	...
47.17440 ++    8000:	e0 60 00 00 	mov r0,0
47.17441 ++			8000: R_AVR32_LDA_GOT	far_negative
47.17442 ++    8004:	ec 00 03 20 	ld\.w r0,r6\[r0<<0x2\]
47.17443 ++    8008:	e0 61 00 00 	mov r1,0
47.17444 ++			8008: R_AVR32_LDA_GOT	toofar_negative
47.17445 ++    800c:	ec 01 03 21 	ld\.w r1,r6\[r1<<0x2\]
47.17446 ++    8010:	e0 62 00 00 	mov r2,0
47.17447 ++			8010: R_AVR32_LDA_GOT	different_section
47.17448 ++    8014:	ec 02 03 22 	ld\.w r2,r6\[r2<<0x2\]
47.17449 ++    8018:	e0 63 00 00 	mov r3,0
47.17450 ++			8018: R_AVR32_LDA_GOT	undefined
47.17451 ++    801c:	ec 03 03 23 	ld\.w r3,r6\[r3<<0x2\]
47.17452 ++    8020:	e0 64 00 00 	mov r4,0
47.17453 ++			8020: R_AVR32_LDA_GOT	toofar_positive
47.17454 ++    8024:	ec 04 03 24 	ld\.w r4,r6\[r4<<0x2\]
47.17455 ++    8028:	e0 65 00 00 	mov r5,0
47.17456 ++			8028: R_AVR32_LDA_GOT	far_positive
47.17457 ++    802c:	ec 05 03 25 	ld\.w r5,r6\[r5<<0x2\]
47.17458 ++	...
47.17459 ++
47.17460 ++00010018 <far_positive>:
47.17461 ++   10018:	fa cc 00 00 	sub r12,sp,0
47.17462 ++	...
47.17463 ++0001002c <toofar_positive>:
47.17464 ++   1002c:	fe ce 00 00 	sub lr,pc,0
47.17465 +--- /dev/null
47.17466 ++++ b/gas/testsuite/gas/avr32/lda.s
47.17467 +@@ -0,0 +1,30 @@
47.17468 ++
47.17469 ++	.text
47.17470 ++	.global lda_test
47.17471 ++lda_test:
47.17472 ++toofar_negative:
47.17473 ++	sub	r8, r9, 0
47.17474 ++far_negative:
47.17475 ++	sub	r10, r11, 0
47.17476 ++
47.17477 ++	.fill	32760, 1, 0x00
47.17478 ++
47.17479 ++	lda.w	r0, far_negative
47.17480 ++	lda.w	r1, toofar_negative
47.17481 ++	lda.w	r2, different_section
47.17482 ++	lda.w	r3, undefined
47.17483 ++	lda.w	r4, toofar_positive
47.17484 ++	lda.w	r5, far_positive
47.17485 ++
47.17486 ++	.cpool
47.17487 ++
47.17488 ++	.fill	32744, 1, 0x00
47.17489 ++far_positive:
47.17490 ++	sub	r12, sp, 0
47.17491 ++	.fill	16, 1, 0x00
47.17492 ++toofar_positive:
47.17493 ++	sub	lr, pc, 0
47.17494 ++
47.17495 ++	.data
47.17496 ++different_section:
47.17497 ++	.long	0x12345678
47.17498 +--- /dev/null
47.17499 ++++ b/gas/testsuite/gas/avr32/pcrel.d
47.17500 +@@ -0,0 +1,64 @@
47.17501 ++#as:
47.17502 ++#objdump: -dr
47.17503 ++#name: pcrel
47.17504 ++
47.17505 ++.*: +file format .*
47.17506 ++
47.17507 ++Disassembly of section \.text:
47.17508 ++
47.17509 ++00000000 <test_rjmp>:
47.17510 ++   0:	d7 03       	nop
47.17511 ++   2:	c0 28       	rjmp 6 <test_rjmp\+0x6>
47.17512 ++   4:	d7 03       	nop
47.17513 ++   6:	e0 8f 00 00 	bral 6 <test_rjmp\+0x6>
47.17514 ++			6: R_AVR32_22H_PCREL	extsym10
47.17515 ++
47.17516 ++0000000a <test_rcall>:
47.17517 ++   a:	d7 03       	nop
47.17518 ++0000000c <test_rcall2>:
47.17519 ++   c:	c0 2c       	rcall 10 <test_rcall2\+0x4>
47.17520 ++   e:	d7 03       	nop
47.17521 ++  10:	e0 a0 00 00 	rcall 10 <test_rcall2\+0x4>
47.17522 ++			10: R_AVR32_22H_PCREL	extsym21
47.17523 ++
47.17524 ++00000014 <test_branch>:
47.17525 ++  14:	c0 31       	brne 1a <test_branch\+0x6>
47.17526 ++  16:	e0 8f 00 00 	bral 16 <test_branch\+0x2>
47.17527 ++			16: R_AVR32_22H_PCREL	test_branch
47.17528 ++  1a:	e0 80 00 00 	breq 1a <test_branch\+0x6>
47.17529 ++			1a: R_AVR32_22H_PCREL	extsym21
47.17530 ++
47.17531 ++0000001e <test_lddpc>:
47.17532 ++  1e:	48 30       	lddpc r0,28 <sym1>
47.17533 ++  20:	48 20       	lddpc r0,28 <sym1>
47.17534 ++  22:	fe f0 00 00 	ld.w r0,pc\[0\]
47.17535 ++			22: R_AVR32_16B_PCREL	extsym16
47.17536 ++	\.\.\.
47.17537 ++
47.17538 ++00000028 <sym1>:
47.17539 ++  28:	d7 03       	nop
47.17540 ++  2a:	d7 03       	nop
47.17541 ++
47.17542 ++0000002c <test_local>:
47.17543 ++  2c:	48 20       	lddpc r0,34 <test_local\+0x8>
47.17544 ++  2e:	48 30       	lddpc r0,38 <test_local\+0xc>
47.17545 ++  30:	48 20       	lddpc r0,38 <test_local\+0xc>
47.17546 ++  32:	00 00       	add r0,r0
47.17547 ++  34:	d7 03       	nop
47.17548 ++  36:	d7 03       	nop
47.17549 ++  38:	d7 03       	nop
47.17550 ++  3a:	d7 03       	nop
47.17551 ++
47.17552 ++Disassembly of section \.text\.init:
47.17553 ++
47.17554 ++00000000 <test_inter_section>:
47.17555 ++   0:	e0 a0 .. .. 	rcall [0-9a-f]+ <.*>
47.17556 ++			0: R_AVR32_22H_PCREL	test_rcall
47.17557 ++   4:	d7 03       	nop
47.17558 ++   6:	e0 a0 .. .. 	rcall [0-9a-f]+ <.*>
47.17559 ++			6: R_AVR32_22H_PCREL	test_rcall
47.17560 ++   a:	e0 a0 .. .. 	rcall [0-9a-z]+ <.*>
47.17561 ++			a: R_AVR32_22H_PCREL	\.text\+0xc
47.17562 ++   e:	d7 03       	nop
47.17563 ++  10:	e0 a0 .. .. 	rcall [0-9a-f]+ <.*>
47.17564 ++			10: R_AVR32_22H_PCREL	\.text\+0xc
47.17565 +--- /dev/null
47.17566 ++++ b/gas/testsuite/gas/avr32/pcrel.s
47.17567 +@@ -0,0 +1,57 @@
47.17568 ++
47.17569 ++        .text
47.17570 ++        .global test_rjmp
47.17571 ++test_rjmp:
47.17572 ++        nop
47.17573 ++        rjmp    0f
47.17574 ++        nop
47.17575 ++0:      rjmp    extsym10
47.17576 ++
47.17577 ++        .global test_rcall
47.17578 ++test_rcall:
47.17579 ++        nop
47.17580 ++test_rcall2:
47.17581 ++        rcall   0f
47.17582 ++        nop
47.17583 ++0:      rcall   extsym21
47.17584 ++
47.17585 ++        .global test_branch
47.17586 ++test_branch:
47.17587 ++        brne    0f
47.17588 ++	/* This will generate a reloc since test_branch is global */
47.17589 ++        bral    test_branch
47.17590 ++0:	breq    extsym21
47.17591 ++
47.17592 ++        .global test_lddpc
47.17593 ++test_lddpc:
47.17594 ++        lddpc   r0,sym1
47.17595 ++        lddpc   r0,sym1
47.17596 ++        lddpc   r0,extsym16
47.17597 ++
47.17598 ++        .align	2
47.17599 ++sym1:   nop
47.17600 ++        nop
47.17601 ++
47.17602 ++	.global	test_local
47.17603 ++test_local:
47.17604 ++	lddpc	r0, .LC1
47.17605 ++	lddpc	r0, .LC2
47.17606 ++	lddpc	r0, .LC1 + 0x4
47.17607 ++
47.17608 ++	.align	2
47.17609 ++.LC1:
47.17610 ++	nop
47.17611 ++	nop
47.17612 ++.LC2:
47.17613 ++	nop
47.17614 ++	nop
47.17615 ++
47.17616 ++	.section .text.init,"ax"
47.17617 ++	.global test_inter_section
47.17618 ++test_inter_section:
47.17619 ++	rcall	test_rcall
47.17620 ++	nop
47.17621 ++	rcall	test_rcall
47.17622 ++	rcall	test_rcall2
47.17623 ++	nop
47.17624 ++	rcall	test_rcall2
47.17625 +--- /dev/null
47.17626 ++++ b/gas/testsuite/gas/avr32/pico.d
47.17627 +@@ -0,0 +1,149 @@
47.17628 ++#as:
47.17629 ++#objdump: -dr
47.17630 ++#name: pico
47.17631 ++
47.17632 ++.*: +file format .*
47.17633 ++
47.17634 ++Disassembly of section \.text:
47.17635 ++
47.17636 ++[0-9a-f]* <picosvmac>:
47.17637 ++ *[0-9a-f]*:	e1 a6 20 00 	cop cp1,cr0,cr0,cr0,0xc
47.17638 ++ *[0-9a-f]*:	e1 a7 2b bb 	cop cp1,cr11,cr11,cr11,0xe
47.17639 ++ *[0-9a-f]*:	e1 a6 3a 05 	cop cp1,cr10,cr0,cr5,0xd
47.17640 ++ *[0-9a-f]*:	e1 a7 36 90 	cop cp1,cr6,cr9,cr0,0xf
47.17641 ++
47.17642 ++[0-9a-f]* <picosvmul>:
47.17643 ++ *[0-9a-f]*:	e1 a4 20 00 	cop cp1,cr0,cr0,cr0,0x8
47.17644 ++ *[0-9a-f]*:	e1 a5 2b bb 	cop cp1,cr11,cr11,cr11,0xa
47.17645 ++ *[0-9a-f]*:	e1 a4 3a 05 	cop cp1,cr10,cr0,cr5,0x9
47.17646 ++ *[0-9a-f]*:	e1 a5 36 90 	cop cp1,cr6,cr9,cr0,0xb
47.17647 ++
47.17648 ++[0-9a-f]* <picovmac>:
47.17649 ++ *[0-9a-f]*:	e1 a2 20 00 	cop cp1,cr0,cr0,cr0,0x4
47.17650 ++ *[0-9a-f]*:	e1 a3 2b bb 	cop cp1,cr11,cr11,cr11,0x6
47.17651 ++ *[0-9a-f]*:	e1 a2 3a 05 	cop cp1,cr10,cr0,cr5,0x5
47.17652 ++ *[0-9a-f]*:	e1 a3 36 90 	cop cp1,cr6,cr9,cr0,0x7
47.17653 ++
47.17654 ++[0-9a-f]* <picovmul>:
47.17655 ++ *[0-9a-f]*:	e1 a0 20 00 	cop cp1,cr0,cr0,cr0,0x0
47.17656 ++ *[0-9a-f]*:	e1 a1 2b bb 	cop cp1,cr11,cr11,cr11,0x2
47.17657 ++ *[0-9a-f]*:	e1 a0 3a 05 	cop cp1,cr10,cr0,cr5,0x1
47.17658 ++ *[0-9a-f]*:	e1 a1 36 90 	cop cp1,cr6,cr9,cr0,0x3
47.17659 ++
47.17660 ++[0-9a-f]* <picold_d>:
47.17661 ++ *[0-9a-f]*:	e9 af 3e ff 	ldc\.d cp1,cr14,pc\[0x3fc\]
47.17662 ++ *[0-9a-f]*:	e9 a0 30 ff 	ldc\.d cp1,cr0,r0\[0x3fc\]
47.17663 ++ *[0-9a-f]*:	e9 a0 30 00 	ldc\.d cp1,cr0,r0\[0x0\]
47.17664 ++ *[0-9a-f]*:	ef a8 26 50 	ldc\.d cp1,cr6,--r8
47.17665 ++ *[0-9a-f]*:	ef a7 28 50 	ldc\.d cp1,cr8,--r7
47.17666 ++ *[0-9a-f]*:	ef aa 32 65 	ldc\.d cp1,cr2,r10\[r5<<0x2\]
47.17667 ++ *[0-9a-f]*:	ef a3 3c 46 	ldc\.d cp1,cr12,r3\[r6\]
47.17668 ++
47.17669 ++[0-9a-f]* <picold_w>:
47.17670 ++ *[0-9a-f]*:	e9 af 2f ff 	ldc\.w cp1,cr15,pc\[0x3fc\]
47.17671 ++ *[0-9a-f]*:	e9 a0 20 ff 	ldc\.w cp1,cr0,r0\[0x3fc\]
47.17672 ++ *[0-9a-f]*:	e9 a0 20 00 	ldc\.w cp1,cr0,r0\[0x0\]
47.17673 ++ *[0-9a-f]*:	ef a8 27 40 	ldc\.w cp1,cr7,--r8
47.17674 ++ *[0-9a-f]*:	ef a7 28 40 	ldc\.w cp1,cr8,--r7
47.17675 ++ *[0-9a-f]*:	ef aa 31 25 	ldc\.w cp1,cr1,r10\[r5<<0x2\]
47.17676 ++ *[0-9a-f]*:	ef a3 3d 06 	ldc\.w cp1,cr13,r3\[r6\]
47.17677 ++
47.17678 ++[0-9a-f]* <picoldm_d>:
47.17679 ++ *[0-9a-f]*:	ed af 24 ff 	ldcm\.d cp1,pc,cr0-cr15
47.17680 ++ *[0-9a-f]*:	ed a0 24 01 	ldcm\.d cp1,r0,cr0-cr1
47.17681 ++ *[0-9a-f]*:	ed a7 24 80 	ldcm\.d cp1,r7,cr14-cr15
47.17682 ++ *[0-9a-f]*:	ed a8 24 7f 	ldcm\.d cp1,r8,cr0-cr13
47.17683 ++
47.17684 ++[0-9a-f]* <picoldm_d_pu>:
47.17685 ++ *[0-9a-f]*:	ed af 34 ff 	ldcm\.d cp1,pc\+\+,cr0-cr15
47.17686 ++ *[0-9a-f]*:	ed a0 34 01 	ldcm\.d cp1,r0\+\+,cr0-cr1
47.17687 ++ *[0-9a-f]*:	ed a7 34 80 	ldcm\.d cp1,r7\+\+,cr14-cr15
47.17688 ++ *[0-9a-f]*:	ed a8 34 7f 	ldcm\.d cp1,r8\+\+,cr0-cr13
47.17689 ++
47.17690 ++[0-9a-f]* <picoldm_w>:
47.17691 ++ *[0-9a-f]*:	ed af 20 ff 	ldcm\.w cp1,pc,cr0-cr7
47.17692 ++ *[0-9a-f]*:	ed a0 20 01 	ldcm\.w cp1,r0,cr0
47.17693 ++ *[0-9a-f]*:	ed a7 20 80 	ldcm\.w cp1,r7,cr7
47.17694 ++ *[0-9a-f]*:	ed a8 20 7f 	ldcm\.w cp1,r8,cr0-cr6
47.17695 ++ *[0-9a-f]*:	ed af 21 ff 	ldcm\.w cp1,pc,cr8-cr15
47.17696 ++ *[0-9a-f]*:	ed a0 21 01 	ldcm\.w cp1,r0,cr8
47.17697 ++ *[0-9a-f]*:	ed a7 21 80 	ldcm\.w cp1,r7,cr15
47.17698 ++ *[0-9a-f]*:	ed a8 21 7f 	ldcm\.w cp1,r8,cr8-cr14
47.17699 ++
47.17700 ++[0-9a-f]* <picoldm_w_pu>:
47.17701 ++ *[0-9a-f]*:	ed af 30 ff 	ldcm\.w cp1,pc\+\+,cr0-cr7
47.17702 ++ *[0-9a-f]*:	ed a0 30 01 	ldcm\.w cp1,r0\+\+,cr0
47.17703 ++ *[0-9a-f]*:	ed a7 30 80 	ldcm\.w cp1,r7\+\+,cr7
47.17704 ++ *[0-9a-f]*:	ed a8 30 7f 	ldcm\.w cp1,r8\+\+,cr0-cr6
47.17705 ++ *[0-9a-f]*:	ed af 31 ff 	ldcm\.w cp1,pc\+\+,cr8-cr15
47.17706 ++ *[0-9a-f]*:	ed a0 31 01 	ldcm\.w cp1,r0\+\+,cr8
47.17707 ++ *[0-9a-f]*:	ed a7 31 80 	ldcm\.w cp1,r7\+\+,cr15
47.17708 ++ *[0-9a-f]*:	ed a8 31 7f 	ldcm\.w cp1,r8\+\+,cr8-cr14
47.17709 ++
47.17710 ++[0-9a-f]* <picomv_d>:
47.17711 ++ *[0-9a-f]*:	ef ae 2e 30 	mvrc\.d cp1,cr14,lr
47.17712 ++ *[0-9a-f]*:	ef a0 20 30 	mvrc\.d cp1,cr0,r0
47.17713 ++ *[0-9a-f]*:	ef a8 26 30 	mvrc\.d cp1,cr6,r8
47.17714 ++ *[0-9a-f]*:	ef a6 28 30 	mvrc\.d cp1,cr8,r6
47.17715 ++ *[0-9a-f]*:	ef ae 2e 10 	mvcr\.d cp1,lr,cr14
47.17716 ++ *[0-9a-f]*:	ef a0 20 10 	mvcr\.d cp1,r0,cr0
47.17717 ++ *[0-9a-f]*:	ef a8 26 10 	mvcr\.d cp1,r8,cr6
47.17718 ++ *[0-9a-f]*:	ef a6 28 10 	mvcr\.d cp1,r6,cr8
47.17719 ++
47.17720 ++[0-9a-f]* <picomv_w>:
47.17721 ++ *[0-9a-f]*:	ef af 2f 20 	mvrc\.w cp1,cr15,pc
47.17722 ++ *[0-9a-f]*:	ef a0 20 20 	mvrc\.w cp1,cr0,r0
47.17723 ++ *[0-9a-f]*:	ef a8 27 20 	mvrc\.w cp1,cr7,r8
47.17724 ++ *[0-9a-f]*:	ef a7 28 20 	mvrc\.w cp1,cr8,r7
47.17725 ++ *[0-9a-f]*:	ef af 2f 00 	mvcr\.w cp1,pc,cr15
47.17726 ++ *[0-9a-f]*:	ef a0 20 00 	mvcr\.w cp1,r0,cr0
47.17727 ++ *[0-9a-f]*:	ef a8 27 00 	mvcr\.w cp1,r8,cr7
47.17728 ++ *[0-9a-f]*:	ef a7 28 00 	mvcr\.w cp1,r7,cr8
47.17729 ++
47.17730 ++[0-9a-f]* <picost_d>:
47.17731 ++ *[0-9a-f]*:	eb af 3e ff 	stc\.d cp1,pc\[0x3fc\],cr14
47.17732 ++ *[0-9a-f]*:	eb a0 30 00 	stc\.d cp1,r0\[0x0\],cr0
47.17733 ++ *[0-9a-f]*:	ef a8 26 70 	stc\.d cp1,r8\+\+,cr6
47.17734 ++ *[0-9a-f]*:	ef a7 28 70 	stc\.d cp1,r7\+\+,cr8
47.17735 ++ *[0-9a-f]*:	ef aa 32 e5 	stc\.d cp1,r10\[r5<<0x2\],cr2
47.17736 ++ *[0-9a-f]*:	ef a3 3c c6 	stc\.d cp1,r3\[r6\],cr12
47.17737 ++
47.17738 ++[0-9a-f]* <picost_w>:
47.17739 ++ *[0-9a-f]*:	eb af 2f ff 	stc\.w cp1,pc\[0x3fc\],cr15
47.17740 ++ *[0-9a-f]*:	eb a0 20 00 	stc\.w cp1,r0\[0x0\],cr0
47.17741 ++ *[0-9a-f]*:	ef a8 27 60 	stc\.w cp1,r8\+\+,cr7
47.17742 ++ *[0-9a-f]*:	ef a7 28 60 	stc\.w cp1,r7\+\+,cr8
47.17743 ++ *[0-9a-f]*:	ef aa 31 a5 	stc\.w cp1,r10\[r5<<0x2\],cr1
47.17744 ++ *[0-9a-f]*:	ef a3 3d 86 	stc\.w cp1,r3\[r6\],cr13
47.17745 ++
47.17746 ++[0-9a-f]* <picostm_d>:
47.17747 ++ *[0-9a-f]*:	ed af 25 ff 	stcm\.d cp1,pc,cr0-cr15
47.17748 ++ *[0-9a-f]*:	ed a0 25 01 	stcm\.d cp1,r0,cr0-cr1
47.17749 ++ *[0-9a-f]*:	ed a7 25 80 	stcm\.d cp1,r7,cr14-cr15
47.17750 ++ *[0-9a-f]*:	ed a8 25 7f 	stcm\.d cp1,r8,cr0-cr13
47.17751 ++
47.17752 ++[0-9a-f]* <picostm_d_pu>:
47.17753 ++ *[0-9a-f]*:	ed af 35 ff 	stcm\.d cp1,--pc,cr0-cr15
47.17754 ++ *[0-9a-f]*:	ed a0 35 01 	stcm\.d cp1,--r0,cr0-cr1
47.17755 ++ *[0-9a-f]*:	ed a7 35 80 	stcm\.d cp1,--r7,cr14-cr15
47.17756 ++ *[0-9a-f]*:	ed a8 35 7f 	stcm\.d cp1,--r8,cr0-cr13
47.17757 ++
47.17758 ++[0-9a-f]* <picostm_w>:
47.17759 ++ *[0-9a-f]*:	ed af 22 ff 	stcm\.w cp1,pc,cr0-cr7
47.17760 ++ *[0-9a-f]*:	ed a0 22 01 	stcm\.w cp1,r0,cr0
47.17761 ++ *[0-9a-f]*:	ed a7 22 80 	stcm\.w cp1,r7,cr7
47.17762 ++ *[0-9a-f]*:	ed a8 22 7f 	stcm\.w cp1,r8,cr0-cr6
47.17763 ++ *[0-9a-f]*:	ed af 23 ff 	stcm\.w cp1,pc,cr8-cr15
47.17764 ++ *[0-9a-f]*:	ed a0 23 01 	stcm\.w cp1,r0,cr8
47.17765 ++ *[0-9a-f]*:	ed a7 23 80 	stcm\.w cp1,r7,cr15
47.17766 ++ *[0-9a-f]*:	ed a8 23 7f 	stcm\.w cp1,r8,cr8-cr14
47.17767 ++
47.17768 ++[0-9a-f]* <picostm_w_pu>:
47.17769 ++ *[0-9a-f]*:	ed af 32 ff 	stcm\.w cp1,--pc,cr0-cr7
47.17770 ++ *[0-9a-f]*:	ed a0 32 01 	stcm\.w cp1,--r0,cr0
47.17771 ++ *[0-9a-f]*:	ed a7 32 80 	stcm\.w cp1,--r7,cr7
47.17772 ++ *[0-9a-f]*:	ed a8 32 7f 	stcm\.w cp1,--r8,cr0-cr6
47.17773 ++ *[0-9a-f]*:	ed af 33 ff 	stcm\.w cp1,--pc,cr8-cr15
47.17774 ++ *[0-9a-f]*:	ed a0 33 01 	stcm\.w cp1,--r0,cr8
47.17775 ++ *[0-9a-f]*:	ed a7 33 80 	stcm\.w cp1,--r7,cr15
47.17776 ++ *[0-9a-f]*:	ed a8 33 7f 	stcm\.w cp1,--r8,cr8-cr14
47.17777 +--- /dev/null
47.17778 ++++ b/gas/testsuite/gas/avr32/pico.s
47.17779 +@@ -0,0 +1,144 @@
47.17780 ++
47.17781 ++	.text
47.17782 ++	.global	picosvmac
47.17783 ++picosvmac:
47.17784 ++	picosvmac	out0, in0, in0, in0
47.17785 ++	picosvmac	out2, in11, in11, in11
47.17786 ++	picosvmac	out1, in10, in0, in5
47.17787 ++	picosvmac	out3, in6, in9, in0
47.17788 ++	.global picosvmul
47.17789 ++picosvmul:
47.17790 ++	picosvmul	out0, in0, in0, in0
47.17791 ++	picosvmul	out2, in11, in11, in11
47.17792 ++	picosvmul	out1, in10, in0, in5
47.17793 ++	picosvmul	out3, in6, in9, in0
47.17794 ++	.global picovmac
47.17795 ++picovmac:
47.17796 ++	picovmac	out0, in0, in0, in0
47.17797 ++	picovmac	out2, in11, in11, in11
47.17798 ++	picovmac	out1, in10, in0, in5
47.17799 ++	picovmac	out3, in6, in9, in0
47.17800 ++	.global picovmul
47.17801 ++picovmul:
47.17802 ++	picovmul	out0, in0, in0, in0
47.17803 ++	picovmul	out2, in11, in11, in11
47.17804 ++	picovmul	out1, in10, in0, in5
47.17805 ++	picovmul	out3, in6, in9, in0
47.17806 ++	.global	picold_d
47.17807 ++picold_d:
47.17808 ++	picold.d	vmu2_out, pc[1020]
47.17809 ++	picold.d	inpix2, r0[1020]
47.17810 ++	picold.d	inpix2, r0[0]
47.17811 ++	picold.d	coeff0_a, --r8
47.17812 ++	picold.d	coeff1_a, --r7
47.17813 ++	picold.d	inpix0, r10[r5 << 2]
47.17814 ++	picold.d	vmu0_out, r3[r6 << 0]
47.17815 ++	.global	picold_w
47.17816 ++picold_w:	
47.17817 ++	picold.w	config, pc[1020]
47.17818 ++	picold.w	inpix2, r0[1020]
47.17819 ++	picold.w	inpix2, r0[0]
47.17820 ++	picold.w	coeff0_b, --r8
47.17821 ++	picold.w	coeff1_a, --r7
47.17822 ++	picold.w	inpix1, r10[r5 << 2]
47.17823 ++	picold.w	vmu1_out, r3[r6 << 0]
47.17824 ++	.global	picoldm_d
47.17825 ++picoldm_d:
47.17826 ++	picoldm.d	pc, inpix2-config
47.17827 ++	picoldm.d	r0, inpix2, inpix1
47.17828 ++	picoldm.d	r7, vmu2_out, config
47.17829 ++	picoldm.d	r8, inpix2-vmu1_out
47.17830 ++	.global	picoldm_d_pu
47.17831 ++picoldm_d_pu:
47.17832 ++	picoldm.d	pc++, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out, vmu2_out, config
47.17833 ++	picoldm.d	r0++, inpix2, inpix1
47.17834 ++	picoldm.d	r7++, vmu2_out, config
47.17835 ++	picoldm.d	r8++, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out
47.17836 ++	.global	picoldm_w
47.17837 ++picoldm_w:
47.17838 ++	picoldm.w	pc, inpix2-coeff0_b
47.17839 ++	picoldm.w	r0, inpix2
47.17840 ++	picoldm.w	r7, coeff0_b
47.17841 ++	picoldm.w	r8, inpix2-coeff0_a
47.17842 ++	picoldm.w	pc, coeff1_a-config
47.17843 ++	picoldm.w	r0, coeff1_a
47.17844 ++	picoldm.w	r7, config
47.17845 ++	picoldm.w	r8, coeff1_a-vmu2_out
47.17846 ++	.global	picoldm_w_pu
47.17847 ++picoldm_w_pu:
47.17848 ++	picoldm.w	pc++, inpix2-coeff0_b
47.17849 ++	picoldm.w	r0++, inpix2
47.17850 ++	picoldm.w	r7++, coeff0_b
47.17851 ++	picoldm.w	r8++, inpix2-coeff0_a
47.17852 ++	picoldm.w	pc++, coeff1_a-config
47.17853 ++	picoldm.w	r0++, coeff1_a
47.17854 ++	picoldm.w	r7++, config
47.17855 ++	picoldm.w	r8++, coeff1_a-vmu2_out
47.17856 ++	.global	picomv_d
47.17857 ++picomv_d:
47.17858 ++	picomv.d	vmu2_out, lr
47.17859 ++	picomv.d	inpix2, r0
47.17860 ++	picomv.d	coeff0_a, r8
47.17861 ++	picomv.d	coeff1_a, r6
47.17862 ++	picomv.d	pc, vmu2_out
47.17863 ++	picomv.d	r0, inpix2
47.17864 ++	picomv.d	r8, coeff0_a
47.17865 ++	picomv.d	r6, coeff1_a
47.17866 ++	.global	picomv_w
47.17867 ++picomv_w:
47.17868 ++	picomv.w	config, pc
47.17869 ++	picomv.w	inpix2, r0
47.17870 ++	picomv.w	coeff0_b, r8
47.17871 ++	picomv.w	coeff1_a, r7
47.17872 ++	picomv.w	pc, config
47.17873 ++	picomv.w	r0, inpix2
47.17874 ++	picomv.w	r8, coeff0_b
47.17875 ++	picomv.w	r7, coeff1_a
47.17876 ++	.global	picost_d
47.17877 ++picost_d:
47.17878 ++	picost.d	pc[1020], vmu2_out
47.17879 ++	picost.d	r0[0], inpix2
47.17880 ++	picost.d	r8++, coeff0_a
47.17881 ++	picost.d	r7++, coeff1_a
47.17882 ++	picost.d	r10[r5 << 2], inpix0
47.17883 ++	picost.d	r3[r6 << 0], vmu0_out
47.17884 ++	.global	picost_w
47.17885 ++picost_w:	
47.17886 ++	picost.w	pc[1020], config
47.17887 ++	picost.w	r0[0], inpix2
47.17888 ++	picost.w	r8++, coeff0_b
47.17889 ++	picost.w	r7++, coeff1_a
47.17890 ++	picost.w	r10[r5 << 2], inpix1
47.17891 ++	picost.w	r3[r6 << 0], vmu1_out
47.17892 ++	.global	picostm_d
47.17893 ++picostm_d:
47.17894 ++	picostm.d	pc, inpix2-config
47.17895 ++	picostm.d	r0, inpix2, inpix1
47.17896 ++	picostm.d	r7, vmu2_out, config
47.17897 ++	picostm.d	r8, inpix2-vmu1_out
47.17898 ++	.global	picostm_d_pu
47.17899 ++picostm_d_pu:
47.17900 ++	picostm.d	--pc, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out, vmu2_out, config
47.17901 ++	picostm.d	--r0, inpix2, inpix1
47.17902 ++	picostm.d	--r7, vmu2_out, config
47.17903 ++	picostm.d	--r8, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out
47.17904 ++	.global	picostm_w
47.17905 ++picostm_w:
47.17906 ++	picostm.w	pc, inpix2-coeff0_b
47.17907 ++	picostm.w	r0, inpix2
47.17908 ++	picostm.w	r7, coeff0_b
47.17909 ++	picostm.w	r8, inpix2-coeff0_a
47.17910 ++	picostm.w	pc, coeff1_a-config
47.17911 ++	picostm.w	r0, coeff1_a
47.17912 ++	picostm.w	r7, config
47.17913 ++	picostm.w	r8, coeff1_a-vmu2_out
47.17914 ++	.global	picostm_w_pu
47.17915 ++picostm_w_pu:
47.17916 ++	picostm.w	--pc, inpix2-coeff0_b
47.17917 ++	picostm.w	--r0, inpix2
47.17918 ++	picostm.w	--r7, coeff0_b
47.17919 ++	picostm.w	--r8, inpix2-coeff0_a
47.17920 ++	picostm.w	--pc, coeff1_a-config
47.17921 ++	picostm.w	--r0, coeff1_a
47.17922 ++	picostm.w	--r7, config
47.17923 ++	picostm.w	--r8, coeff1_a-vmu2_out
47.17924 +--- /dev/null
47.17925 ++++ b/gas/testsuite/gas/avr32/pic_reloc.d
47.17926 +@@ -0,0 +1,27 @@
47.17927 ++#as:
47.17928 ++#objdump: -dr
47.17929 ++#name: pic_reloc
47.17930 ++
47.17931 ++.*: +file format .*
47.17932 ++
47.17933 ++Disassembly of section \.text:
47.17934 ++
47.17935 ++00000000 <mcall_got>:
47.17936 ++   0:	f0 16 00 00 	mcall r6\[0\]
47.17937 ++			0: R_AVR32_GOT18SW	extfunc
47.17938 ++   4:	f0 16 00 00 	mcall r6\[0\]
47.17939 ++			4: R_AVR32_GOT18SW	\.L1
47.17940 ++   8:	f0 16 00 00 	mcall r6\[0\]
47.17941 ++			8: R_AVR32_GOT18SW	\.L2
47.17942 ++   c:	f0 16 00 00 	mcall r6\[0\]
47.17943 ++			c: R_AVR32_GOT18SW	mcall_got
47.17944 ++
47.17945 ++00000010 <ldw_got>:
47.17946 ++  10:	ec f0 00 00 	ld.w r0,r6\[0\]
47.17947 ++			10: R_AVR32_GOT16S	extvar
47.17948 ++  14:	ec f0 00 00 	ld.w r0,r6\[0\]
47.17949 ++			14: R_AVR32_GOT16S	\.L3
47.17950 ++  18:	ec f0 00 00 	ld.w r0,r6\[0\]
47.17951 ++			18: R_AVR32_GOT16S	\.L4
47.17952 ++  1c:	ec f0 00 00 	ld.w r0,r6\[0\]
47.17953 ++			1c: R_AVR32_GOT16S	ldw_got
47.17954 +--- /dev/null
47.17955 ++++ b/gas/testsuite/gas/avr32/pic_reloc.s
47.17956 +@@ -0,0 +1,18 @@
47.17957 ++
47.17958 ++	.text
47.17959 ++	.global	mcall_got
47.17960 ++mcall_got:
47.17961 ++.L1:
47.17962 ++	mcall	r6[extfunc@got]
47.17963 ++	mcall	r6[.L1@got]
47.17964 ++	mcall	r6[.L2@got]
47.17965 ++	mcall	r6[mcall_got@got]
47.17966 ++.L2:
47.17967 ++
47.17968 ++	.global	ldw_got
47.17969 ++ldw_got:
47.17970 ++.L3:	ld.w	r0,r6[extvar@got]
47.17971 ++	ld.w	r0,r6[.L3@got]
47.17972 ++	ld.w	r0,r6[.L4@got]
47.17973 ++	ld.w	r0,r6[ldw_got@got]
47.17974 ++.L4:
47.17975 +--- /dev/null
47.17976 ++++ b/gas/testsuite/gas/avr32/symdiff.d
47.17977 +@@ -0,0 +1,24 @@
47.17978 ++#source: symdiff.s
47.17979 ++#as:
47.17980 ++#objdump: -dr
47.17981 ++#name: symdiff
47.17982 ++
47.17983 ++.*: +file format .*
47.17984 ++
47.17985 ++Disassembly of section \.text:
47.17986 ++
47.17987 ++00000000 <diff32>:
47.17988 ++   0:	00 00       	add r0,r0
47.17989 ++   2:	00 04       	add r4,r0
47.17990 ++
47.17991 ++00000004 <diff16>:
47.17992 ++   4:	00 04       	add r4,r0
47.17993 ++
47.17994 ++00000006 <diff8>:
47.17995 ++   6:	04 00       	add r0,r2
47.17996 ++
47.17997 ++00000008 <symdiff_test>:
47.17998 ++   8:	d7 03       	nop
47.17999 ++   a:	d7 03       	nop
47.18000 ++   c:	d7 03       	nop
47.18001 ++   e:	d7 03       	nop
47.18002 +--- /dev/null
47.18003 ++++ b/gas/testsuite/gas/avr32/symdiff_linkrelax.d
47.18004 +@@ -0,0 +1,28 @@
47.18005 ++#source: symdiff.s
47.18006 ++#as: --linkrelax
47.18007 ++#objdump: -dr
47.18008 ++#name: symdiff_linkrelax
47.18009 ++
47.18010 ++.*: +file format .*
47.18011 ++
47.18012 ++Disassembly of section \.text:
47.18013 ++
47.18014 ++00000000 <diff32>:
47.18015 ++   0:	00 00       	add r0,r0
47.18016 ++			0: R_AVR32_DIFF32	\.text\+0xa
47.18017 ++   2:	00 04       	add r4,r0
47.18018 ++
47.18019 ++00000004 <diff16>:
47.18020 ++   4:	00 04       	add r4,r0
47.18021 ++			4: R_AVR32_DIFF16	\.text\+0xa
47.18022 ++
47.18023 ++00000006 <diff8>:
47.18024 ++   6:	04 00       	add r0,r2
47.18025 ++			6: R_AVR32_DIFF8	\.text\+0xa
47.18026 ++			7: R_AVR32_ALIGN	\*ABS\*\+0x1
47.18027 ++
47.18028 ++00000008 <symdiff_test>:
47.18029 ++   8:	d7 03       	nop
47.18030 ++   a:	d7 03       	nop
47.18031 ++   c:	d7 03       	nop
47.18032 ++   e:	d7 03       	nop
47.18033 +--- /dev/null
47.18034 ++++ b/gas/testsuite/gas/avr32/symdiff.s
47.18035 +@@ -0,0 +1,19 @@
47.18036 ++
47.18037 ++	.text
47.18038 ++	.global	diff32
47.18039 ++diff32:
47.18040 ++	.long	.L2 - .L1
47.18041 ++	.global	diff16
47.18042 ++diff16:
47.18043 ++	.short	.L2 - .L1
47.18044 ++	.global	diff8
47.18045 ++diff8:
47.18046 ++	.byte	.L2 - .L1
47.18047 ++
47.18048 ++	.global	symdiff_test
47.18049 ++	.align	1
47.18050 ++symdiff_test:
47.18051 ++	nop
47.18052 ++.L1:	nop
47.18053 ++	nop
47.18054 ++.L2:	nop
47.18055 +--- a/gas/write.c
47.18056 ++++ b/gas/write.c
47.18057 +@@ -1955,6 +1955,10 @@ relax_frag (segT segment, fragS *fragP, 
47.18058 + 
47.18059 + #endif /* defined (TC_GENERIC_RELAX_TABLE)  */
47.18060 + 
47.18061 ++#ifdef TC_RELAX_ALIGN
47.18062 ++#define RELAX_ALIGN(SEG, FRAG, ADDR) TC_RELAX_ALIGN(SEG, FRAG, ADDR)
47.18063 ++#else
47.18064 ++#define RELAX_ALIGN(SEG, FRAG, ADDR) relax_align(ADDR, (FRAG)->fr_offset)
47.18065 + /* Relax_align. Advance location counter to next address that has 'alignment'
47.18066 +    lowest order bits all 0s, return size of adjustment made.  */
47.18067 + static relax_addressT
47.18068 +@@ -1974,6 +1978,7 @@ relax_align (register relax_addressT add
47.18069 + #endif
47.18070 +   return (new_address - address);
47.18071 + }
47.18072 ++#endif
47.18073 + 
47.18074 + /* Now we have a segment, not a crowd of sub-segments, we can make
47.18075 +    fr_address values.
47.18076 +@@ -2017,7 +2022,7 @@ relax_segment (struct frag *segment_frag
47.18077 + 	case rs_align_code:
47.18078 + 	case rs_align_test:
47.18079 + 	  {
47.18080 +-	    addressT offset = relax_align (address, (int) fragP->fr_offset);
47.18081 ++	    addressT offset = RELAX_ALIGN(segment, fragP, address);
47.18082 + 
47.18083 + 	    if (fragP->fr_subtype != 0 && offset > fragP->fr_subtype)
47.18084 + 	      offset = 0;
47.18085 +@@ -2218,10 +2223,10 @@ relax_segment (struct frag *segment_frag
47.18086 + 		{
47.18087 + 		  addressT oldoff, newoff;
47.18088 + 
47.18089 +-		  oldoff = relax_align (was_address + fragP->fr_fix,
47.18090 +-					(int) offset);
47.18091 +-		  newoff = relax_align (address + fragP->fr_fix,
47.18092 +-					(int) offset);
47.18093 ++		  oldoff = RELAX_ALIGN (segment, fragP,
47.18094 ++					was_address + fragP->fr_fix);
47.18095 ++		  newoff = RELAX_ALIGN (segment, fragP,
47.18096 ++					address + fragP->fr_fix);
47.18097 + 
47.18098 + 		  if (fragP->fr_subtype != 0)
47.18099 + 		    {
47.18100 +--- a/include/dis-asm.h
47.18101 ++++ b/include/dis-asm.h
47.18102 +@@ -204,13 +204,14 @@ typedef struct disassemble_info
47.18103 + 
47.18104 + } disassemble_info;
47.18105 + 
47.18106 +-
47.18107 ++
47.18108 + /* Standard disassemblers.  Disassemble one instruction at the given
47.18109 +    target address.  Return number of octets processed.  */
47.18110 + typedef int (*disassembler_ftype) (bfd_vma, disassemble_info *);
47.18111 + 
47.18112 + extern int print_insn_alpha		(bfd_vma, disassemble_info *);
47.18113 + extern int print_insn_avr		(bfd_vma, disassemble_info *);
47.18114 ++extern int print_insn_avr32		(bfd_vma, disassemble_info *);
47.18115 + extern int print_insn_bfin		(bfd_vma, disassemble_info *);
47.18116 + extern int print_insn_big_arm		(bfd_vma, disassemble_info *);
47.18117 + extern int print_insn_big_mips		(bfd_vma, disassemble_info *);
47.18118 +@@ -242,7 +243,7 @@ extern int print_insn_little_arm	(bfd_vm
47.18119 + extern int print_insn_little_mips	(bfd_vma, disassemble_info *);
47.18120 + extern int print_insn_little_or32	(bfd_vma, disassemble_info *);
47.18121 + extern int print_insn_little_powerpc	(bfd_vma, disassemble_info *);
47.18122 +-extern int print_insn_little_score      (bfd_vma, disassemble_info *); 
47.18123 ++extern int print_insn_little_score      (bfd_vma, disassemble_info *);
47.18124 + extern int print_insn_m32c	        (bfd_vma, disassemble_info *);
47.18125 + extern int print_insn_m32r		(bfd_vma, disassemble_info *);
47.18126 + extern int print_insn_m68hc11		(bfd_vma, disassemble_info *);
47.18127 +@@ -290,7 +291,9 @@ extern void print_i386_disassembler_opti
47.18128 + extern void print_mips_disassembler_options (FILE *);
47.18129 + extern void print_ppc_disassembler_options (FILE *);
47.18130 + extern void print_arm_disassembler_options (FILE *);
47.18131 ++extern void print_avr32_disassembler_options (FILE *);
47.18132 + extern void parse_arm_disassembler_option (char *);
47.18133 ++extern void parse_avr32_disassembler_option (char *);
47.18134 + extern int  get_arm_regname_num_options (void);
47.18135 + extern int  set_arm_regname_option (int);
47.18136 + extern int  get_arm_regnames (int, const char **, const char **, const char *const **);
47.18137 +@@ -306,7 +309,7 @@ extern void disassemble_init_for_target 
47.18138 + /* Document any target specific options available from the disassembler.  */
47.18139 + extern void disassembler_usage (FILE *);
47.18140 + 
47.18141 +-
47.18142 ++
47.18143 + /* This block of definitions is for particular callers who read instructions
47.18144 +    into a buffer before calling the instruction decoder.  */
47.18145 + 
47.18146 +--- /dev/null
47.18147 ++++ b/include/elf/avr32.h
47.18148 +@@ -0,0 +1,98 @@
47.18149 ++/* AVR32 ELF support for BFD.
47.18150 ++   Copyright 2003-2006 Atmel Corporation.
47.18151 ++
47.18152 ++   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
47.18153 ++
47.18154 ++   This file is part of BFD, the Binary File Descriptor library.
47.18155 ++
47.18156 ++   This program is free software; you can redistribute it and/or
47.18157 ++   modify it under the terms of the GNU General Public License as
47.18158 ++   published by the Free Software Foundation; either version 2 of the
47.18159 ++   License, or (at your option) any later version.
47.18160 ++
47.18161 ++   This program is distributed in the hope that it will be useful, but
47.18162 ++   WITHOUT ANY WARRANTY; without even the implied warranty of
47.18163 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
47.18164 ++   General Public License for more details.
47.18165 ++
47.18166 ++   You should have received a copy of the GNU General Public License
47.18167 ++   along with this program; if not, write to the Free Software
47.18168 ++   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
47.18169 ++   02111-1307, USA.  */
47.18170 ++
47.18171 ++#include "elf/reloc-macros.h"
47.18172 ++
47.18173 ++/* CPU-specific flags for the ELF header e_flags field */
47.18174 ++#define EF_AVR32_LINKRELAX		0x01
47.18175 ++#define EF_AVR32_PIC			0x02
47.18176 ++
47.18177 ++START_RELOC_NUMBERS (elf_avr32_reloc_type)
47.18178 ++    RELOC_NUMBER (R_AVR32_NONE,			0)
47.18179 ++
47.18180 ++    /* Data Relocations */
47.18181 ++    RELOC_NUMBER (R_AVR32_32,			1)
47.18182 ++    RELOC_NUMBER (R_AVR32_16,			2)
47.18183 ++    RELOC_NUMBER (R_AVR32_8,			3)
47.18184 ++    RELOC_NUMBER (R_AVR32_32_PCREL,		4)
47.18185 ++    RELOC_NUMBER (R_AVR32_16_PCREL,		5)
47.18186 ++    RELOC_NUMBER (R_AVR32_8_PCREL,		6)
47.18187 ++    RELOC_NUMBER (R_AVR32_DIFF32,		7)
47.18188 ++    RELOC_NUMBER (R_AVR32_DIFF16,		8)
47.18189 ++    RELOC_NUMBER (R_AVR32_DIFF8,		9)
47.18190 ++    RELOC_NUMBER (R_AVR32_GOT32,		10)
47.18191 ++    RELOC_NUMBER (R_AVR32_GOT16,		11)
47.18192 ++    RELOC_NUMBER (R_AVR32_GOT8,			12)
47.18193 ++
47.18194 ++    /* Normal Code Relocations */
47.18195 ++    RELOC_NUMBER (R_AVR32_21S,			13)
47.18196 ++    RELOC_NUMBER (R_AVR32_16U,			14)
47.18197 ++    RELOC_NUMBER (R_AVR32_16S,			15)
47.18198 ++    RELOC_NUMBER (R_AVR32_8S,			16)
47.18199 ++    RELOC_NUMBER (R_AVR32_8S_EXT,		17)
47.18200 ++
47.18201 ++    /* PC-Relative Code Relocations */
47.18202 ++    RELOC_NUMBER (R_AVR32_22H_PCREL,		18)
47.18203 ++    RELOC_NUMBER (R_AVR32_18W_PCREL,		19)
47.18204 ++    RELOC_NUMBER (R_AVR32_16B_PCREL,		20)
47.18205 ++    RELOC_NUMBER (R_AVR32_16N_PCREL,		21)
47.18206 ++    RELOC_NUMBER (R_AVR32_14UW_PCREL,		22)
47.18207 ++    RELOC_NUMBER (R_AVR32_11H_PCREL,		23)
47.18208 ++    RELOC_NUMBER (R_AVR32_10UW_PCREL,		24)
47.18209 ++    RELOC_NUMBER (R_AVR32_9H_PCREL,		25)
47.18210 ++    RELOC_NUMBER (R_AVR32_9UW_PCREL,		26)
47.18211 ++
47.18212 ++    /* Special Code Relocations */
47.18213 ++    RELOC_NUMBER (R_AVR32_HI16,			27)
47.18214 ++    RELOC_NUMBER (R_AVR32_LO16,			28)
47.18215 ++
47.18216 ++    /* PIC Relocations */
47.18217 ++    RELOC_NUMBER (R_AVR32_GOTPC,		29)
47.18218 ++    RELOC_NUMBER (R_AVR32_GOTCALL,		30)
47.18219 ++    RELOC_NUMBER (R_AVR32_LDA_GOT,		31)
47.18220 ++    RELOC_NUMBER (R_AVR32_GOT21S,		32)
47.18221 ++    RELOC_NUMBER (R_AVR32_GOT18SW,		33)
47.18222 ++    RELOC_NUMBER (R_AVR32_GOT16S,		34)
47.18223 ++    RELOC_NUMBER (R_AVR32_GOT7UW,		35)
47.18224 ++
47.18225 ++    /* Constant Pool Relocations */
47.18226 ++    RELOC_NUMBER (R_AVR32_32_CPENT,		36)
47.18227 ++    RELOC_NUMBER (R_AVR32_CPCALL,		37)
47.18228 ++    RELOC_NUMBER (R_AVR32_16_CP,		38)
47.18229 ++    RELOC_NUMBER (R_AVR32_9W_CP,		39)
47.18230 ++
47.18231 ++    /* Dynamic Relocations */
47.18232 ++    RELOC_NUMBER (R_AVR32_RELATIVE,		40)
47.18233 ++    RELOC_NUMBER (R_AVR32_GLOB_DAT,		41)
47.18234 ++    RELOC_NUMBER (R_AVR32_JMP_SLOT,		42)
47.18235 ++
47.18236 ++    /* Linkrelax Information */
47.18237 ++    RELOC_NUMBER (R_AVR32_ALIGN,		43)
47.18238 ++
47.18239 ++    RELOC_NUMBER (R_AVR32_15S,		        44)
47.18240 ++
47.18241 ++END_RELOC_NUMBERS (R_AVR32_max)
47.18242 ++
47.18243 ++/* Processor specific dynamic array tags.  */
47.18244 ++
47.18245 ++/* The total size in bytes of the Global Offset Table */
47.18246 ++#define DT_AVR32_GOTSZ			0x70000001
47.18247 +--- a/include/elf/common.h
47.18248 ++++ b/include/elf/common.h
47.18249 +@@ -259,6 +259,9 @@
47.18250 + /* V850 backend magic number.  Written in the absense of an ABI.  */
47.18251 + #define EM_CYGNUS_V850		0x9080
47.18252 + 
47.18253 ++/* AVR32 magic number, picked by IAR Systems. */
47.18254 ++#define EM_AVR32		0x18ad
47.18255 ++
47.18256 + /* old S/390 backend magic number. Written in the absence of an ABI.  */
47.18257 + #define EM_S390_OLD		0xa390
47.18258 + 
47.18259 +--- a/ld/configdoc.texi
47.18260 ++++ b/ld/configdoc.texi
47.18261 +@@ -7,6 +7,7 @@
47.18262 + @set H8300
47.18263 + @set HPPA
47.18264 + @set I960
47.18265 ++@set AVR32
47.18266 + @set M68HC11
47.18267 + @set MMIX
47.18268 + @set MSP430
47.18269 +--- a/ld/configure.tgt
47.18270 ++++ b/ld/configure.tgt
47.18271 +@@ -109,6 +109,9 @@ xscale-*-elf)		targ_emul=armelf
47.18272 + avr-*-*)		targ_emul=avr2
47.18273 + 			targ_extra_emuls="avr1 avr3 avr4 avr5 avr6"
47.18274 + 			;;
47.18275 ++avr32-*-none)       targ_emul=avr32elf_ap7000
47.18276 ++            targ_extra_emuls="avr32elf_ap7001 avr32elf_ap7002 avr32elf_ap7200 avr32elf_uc3a0128 avr32elf_uc3a0256 avr32elf_uc3a0512 avr32elf_uc3a0512es avr32elf_uc3a1128 avr32elf_uc3a1256 avr32elf_uc3a1512es avr32elf_uc3a1512 avr32elf_uc3a364 avr32elf_uc3a364s avr32elf_uc3a3128 avr32elf_uc3a3128s avr32elf_uc3a3256 avr32elf_uc3a3256s avr32elf_uc3b064 avr32elf_uc3b0128 avr32elf_uc3b0256es avr32elf_uc3b0256 avr32elf_uc3b164 avr32elf_uc3b1128 avr32elf_uc3b1256es avr32elf_uc3b1256" ;;
47.18277 ++avr32-*-linux*)     targ_emul=avr32linux ;;
47.18278 + bfin-*-elf)		targ_emul=elf32bfin;
47.18279 + 			targ_extra_emuls="elf32bfinfd"
47.18280 + 			targ_extra_libpath=$targ_extra_emuls
47.18281 +--- /dev/null
47.18282 ++++ b/ld/emulparams/avr32elf.sh
47.18283 +@@ -0,0 +1,163 @@
47.18284 ++# This script is called from ld/genscript.sh 
47.18285 ++# There is a difference on how 'bash' and POSIX handles 
47.18286 ++# the  '.' (source) command in a script.
47.18287 ++# genscript.sh calls this script with argument ${EMULATION_NAME}
47.18288 ++# but that will fail on POSIX compilant shells like 'sh' or 'dash'
47.18289 ++# therefor I use the variable directly instead of $1 
47.18290 ++EMULATION=${EMULATION_NAME}
47.18291 ++SCRIPT_NAME=elf_xip
47.18292 ++TEMPLATE_NAME=elf32
47.18293 ++EXTRA_EM_FILE=avr32elf
47.18294 ++OUTPUT_FORMAT="elf32-avr32"
47.18295 ++ARCH=avr32
47.18296 ++MAXPAGESIZE=4096
47.18297 ++ENTRY=_start
47.18298 ++EMBEDDED=yes
47.18299 ++NO_SMALL_DATA=yes
47.18300 ++NOP=0xd703d703
47.18301 ++
47.18302 ++DATA_SEGMENT_ALIGN=8
47.18303 ++BSS_ALIGNMENT=8
47.18304 ++
47.18305 ++RO_LMA_REGION="FLASH"
47.18306 ++RO_VMA_REGION="FLASH"
47.18307 ++RW_LMA_REGION="FLASH"
47.18308 ++RW_VMA_REGION="CPUSRAM"
47.18309 ++
47.18310 ++STACK_SIZE=0x1000
47.18311 ++STACK_ADDR="ORIGIN(CPUSRAM) + LENGTH(CPUSRAM) - ${STACK_SIZE}"
47.18312 ++
47.18313 ++DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
47.18314 ++  . = ${STACK_ADDR};
47.18315 ++  __heap_end__ = .;"
47.18316 ++
47.18317 ++case "$EMULATION" in
47.18318 ++avr32elf_ap*)
47.18319 ++    MACHINE=ap
47.18320 ++    INITIAL_READONLY_SECTIONS=".reset : {  *(.reset) } >FLASH AT>FLASH
47.18321 ++    . = . & 0x9fffffff;"
47.18322 ++    TEXT_START_ADDR=0xa0000000
47.18323 ++    case "$EMULATION" in
47.18324 ++	    avr32elf_ap700[0-2])
47.18325 ++	       MEMORY="MEMORY
47.18326 ++  {
47.18327 ++	FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 64M
47.18328 ++	CPUSRAM (rwxa) : ORIGIN = 0x24000000, LENGTH = 32K
47.18329 ++  }"
47.18330 ++        ;;
47.18331 ++    avr32elf_ap7200)
47.18332 ++        MEMORY="MEMORY
47.18333 ++  {
47.18334 ++    FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 64M
47.18335 ++    CPUSRAM (rwxa) : ORIGIN = 0x08000000, LENGTH = 64K
47.18336 ++  }"
47.18337 ++        ;;
47.18338 ++    esac
47.18339 ++    ;;
47.18340 ++
47.18341 ++avr32elf_uc3*)
47.18342 ++    MACHINE=uc
47.18343 ++    INITIAL_READONLY_SECTIONS=".reset : {  *(.reset) } >FLASH AT>FLASH"
47.18344 ++    TEXT_START_ADDR=0x80000000
47.18345 ++    OTHER_SECTIONS=".userpage :  {	*(.userpage .userpage.*)  } >USERPAGE AT>USERPAGE
47.18346 ++  	.factorypage :  {	*(.factorypage .factorypage.*)  } >FACTORYPAGE AT>FACTORYPAGE"
47.18347 ++
47.18348 ++    case "$EMULATION" in
47.18349 ++    avr32elf_uc3a[01]512*)
47.18350 ++       MEMORY="MEMORY
47.18351 ++  {
47.18352 ++    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 512K
47.18353 ++    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
47.18354 ++	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
47.18355 ++	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
47.18356 ++  }"
47.18357 ++        ;;
47.18358 ++
47.18359 ++    avr32elf_uc3a[01]256)
47.18360 ++        MEMORY="MEMORY
47.18361 ++  {
47.18362 ++    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
47.18363 ++    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
47.18364 ++	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
47.18365 ++	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
47.18366 ++  }"
47.18367 ++        ;;
47.18368 ++
47.18369 ++    avr32elf_uc3b[01]256*)
47.18370 ++        MEMORY="MEMORY
47.18371 ++  {
47.18372 ++    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
47.18373 ++    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 32K
47.18374 ++	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
47.18375 ++	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
47.18376 ++  }"
47.18377 ++        ;;
47.18378 ++
47.18379 ++    avr32elf_uc3[ab][01]128)
47.18380 ++        MEMORY="MEMORY
47.18381 ++  {
47.18382 ++    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 128K
47.18383 ++    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 32K
47.18384 ++	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
47.18385 ++	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
47.18386 ++  }"
47.18387 ++        ;;
47.18388 ++
47.18389 ++    avr32elf_uc3b[01]64)
47.18390 ++        MEMORY="MEMORY
47.18391 ++  {
47.18392 ++    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 64K
47.18393 ++    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 16K
47.18394 ++	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
47.18395 ++	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
47.18396 ++  }"
47.18397 ++        ;;
47.18398 ++
47.18399 ++    avr32elf_uc3a3256*)
47.18400 ++        MEMORY="MEMORY
47.18401 ++  {
47.18402 ++    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
47.18403 ++    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
47.18404 ++    HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
47.18405 ++	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
47.18406 ++	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
47.18407 ++  }"
47.18408 ++  		OTHER_SECTIONS ="${OTHER_SECTIONS}
47.18409 ++  	.hsbsram       : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
47.18410 ++"
47.18411 ++  		
47.18412 ++        ;;
47.18413 ++
47.18414 ++    avr32elf_uc3a3128*)
47.18415 ++        MEMORY="MEMORY
47.18416 ++  {
47.18417 ++    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 128K
47.18418 ++    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
47.18419 ++    HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
47.18420 ++    USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
47.18421 ++    FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
47.18422 ++  }"
47.18423 ++  		OTHER_SECTIONS ="${OTHER_SECTIONS}
47.18424 ++  	.hsbsram       : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
47.18425 ++"
47.18426 ++        ;;
47.18427 ++
47.18428 ++    avr32elf_uc3a364*)
47.18429 ++        MEMORY="MEMORY
47.18430 ++  {
47.18431 ++    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 64K
47.18432 ++    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
47.18433 ++    HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
47.18434 ++	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
47.18435 ++	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
47.18436 ++  }"
47.18437 ++  		OTHER_SECTIONS ="${OTHER_SECTIONS}
47.18438 ++  	.hsbsram       : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
47.18439 ++"
47.18440 ++        ;;
47.18441 ++
47.18442 ++
47.18443 ++    esac
47.18444 ++    ;;
47.18445 ++
47.18446 ++esac
47.18447 +--- /dev/null
47.18448 ++++ b/ld/emulparams/avr32linux.sh
47.18449 +@@ -0,0 +1,14 @@
47.18450 ++ARCH=avr32
47.18451 ++SCRIPT_NAME=elf
47.18452 ++TEMPLATE_NAME=elf32
47.18453 ++EXTRA_EM_FILE=avr32elf
47.18454 ++OUTPUT_FORMAT="elf32-avr32"
47.18455 ++GENERATE_SHLIB_SCRIPT=yes
47.18456 ++MAXPAGESIZE=0x1000
47.18457 ++TEXT_START_ADDR=0x00001000
47.18458 ++NOP=0xd703d703
47.18459 ++
47.18460 ++# This appears to place the GOT before the data section, which is
47.18461 ++# essential for uClinux.  We don't use those .s* sections on AVR32
47.18462 ++# anyway, so it shouldn't hurt for regular Linux either...
47.18463 ++NO_SMALL_DATA=yes
47.18464 +--- /dev/null
47.18465 ++++ b/ld/emultempl/avr32elf.em
47.18466 +@@ -0,0 +1,133 @@
47.18467 ++# This shell script emits a C file. -*- C -*-
47.18468 ++#   Copyright (C) 2007 Atmel Corporation
47.18469 ++#
47.18470 ++# This file is part of GLD, the Gnu Linker.
47.18471 ++#
47.18472 ++# This program is free software; you can redistribute it and/or modify
47.18473 ++# it under the terms of the GNU General Public License as published by
47.18474 ++# the Free Software Foundation; either version 2 of the License, or
47.18475 ++# (at your option) any later version.
47.18476 ++#
47.18477 ++# This program is distributed in the hope that it will be useful,
47.18478 ++# but WITHOUT ANY WARRANTY; without even the implied warranty of
47.18479 ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
47.18480 ++# GNU General Public License for more details.
47.18481 ++#
47.18482 ++# You should have received a copy of the GNU General Public License
47.18483 ++# along with this program; if not, write to the Free Software
47.18484 ++# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
47.18485 ++#
47.18486 ++
47.18487 ++# This file is sourced from elf32.em, and defines extra avr32-elf
47.18488 ++# specific routines.
47.18489 ++#
47.18490 ++
47.18491 ++# Generate linker script for writable rodata
47.18492 ++LD_FLAG=rodata-writable
47.18493 ++DATA_ALIGNMENT=${DATA_ALIGNMENT_}
47.18494 ++RELOCATING=" "
47.18495 ++WRITABLE_RODATA=" "
47.18496 ++( echo "/* Linker script for writable rodata */"
47.18497 ++  . ${CUSTOMIZER_SCRIPT} ${EMULATION_NAME}
47.18498 ++  . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
47.18499 ++) | sed -e '/^ *$/d;s/[ 	]*$//' > ldscripts/${EMULATION_NAME}.xwr
47.18500 ++
47.18501 ++
47.18502 ++cat >> e${EMULATION_NAME}.c <<EOF
47.18503 ++
47.18504 ++#include "libbfd.h"
47.18505 ++#include "elf32-avr32.h"
47.18506 ++
47.18507 ++/* Whether to allow direct references (sub or mov) to SEC_DATA and
47.18508 ++   !SEC_CONTENTS sections when optimizing.  Not enabled by default
47.18509 ++   since it might cause link errors.  */
47.18510 ++static int direct_data_refs = 0;
47.18511 ++
47.18512 ++static void avr32_elf_after_open (void)
47.18513 ++{
47.18514 ++  bfd_elf32_avr32_set_options (&link_info, direct_data_refs);
47.18515 ++  gld${EMULATION_NAME}_after_open ();
47.18516 ++}
47.18517 ++
47.18518 ++static int rodata_writable = 0;
47.18519 ++
47.18520 ++static char * gld${EMULATION_NAME}_get_script (int *isfile);
47.18521 ++
47.18522 ++static char * avr32_elf_get_script (int *isfile)
47.18523 ++{
47.18524 ++  if ( rodata_writable )
47.18525 ++    {
47.18526 ++EOF
47.18527 ++if test -n "$COMPILE_IN"
47.18528 ++then
47.18529 ++# Scripts compiled in.
47.18530 ++
47.18531 ++# sed commands to quote an ld script as a C string.
47.18532 ++sc="-f stringify.sed"
47.18533 ++
47.18534 ++cat >>e${EMULATION_NAME}.c <<EOF
47.18535 ++      *isfile = 0;
47.18536 ++      return
47.18537 ++EOF
47.18538 ++sed $sc ldscripts/${EMULATION_NAME}.xwr			>> e${EMULATION_NAME}.c
47.18539 ++echo  ';'	                                        >> e${EMULATION_NAME}.c
47.18540 ++else
47.18541 ++# Scripts read from the filesystem.
47.18542 ++
47.18543 ++cat >>e${EMULATION_NAME}.c <<EOF
47.18544 ++      *isfile = 1;
47.18545 ++      return "ldscripts/${EMULATION_NAME}.xwr";
47.18546 ++EOF
47.18547 ++fi
47.18548 ++
47.18549 ++cat >>e${EMULATION_NAME}.c <<EOF
47.18550 ++    }
47.18551 ++  return gld${EMULATION_NAME}_get_script (isfile);
47.18552 ++}
47.18553 ++
47.18554 ++
47.18555 ++EOF
47.18556 ++
47.18557 ++# Define some shell vars to insert bits of code into the standard elf
47.18558 ++# parse_args and list_options functions.
47.18559 ++#
47.18560 ++PARSE_AND_LIST_PROLOGUE='
47.18561 ++#define OPTION_DIRECT_DATA		300
47.18562 ++#define OPTION_NO_DIRECT_DATA		301
47.18563 ++#define OPTION_RODATA_WRITABLE		302
47.18564 ++#define OPTION_NO_RODATA_WRITABLE	303
47.18565 ++'
47.18566 ++
47.18567 ++PARSE_AND_LIST_LONGOPTS='
47.18568 ++  { "direct-data", no_argument, NULL, OPTION_DIRECT_DATA },
47.18569 ++  { "no-direct-data", no_argument, NULL, OPTION_NO_DIRECT_DATA },
47.18570 ++  { "rodata-writable", no_argument, NULL, OPTION_RODATA_WRITABLE },
47.18571 ++  { "no-rodata-writable", no_argument, NULL, OPTION_NO_RODATA_WRITABLE },
47.18572 ++'
47.18573 ++
47.18574 ++PARSE_AND_LIST_OPTIONS='
47.18575 ++  fprintf (file, _("  --direct-data\t\tAllow direct data references when optimizing\n"));
47.18576 ++  fprintf (file, _("  --no-direct-data\tDo not allow direct data references when optimizing\n"));
47.18577 ++  fprintf (file, _("  --rodata-writable\tPut read-only data in writable data section\n"));
47.18578 ++  fprintf (file, _("  --no-rodata-writable\tDo not put read-only data in writable data section\n"));
47.18579 ++'
47.18580 ++
47.18581 ++PARSE_AND_LIST_ARGS_CASES='
47.18582 ++    case OPTION_DIRECT_DATA:
47.18583 ++      direct_data_refs = 1;
47.18584 ++      break;
47.18585 ++    case OPTION_NO_DIRECT_DATA:
47.18586 ++      direct_data_refs = 0;
47.18587 ++      break;
47.18588 ++    case OPTION_RODATA_WRITABLE:
47.18589 ++      rodata_writable = 1;
47.18590 ++      break;
47.18591 ++    case OPTION_NO_RODATA_WRITABLE:
47.18592 ++      rodata_writable = 0;
47.18593 ++      break;
47.18594 ++'
47.18595 ++
47.18596 ++# Replace some of the standard ELF functions with our own versions.
47.18597 ++#
47.18598 ++LDEMUL_AFTER_OPEN=avr32_elf_after_open
47.18599 ++LDEMUL_GET_SCRIPT=avr32_elf_get_script
47.18600 +--- a/ld/ld.info
47.18601 ++++ b/ld/ld.info
47.18602 +@@ -4347,6 +4347,8 @@ not listed.
47.18603 + 
47.18604 + * ARM::				`ld' and the ARM family
47.18605 + 
47.18606 ++* AVR32::                       `ld' and AVR32 processors
47.18607 ++
47.18608 + * HPPA ELF32::                  `ld' and HPPA 32-bit ELF
47.18609 + 
47.18610 + * MMIX::			`ld' and MMIX
47.18611 +@@ -4487,7 +4489,7 @@ PIC.  This avoids problems on uClinux ta
47.18612 + used to generate relocatable binaries.
47.18613 + 
47.18614 + 
47.18615 +-File: ld.info,  Node: ARM,  Next: HPPA ELF32,  Prev: i960,  Up: Machine Dependent
47.18616 ++File: ld.info,  Node: ARM,  Next: AV32,  Prev: i960,  Up: Machine Dependent
47.18617 + 
47.18618 + 4.4 `ld' and the ARM family
47.18619 + ===========================
47.18620 +@@ -4588,7 +4590,31 @@ enumeration values fitted into the small
47.18621 + diagnosed.
47.18622 + 
47.18623 + 
47.18624 +-File: ld.info,  Node: HPPA ELF32,  Next: MMIX,  Prev: ARM,  Up: Machine Dependent
47.18625 ++File: ld.info,  Node: AVR32,  Next: HPPA ELF32,  Prev: ARM,  Up: Machine Dependent
47.18626 ++
47.18627 ++4.4 `ld' and AVR32 processors
47.18628 ++=============================
47.18629 ++
47.18630 ++`--direct-data'
47.18631 ++
47.18632 ++`--no-direct-data'
47.18633 ++     Taking the address of a symbol can often be done by using a direct
47.18634 ++     `mov' or pc-relative `sub' instruction, which is faster than using
47.18635 ++     a PC- or GOT-relative load, especially on the uC3 processors.
47.18636 ++     However, this does not always work when dealing with symbols in
47.18637 ++     the `.data' section so this optimization is disabled by default.
47.18638 ++
47.18639 ++     Specifying `--direct-data' will enable this optimization. Note
47.18640 ++     that this may cause `relocation truncated to fit' errors for
47.18641 ++     certain large programs. If this happens, the optimization can be
47.18642 ++     turned off by specifying `--no-direct-data'.
47.18643 ++
47.18644 ++     All known issues with direct data optimizations are detected at
47.18645 ++     link time, so if the linker doesn't complain, the result should
47.18646 ++     run just fine.
47.18647 ++
47.18648 ++
47.18649 ++File: ld.info,  Node: HPPA ELF32,  Next: MMIX,  Prev: AVR32,  Up: Machine Dependent
47.18650 + 
47.18651 + 4.5 `ld' and HPPA 32-bit ELF Support
47.18652 + ====================================
47.18653 +@@ -6336,6 +6362,7 @@ LD Index
47.18654 + * --no-check-sections:                   Options.            (line  765)
47.18655 + * --no-define-common:                    Options.            (line  787)
47.18656 + * --no-demangle:                         Options.            (line  816)
47.18657 ++* --no-direct-data:                      AVR32.              (line    6)
47.18658 + * --no-dotsyms:                          PowerPC64 ELF64.    (line   33)
47.18659 + * --no-enum-size-warning:                ARM.                (line   94)
47.18660 + * --no-gc-sections:                      Options.            (line  848)
47.18661 +@@ -6534,6 +6561,7 @@ LD Index
47.18662 + * AT(LMA):                               Output Section LMA. (line    6)
47.18663 + * AT>LMA_REGION:                         Output Section LMA. (line    6)
47.18664 + * automatic data imports:                WIN32.              (line  170)
47.18665 ++* AVR32 options:                         AVR32.              (line    6)
47.18666 + * back end:                              BFD.                (line    6)
47.18667 + * BASE (MRI):                            MRI.                (line   54)
47.18668 + * BE8:                                   ARM.                (line   23)
47.18669 +@@ -7018,6 +7046,7 @@ Node: H8/300183897
47.18670 + Node: i960185522
47.18671 + Node: M68HC11/68HC12187207
47.18672 + Node: ARM188910
47.18673 ++Node: AVR32182578
47.18674 + Node: HPPA ELF32193760
47.18675 + Node: MMIX195383
47.18676 + Node: MSP430196600
47.18677 +--- a/ld/ld.texinfo
47.18678 ++++ b/ld/ld.texinfo
47.18679 +@@ -21,6 +21,7 @@
47.18680 + @set UsesEnvVars
47.18681 + @set GENERIC
47.18682 + @set ARM
47.18683 ++@set AVR32
47.18684 + @set H8300
47.18685 + @set HPPA
47.18686 + @set I960
47.18687 +@@ -139,6 +140,9 @@ section entitled ``GNU Free Documentatio
47.18688 + @ifset ARM
47.18689 + * ARM::				ld and the ARM family
47.18690 + @end ifset
47.18691 ++@ifset AVR32
47.18692 ++* AVR32::                       ld and AVR32 processors
47.18693 ++@end ifset
47.18694 + @ifset HPPA
47.18695 + * HPPA ELF32::                  ld and HPPA 32-bit ELF
47.18696 + @end ifset
47.18697 +@@ -5248,6 +5252,9 @@ functionality are not listed.
47.18698 + @ifset ARM
47.18699 + * ARM::				@command{ld} and the ARM family
47.18700 + @end ifset
47.18701 ++@ifset AVR32
47.18702 ++* AVR32::                       @command{ld} and AVR32 processors
47.18703 ++@end ifset
47.18704 + @ifset HPPA
47.18705 + * HPPA ELF32::                  @command{ld} and HPPA 32-bit ELF
47.18706 + @end ifset
47.18707 +@@ -5589,6 +5596,52 @@ not be diagnosed.
47.18708 + @end ifclear
47.18709 + @end ifset
47.18710 + 
47.18711 ++@ifset AVR32
47.18712 ++@ifclear GENERIC
47.18713 ++@raisesections
47.18714 ++@end ifclear
47.18715 ++
47.18716 ++@node AVR32
47.18717 ++@section @command{ld} and AVR32 processors
47.18718 ++@cindex AVR32 options
47.18719 ++@table @option
47.18720 ++@kindex --direct-data
47.18721 ++@kindex --no-direct-data
47.18722 ++@item --direct-data
47.18723 ++@item --no-direct-data
47.18724 ++Taking the address of a symbol can often be done by using a direct
47.18725 ++@code{mov} or pc-relative @code{sub} instruction, which is faster than
47.18726 ++using a PC- or GOT-relative load, especially on the uC3
47.18727 ++processors. However, this does not always work when dealing with
47.18728 ++symbols in the @code{.data} section so this optimization is disabled
47.18729 ++by default.
47.18730 ++
47.18731 ++Specifying @option{--direct-data} will enable this optimization. Note
47.18732 ++that this may cause @samp{relocation truncated to fit} errors for
47.18733 ++certain large programs. If this happens, the optimization can be
47.18734 ++turned off by specifying @option{--no-direct-data}.
47.18735 ++
47.18736 ++All known issues with direct data optimizations are detected at link
47.18737 ++time, so if the linker doesn't complain, the result should run just
47.18738 ++fine.
47.18739 ++
47.18740 ++@kindex --rodata-writable
47.18741 ++@kindex --no-rodata-writable
47.18742 ++@item --rodata-writable
47.18743 ++@item --no-rodata-writable
47.18744 ++Using the @option{--rodata-writable} options will cause the linker
47.18745 ++to try and use a linker script where read-only data will be placed
47.18746 ++in the same section as writable data. This can give great performance 
47.18747 ++gain on cacheless processors where read-only data normally is placed in
47.18748 ++flash, and writable data is placed in internal sram. This will however 
47.18749 ++come at the expence of a larger memory footprint.
47.18750 ++@end table
47.18751 ++
47.18752 ++@ifclear GENERIC
47.18753 ++@lowersections
47.18754 ++@end ifclear
47.18755 ++@end ifset
47.18756 ++
47.18757 + @ifset HPPA
47.18758 + @ifclear GENERIC
47.18759 + @raisesections
47.18760 +--- a/ld/Makefile.am
47.18761 ++++ b/ld/Makefile.am
47.18762 +@@ -137,7 +137,34 @@ ALL_EMULATIONS = \
47.18763 + 	eavr3.o \
47.18764 + 	eavr4.o \
47.18765 + 	eavr5.o \
47.18766 +-	eavr6.o \
47.18767 ++    eavr6.o \
47.18768 ++	eavr32elf_ap7000.o \
47.18769 ++	eavr32elf_ap7001.o \
47.18770 ++	eavr32elf_ap7002.o \
47.18771 ++	eavr32elf_ap7200.o \
47.18772 ++	eavr32elf_uc3a0128.o \
47.18773 ++	eavr32elf_uc3a0256.o \
47.18774 ++	eavr32elf_uc3a0512.o \
47.18775 ++	eavr32elf_uc3a0512es.o \
47.18776 ++	eavr32elf_uc3a1128.o \
47.18777 ++	eavr32elf_uc3a1256.o \
47.18778 ++	eavr32elf_uc3a1512es.o \
47.18779 ++	eavr32elf_uc3a1512.o \
47.18780 ++	eavr32elf_uc3a364.o \
47.18781 ++	eavr32elf_uc3a364s.o \
47.18782 ++	eavr32elf_uc3a3128.o \
47.18783 ++	eavr32elf_uc3a3128s.o \
47.18784 ++	eavr32elf_uc3a3256.o \
47.18785 ++	eavr32elf_uc3a3256s.o \
47.18786 ++	eavr32elf_uc3b064.o \
47.18787 ++	eavr32elf_uc3b0128.o \
47.18788 ++	eavr32elf_uc3b0256es.o \
47.18789 ++	eavr32elf_uc3b0256.o \
47.18790 ++	eavr32elf_uc3b164.o \
47.18791 ++	eavr32elf_uc3b1128.o \
47.18792 ++	eavr32elf_uc3b1256es.o \
47.18793 ++	eavr32elf_uc3b1256.o \
47.18794 ++	eavr32linux.o \
47.18795 + 	ecoff_i860.o \
47.18796 + 	ecoff_sparc.o \
47.18797 + 	eelf32_spu.o \
47.18798 +@@ -622,6 +649,114 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
47.18799 +   $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
47.18800 +   ${GEN_DEPENDS}
47.18801 + 	${GENSCRIPTS} avr6 "$(tdir_avr2)"
47.18802 ++eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf.sh \
47.18803 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18804 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18805 ++	${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" avr32elf
47.18806 ++eavr32elf_ap7001.c: $(srcdir)/emulparams/avr32elf.sh \
47.18807 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18808 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18809 ++	${GENSCRIPTS} avr32elf_ap7001 "$(tdir_avr32)" avr32elf
47.18810 ++eavr32elf_ap7002.c: $(srcdir)/emulparams/avr32elf.sh \
47.18811 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18812 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18813 ++	${GENSCRIPTS} avr32elf_ap7002 "$(tdir_avr32)" avr32elf
47.18814 ++eavr32elf_ap7200.c: $(srcdir)/emulparams/avr32elf.sh \
47.18815 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18816 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18817 ++	${GENSCRIPTS} avr32elf_ap7200 "$(tdir_avr32)" avr32elf
47.18818 ++eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf.sh \
47.18819 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18820 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18821 ++	${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)" avr32elf
47.18822 ++eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf.sh \
47.18823 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18824 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18825 ++	${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)" avr32elf
47.18826 ++eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf.sh \
47.18827 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18828 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18829 ++	${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" avr32elf
47.18830 ++eavr32elf_uc3a0512es.c: $(srcdir)/emulparams/avr32elf.sh \
47.18831 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18832 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18833 ++	${GENSCRIPTS} avr32elf_uc3a0512es "$(tdir_avr32)" avr32elf
47.18834 ++eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf.sh \
47.18835 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18836 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18837 ++	${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)" avr32elf
47.18838 ++eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf.sh \
47.18839 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18840 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18841 ++	${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)" avr32elf
47.18842 ++eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf.sh \
47.18843 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18844 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18845 ++	${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)" avr32elf
47.18846 ++eavr32elf_uc3a1512es.c: $(srcdir)/emulparams/avr32elf.sh \
47.18847 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18848 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18849 ++	${GENSCRIPTS} avr32elf_uc3a1512es "$(tdir_avr32)" avr32elf
47.18850 ++eavr32elf_uc3a364.c: $(srcdir)/emulparams/avr32elf.sh \
47.18851 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18852 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18853 ++	${GENSCRIPTS} avr32elf_uc3a364 "$(tdir_avr32)" avr32elf
47.18854 ++eavr32elf_uc3a364s.c: $(srcdir)/emulparams/avr32elf.sh \
47.18855 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18856 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18857 ++	${GENSCRIPTS} avr32elf_uc3a364s "$(tdir_avr32)" avr32elf
47.18858 ++eavr32elf_uc3a3128.c: $(srcdir)/emulparams/avr32elf.sh \
47.18859 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18860 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18861 ++	${GENSCRIPTS} avr32elf_uc3a3128 "$(tdir_avr32)" avr32elf
47.18862 ++eavr32elf_uc3a3128s.c: $(srcdir)/emulparams/avr32elf.sh \
47.18863 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18864 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18865 ++	${GENSCRIPTS} avr32elf_uc3a3128s "$(tdir_avr32)" avr32elf
47.18866 ++eavr32elf_uc3a3256.c: $(srcdir)/emulparams/avr32elf.sh \
47.18867 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18868 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18869 ++	${GENSCRIPTS} avr32elf_uc3a3256 "$(tdir_avr32)" avr32elf
47.18870 ++eavr32elf_uc3a3256s.c: $(srcdir)/emulparams/avr32elf.sh \
47.18871 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18872 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18873 ++	${GENSCRIPTS} avr32elf_uc3a3256s "$(tdir_avr32)" avr32elf
47.18874 ++eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf.sh \
47.18875 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18876 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18877 ++	${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)" avr32elf
47.18878 ++eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf.sh \
47.18879 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18880 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18881 ++	${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)" avr32elf
47.18882 ++eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf.sh \
47.18883 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18884 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18885 ++	${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)" avr32elf
47.18886 ++eavr32elf_uc3b0256es.c: $(srcdir)/emulparams/avr32elf.sh \
47.18887 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18888 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18889 ++	${GENSCRIPTS} avr32elf_uc3b0256es "$(tdir_avr32)" avr32elf
47.18890 ++eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf.sh \
47.18891 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18892 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18893 ++	${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)" avr32elf
47.18894 ++eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf.sh \
47.18895 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18896 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18897 ++	${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)" avr32elf
47.18898 ++eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf.sh \
47.18899 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18900 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18901 ++	${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)" avr32elf
47.18902 ++eavr32elf_uc3b1256es.c: $(srcdir)/emulparams/avr32elf.sh \
47.18903 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18904 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.18905 ++	${GENSCRIPTS} avr32elf_uc3b1256es "$(tdir_avr32)" avr32elf
47.18906 ++eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
47.18907 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.18908 ++  $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
47.18909 ++	${GENSCRIPTS} avr32linux "$(tdir_avr32)"
47.18910 + ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
47.18911 +   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
47.18912 + 	${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
47.18913 +@@ -1877,7 +2012,9 @@ install-exec-local: ld-new$(EXEEXT)
47.18914 + 	  || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
47.18915 + 	fi
47.18916 + 
47.18917 +-install-data-local:
47.18918 ++# We want install to imply install-info as per GNU standards, despite the
47.18919 ++# cygnus option.
47.18920 ++install-data-local: install-info
47.18921 + 	$(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
47.18922 + 	for f in ldscripts/*; do \
47.18923 + 	  $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
47.18924 +--- /dev/null
47.18925 ++++ b/ld/scripttempl/elf_xip.sc
47.18926 +@@ -0,0 +1,456 @@
47.18927 ++#
47.18928 ++# Unusual variables checked by this code:
47.18929 ++#	NOP - four byte opcode for no-op (defaults to 0)
47.18930 ++#	NO_SMALL_DATA - no .sbss/.sbss2/.sdata/.sdata2 sections if not
47.18931 ++#		empty.
47.18932 ++#	SMALL_DATA_CTOR - .ctors contains small data.
47.18933 ++#	SMALL_DATA_DTOR - .dtors contains small data.
47.18934 ++#	DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
47.18935 ++#	INITIAL_READONLY_SECTIONS - at start of text segment
47.18936 ++#	OTHER_READONLY_SECTIONS - other than .text .init .rodata ...
47.18937 ++#		(e.g., .PARISC.milli)
47.18938 ++#	OTHER_TEXT_SECTIONS - these get put in .text when relocating
47.18939 ++#	OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
47.18940 ++#		(e.g., .PARISC.global)
47.18941 ++#	OTHER_RELRO_SECTIONS - other than .data.rel.ro ...
47.18942 ++#		(e.g. PPC32 .fixup, .got[12])
47.18943 ++#	OTHER_BSS_SECTIONS - other than .bss .sbss ...
47.18944 ++#	OTHER_SECTIONS - at the end
47.18945 ++#	EXECUTABLE_SYMBOLS - symbols that must be defined for an
47.18946 ++#		executable (e.g., _DYNAMIC_LINK)
47.18947 ++#       TEXT_START_ADDR - the first byte of the text segment, after any
47.18948 ++#               headers.
47.18949 ++#       TEXT_BASE_ADDRESS - the first byte of the text segment.
47.18950 ++#	TEXT_START_SYMBOLS - symbols that appear at the start of the
47.18951 ++#		.text section.
47.18952 ++#	DATA_START_SYMBOLS - symbols that appear at the start of the
47.18953 ++#		.data section.
47.18954 ++#	OTHER_GOT_SYMBOLS - symbols defined just before .got.
47.18955 ++#	OTHER_GOT_SECTIONS - sections just after .got.
47.18956 ++#	OTHER_SDATA_SECTIONS - sections just after .sdata.
47.18957 ++#	OTHER_BSS_SYMBOLS - symbols that appear at the start of the
47.18958 ++#		.bss section besides __bss_start.
47.18959 ++#	DATA_PLT - .plt should be in data segment, not text segment.
47.18960 ++#	PLT_BEFORE_GOT - .plt just before .got when .plt is in data segement.
47.18961 ++#	BSS_PLT - .plt should be in bss segment
47.18962 ++#	TEXT_DYNAMIC - .dynamic in text segment, not data segment.
47.18963 ++#	EMBEDDED - whether this is for an embedded system.
47.18964 ++#	SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
47.18965 ++#		start address of shared library.
47.18966 ++#	INPUT_FILES - INPUT command of files to always include
47.18967 ++#	WRITABLE_RODATA - if set, the .rodata section should be writable
47.18968 ++#	INIT_START, INIT_END -  statements just before and just after
47.18969 ++# 	combination of .init sections.
47.18970 ++#	FINI_START, FINI_END - statements just before and just after
47.18971 ++# 	combination of .fini sections.
47.18972 ++#	STACK_ADDR - start of a .stack section.
47.18973 ++#	OTHER_END_SYMBOLS - symbols to place right at the end of the script.
47.18974 ++#	SEPARATE_GOTPLT - if set, .got.plt should be separate output section,
47.18975 ++#		so that .got can be in the RELRO area.  It should be set to
47.18976 ++#		the number of bytes in the beginning of .got.plt which can be
47.18977 ++#		in the RELRO area as well.
47.18978 ++#
47.18979 ++# When adding sections, do note that the names of some sections are used
47.18980 ++# when specifying the start address of the next.
47.18981 ++#
47.18982 ++
47.18983 ++#  Many sections come in three flavours.  There is the 'real' section,
47.18984 ++#  like ".data".  Then there are the per-procedure or per-variable
47.18985 ++#  sections, generated by -ffunction-sections and -fdata-sections in GCC,
47.18986 ++#  and useful for --gc-sections, which for a variable "foo" might be
47.18987 ++#  ".data.foo".  Then there are the linkonce sections, for which the linker
47.18988 ++#  eliminates duplicates, which are named like ".gnu.linkonce.d.foo".
47.18989 ++#  The exact correspondences are:
47.18990 ++#
47.18991 ++#  Section	Linkonce section
47.18992 ++#  .text	.gnu.linkonce.t.foo
47.18993 ++#  .rodata	.gnu.linkonce.r.foo
47.18994 ++#  .data	.gnu.linkonce.d.foo
47.18995 ++#  .bss		.gnu.linkonce.b.foo
47.18996 ++#  .sdata	.gnu.linkonce.s.foo
47.18997 ++#  .sbss	.gnu.linkonce.sb.foo
47.18998 ++#  .sdata2	.gnu.linkonce.s2.foo
47.18999 ++#  .sbss2	.gnu.linkonce.sb2.foo
47.19000 ++#  .debug_info	.gnu.linkonce.wi.foo
47.19001 ++#  .tdata	.gnu.linkonce.td.foo
47.19002 ++#  .tbss	.gnu.linkonce.tb.foo
47.19003 ++#
47.19004 ++#  Each of these can also have corresponding .rel.* and .rela.* sections.
47.19005 ++
47.19006 ++test -z "$ENTRY" && ENTRY=_start
47.19007 ++test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
47.19008 ++test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
47.19009 ++if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
47.19010 ++test -z "${ELFSIZE}" && ELFSIZE=32
47.19011 ++test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
47.19012 ++test "$LD_FLAG" = "N" && DATA_ADDR=.
47.19013 ++test -n "$CREATE_SHLIB$CREATE_PIE" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE=""
47.19014 ++test -z "$CREATE_SHLIB$CREATE_PIE" && test -n "$DATA_ADDR" && COMMONPAGESIZE=""
47.19015 ++test -n "$RELRO_NOW" && unset SEPARATE_GOTPLT
47.19016 ++if test -n "$RELOCATING"; then
47.19017 ++  RO_REGION="${RO_VMA_REGION+ >}${RO_VMA_REGION}${RO_LMA_REGION+ AT>}${RO_LMA_REGION}"
47.19018 ++  RW_REGION="${RW_VMA_REGION+ >}${RW_VMA_REGION}${RW_LMA_REGION+ AT>}${RW_LMA_REGION}"
47.19019 ++else
47.19020 ++  RO_REGION=""
47.19021 ++  RW_REGION=""
47.19022 ++fi
47.19023 ++INTERP=".interp       ${RELOCATING-0} : { *(.interp) }${RO_REGION}"
47.19024 ++PLT=".plt          ${RELOCATING-0} : { *(.plt) }"
47.19025 ++if test -z "$GOT"; then
47.19026 ++  if test -z "$SEPARATE_GOTPLT"; then
47.19027 ++    GOT=".got          ${RELOCATING-0} : { *(.got.plt) *(.got) }"
47.19028 ++  else
47.19029 ++    GOT=".got          ${RELOCATING-0} : { *(.got) }"
47.19030 ++    GOTPLT="${RELOCATING+${DATA_SEGMENT_RELRO_GOTPLT_END}}
47.19031 ++  .got.plt      ${RELOCATING-0} : { *(.got.plt) }"
47.19032 ++  fi
47.19033 ++fi
47.19034 ++DALIGN=".dalign	: { . = ALIGN(${DATA_SEGMENT_ALIGN}); PROVIDE(_data_lma = .); }${RO_REGION}"
47.19035 ++BALIGN=".balign	: { . = ALIGN(${BSS_ALIGNMENT}); _edata = .; }${RW_REGION}"
47.19036 ++DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
47.19037 ++RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
47.19038 ++DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) }${RW_REGION}"
47.19039 ++STACKNOTE="/DISCARD/ : { *(.note.GNU-stack) }"
47.19040 ++if test -z "${NO_SMALL_DATA}"; then
47.19041 ++  SBSS=".sbss         ${RELOCATING-0} :
47.19042 ++  {
47.19043 ++    ${RELOCATING+PROVIDE (__sbss_start = .);}
47.19044 ++    ${RELOCATING+PROVIDE (___sbss_start = .);}
47.19045 ++    ${CREATE_SHLIB+*(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)}
47.19046 ++    *(.dynsbss)
47.19047 ++    *(.sbss${RELOCATING+ .sbss.* .gnu.linkonce.sb.*})
47.19048 ++    *(.scommon)
47.19049 ++    ${RELOCATING+PROVIDE (__sbss_end = .);}
47.19050 ++    ${RELOCATING+PROVIDE (___sbss_end = .);}
47.19051 ++  }${RW_REGION}"
47.19052 ++  SBSS2=".sbss2        ${RELOCATING-0} : { *(.sbss2${RELOCATING+ .sbss2.* .gnu.linkonce.sb2.*}) }${RW_REGION}"
47.19053 ++  SDATA="/* We want the small data sections together, so single-instruction offsets
47.19054 ++     can access them all, and initialized data all before uninitialized, so
47.19055 ++     we can shorten the on-disk segment size.  */
47.19056 ++  .sdata        ${RELOCATING-0} :
47.19057 ++  {
47.19058 ++    ${RELOCATING+${SDATA_START_SYMBOLS}}
47.19059 ++    ${CREATE_SHLIB+*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)}
47.19060 ++    *(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
47.19061 ++  }${RW_REGION}"
47.19062 ++  SDATA2=".sdata2       ${RELOCATING-0} : { *(.sdata2${RELOCATING+ .sdata2.* .gnu.linkonce.s2.*}) }${RW_REGION}"
47.19063 ++  REL_SDATA=".rel.sdata    ${RELOCATING-0} : { *(.rel.sdata${RELOCATING+ .rel.sdata.* .rel.gnu.linkonce.s.*}) }${RO_REGION}
47.19064 ++  .rela.sdata   ${RELOCATING-0} : { *(.rela.sdata${RELOCATING+ .rela.sdata.* .rela.gnu.linkonce.s.*}) }"
47.19065 ++  REL_SBSS=".rel.sbss     ${RELOCATING-0} : { *(.rel.sbss${RELOCATING+ .rel.sbss.* .rel.gnu.linkonce.sb.*}) }${RO_REGION}
47.19066 ++  .rela.sbss    ${RELOCATING-0} : { *(.rela.sbss${RELOCATING+ .rela.sbss.* .rela.gnu.linkonce.sb.*}) }${RO_REGION}"
47.19067 ++  REL_SDATA2=".rel.sdata2   ${RELOCATING-0} : { *(.rel.sdata2${RELOCATING+ .rel.sdata2.* .rel.gnu.linkonce.s2.*}) }${RO_REGION}
47.19068 ++  .rela.sdata2  ${RELOCATING-0} : { *(.rela.sdata2${RELOCATING+ .rela.sdata2.* .rela.gnu.linkonce.s2.*}) }${RO_REGION}"
47.19069 ++  REL_SBSS2=".rel.sbss2    ${RELOCATING-0} : { *(.rel.sbss2${RELOCATING+ .rel.sbss2.* .rel.gnu.linkonce.sb2.*}) }${RO_REGION}
47.19070 ++  .rela.sbss2   ${RELOCATING-0} : { *(.rela.sbss2${RELOCATING+ .rela.sbss2.* .rela.gnu.linkonce.sb2.*}) }${RO_REGION}"
47.19071 ++else
47.19072 ++  NO_SMALL_DATA=" "
47.19073 ++fi
47.19074 ++test -n "$SEPARATE_GOTPLT" && SEPARATE_GOTPLT=" "
47.19075 ++CTOR=".ctors        ${CONSTRUCTING-0} :
47.19076 ++  {
47.19077 ++    ${CONSTRUCTING+${CTOR_START}}
47.19078 ++    /* gcc uses crtbegin.o to find the start of
47.19079 ++       the constructors, so we make sure it is
47.19080 ++       first.  Because this is a wildcard, it
47.19081 ++       doesn't matter if the user does not
47.19082 ++       actually link against crtbegin.o; the
47.19083 ++       linker won't look for a file to match a
47.19084 ++       wildcard.  The wildcard also means that it
47.19085 ++       doesn't matter which directory crtbegin.o
47.19086 ++       is in.  */
47.19087 ++
47.19088 ++    KEEP (*crtbegin*.o(.ctors))
47.19089 ++
47.19090 ++    /* We don't want to include the .ctor section from
47.19091 ++       from the crtend.o file until after the sorted ctors.
47.19092 ++       The .ctor section from the crtend file contains the
47.19093 ++       end of ctors marker and it must be last */
47.19094 ++
47.19095 ++    KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors))
47.19096 ++    KEEP (*(SORT(.ctors.*)))
47.19097 ++    KEEP (*(.ctors))
47.19098 ++    ${CONSTRUCTING+${CTOR_END}}
47.19099 ++  }"
47.19100 ++DTOR=".dtors        ${CONSTRUCTING-0} :
47.19101 ++  {
47.19102 ++    ${CONSTRUCTING+${DTOR_START}}
47.19103 ++    KEEP (*crtbegin*.o(.dtors))
47.19104 ++    KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors))
47.19105 ++    KEEP (*(SORT(.dtors.*)))
47.19106 ++    KEEP (*(.dtors))
47.19107 ++    ${CONSTRUCTING+${DTOR_END}}
47.19108 ++  }"
47.19109 ++STACK=".stack        ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
47.19110 ++  {
47.19111 ++    ${RELOCATING+_stack = .;}
47.19112 ++    *(.stack)
47.19113 ++    ${RELOCATING+${STACK_SIZE+. = ${STACK_SIZE};}}
47.19114 ++    ${RELOCATING+_estack = .;}
47.19115 ++  }${RW_REGION}"
47.19116 ++
47.19117 ++# if this is for an embedded system, don't add SIZEOF_HEADERS.
47.19118 ++if [ -z "$EMBEDDED" ]; then
47.19119 ++   test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR} + SIZEOF_HEADERS"
47.19120 ++else
47.19121 ++   test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR}"
47.19122 ++fi
47.19123 ++
47.19124 ++cat <<EOF
47.19125 ++OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
47.19126 ++	      "${LITTLE_OUTPUT_FORMAT}")
47.19127 ++OUTPUT_ARCH(${OUTPUT_ARCH})
47.19128 ++ENTRY(${ENTRY})
47.19129 ++
47.19130 ++${RELOCATING+${LIB_SEARCH_DIRS}}
47.19131 ++${RELOCATING+/* Do we need any of these for elf?
47.19132 ++   __DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}}  */}
47.19133 ++${RELOCATING+${EXECUTABLE_SYMBOLS}}
47.19134 ++${RELOCATING+${INPUT_FILES}}
47.19135 ++${RELOCATING- /* For some reason, the Solaris linker makes bad executables
47.19136 ++  if gld -r is used and the intermediate file has sections starting
47.19137 ++  at non-zero addresses.  Could be a Solaris ld bug, could be a GNU ld
47.19138 ++  bug.  But for now assigning the zero vmas works.  */}
47.19139 ++
47.19140 ++${RELOCATING+${MEMORY}}
47.19141 ++
47.19142 ++SECTIONS
47.19143 ++{
47.19144 ++  /* Read-only sections, merged into text segment: */
47.19145 ++  ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR}); . = ${TEXT_BASE_ADDRESS};}}}
47.19146 ++  ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
47.19147 ++  ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
47.19148 ++  ${CREATE_SHLIB-${INTERP}}
47.19149 ++  ${INITIAL_READONLY_SECTIONS}
47.19150 ++  ${TEXT_DYNAMIC+${DYNAMIC}${RO_REGION}}
47.19151 ++  .hash         ${RELOCATING-0} : { *(.hash) }${RO_REGION}
47.19152 ++  .dynsym       ${RELOCATING-0} : { *(.dynsym) }${RO_REGION}
47.19153 ++  .dynstr       ${RELOCATING-0} : { *(.dynstr) }${RO_REGION}
47.19154 ++  .gnu.version  ${RELOCATING-0} : { *(.gnu.version) }${RO_REGION}
47.19155 ++  .gnu.version_d ${RELOCATING-0}: { *(.gnu.version_d) }${RO_REGION}
47.19156 ++  .gnu.version_r ${RELOCATING-0}: { *(.gnu.version_r) }${RO_REGION}
47.19157 ++
47.19158 ++EOF
47.19159 ++if [ "x$COMBRELOC" = x ]; then
47.19160 ++  COMBRELOCCAT=cat
47.19161 ++else
47.19162 ++  COMBRELOCCAT="cat > $COMBRELOC"
47.19163 ++fi
47.19164 ++eval $COMBRELOCCAT <<EOF
47.19165 ++  .rel.init     ${RELOCATING-0} : { *(.rel.init) }${RO_REGION}
47.19166 ++  .rela.init    ${RELOCATING-0} : { *(.rela.init) }${RO_REGION}
47.19167 ++  .rel.text     ${RELOCATING-0} : { *(.rel.text${RELOCATING+ .rel.text.* .rel.gnu.linkonce.t.*}) }${RO_REGION}
47.19168 ++  .rela.text    ${RELOCATING-0} : { *(.rela.text${RELOCATING+ .rela.text.* .rela.gnu.linkonce.t.*}) }${RO_REGION}
47.19169 ++  .rel.fini     ${RELOCATING-0} : { *(.rel.fini) }${RO_REGION}
47.19170 ++  .rela.fini    ${RELOCATING-0} : { *(.rela.fini) }${RO_REGION}
47.19171 ++  .rel.rodata   ${RELOCATING-0} : { *(.rel.rodata${RELOCATING+ .rel.rodata.* .rel.gnu.linkonce.r.*}) }${RO_REGION}
47.19172 ++  .rela.rodata  ${RELOCATING-0} : { *(.rela.rodata${RELOCATING+ .rela.rodata.* .rela.gnu.linkonce.r.*}) }${RO_REGION}
47.19173 ++  ${OTHER_READONLY_RELOC_SECTIONS}
47.19174 ++  .rel.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
47.19175 ++  .rela.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
47.19176 ++  .rel.data     ${RELOCATING-0} : { *(.rel.data${RELOCATING+ .rel.data.* .rel.gnu.linkonce.d.*}) }${RO_REGION}
47.19177 ++  .rela.data    ${RELOCATING-0} : { *(.rela.data${RELOCATING+ .rela.data.* .rela.gnu.linkonce.d.*}) }${RO_REGION}
47.19178 ++  .rel.tdata	${RELOCATING-0} : { *(.rel.tdata${RELOCATING+ .rel.tdata.* .rel.gnu.linkonce.td.*}) }${RO_REGION}
47.19179 ++  .rela.tdata	${RELOCATING-0} : { *(.rela.tdata${RELOCATING+ .rela.tdata.* .rela.gnu.linkonce.td.*}) }${RO_REGION}
47.19180 ++  .rel.tbss	${RELOCATING-0} : { *(.rel.tbss${RELOCATING+ .rel.tbss.* .rel.gnu.linkonce.tb.*}) }${RO_REGION}
47.19181 ++  .rela.tbss	${RELOCATING-0} : { *(.rela.tbss${RELOCATING+ .rela.tbss.* .rela.gnu.linkonce.tb.*}) }${RO_REGION}
47.19182 ++  .rel.ctors    ${RELOCATING-0} : { *(.rel.ctors) }${RO_REGION}
47.19183 ++  .rela.ctors   ${RELOCATING-0} : { *(.rela.ctors) }${RO_REGION}
47.19184 ++  .rel.dtors    ${RELOCATING-0} : { *(.rel.dtors) }${RO_REGION}
47.19185 ++  .rela.dtors   ${RELOCATING-0} : { *(.rela.dtors) }${RO_REGION}
47.19186 ++  .rel.got      ${RELOCATING-0} : { *(.rel.got) }${RO_REGION}
47.19187 ++  .rela.got     ${RELOCATING-0} : { *(.rela.got) }${RO_REGION}
47.19188 ++  ${OTHER_GOT_RELOC_SECTIONS}
47.19189 ++  ${REL_SDATA}
47.19190 ++  ${REL_SBSS}
47.19191 ++  ${REL_SDATA2}
47.19192 ++  ${REL_SBSS2}
47.19193 ++  .rel.bss      ${RELOCATING-0} : { *(.rel.bss${RELOCATING+ .rel.bss.* .rel.gnu.linkonce.b.*}) }${RO_REGION}
47.19194 ++  .rela.bss     ${RELOCATING-0} : { *(.rela.bss${RELOCATING+ .rela.bss.* .rela.gnu.linkonce.b.*}) }${RO_REGION}
47.19195 ++EOF
47.19196 ++if [ -n "$COMBRELOC" ]; then
47.19197 ++cat <<EOF
47.19198 ++  .rel.dyn      ${RELOCATING-0} :
47.19199 ++    {
47.19200 ++EOF
47.19201 ++sed -e '/^[ 	]*[{}][ 	]*$/d;/:[ 	]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/      \1/' $COMBRELOC
47.19202 ++cat <<EOF
47.19203 ++    }${RO_REGION}
47.19204 ++  .rela.dyn     ${RELOCATING-0} :
47.19205 ++    {
47.19206 ++EOF
47.19207 ++sed -e '/^[ 	]*[{}][ 	]*$/d;/:[ 	]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/      \1/' $COMBRELOC
47.19208 ++cat <<EOF
47.19209 ++    }${RO_REGION}
47.19210 ++EOF
47.19211 ++fi
47.19212 ++cat <<EOF
47.19213 ++  .rel.plt      ${RELOCATING-0} : { *(.rel.plt) }${RO_REGION}
47.19214 ++  .rela.plt     ${RELOCATING-0} : { *(.rela.plt) }${RO_REGION}
47.19215 ++  ${OTHER_PLT_RELOC_SECTIONS}
47.19216 ++
47.19217 ++  .init         ${RELOCATING-0} :
47.19218 ++  {
47.19219 ++    ${RELOCATING+${INIT_START}}
47.19220 ++    KEEP (*(.init))
47.19221 ++    ${RELOCATING+${INIT_END}}
47.19222 ++  }${RO_REGION} =${NOP-0}
47.19223 ++
47.19224 ++  ${DATA_PLT-${BSS_PLT-${PLT}${RO_REGION}}}
47.19225 ++  .text         ${RELOCATING-0} :
47.19226 ++  {
47.19227 ++    ${RELOCATING+${TEXT_START_SYMBOLS}}
47.19228 ++    *(.text .stub${RELOCATING+ .text.* .gnu.linkonce.t.*})
47.19229 ++    KEEP (*(.text.*personality*))
47.19230 ++    /* .gnu.warning sections are handled specially by elf32.em.  */
47.19231 ++    *(.gnu.warning)
47.19232 ++    ${RELOCATING+${OTHER_TEXT_SECTIONS}}
47.19233 ++  }${RO_REGION} =${NOP-0}
47.19234 ++  .fini         ${RELOCATING-0} :
47.19235 ++  {
47.19236 ++    ${RELOCATING+${FINI_START}}
47.19237 ++    KEEP (*(.fini))
47.19238 ++    ${RELOCATING+${FINI_END}}
47.19239 ++  }${RO_REGION} =${NOP-0}
47.19240 ++  ${RELOCATING+PROVIDE (__etext = .);}
47.19241 ++  ${RELOCATING+PROVIDE (_etext = .);}
47.19242 ++  ${RELOCATING+PROVIDE (etext = .);}
47.19243 ++  ${WRITABLE_RODATA-${RODATA}${RO_REGION}}
47.19244 ++  .rodata1      ${RELOCATING-0} : { *(.rodata1) }${RO_REGION}
47.19245 ++  ${CREATE_SHLIB-${SDATA2}}
47.19246 ++  ${CREATE_SHLIB-${SBSS2}}
47.19247 ++  ${OTHER_READONLY_SECTIONS}
47.19248 ++  .eh_frame_hdr : { *(.eh_frame_hdr) }${RO_REGION}
47.19249 ++  .eh_frame     ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) }${RO_REGION}
47.19250 ++  .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RO_REGION}
47.19251 ++
47.19252 ++  ${RELOCATING+${DALIGN}}
47.19253 ++  ${RELOCATING+PROVIDE (_data = ORIGIN(${RW_VMA_REGION}));}
47.19254 ++  . = ORIGIN(${RW_VMA_REGION});
47.19255 ++  /* Exception handling  */
47.19256 ++  .eh_frame     ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.eh_frame)) }${RW_REGION}
47.19257 ++  .gcc_except_table ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RW_REGION}
47.19258 ++
47.19259 ++  /* Thread Local Storage sections  */
47.19260 ++  .tdata	${RELOCATING-0} : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }${RW_REGION}
47.19261 ++  .tbss		${RELOCATING-0} : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }${RW_REGION}
47.19262 ++
47.19263 ++  /* Ensure the __preinit_array_start label is properly aligned.  We
47.19264 ++     could instead move the label definition inside the section, but
47.19265 ++     the linker would then create the section even if it turns out to
47.19266 ++     be empty, which isn't pretty.  */
47.19267 ++  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_start = ALIGN(${ALIGNMENT}));}}
47.19268 ++  .preinit_array   ${RELOCATING-0} : { KEEP (*(.preinit_array)) }${RW_REGION}
47.19269 ++  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_end = .);}}
47.19270 ++
47.19271 ++  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_start = .);}}
47.19272 ++  .init_array   ${RELOCATING-0} : { KEEP (*(.init_array)) }${RW_REGION}
47.19273 ++  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_end = .);}}
47.19274 ++
47.19275 ++  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_start = .);}}
47.19276 ++  .fini_array   ${RELOCATING-0} : { KEEP (*(.fini_array)) }${RW_REGION}
47.19277 ++  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_end = .);}}
47.19278 ++
47.19279 ++  ${SMALL_DATA_CTOR-${RELOCATING+${CTOR}${RW_REGION}}}
47.19280 ++  ${SMALL_DATA_DTOR-${RELOCATING+${DTOR}${RW_REGION}}}
47.19281 ++  .jcr          ${RELOCATING-0} : { KEEP (*(.jcr)) }${RW_REGION}
47.19282 ++
47.19283 ++  ${RELOCATING+${DATARELRO}}
47.19284 ++  ${OTHER_RELRO_SECTIONS}
47.19285 ++  ${TEXT_DYNAMIC-${DYNAMIC}${RW_REGION}}
47.19286 ++  ${NO_SMALL_DATA+${RELRO_NOW+${GOT}${RW_REGION}}}
47.19287 ++  ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOT}${RW_REGION}}}}
47.19288 ++  ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOTPLT}${RW_REGION}}}}
47.19289 ++  ${RELOCATING+${DATA_SEGMENT_RELRO_END}}
47.19290 ++  ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT-${GOT}${RW_REGION}}}}
47.19291 ++
47.19292 ++  ${DATA_PLT+${PLT_BEFORE_GOT-${PLT}${RW_REGION}}}
47.19293 ++
47.19294 ++  .data         ${RELOCATING-0} :
47.19295 ++  {
47.19296 ++    ${RELOCATING+${DATA_START_SYMBOLS}}
47.19297 ++    *(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
47.19298 ++    KEEP (*(.gnu.linkonce.d.*personality*))
47.19299 ++    ${CONSTRUCTING+SORT(CONSTRUCTORS)}
47.19300 ++  }${RW_REGION}
47.19301 ++  .data1        ${RELOCATING-0} : { *(.data1) }${RW_REGION}
47.19302 ++  ${WRITABLE_RODATA+${RODATA}${RW_REGION}}
47.19303 ++  ${OTHER_READWRITE_SECTIONS}
47.19304 ++  ${SMALL_DATA_CTOR+${RELOCATING+${CTOR}${RW_REGION}}}
47.19305 ++  ${SMALL_DATA_DTOR+${RELOCATING+${DTOR}${RW_REGION}}}
47.19306 ++  ${DATA_PLT+${PLT_BEFORE_GOT+${PLT}${RW_REGION}}}
47.19307 ++  ${RELOCATING+${OTHER_GOT_SYMBOLS}}
47.19308 ++  ${NO_SMALL_DATA-${GOT}${RW_REGION}}
47.19309 ++  ${OTHER_GOT_SECTIONS}
47.19310 ++  ${SDATA}
47.19311 ++  ${OTHER_SDATA_SECTIONS}
47.19312 ++  ${RELOCATING+${BALIGN}}
47.19313 ++  ${RELOCATING+_edata = .;}
47.19314 ++  ${RELOCATING+PROVIDE (edata = .);}
47.19315 ++  ${RELOCATING+__bss_start = .;}
47.19316 ++  ${RELOCATING+${OTHER_BSS_SYMBOLS}}
47.19317 ++  ${SBSS}
47.19318 ++  ${BSS_PLT+${PLT}${RW_REGION}}
47.19319 ++  .bss          ${RELOCATING-0} :
47.19320 ++  {
47.19321 ++   *(.dynbss)
47.19322 ++   *(.bss${RELOCATING+ .bss.* .gnu.linkonce.b.*})
47.19323 ++   *(COMMON)
47.19324 ++   /* Align here to ensure that the .bss section occupies space up to
47.19325 ++      _end.  Align after .bss to ensure correct alignment even if the
47.19326 ++      .bss section disappears because there are no input sections.  */
47.19327 ++   ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
47.19328 ++  }${RW_REGION}
47.19329 ++  ${OTHER_BSS_SECTIONS}
47.19330 ++  ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
47.19331 ++  ${RELOCATING+_end = .;}
47.19332 ++  ${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
47.19333 ++  ${RELOCATING+PROVIDE (end = .);}
47.19334 ++  ${RELOCATING+${DATA_SEGMENT_END}}
47.19335 ++
47.19336 ++  /* Stabs debugging sections.  */
47.19337 ++  .stab          0 : { *(.stab) }
47.19338 ++  .stabstr       0 : { *(.stabstr) }
47.19339 ++  .stab.excl     0 : { *(.stab.excl) }
47.19340 ++  .stab.exclstr  0 : { *(.stab.exclstr) }
47.19341 ++  .stab.index    0 : { *(.stab.index) }
47.19342 ++  .stab.indexstr 0 : { *(.stab.indexstr) }
47.19343 ++
47.19344 ++  .comment       0 : { *(.comment) }
47.19345 ++
47.19346 ++  /* DWARF debug sections.
47.19347 ++     Symbols in the DWARF debugging sections are relative to the beginning
47.19348 ++     of the section so we begin them at 0.  */
47.19349 ++
47.19350 ++  /* DWARF 1 */
47.19351 ++  .debug          0 : { *(.debug) }
47.19352 ++  .line           0 : { *(.line) }
47.19353 ++
47.19354 ++  /* GNU DWARF 1 extensions */
47.19355 ++  .debug_srcinfo  0 : { *(.debug_srcinfo) }
47.19356 ++  .debug_sfnames  0 : { *(.debug_sfnames) }
47.19357 ++
47.19358 ++  /* DWARF 1.1 and DWARF 2 */
47.19359 ++  .debug_aranges  0 : { *(.debug_aranges) }
47.19360 ++  .debug_pubnames 0 : { *(.debug_pubnames) }
47.19361 ++
47.19362 ++  /* DWARF 2 */
47.19363 ++  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
47.19364 ++  .debug_abbrev   0 : { *(.debug_abbrev) }
47.19365 ++  .debug_line     0 : { *(.debug_line) }
47.19366 ++  .debug_frame    0 : { *(.debug_frame) }
47.19367 ++  .debug_str      0 : { *(.debug_str) }
47.19368 ++  .debug_loc      0 : { *(.debug_loc) }
47.19369 ++  .debug_macinfo  0 : { *(.debug_macinfo) }
47.19370 ++
47.19371 ++  /* SGI/MIPS DWARF 2 extensions */
47.19372 ++  .debug_weaknames 0 : { *(.debug_weaknames) }
47.19373 ++  .debug_funcnames 0 : { *(.debug_funcnames) }
47.19374 ++  .debug_typenames 0 : { *(.debug_typenames) }
47.19375 ++  .debug_varnames  0 : { *(.debug_varnames) }
47.19376 ++
47.19377 ++  ${STACK_ADDR+${STACK}}
47.19378 ++  ${OTHER_SECTIONS}
47.19379 ++  ${RELOCATING+${OTHER_END_SYMBOLS}}
47.19380 ++  ${RELOCATING+${STACKNOTE}}
47.19381 ++}
47.19382 ++EOF
47.19383 +--- /dev/null
47.19384 ++++ b/ld/testsuite/ld-avr32/avr32.exp
47.19385 +@@ -0,0 +1,25 @@
47.19386 ++# Expect script for AVR32 ELF linker tests.
47.19387 ++#   Copyright 2004-2006 Atmel Corporation.
47.19388 ++#
47.19389 ++# This file is free software; you can redistribute it and/or modify
47.19390 ++# it under the terms of the GNU General Public License as published by
47.19391 ++# the Free Software Foundation; either version 2 of the License, or
47.19392 ++# (at your option) any later version.
47.19393 ++#
47.19394 ++# This program is distributed in the hope that it will be useful,
47.19395 ++# but WITHOUT ANY WARRANTY; without even the implied warranty of
47.19396 ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
47.19397 ++# GNU General Public License for more details.
47.19398 ++#
47.19399 ++# You should have received a copy of the GNU General Public License
47.19400 ++# along with this program; if not, write to the Free Software
47.19401 ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
47.19402 ++#
47.19403 ++# Written by Haavard Skinnemoen (hskinnemoen@atmel.com)
47.19404 ++#
47.19405 ++
47.19406 ++if ![istarget avr32-*-*] {
47.19407 ++    return
47.19408 ++}
47.19409 ++
47.19410 ++run_dump_test "pcrel"
47.19411 +--- /dev/null
47.19412 ++++ b/ld/testsuite/ld-avr32/pcrel.d
47.19413 +@@ -0,0 +1,74 @@
47.19414 ++#name: AVR32 ELF PC-relative external relocs
47.19415 ++#source: symbols.s
47.19416 ++#source: ../../../gas/testsuite/gas/avr32/pcrel.s
47.19417 ++#ld: -T $srcdir/$subdir/pcrel.ld
47.19418 ++#objdump: -d
47.19419 ++
47.19420 ++.*:     file format elf.*avr32.*
47.19421 ++
47.19422 ++Disassembly of section .text:
47.19423 ++
47.19424 ++a0000000 <_start>:
47.19425 ++a0000000:	d7 03       	nop
47.19426 ++a0000002:	d7 03       	nop
47.19427 ++
47.19428 ++a0000004 <test_rjmp>:
47.19429 ++a0000004:	d7 03       	nop
47.19430 ++a0000006:	c0 28       	rjmp a000000a <test_rjmp\+0x6>
47.19431 ++a0000008:	d7 03       	nop
47.19432 ++a000000a:	e0 8f 01 fb 	bral a0000400 <extsym10>
47.19433 ++
47.19434 ++a000000e <test_rcall>:
47.19435 ++a000000e:	d7 03       	nop
47.19436 ++a0000010 <test_rcall2>:
47.19437 ++a0000010:	c0 2c       	rcall a0000014 <test_rcall2\+0x4>
47.19438 ++a0000012:	d7 03       	nop
47.19439 ++a0000014:	ee b0 ff f6 	rcall a0200000 <extsym21>
47.19440 ++
47.19441 ++a0000018 <test_branch>:
47.19442 ++a0000018:	c0 31       	brne a000001e <test_branch\+0x6>
47.19443 ++a000001a:	fe 9f ff ff 	bral a0000018 <test_branch>
47.19444 ++a000001e:	ee 90 ff f1 	breq a0200000 <extsym21>
47.19445 ++
47.19446 ++a0000022 <test_lddpc>:
47.19447 ++a0000022:	48 30       	lddpc r0,a000002c <sym1>
47.19448 ++a0000024:	48 20       	lddpc r0,a000002c <sym1>
47.19449 ++a0000026:	fe f0 7f da 	ld.w r0,pc\[32730\]
47.19450 ++	...
47.19451 ++
47.19452 ++a000002c <sym1>:
47.19453 ++a000002c:	d7 03       	nop
47.19454 ++a000002e:	d7 03       	nop
47.19455 ++
47.19456 ++a0000030 <test_local>:
47.19457 ++a0000030:	48 20       	lddpc r0,a0000038 <test_local\+0x8>
47.19458 ++a0000032:	48 30       	lddpc r0,a000003c <test_local\+0xc>
47.19459 ++a0000034:	48 20       	lddpc r0,a000003c <test_local\+0xc>
47.19460 ++a0000036:	00 00       	add r0,r0
47.19461 ++a0000038:	d7 03       	nop
47.19462 ++a000003a:	d7 03       	nop
47.19463 ++a000003c:	d7 03       	nop
47.19464 ++a000003e:	d7 03       	nop
47.19465 ++
47.19466 ++Disassembly of section \.text\.init:
47.19467 ++a0000040 <test_inter_section>:
47.19468 ++a0000040:	fe b0 ff e7 	rcall a000000e <test_rcall>
47.19469 ++a0000044:	d7 03       	nop
47.19470 ++a0000046:	fe b0 ff e4 	rcall a000000e <test_rcall>
47.19471 ++a000004a:	fe b0 ff e3 	rcall a0000010 <test_rcall2>
47.19472 ++a000004e:	d7 03       	nop
47.19473 ++a0000050:	fe b0 ff e0 	rcall a0000010 <test_rcall2>
47.19474 ++
47.19475 ++Disassembly of section \.text\.pcrel10:
47.19476 ++
47.19477 ++a0000400 <extsym10>:
47.19478 ++a0000400:	d7 03       	nop
47.19479 ++
47.19480 ++Disassembly of section \.text\.pcrel16:
47.19481 ++
47.19482 ++a0008000 <extsym16>:
47.19483 ++a0008000:	d7 03       	nop
47.19484 ++
47.19485 ++Disassembly of section \.text\.pcrel21:
47.19486 ++a0200000 <extsym21>:
47.19487 ++a0200000:	d7 03       	nop
47.19488 +--- /dev/null
47.19489 ++++ b/ld/testsuite/ld-avr32/pcrel.ld
47.19490 +@@ -0,0 +1,23 @@
47.19491 ++ENTRY(_start)
47.19492 ++SECTIONS
47.19493 ++{
47.19494 ++	.text 0xa0000000:
47.19495 ++	{
47.19496 ++		*(.text)
47.19497 ++	}
47.19498 ++
47.19499 ++	.text.pcrel10 0xa0000400:
47.19500 ++	{
47.19501 ++		*(.text.pcrel10)
47.19502 ++	}
47.19503 ++
47.19504 ++	.text.pcrel16 0xa0008000:
47.19505 ++	{
47.19506 ++		*(.text.pcrel16)
47.19507 ++	}
47.19508 ++
47.19509 ++	.text.pcrel21 0xa0200000:
47.19510 ++	{
47.19511 ++		*(.text.pcrel21)
47.19512 ++	}
47.19513 ++}
47.19514 +--- /dev/null
47.19515 ++++ b/ld/testsuite/ld-avr32/symbols.s
47.19516 +@@ -0,0 +1,20 @@
47.19517 ++	.text
47.19518 ++	.global _start
47.19519 ++_start:
47.19520 ++	nop
47.19521 ++	nop
47.19522 ++
47.19523 ++	.section .text.pcrel10,"ax"
47.19524 ++	.global extsym10
47.19525 ++extsym10:
47.19526 ++	nop
47.19527 ++
47.19528 ++	.section .text.pcrel16,"ax"
47.19529 ++	.global extsym16
47.19530 ++extsym16:
47.19531 ++	nop
47.19532 ++
47.19533 ++	.section .text.pcrel21,"ax"
47.19534 ++	.global extsym21
47.19535 ++extsym21:
47.19536 ++	nop
47.19537 +--- /dev/null
47.19538 ++++ b/opcodes/avr32-asm.c
47.19539 +@@ -0,0 +1,264 @@
47.19540 ++/* Assembler interface for AVR32.
47.19541 ++   Copyright 2005, 2006 Atmel Corporation.
47.19542 ++
47.19543 ++   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
47.19544 ++
47.19545 ++   This file is part of libopcodes.
47.19546 ++
47.19547 ++   This program is free software; you can redistribute it and/or
47.19548 ++   modify it under the terms of the GNU General Public License as
47.19549 ++   published by the Free Software Foundation; either version 2 of the
47.19550 ++   License, or (at your option) any later version.
47.19551 ++
47.19552 ++   This program is distributed in the hope that it will be useful, but
47.19553 ++   WITHOUT ANY WARRANTY; without even the implied warranty of
47.19554 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
47.19555 ++   General Public License for more details.
47.19556 ++
47.19557 ++   You should have received a copy of the GNU General Public License
47.19558 ++   along with this program; if not, write to the Free Software
47.19559 ++   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
47.19560 ++   02111-1307, USA.  */
47.19561 ++
47.19562 ++#include <string.h>
47.19563 ++
47.19564 ++#include "avr32-opc.h"
47.19565 ++#include "avr32-asm.h"
47.19566 ++
47.19567 ++/* Structure for a register hash table entry.  */
47.19568 ++struct reg_entry
47.19569 ++{
47.19570 ++  const char	*name;
47.19571 ++  int		number;
47.19572 ++};
47.19573 ++
47.19574 ++/* Integer Registers.  */
47.19575 ++static const struct reg_entry reg_table[] =
47.19576 ++  {
47.19577 ++    /* Primary names (used by the disassembler) */
47.19578 ++    { "r0",   0 }, { "r1",   1 }, { "r2",   2 }, { "r3",   3 },
47.19579 ++    { "r4",   4 }, { "r5",   5 }, { "r6",   6 }, { "r7",   7 },
47.19580 ++    { "r8",   8 }, { "r9",   9 }, { "r10", 10 }, { "r11", 11 },
47.19581 ++    { "r12", 12 }, { "sp",  13 }, { "lr",  14 }, { "pc",  15 },
47.19582 ++    /* Alternatives to sp, lr and pc.  */
47.19583 ++    { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
47.19584 ++  };
47.19585 ++#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
47.19586 ++
47.19587 ++/* Coprocessor Registers.  */
47.19588 ++static const struct reg_entry cr_table[] =
47.19589 ++  {
47.19590 ++    { "cr0",   0 }, { "cr1",   1 }, { "cr2",   2 }, { "cr3",   3 },
47.19591 ++    { "cr4",   4 }, { "cr5",   5 }, { "cr6",   6 }, { "cr7",   7 },
47.19592 ++    { "cr8",   8 }, { "cr9",   9 }, { "cr10", 10 }, { "cr11", 11 },
47.19593 ++    { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
47.19594 ++  };
47.19595 ++#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
47.19596 ++
47.19597 ++/* Floating-point Registers.  */
47.19598 ++static const struct reg_entry fr_table[] =
47.19599 ++  {
47.19600 ++    { "fr0",   0 }, { "fr1",   1 }, { "fr2",   2 }, { "fr3",   3 },
47.19601 ++    { "fr4",   4 }, { "fr5",   5 }, { "fr6",   6 }, { "fr7",   7 },
47.19602 ++    { "fr8",   8 }, { "fr9",   9 }, { "fr10", 10 }, { "fr11", 11 },
47.19603 ++    { "fr12", 12 }, { "fr13", 13 }, { "fr14", 14 }, { "fr15", 15 },
47.19604 ++  };
47.19605 ++#define AVR32_NR_FPREGS (sizeof(fr_table)/sizeof(fr_table[0]))
47.19606 ++
47.19607 ++/* PiCo Registers.  */
47.19608 ++static const struct reg_entry pico_table[] =
47.19609 ++  {
47.19610 ++    { "inpix2",    0 }, { "inpix1",    1 }, { "inpix0",    2 },
47.19611 ++    { "outpix2",   3 }, { "outpix1",   4 }, { "outpix0",   5 },
47.19612 ++    { "coeff0_a",  6 }, { "coeff0_b",  7 }, { "coeff1_a",  8 },
47.19613 ++    { "coeff1_b",  9 }, { "coeff2_a", 10 }, { "coeff2_b", 11 },
47.19614 ++    { "vmu0_out", 12 }, { "vmu1_out", 13 }, { "vmu2_out", 14 },
47.19615 ++    { "config",   15 },
47.19616 ++  };
47.19617 ++#define AVR32_NR_PICOREGS (sizeof(pico_table)/sizeof(pico_table[0]))
47.19618 ++
47.19619 ++int
47.19620 ++avr32_parse_intreg(const char *str)
47.19621 ++{
47.19622 ++  unsigned int i;
47.19623 ++
47.19624 ++  for (i = 0; i < AVR32_NR_INTREGS; i++)
47.19625 ++    {
47.19626 ++      if (strcasecmp(reg_table[i].name, str) == 0)
47.19627 ++	return reg_table[i].number;
47.19628 ++    }
47.19629 ++
47.19630 ++  return -1;
47.19631 ++}
47.19632 ++
47.19633 ++int
47.19634 ++avr32_parse_cpreg(const char *str)
47.19635 ++{
47.19636 ++  unsigned int i;
47.19637 ++
47.19638 ++  for (i = 0; i < AVR32_NR_CPREGS; i++)
47.19639 ++    {
47.19640 ++      if (strcasecmp(cr_table[i].name, str) == 0)
47.19641 ++	return cr_table[i].number;
47.19642 ++    }
47.19643 ++
47.19644 ++  return -1;
47.19645 ++}
47.19646 ++
47.19647 ++int avr32_parse_fpreg(const char *str)
47.19648 ++{
47.19649 ++  unsigned int i;
47.19650 ++
47.19651 ++  for (i = 0; i < AVR32_NR_FPREGS; i++)
47.19652 ++    {
47.19653 ++      if (strcasecmp(fr_table[i].name, str) == 0)
47.19654 ++	return fr_table[i].number;
47.19655 ++    }
47.19656 ++
47.19657 ++  return -1;
47.19658 ++}
47.19659 ++
47.19660 ++int avr32_parse_picoreg(const char *str)
47.19661 ++{
47.19662 ++  unsigned int i;
47.19663 ++
47.19664 ++  for (i = 0; i < AVR32_NR_PICOREGS; i++)
47.19665 ++    {
47.19666 ++      if (strcasecmp(pico_table[i].name, str) == 0)
47.19667 ++	return pico_table[i].number;
47.19668 ++    }
47.19669 ++
47.19670 ++  return -1;
47.19671 ++}
47.19672 ++
47.19673 ++static unsigned long
47.19674 ++parse_reglist(char *str, char **endptr, int (*parse_reg)(const char *))
47.19675 ++{
47.19676 ++  int reg_from, reg_to;
47.19677 ++  unsigned long result = 0;
47.19678 ++  char *p1, *p2, c;
47.19679 ++
47.19680 ++  while (*str)
47.19681 ++    {
47.19682 ++      for (p1 = str; *p1; p1++)
47.19683 ++	if (*p1 == ',' || *p1 == '-')
47.19684 ++	  break;
47.19685 ++
47.19686 ++      c = *p1, *p1 = 0;
47.19687 ++      reg_from = parse_reg(str);
47.19688 ++      *p1 = c;
47.19689 ++
47.19690 ++      if (reg_from < 0)
47.19691 ++	break;
47.19692 ++
47.19693 ++      if (*p1 == '-')
47.19694 ++	{
47.19695 ++	  for (p2 = ++p1; *p2; p2++)
47.19696 ++	    if (*p2 == ',')
47.19697 ++	      break;
47.19698 ++
47.19699 ++	  c = *p2, *p2 = 0;
47.19700 ++	  /* printf("going to parse reg_to from `%s'\n", p1); */
47.19701 ++	  reg_to = parse_reg(p1);
47.19702 ++	  *p2 = c;
47.19703 ++
47.19704 ++	  if (reg_to < 0)
47.19705 ++	    break;
47.19706 ++
47.19707 ++	  while (reg_from <= reg_to)
47.19708 ++	    result |= (1 << reg_from++);
47.19709 ++	  p1 = p2;
47.19710 ++	}
47.19711 ++      else
47.19712 ++	result |= (1 << reg_from);
47.19713 ++
47.19714 ++      str = p1;
47.19715 ++      if (*str) ++str;
47.19716 ++    }
47.19717 ++
47.19718 ++  if (endptr)
47.19719 ++    *endptr = str;
47.19720 ++
47.19721 ++  return result;
47.19722 ++}
47.19723 ++
47.19724 ++unsigned long
47.19725 ++avr32_parse_reglist(char *str, char **endptr)
47.19726 ++{
47.19727 ++  return parse_reglist(str, endptr, avr32_parse_intreg);
47.19728 ++}
47.19729 ++
47.19730 ++unsigned long
47.19731 ++avr32_parse_cpreglist(char *str, char **endptr)
47.19732 ++{
47.19733 ++  return parse_reglist(str, endptr, avr32_parse_cpreg);
47.19734 ++}
47.19735 ++
47.19736 ++unsigned long
47.19737 ++avr32_parse_pico_reglist(char *str, char **endptr)
47.19738 ++{
47.19739 ++  return parse_reglist(str, endptr, avr32_parse_picoreg);
47.19740 ++}
47.19741 ++
47.19742 ++int
47.19743 ++avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8)
47.19744 ++{
47.19745 ++  unsigned long result = 0;
47.19746 ++
47.19747 ++  /* printf("convert regmask16 0x%04lx\n", regmask16); */
47.19748 ++
47.19749 ++  if (regmask16 & 0xf)
47.19750 ++    {
47.19751 ++      if ((regmask16 & 0xf) == 0xf)
47.19752 ++	result |= 1 << 0;
47.19753 ++      else
47.19754 ++	return -1;
47.19755 ++    }
47.19756 ++  if (regmask16 & 0xf0)
47.19757 ++    {
47.19758 ++      if ((regmask16 & 0xf0) == 0xf0)
47.19759 ++	result |= 1 << 1;
47.19760 ++      else
47.19761 ++	return -1;
47.19762 ++    }
47.19763 ++  if (regmask16 & 0x300)
47.19764 ++    {
47.19765 ++      if ((regmask16 & 0x300) == 0x300)
47.19766 ++	result |= 1 << 2;
47.19767 ++      else
47.19768 ++	return -1;
47.19769 ++    }
47.19770 ++  if (regmask16 & (1 << 13))
47.19771 ++    return -1;
47.19772 ++
47.19773 ++  if (regmask16 & (1 << 10))
47.19774 ++    result |= 1 << 3;
47.19775 ++  if (regmask16 & (1 << 11))
47.19776 ++    result |= 1 << 4;
47.19777 ++  if (regmask16 & (1 << 12))
47.19778 ++    result |= 1 << 5;
47.19779 ++  if (regmask16 & (1 << 14))
47.19780 ++    result |= 1 << 6;
47.19781 ++  if (regmask16 & (1 << 15))
47.19782 ++    result |= 1 << 7;
47.19783 ++
47.19784 ++  *regmask8 = result;
47.19785 ++
47.19786 ++  return 0;
47.19787 ++}
47.19788 ++
47.19789 ++#if 0
47.19790 ++struct reg_map
47.19791 ++{
47.19792 ++  const struct reg_entry	*names;
47.19793 ++  int				nr_regs;
47.19794 ++  struct hash_control		*htab;
47.19795 ++  const char			*errmsg;
47.19796 ++};
47.19797 ++
47.19798 ++struct reg_map all_reg_maps[] =
47.19799 ++  {
47.19800 ++    { reg_table, AVR32_NR_INTREGS, NULL, N_("integral register expected") },
47.19801 ++    { cr_table,  AVR32_NR_CPREGS,  NULL, N_("coprocessor register expected") },
47.19802 ++  };
47.19803 ++#endif
47.19804 +--- /dev/null
47.19805 ++++ b/opcodes/avr32-asm.h
47.19806 +@@ -0,0 +1,42 @@
47.19807 ++/* Assembler interface for AVR32.
47.19808 ++   Copyright 2005, 2006 Atmel Corporation.
47.19809 ++
47.19810 ++   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
47.19811 ++
47.19812 ++   This file is part of libopcodes.
47.19813 ++
47.19814 ++   This program is free software; you can redistribute it and/or
47.19815 ++   modify it under the terms of the GNU General Public License as
47.19816 ++   published by the Free Software Foundation; either version 2 of the
47.19817 ++   License, or (at your option) any later version.
47.19818 ++
47.19819 ++   This program is distributed in the hope that it will be useful, but
47.19820 ++   WITHOUT ANY WARRANTY; without even the implied warranty of
47.19821 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
47.19822 ++   General Public License for more details.
47.19823 ++
47.19824 ++   You should have received a copy of the GNU General Public License
47.19825 ++   along with this program; if not, write to the Free Software
47.19826 ++   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
47.19827 ++   02111-1307, USA.  */
47.19828 ++#ifndef __OPCODES_AVR32_ASM_H
47.19829 ++#define __OPCODES_AVR32_ASM_H
47.19830 ++
47.19831 ++extern int
47.19832 ++avr32_parse_intreg(const char *str);
47.19833 ++extern int
47.19834 ++avr32_parse_cpreg(const char *str);
47.19835 ++extern int
47.19836 ++avr32_parse_fpreg(const char *str);
47.19837 ++extern int
47.19838 ++avr32_parse_picoreg(const char *str);
47.19839 ++extern unsigned long
47.19840 ++avr32_parse_reglist(char *str, char **endptr);
47.19841 ++extern unsigned long
47.19842 ++avr32_parse_cpreglist(char *str, char **endptr);
47.19843 ++extern unsigned long
47.19844 ++avr32_parse_pico_reglist(char *str, char **endptr);
47.19845 ++extern int
47.19846 ++avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8);
47.19847 ++
47.19848 ++#endif /* __OPCODES_AVR32_ASM_H */
47.19849 +--- /dev/null
47.19850 ++++ b/opcodes/avr32-dis.c
47.19851 +@@ -0,0 +1,891 @@
47.19852 ++/* Print AVR32 instructions for GDB and objdump.
47.19853 ++   Copyright 2005, 2006 Atmel Corporation.
47.19854 ++
47.19855 ++   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
47.19856 ++
47.19857 ++   This file is part of libopcodes.
47.19858 ++
47.19859 ++   This program is free software; you can redistribute it and/or
47.19860 ++   modify it under the terms of the GNU General Public License as
47.19861 ++   published by the Free Software Foundation; either version 2 of the
47.19862 ++   License, or (at your option) any later version.
47.19863 ++
47.19864 ++   This program is distributed in the hope that it will be useful, but
47.19865 ++   WITHOUT ANY WARRANTY; without even the implied warranty of
47.19866 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
47.19867 ++   General Public License for more details.
47.19868 ++
47.19869 ++   You should have received a copy of the GNU General Public License
47.19870 ++   along with this program; if not, write to the Free Software
47.19871 ++   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
47.19872 ++   02111-1307, USA.  */
47.19873 ++
47.19874 ++#include "sysdep.h"
47.19875 ++#include "dis-asm.h"
47.19876 ++#include "avr32-opc.h"
47.19877 ++#include "opintl.h"
47.19878 ++#include "safe-ctype.h"
47.19879 ++
47.19880 ++/* TODO: Share this with -asm */
47.19881 ++
47.19882 ++/* Structure for a register hash table entry.  */
47.19883 ++struct reg_entry
47.19884 ++{
47.19885 ++  const char	*name;
47.19886 ++  int		number;
47.19887 ++};
47.19888 ++
47.19889 ++#ifndef strneq
47.19890 ++#define strneq(a,b,n)	(strncmp ((a), (b), (n)) == 0)
47.19891 ++#endif
47.19892 ++
47.19893 ++
47.19894 ++static const struct reg_entry reg_table[] =
47.19895 ++  {
47.19896 ++    /* Primary names (used by the disassembler) */
47.19897 ++    { "r0",   0 }, { "r1",   1 }, { "r2",   2 }, { "r3",   3 },
47.19898 ++    { "r4",   4 }, { "r5",   5 }, { "r6",   6 }, { "r7",   7 },
47.19899 ++    { "r8",   8 }, { "r9",   9 }, { "r10", 10 }, { "r11", 11 },
47.19900 ++    { "r12", 12 }, { "sp",  13 }, { "lr",  14 }, { "pc",  15 },
47.19901 ++    /* Alternatives to sp, lr and pc.  */
47.19902 ++    { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
47.19903 ++  };
47.19904 ++#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
47.19905 ++
47.19906 ++/* Coprocessor Registers.  */
47.19907 ++static const struct reg_entry cr_table[] =
47.19908 ++  {
47.19909 ++    { "cr0",   0 }, { "cr1",   1 }, { "cr2",   2 }, { "cr3",   3 },
47.19910 ++    { "cr4",   4 }, { "cr5",   5 }, { "cr6",   6 }, { "cr7",   7 },
47.19911 ++    { "cr8",   8 }, { "cr9",   9 }, { "cr10", 10 }, { "cr11", 11 },
47.19912 ++    { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
47.19913 ++  };
47.19914 ++#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
47.19915 ++
47.19916 ++static const char bparts[4] = { 'b', 'l', 'u', 't' };
47.19917 ++static bfd_vma current_pc;
47.19918 ++
47.19919 ++struct avr32_field_value
47.19920 ++{
47.19921 ++  const struct avr32_ifield *ifield;
47.19922 ++  unsigned long value;
47.19923 ++};
47.19924 ++
47.19925 ++struct avr32_operand
47.19926 ++{
47.19927 ++  int id;
47.19928 ++  int is_pcrel;
47.19929 ++  int align_order;
47.19930 ++  int (*print)(struct avr32_operand *op, struct disassemble_info *info,
47.19931 ++	       struct avr32_field_value *ifields);
47.19932 ++};
47.19933 ++
47.19934 ++static signed long
47.19935 ++get_signed_value(const struct avr32_field_value *fv)
47.19936 ++{
47.19937 ++  signed long value = fv->value;
47.19938 ++
47.19939 ++  if (fv->value & (1 << (fv->ifield->bitsize - 1)))
47.19940 ++    value |= (~0UL << fv->ifield->bitsize);
47.19941 ++
47.19942 ++  return value;
47.19943 ++}
47.19944 ++
47.19945 ++static void
47.19946 ++print_reglist_range(unsigned int first, unsigned int last,
47.19947 ++		    const struct reg_entry *reg_names,
47.19948 ++		    int need_comma,
47.19949 ++		    struct disassemble_info *info)
47.19950 ++{
47.19951 ++  if (need_comma)
47.19952 ++    info->fprintf_func(info->stream, ",");
47.19953 ++
47.19954 ++  if (first == last)
47.19955 ++    info->fprintf_func(info->stream, "%s",
47.19956 ++		       reg_names[first].name);
47.19957 ++  else
47.19958 ++    info->fprintf_func(info->stream, "%s-%s",
47.19959 ++		       reg_names[first].name, reg_names[last].name);
47.19960 ++}
47.19961 ++
47.19962 ++static int
47.19963 ++print_intreg(struct avr32_operand *op,
47.19964 ++	     struct disassemble_info *info,
47.19965 ++	     struct avr32_field_value *ifields)
47.19966 ++{
47.19967 ++  unsigned long regid = ifields[0].value << op->align_order;
47.19968 ++
47.19969 ++  info->fprintf_func(info->stream, "%s",
47.19970 ++		     reg_table[regid].name);
47.19971 ++  return 1;
47.19972 ++}
47.19973 ++
47.19974 ++static int
47.19975 ++print_intreg_predec(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.19976 ++		    struct disassemble_info *info,
47.19977 ++		    struct avr32_field_value *ifields)
47.19978 ++{
47.19979 ++  info->fprintf_func(info->stream, "--%s",
47.19980 ++		     reg_table[ifields[0].value].name);
47.19981 ++  return 1;
47.19982 ++}
47.19983 ++
47.19984 ++static int
47.19985 ++print_intreg_postinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.19986 ++		     struct disassemble_info *info,
47.19987 ++		     struct avr32_field_value *ifields)
47.19988 ++{
47.19989 ++  info->fprintf_func(info->stream, "%s++",
47.19990 ++		     reg_table[ifields[0].value].name);
47.19991 ++  return 1;
47.19992 ++}
47.19993 ++
47.19994 ++static int
47.19995 ++print_intreg_lsl(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.19996 ++		 struct disassemble_info *info,
47.19997 ++		 struct avr32_field_value *ifields)
47.19998 ++{
47.19999 ++  const char *rp = reg_table[ifields[0].value].name;
47.20000 ++  unsigned long sa = ifields[1].value;
47.20001 ++
47.20002 ++  if (sa)
47.20003 ++    info->fprintf_func(info->stream, "%s<<0x%lx", rp, sa);
47.20004 ++  else
47.20005 ++    info->fprintf_func(info->stream, "%s", rp);
47.20006 ++
47.20007 ++  return 2;
47.20008 ++}
47.20009 ++
47.20010 ++static int
47.20011 ++print_intreg_lsr(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.20012 ++		 struct disassemble_info *info,
47.20013 ++		 struct avr32_field_value *ifields)
47.20014 ++{
47.20015 ++  const char *rp = reg_table[ifields[0].value].name;
47.20016 ++  unsigned long sa = ifields[1].value;
47.20017 ++
47.20018 ++  if (sa)
47.20019 ++    info->fprintf_func(info->stream, "%s>>0x%lx", rp, sa);
47.20020 ++  else
47.20021 ++    info->fprintf_func(info->stream, "%s", rp);
47.20022 ++
47.20023 ++  return 2;
47.20024 ++}
47.20025 ++
47.20026 ++static int
47.20027 ++print_intreg_bpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.20028 ++		   struct disassemble_info *info,
47.20029 ++		   struct avr32_field_value *ifields)
47.20030 ++{
47.20031 ++  info->fprintf_func(info->stream, "%s:%c",
47.20032 ++		     reg_table[ifields[0].value].name,
47.20033 ++		     bparts[ifields[1].value]);
47.20034 ++  return 2;
47.20035 ++}
47.20036 ++
47.20037 ++static int
47.20038 ++print_intreg_hpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.20039 ++		   struct disassemble_info *info,
47.20040 ++		   struct avr32_field_value *ifields)
47.20041 ++{
47.20042 ++  info->fprintf_func(info->stream, "%s:%c",
47.20043 ++		     reg_table[ifields[0].value].name,
47.20044 ++		     ifields[1].value ? 't' : 'b');
47.20045 ++  return 2;
47.20046 ++}
47.20047 ++
47.20048 ++static int
47.20049 ++print_intreg_sdisp(struct avr32_operand *op,
47.20050 ++		  struct disassemble_info *info,
47.20051 ++		  struct avr32_field_value *ifields)
47.20052 ++{
47.20053 ++  signed long disp;
47.20054 ++
47.20055 ++  disp = get_signed_value(&ifields[1]) << op->align_order;
47.20056 ++
47.20057 ++  info->fprintf_func(info->stream, "%s[%ld]",
47.20058 ++		     reg_table[ifields[0].value].name, disp);
47.20059 ++  return 2;
47.20060 ++}
47.20061 ++
47.20062 ++static int
47.20063 ++print_intreg_udisp(struct avr32_operand *op,
47.20064 ++		   struct disassemble_info *info,
47.20065 ++		   struct avr32_field_value *ifields)
47.20066 ++{
47.20067 ++  info->fprintf_func(info->stream, "%s[0x%lx]",
47.20068 ++		     reg_table[ifields[0].value].name,
47.20069 ++		     ifields[1].value << op->align_order);
47.20070 ++  return 2;
47.20071 ++}
47.20072 ++
47.20073 ++static int
47.20074 ++print_intreg_index(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.20075 ++		   struct disassemble_info *info,
47.20076 ++		   struct avr32_field_value *ifields)
47.20077 ++{
47.20078 ++  const char *rb, *ri;
47.20079 ++  unsigned long sa = ifields[2].value;
47.20080 ++
47.20081 ++  rb = reg_table[ifields[0].value].name;
47.20082 ++  ri = reg_table[ifields[1].value].name;
47.20083 ++
47.20084 ++  if (sa)
47.20085 ++    info->fprintf_func(info->stream, "%s[%s<<0x%lx]", rb, ri, sa);
47.20086 ++  else
47.20087 ++    info->fprintf_func(info->stream, "%s[%s]", rb, ri);
47.20088 ++
47.20089 ++  return 3;
47.20090 ++}
47.20091 ++
47.20092 ++static int
47.20093 ++print_intreg_xindex(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.20094 ++		    struct disassemble_info *info,
47.20095 ++		    struct avr32_field_value *ifields)
47.20096 ++{
47.20097 ++  info->fprintf_func(info->stream, "%s[%s:%c<<2]",
47.20098 ++		     reg_table[ifields[0].value].name,
47.20099 ++		     reg_table[ifields[1].value].name,
47.20100 ++		     bparts[ifields[2].value]);
47.20101 ++  return 3;
47.20102 ++}
47.20103 ++
47.20104 ++static int
47.20105 ++print_jmplabel(struct avr32_operand *op,
47.20106 ++	       struct disassemble_info *info,
47.20107 ++	       struct avr32_field_value *ifields)
47.20108 ++{
47.20109 ++  bfd_vma address, offset;
47.20110 ++
47.20111 ++  offset = get_signed_value(ifields) << op->align_order;
47.20112 ++  address = (current_pc & (~0UL << op->align_order)) + offset;
47.20113 ++
47.20114 ++  info->print_address_func(address, info);
47.20115 ++
47.20116 ++  return 1;
47.20117 ++}
47.20118 ++
47.20119 ++static int
47.20120 ++print_pc_disp(struct avr32_operand *op,
47.20121 ++	      struct disassemble_info *info,
47.20122 ++	      struct avr32_field_value *ifields)
47.20123 ++{
47.20124 ++  bfd_vma address, offset;
47.20125 ++
47.20126 ++  offset = ifields[0].value << op->align_order;
47.20127 ++  address = (current_pc & (~0UL << op->align_order)) + offset;
47.20128 ++
47.20129 ++  info->print_address_func(address, info);
47.20130 ++
47.20131 ++  return 1;
47.20132 ++}
47.20133 ++
47.20134 ++static int
47.20135 ++print_sp(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.20136 ++	 struct disassemble_info *info,
47.20137 ++	 struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
47.20138 ++{
47.20139 ++  info->fprintf_func(info->stream, "sp");
47.20140 ++  return 1;
47.20141 ++}
47.20142 ++
47.20143 ++static int
47.20144 ++print_sp_disp(struct avr32_operand *op,
47.20145 ++	      struct disassemble_info *info,
47.20146 ++	      struct avr32_field_value *ifields)
47.20147 ++{
47.20148 ++  info->fprintf_func(info->stream, "sp[0x%lx]",
47.20149 ++		     ifields[0].value << op->align_order);
47.20150 ++  return 1;
47.20151 ++}
47.20152 ++
47.20153 ++static int
47.20154 ++print_cpno(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.20155 ++	   struct disassemble_info *info,
47.20156 ++	   struct avr32_field_value *ifields)
47.20157 ++{
47.20158 ++  info->fprintf_func(info->stream, "cp%lu", ifields[0].value);
47.20159 ++  return 1;
47.20160 ++}
47.20161 ++
47.20162 ++static int
47.20163 ++print_cpreg(struct avr32_operand *op,
47.20164 ++	    struct disassemble_info *info,
47.20165 ++	    struct avr32_field_value *ifields)
47.20166 ++{
47.20167 ++  info->fprintf_func(info->stream, "cr%lu",
47.20168 ++		     ifields[0].value << op->align_order);
47.20169 ++  return 1;
47.20170 ++}
47.20171 ++
47.20172 ++static int
47.20173 ++print_uconst(struct avr32_operand *op,
47.20174 ++	     struct disassemble_info *info,
47.20175 ++	     struct avr32_field_value *ifields)
47.20176 ++{
47.20177 ++  info->fprintf_func(info->stream, "0x%lx",
47.20178 ++		     ifields[0].value << op->align_order);
47.20179 ++  return 1;
47.20180 ++}
47.20181 ++
47.20182 ++static int
47.20183 ++print_sconst(struct avr32_operand *op,
47.20184 ++	     struct disassemble_info *info,
47.20185 ++	     struct avr32_field_value *ifields)
47.20186 ++{
47.20187 ++  info->fprintf_func(info->stream, "%ld",
47.20188 ++		     get_signed_value(ifields) << op->align_order);
47.20189 ++  return 1;
47.20190 ++}
47.20191 ++
47.20192 ++static int
47.20193 ++print_reglist8_head(unsigned long regmask, int *commap,
47.20194 ++		    struct disassemble_info *info)
47.20195 ++{
47.20196 ++  int first = -1, last, i = 0;
47.20197 ++  int need_comma = 0;
47.20198 ++
47.20199 ++  while (i < 12)
47.20200 ++    {
47.20201 ++      if (first == -1 && (regmask & 1))
47.20202 ++	{
47.20203 ++	  first = i;
47.20204 ++	}
47.20205 ++      else if (first != -1 && !(regmask & 1))
47.20206 ++	{
47.20207 ++	  last = i - 1;
47.20208 ++
47.20209 ++	  print_reglist_range(first, last, reg_table, need_comma, info);
47.20210 ++	  need_comma = 1;
47.20211 ++	  first = -1;
47.20212 ++	}
47.20213 ++
47.20214 ++      if (i < 8)
47.20215 ++	i += 4;
47.20216 ++      else if (i < 10)
47.20217 ++	i += 2;
47.20218 ++      else
47.20219 ++	i++;
47.20220 ++      regmask >>= 1;
47.20221 ++    }
47.20222 ++
47.20223 ++  *commap = need_comma;
47.20224 ++  return first;
47.20225 ++}
47.20226 ++
47.20227 ++static void
47.20228 ++print_reglist8_tail(unsigned long regmask, int first, int need_comma,
47.20229 ++		    struct disassemble_info *info)
47.20230 ++{
47.20231 ++  int last = 11;
47.20232 ++
47.20233 ++  if (regmask & 0x20)
47.20234 ++    {
47.20235 ++      if (first == -1)
47.20236 ++	first = 12;
47.20237 ++      last = 12;
47.20238 ++    }
47.20239 ++
47.20240 ++  if (first != -1)
47.20241 ++    {
47.20242 ++      print_reglist_range(first, last, reg_table, need_comma, info);
47.20243 ++      need_comma = 1;
47.20244 ++      first = -1;
47.20245 ++    }
47.20246 ++
47.20247 ++  if (regmask & 0x40)
47.20248 ++    {
47.20249 ++      if (first == -1)
47.20250 ++	first = 14;
47.20251 ++      last = 14;
47.20252 ++    }
47.20253 ++
47.20254 ++  if (regmask & 0x80)
47.20255 ++    {
47.20256 ++      if (first == -1)
47.20257 ++	first = 15;
47.20258 ++      last = 15;
47.20259 ++    }
47.20260 ++
47.20261 ++  if (first != -1)
47.20262 ++    print_reglist_range(first, last, reg_table, need_comma, info);
47.20263 ++}
47.20264 ++
47.20265 ++static int
47.20266 ++print_reglist8(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.20267 ++	       struct disassemble_info *info,
47.20268 ++	       struct avr32_field_value *ifields)
47.20269 ++{
47.20270 ++  unsigned long regmask = ifields[0].value;
47.20271 ++  int first, need_comma;
47.20272 ++
47.20273 ++  first = print_reglist8_head(regmask, &need_comma, info);
47.20274 ++  print_reglist8_tail(regmask, first, need_comma, info);
47.20275 ++
47.20276 ++  return 1;
47.20277 ++}
47.20278 ++
47.20279 ++static int
47.20280 ++print_reglist9(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.20281 ++	       struct disassemble_info *info,
47.20282 ++	       struct avr32_field_value *ifields)
47.20283 ++{
47.20284 ++  unsigned long regmask = ifields[0].value >> 1;
47.20285 ++  int first, last, need_comma;
47.20286 ++
47.20287 ++  first = print_reglist8_head(regmask, &need_comma, info);
47.20288 ++
47.20289 ++  if ((ifields[0].value & 0x101) == 0x101)
47.20290 ++    {
47.20291 ++      if (first != -1)
47.20292 ++	{
47.20293 ++	  last = 11;
47.20294 ++
47.20295 ++	  print_reglist_range(first, last, reg_table, need_comma, info);
47.20296 ++	  need_comma = 1;
47.20297 ++	  first = -1;
47.20298 ++	}
47.20299 ++
47.20300 ++      print_reglist_range(15, 15, reg_table, need_comma, info);
47.20301 ++
47.20302 ++      regmask >>= 5;
47.20303 ++
47.20304 ++      if ((regmask & 3) == 0)
47.20305 ++	info->fprintf_func(info->stream, ",r12=0");
47.20306 ++      else if ((regmask & 3) == 1)
47.20307 ++	info->fprintf_func(info->stream, ",r12=1");
47.20308 ++      else
47.20309 ++	info->fprintf_func(info->stream, ",r12=-1");
47.20310 ++    }
47.20311 ++  else
47.20312 ++      print_reglist8_tail(regmask, first, need_comma, info);
47.20313 ++
47.20314 ++  return 1;
47.20315 ++}
47.20316 ++
47.20317 ++static int
47.20318 ++print_reglist16(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.20319 ++		struct disassemble_info *info,
47.20320 ++		struct avr32_field_value *ifields)
47.20321 ++{
47.20322 ++  unsigned long regmask = ifields[0].value;
47.20323 ++  unsigned int i = 0, first, last;
47.20324 ++  int need_comma = 0;
47.20325 ++
47.20326 ++  while (i < 16)
47.20327 ++    {
47.20328 ++      if (regmask & 1)
47.20329 ++	{
47.20330 ++	  first = i;
47.20331 ++	  while (i < 16)
47.20332 ++	    {
47.20333 ++	      i++;
47.20334 ++	      regmask >>= 1;
47.20335 ++	      if (!(regmask & 1))
47.20336 ++		break;
47.20337 ++	    }
47.20338 ++	  last = i - 1;
47.20339 ++	  print_reglist_range(first, last, reg_table, need_comma, info);
47.20340 ++	  need_comma = 1;
47.20341 ++	}
47.20342 ++      else
47.20343 ++	{
47.20344 ++	  i++;
47.20345 ++	  regmask >>= 1;
47.20346 ++	}
47.20347 ++    }
47.20348 ++
47.20349 ++  return 1;
47.20350 ++}
47.20351 ++
47.20352 ++static int
47.20353 ++print_reglist_ldm(struct avr32_operand *op,
47.20354 ++		  struct disassemble_info *info,
47.20355 ++		  struct avr32_field_value *ifields)
47.20356 ++{
47.20357 ++  int rp, w_bit;
47.20358 ++  int i, first, last;
47.20359 ++  unsigned long regmask;
47.20360 ++
47.20361 ++  rp = ifields[0].value;
47.20362 ++  w_bit = ifields[1].value;
47.20363 ++  regmask = ifields[2].value;
47.20364 ++
47.20365 ++  if (regmask & (1 << AVR32_REG_PC) && rp == AVR32_REG_PC)
47.20366 ++    {
47.20367 ++      if (w_bit)
47.20368 ++	info->fprintf_func(info->stream, "sp++");
47.20369 ++      else
47.20370 ++	info->fprintf_func(info->stream, "sp");
47.20371 ++
47.20372 ++      for (i = 0; i < 12; )
47.20373 ++	{
47.20374 ++	  if (regmask & (1 << i))
47.20375 ++	    {
47.20376 ++	      first = i;
47.20377 ++	      while (i < 12)
47.20378 ++		{
47.20379 ++		  i++;
47.20380 ++		  if (!(regmask & (1 << i)))
47.20381 ++		    break;
47.20382 ++		}
47.20383 ++	      last = i - 1;
47.20384 ++	      print_reglist_range(first, last, reg_table, 1, info);
47.20385 ++	    }
47.20386 ++	  else
47.20387 ++	    i++;
47.20388 ++	}
47.20389 ++
47.20390 ++      info->fprintf_func(info->stream, ",pc");
47.20391 ++      if (regmask & (1 << AVR32_REG_LR))
47.20392 ++	info->fprintf_func(info->stream, ",r12=-1");
47.20393 ++      else if (regmask & (1 << AVR32_REG_R12))
47.20394 ++	info->fprintf_func(info->stream, ",r12=1");
47.20395 ++      else
47.20396 ++	info->fprintf_func(info->stream, ",r12=0");
47.20397 ++    }
47.20398 ++  else
47.20399 ++    {
47.20400 ++      if (w_bit)
47.20401 ++	info->fprintf_func(info->stream, "%s++,", reg_table[rp].name);
47.20402 ++      else
47.20403 ++	info->fprintf_func(info->stream, "%s,", reg_table[rp].name);
47.20404 ++
47.20405 ++      print_reglist16(op, info, ifields + 2);
47.20406 ++    }
47.20407 ++
47.20408 ++  return 3;
47.20409 ++}
47.20410 ++
47.20411 ++static int
47.20412 ++print_reglist_cp8(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.20413 ++		  struct disassemble_info *info,
47.20414 ++		  struct avr32_field_value *ifields)
47.20415 ++{
47.20416 ++  unsigned long regmask = ifields[0].value;
47.20417 ++  unsigned int i = 0, first, last, offset = 0;
47.20418 ++  int need_comma = 0;
47.20419 ++
47.20420 ++  if (ifields[1].value)
47.20421 ++    offset = 8;
47.20422 ++
47.20423 ++  while (i < 8)
47.20424 ++    {
47.20425 ++      if (regmask & 1)
47.20426 ++	{
47.20427 ++	  first = i;
47.20428 ++	  while (i < 8)
47.20429 ++	    {
47.20430 ++	      i++;
47.20431 ++	      regmask >>= 1;
47.20432 ++	      if (!(regmask & 1))
47.20433 ++		break;
47.20434 ++	    }
47.20435 ++	  last = i - 1;
47.20436 ++	  print_reglist_range(offset + first, offset + last,
47.20437 ++			      cr_table, need_comma, info);
47.20438 ++	  need_comma = 1;
47.20439 ++	}
47.20440 ++      else
47.20441 ++	{
47.20442 ++	  i++;
47.20443 ++	  regmask >>= 1;
47.20444 ++	}
47.20445 ++    }
47.20446 ++
47.20447 ++  return 2;
47.20448 ++}
47.20449 ++
47.20450 ++static int
47.20451 ++print_reglist_cpd8(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.20452 ++		   struct disassemble_info *info,
47.20453 ++		   struct avr32_field_value *ifields)
47.20454 ++{
47.20455 ++  unsigned long regmask = ifields[0].value;
47.20456 ++  unsigned int i = 0, first, last;
47.20457 ++  int need_comma = 0;
47.20458 ++
47.20459 ++  while (i < 8)
47.20460 ++    {
47.20461 ++      if (regmask & 1)
47.20462 ++	{
47.20463 ++	  first = 2 * i;
47.20464 ++	  while (i < 8)
47.20465 ++	    {
47.20466 ++	      i++;
47.20467 ++	      regmask >>= 1;
47.20468 ++	      if (!(regmask & 1))
47.20469 ++		break;
47.20470 ++	    }
47.20471 ++	  last = 2 * (i - 1) + 1;
47.20472 ++	  print_reglist_range(first, last, cr_table, need_comma, info);
47.20473 ++	  need_comma = 1;
47.20474 ++	}
47.20475 ++      else
47.20476 ++	{
47.20477 ++	  i++;
47.20478 ++	  regmask >>= 1;
47.20479 ++	}
47.20480 ++    }
47.20481 ++
47.20482 ++  return 1;
47.20483 ++}
47.20484 ++
47.20485 ++static int
47.20486 ++print_retval(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.20487 ++	     struct disassemble_info *info,
47.20488 ++	     struct avr32_field_value *ifields)
47.20489 ++{
47.20490 ++  unsigned long regid = ifields[0].value;
47.20491 ++  const char *retval;
47.20492 ++
47.20493 ++  if (regid < AVR32_REG_SP)
47.20494 ++    retval = reg_table[regid].name;
47.20495 ++  else if (regid == AVR32_REG_SP)
47.20496 ++    retval = "0";
47.20497 ++  else if (regid == AVR32_REG_LR)
47.20498 ++    retval = "-1";
47.20499 ++  else
47.20500 ++    retval = "1";
47.20501 ++
47.20502 ++  info->fprintf_func(info->stream, "%s", retval);
47.20503 ++
47.20504 ++  return 1;
47.20505 ++}
47.20506 ++
47.20507 ++static int
47.20508 ++print_mcall(struct avr32_operand *op,
47.20509 ++	    struct disassemble_info *info,
47.20510 ++	    struct avr32_field_value *ifields)
47.20511 ++{
47.20512 ++  unsigned long regid = ifields[0].value;
47.20513 ++
47.20514 ++  if (regid == AVR32_REG_PC)
47.20515 ++    print_jmplabel(op, info, ifields + 1);
47.20516 ++  else
47.20517 ++    print_intreg_sdisp(op, info, ifields);
47.20518 ++
47.20519 ++  return 2;
47.20520 ++}
47.20521 ++
47.20522 ++static int
47.20523 ++print_jospinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.20524 ++	      struct disassemble_info *info,
47.20525 ++	      struct avr32_field_value *ifields)
47.20526 ++{
47.20527 ++  signed long value = ifields[0].value;
47.20528 ++
47.20529 ++  if (value >= 4)
47.20530 ++    value -= 8;
47.20531 ++  else
47.20532 ++    value += 1;
47.20533 ++
47.20534 ++  info->fprintf_func(info->stream, "%ld", value);
47.20535 ++
47.20536 ++  return 1;
47.20537 ++}
47.20538 ++
47.20539 ++static int
47.20540 ++print_coh(struct avr32_operand *op ATTRIBUTE_UNUSED,
47.20541 ++	  struct disassemble_info *info,
47.20542 ++	  struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
47.20543 ++{
47.20544 ++  info->fprintf_func(info->stream, "COH");
47.20545 ++  return 0;
47.20546 ++}
47.20547 ++
47.20548 ++#define OP(name, sgn, pcrel, align, func) \
47.20549 ++  { AVR32_OPERAND_##name, pcrel, align, print_##func }
47.20550 ++
47.20551 ++struct avr32_operand operand[AVR32_NR_OPERANDS] =
47.20552 ++  {
47.20553 ++    OP(INTREG, 0, 0, 0, intreg),
47.20554 ++    OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
47.20555 ++    OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
47.20556 ++    OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
47.20557 ++    OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
47.20558 ++    OP(INTREG_BSEL, 0, 0, 0, intreg_bpart),
47.20559 ++    OP(INTREG_HSEL, 0, 0, 1, intreg_hpart),
47.20560 ++    OP(INTREG_SDISP, 1, 0, 0, intreg_sdisp),
47.20561 ++    OP(INTREG_SDISP_H, 1, 0, 1, intreg_sdisp),
47.20562 ++    OP(INTREG_SDISP_W, 1, 0, 2, intreg_sdisp),
47.20563 ++    OP(INTREG_UDISP, 0, 0, 0, intreg_udisp),
47.20564 ++    OP(INTREG_UDISP_H, 0, 0, 1, intreg_udisp),
47.20565 ++    OP(INTREG_UDISP_W, 0, 0, 2, intreg_udisp),
47.20566 ++    OP(INTREG_INDEX, 0, 0, 0, intreg_index),
47.20567 ++    OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
47.20568 ++    OP(DWREG, 0, 0, 1, intreg),
47.20569 ++    OP(PC_UDISP_W, 0, 1, 2, pc_disp),
47.20570 ++    OP(SP, 0, 0, 0, sp),
47.20571 ++    OP(SP_UDISP_W, 0, 0, 2, sp_disp),
47.20572 ++    OP(CPNO, 0, 0, 0, cpno),
47.20573 ++    OP(CPREG, 0, 0, 0, cpreg),
47.20574 ++    OP(CPREG_D, 0, 0, 1, cpreg),
47.20575 ++    OP(UNSIGNED_CONST, 0, 0, 0, uconst),
47.20576 ++    OP(UNSIGNED_CONST_W, 0, 0, 2, uconst),
47.20577 ++    OP(SIGNED_CONST, 1, 0, 0, sconst),
47.20578 ++    OP(SIGNED_CONST_W, 1, 0, 2, sconst),
47.20579 ++    OP(JMPLABEL, 1, 1, 1, jmplabel),
47.20580 ++    OP(UNSIGNED_NUMBER, 0, 0, 0, uconst),
47.20581 ++    OP(UNSIGNED_NUMBER_W, 0, 0, 2, uconst),
47.20582 ++    OP(REGLIST8, 0, 0, 0, reglist8),
47.20583 ++    OP(REGLIST9, 0, 0, 0, reglist9),
47.20584 ++    OP(REGLIST16, 0, 0, 0, reglist16),
47.20585 ++    OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
47.20586 ++    OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
47.20587 ++    OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
47.20588 ++    OP(RETVAL, 0, 0, 0, retval),
47.20589 ++    OP(MCALL, 1, 0, 2, mcall),
47.20590 ++    OP(JOSPINC, 0, 0, 0, jospinc),
47.20591 ++    OP(COH, 0, 0, 0, coh),
47.20592 ++  };
47.20593 ++
47.20594 ++static void
47.20595 ++print_opcode(bfd_vma insn_word, const struct avr32_opcode *opc,
47.20596 ++	     bfd_vma pc, struct disassemble_info *info)
47.20597 ++{
47.20598 ++  const struct avr32_syntax *syntax = opc->syntax;
47.20599 ++  struct avr32_field_value fields[AVR32_MAX_FIELDS];
47.20600 ++  unsigned int i, next_field = 0, nr_operands;
47.20601 ++
47.20602 ++  for (i = 0; i < opc->nr_fields; i++)
47.20603 ++    {
47.20604 ++      opc->fields[i]->extract(opc->fields[i], &insn_word, &fields[i].value);
47.20605 ++      fields[i].ifield = opc->fields[i];
47.20606 ++    }
47.20607 ++
47.20608 ++  current_pc = pc;
47.20609 ++  info->fprintf_func(info->stream, "%s", syntax->mnemonic->name);
47.20610 ++
47.20611 ++  if (syntax->nr_operands < 0)
47.20612 ++    nr_operands = (unsigned int) -syntax->nr_operands;
47.20613 ++  else
47.20614 ++    nr_operands = (unsigned int) syntax->nr_operands;
47.20615 ++
47.20616 ++  for (i = 0; i < nr_operands; i++)
47.20617 ++    {
47.20618 ++      struct avr32_operand *op = &operand[syntax->operand[i]];
47.20619 ++
47.20620 ++      if (i)
47.20621 ++	info->fprintf_func(info->stream, ",");
47.20622 ++      else
47.20623 ++	info->fprintf_func(info->stream, "\t");
47.20624 ++      next_field += op->print(op, info, &fields[next_field]);
47.20625 ++    }
47.20626 ++}
47.20627 ++
47.20628 ++static const struct avr32_opcode *
47.20629 ++find_opcode(bfd_vma insn_word)
47.20630 ++{
47.20631 ++  int i;
47.20632 ++
47.20633 ++  for (i = 0; i < AVR32_NR_OPCODES; i++)
47.20634 ++    {
47.20635 ++      const struct avr32_opcode *opc = &avr32_opc_table[i];
47.20636 ++
47.20637 ++      if ((insn_word & opc->mask) == opc->value)
47.20638 ++	return opc;
47.20639 ++    }
47.20640 ++
47.20641 ++  return NULL;
47.20642 ++}
47.20643 ++
47.20644 ++static int
47.20645 ++read_insn_word(bfd_vma pc, bfd_vma *valuep,
47.20646 ++	       struct disassemble_info *info)
47.20647 ++{
47.20648 ++  bfd_byte b[4];
47.20649 ++  int status;
47.20650 ++
47.20651 ++  status = info->read_memory_func(pc, b, 4, info);
47.20652 ++  if (status)
47.20653 ++    {
47.20654 ++      status = info->read_memory_func(pc, b, 2, info);
47.20655 ++      if (status)
47.20656 ++	{
47.20657 ++	  info->memory_error_func(status, pc, info);
47.20658 ++	  return -1;
47.20659 ++	}
47.20660 ++      b[3] = b[2] = 0;
47.20661 ++    }
47.20662 ++
47.20663 ++  *valuep =  (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];
47.20664 ++  return 0;
47.20665 ++}
47.20666 ++
47.20667 ++/* Parse an individual disassembler option.  */
47.20668 ++
47.20669 ++void
47.20670 ++parse_avr32_disassembler_option (option)
47.20671 ++     char * option;
47.20672 ++{
47.20673 ++  if (option == NULL)
47.20674 ++    return;
47.20675 ++
47.20676 ++  /* XXX - should break 'option' at following delimiter.  */
47.20677 ++  fprintf (stderr, _("Unrecognised disassembler option: %s\n"), option);
47.20678 ++
47.20679 ++  return;
47.20680 ++}
47.20681 ++
47.20682 ++/* Parse the string of disassembler options, spliting it at whitespaces
47.20683 ++   or commas.  (Whitespace separators supported for backwards compatibility).  */
47.20684 ++
47.20685 ++static void
47.20686 ++parse_disassembler_options (char *options)
47.20687 ++{
47.20688 ++  if (options == NULL)
47.20689 ++    return;
47.20690 ++
47.20691 ++  while (*options)
47.20692 ++    {
47.20693 ++      parse_avr32_disassembler_option (options);
47.20694 ++
47.20695 ++      /* Skip forward to next seperator.  */
47.20696 ++      while ((*options) && (! ISSPACE (*options)) && (*options != ','))
47.20697 ++	++ options;
47.20698 ++      /* Skip forward past seperators.  */
47.20699 ++      while (ISSPACE (*options) || (*options == ','))
47.20700 ++	++ options;
47.20701 ++    }
47.20702 ++}
47.20703 ++
47.20704 ++int
47.20705 ++print_insn_avr32(bfd_vma pc, struct disassemble_info *info)
47.20706 ++{
47.20707 ++  bfd_vma insn_word;
47.20708 ++  const struct avr32_opcode *opc;
47.20709 ++
47.20710 ++  if (info->disassembler_options)
47.20711 ++    {
47.20712 ++      parse_disassembler_options (info->disassembler_options);
47.20713 ++
47.20714 ++      /* To avoid repeated parsing of these options, we remove them here.  */
47.20715 ++      info->disassembler_options = NULL;
47.20716 ++    }
47.20717 ++
47.20718 ++  info->bytes_per_chunk = 1;
47.20719 ++  info->display_endian = BFD_ENDIAN_BIG;
47.20720 ++
47.20721 ++  if (read_insn_word(pc, &insn_word, info))
47.20722 ++    return -1;
47.20723 ++
47.20724 ++  opc = find_opcode(insn_word);
47.20725 ++  if (opc)
47.20726 ++    {
47.20727 ++      print_opcode(insn_word, opc, pc, info);
47.20728 ++      return opc->size;
47.20729 ++    }
47.20730 ++  else
47.20731 ++    {
47.20732 ++      info->fprintf_func(info->stream, _("*unknown*"));
47.20733 ++      return 2;
47.20734 ++    }
47.20735 ++
47.20736 ++}
47.20737 ++
47.20738 ++void
47.20739 ++print_avr32_disassembler_options (FILE *stream ATTRIBUTE_UNUSED)
47.20740 ++{
47.20741 ++
47.20742 ++}
47.20743 +--- /dev/null
47.20744 ++++ b/opcodes/avr32-opc.c
47.20745 +@@ -0,0 +1,6932 @@
47.20746 ++/* Opcode tables for AVR32.
47.20747 ++   Copyright 2005, 2006 Atmel Corporation.
47.20748 ++
47.20749 ++   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
47.20750 ++
47.20751 ++   This file is part of libopcodes.
47.20752 ++
47.20753 ++   This program is free software; you can redistribute it and/or
47.20754 ++   modify it under the terms of the GNU General Public License as
47.20755 ++   published by the Free Software Foundation; either version 2 of the
47.20756 ++   License, or (at your option) any later version.
47.20757 ++
47.20758 ++   This program is distributed in the hope that it will be useful, but
47.20759 ++   WITHOUT ANY WARRANTY; without even the implied warranty of
47.20760 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
47.20761 ++   General Public License for more details.
47.20762 ++
47.20763 ++   You should have received a copy of the GNU General Public License
47.20764 ++   along with this program; if not, write to the Free Software
47.20765 ++   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
47.20766 ++   02111-1307, USA.  */
47.20767 ++
47.20768 ++#include <stdlib.h>
47.20769 ++#include <assert.h>
47.20770 ++
47.20771 ++#include "avr32-opc.h"
47.20772 ++
47.20773 ++#define PICO_CPNO	1
47.20774 ++
47.20775 ++void
47.20776 ++avr32_insert_simple(const struct avr32_ifield *field,
47.20777 ++		    void *buf, unsigned long value)
47.20778 ++{
47.20779 ++  bfd_vma word;
47.20780 ++
47.20781 ++  word = bfd_getb32(buf);
47.20782 ++  word &= ~field->mask;
47.20783 ++  word |= (value << field->shift) & field->mask;
47.20784 ++  bfd_putb32(word, buf);
47.20785 ++}
47.20786 ++
47.20787 ++void
47.20788 ++avr32_insert_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
47.20789 ++		   void *buf, unsigned long value)
47.20790 ++{
47.20791 ++  char *opcode = buf;
47.20792 ++
47.20793 ++  opcode[0] = (opcode[0] & 0xe1) | (value & 0x1e);
47.20794 ++  opcode[1] = (opcode[1] & 0xef) | ((value & 1) << 4);
47.20795 ++}
47.20796 ++
47.20797 ++void
47.20798 ++avr32_insert_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
47.20799 ++		 void *buf, unsigned long value)
47.20800 ++{
47.20801 ++  char *opcode = buf;
47.20802 ++
47.20803 ++  opcode[0] = (opcode[0] & 0xf0) | ((value & 0xf0) >> 4);
47.20804 ++  opcode[1] = ((opcode[1] & 0x0c) | ((value & 0x0f) << 4)
47.20805 ++	       | ((value & 0x300) >> 8));
47.20806 ++}
47.20807 ++
47.20808 ++
47.20809 ++void
47.20810 ++avr32_insert_k21(const struct avr32_ifield *field,
47.20811 ++		 void *buf, unsigned long value)
47.20812 ++{
47.20813 ++  bfd_vma word;
47.20814 ++  bfd_vma k21;
47.20815 ++
47.20816 ++  word = bfd_getb32(buf);
47.20817 ++  word &= ~field->mask;
47.20818 ++  k21 = ((value & 0xffff) | ((value & 0x10000) << 4)
47.20819 ++	 | ((value & 0x1e0000) << 8));
47.20820 ++  assert(!(k21 & ~field->mask));
47.20821 ++  word |= k21;
47.20822 ++  bfd_putb32(word, buf);
47.20823 ++}
47.20824 ++
47.20825 ++void
47.20826 ++avr32_insert_cpop(const struct avr32_ifield *field,
47.20827 ++		  void *buf, unsigned long value)
47.20828 ++{
47.20829 ++  bfd_vma word;
47.20830 ++
47.20831 ++  word = bfd_getb32(buf);
47.20832 ++  word &= ~field->mask;
47.20833 ++  word |= (((value & 0x1e) << 15) | ((value & 0x60) << 20)
47.20834 ++	   | ((value & 0x01) << 12));
47.20835 ++  bfd_putb32(word, buf);
47.20836 ++}
47.20837 ++
47.20838 ++void
47.20839 ++avr32_insert_k12cp(const struct avr32_ifield *field,
47.20840 ++		   void *buf, unsigned long value)
47.20841 ++{
47.20842 ++  bfd_vma word;
47.20843 ++
47.20844 ++  word = bfd_getb32(buf);
47.20845 ++  word &= ~field->mask;
47.20846 ++  word |= ((value & 0xf00) << 4) | (value & 0xff);
47.20847 ++  bfd_putb32(word, buf);
47.20848 ++}
47.20849 ++
47.20850 ++void avr32_extract_simple(const struct avr32_ifield *field,
47.20851 ++			  void *buf, unsigned long *value)
47.20852 ++{
47.20853 ++  /* XXX: The disassembler has done any necessary byteswapping already */
47.20854 ++  bfd_vma word = *(bfd_vma *)buf;
47.20855 ++
47.20856 ++  *value = (word & field->mask) >> field->shift;
47.20857 ++}
47.20858 ++
47.20859 ++void avr32_extract_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
47.20860 ++			 void *buf, unsigned long *value)
47.20861 ++{
47.20862 ++  bfd_vma word = *(bfd_vma *)buf;
47.20863 ++
47.20864 ++  *value = ((word >> 20) & 1) | ((word >> 24) & 0x1e);
47.20865 ++}
47.20866 ++
47.20867 ++void avr32_extract_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
47.20868 ++		       void *buf, unsigned long *value)
47.20869 ++{
47.20870 ++  bfd_vma word = *(bfd_vma *)buf;
47.20871 ++
47.20872 ++  *value = ((word >> 8) & 0x300) | ((word >> 20) & 0xff);
47.20873 ++}
47.20874 ++
47.20875 ++void avr32_extract_k21(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
47.20876 ++		       void *buf, unsigned long *value)
47.20877 ++{
47.20878 ++  bfd_vma word = *(bfd_vma *)buf;
47.20879 ++
47.20880 ++  *value = ((word & 0xffff) | ((word >> 4) & 0x10000)
47.20881 ++	    | ((word >> 8) & 0x1e0000));
47.20882 ++}
47.20883 ++
47.20884 ++void avr32_extract_cpop(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
47.20885 ++			void *buf, unsigned long *value)
47.20886 ++{
47.20887 ++  bfd_vma word = *(bfd_vma *)buf;
47.20888 ++
47.20889 ++  *value = (((word >> 12) & 1) | ((word >> 15) & 0x1e)
47.20890 ++	    | ((word >> 20) & 0x60));
47.20891 ++}
47.20892 ++
47.20893 ++void avr32_extract_k12cp(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
47.20894 ++			 void *buf, unsigned long *value)
47.20895 ++{
47.20896 ++  bfd_vma word = *(bfd_vma *)buf;
47.20897 ++
47.20898 ++  *value = ((word >> 4) & 0xf00) | (word & 0xff);
47.20899 ++}
47.20900 ++
47.20901 ++
47.20902 ++#define IFLD(id, bitsz, shift, mask, func) \
47.20903 ++  { AVR32_IFIELD_##id, bitsz, shift, mask, \
47.20904 ++    avr32_insert_##func, avr32_extract_##func }
47.20905 ++
47.20906 ++const struct avr32_ifield avr32_ifield_table[] =
47.20907 ++  {
47.20908 ++    IFLD(RX, 4, 25, 0x1e000000, simple),
47.20909 ++    IFLD(RY, 4, 16, 0x000f0000, simple),
47.20910 ++    IFLD(COND4C, 4, 20, 0x00f00000, simple),
47.20911 ++    IFLD(K8C, 8, 20, 0x0ff00000, simple),
47.20912 ++    IFLD(K7C, 7, 20, 0x07f00000, simple),
47.20913 ++    IFLD(K5C, 5, 20, 0x01f00000, simple),
47.20914 ++    IFLD(K3, 3, 20, 0x00700000, simple),
47.20915 ++    IFLD(RY_DW, 3, 17, 0x000e0000, simple),
47.20916 ++    IFLD(COND4E, 4, 8, 0x00000f00, simple),
47.20917 ++    IFLD(K8E, 8, 0, 0x000000ff, simple),
47.20918 ++    IFLD(BIT5C, 5, 20, 0x1e100000, bit5c),
47.20919 ++    IFLD(COND3, 3, 16, 0x00070000, simple),
47.20920 ++    IFLD(K10, 10, 16, 0x0ff30000, k10),
47.20921 ++    IFLD(POPM, 9, 19, 0x0ff80000, simple),
47.20922 ++    IFLD(K2, 2, 4, 0x00000030, simple),
47.20923 ++    IFLD(RD_E, 4, 0, 0x0000000f, simple),
47.20924 ++    IFLD(RD_DW, 3, 1, 0x0000000e, simple),
47.20925 ++    IFLD(X, 1, 5, 0x00000020, simple),
47.20926 ++    IFLD(Y, 1, 4, 0x00000010, simple),
47.20927 ++    IFLD(X2, 1, 13, 0x00002000, simple),
47.20928 ++    IFLD(Y2, 1, 12, 0x00001000, simple),
47.20929 ++    IFLD(K5E, 5, 0, 0x0000001f, simple),
47.20930 ++    IFLD(PART2, 2, 0, 0x00000003, simple),
47.20931 ++    IFLD(PART1, 1, 0, 0x00000001, simple),
47.20932 ++    IFLD(K16, 16, 0, 0x0000ffff, simple),
47.20933 ++    IFLD(CACHEOP, 5, 11, 0x0000f800, simple),
47.20934 ++    IFLD(K11, 11, 0, 0x000007ff, simple),
47.20935 ++    IFLD(K21, 21, 0, 0x1e10ffff, k21),
47.20936 ++    IFLD(CPOP, 7, 12, 0x060f1000, cpop),
47.20937 ++    IFLD(CPNO, 3, 13, 0x0000e000, simple),
47.20938 ++    IFLD(CRD_RI, 4, 8, 0x00000f00, simple),
47.20939 ++    IFLD(CRX, 4, 4, 0x000000f0, simple),
47.20940 ++    IFLD(CRY, 4, 0, 0x0000000f, simple),
47.20941 ++    IFLD(K7E, 7, 0, 0x0000007f, simple),
47.20942 ++    IFLD(CRD_DW, 3, 9, 0x00000e00, simple),
47.20943 ++    IFLD(PART1_K12, 1, 12, 0x00001000, simple),
47.20944 ++    IFLD(PART2_K12, 2, 12, 0x00003000, simple),
47.20945 ++    IFLD(K12, 12, 0, 0x00000fff, simple),
47.20946 ++    IFLD(S5, 5, 5, 0x000003e0, simple),
47.20947 ++    IFLD(K5E2, 5, 4, 0x000001f0, simple),
47.20948 ++    IFLD(K4, 4, 20, 0x00f00000, simple),
47.20949 ++    IFLD(COND4E2, 4, 4, 0x000000f0, simple),
47.20950 ++    IFLD(K8E2, 8, 4, 0x00000ff0, simple),
47.20951 ++    IFLD(K6, 6, 20, 0x03f00000, simple),
47.20952 ++    IFLD(MEM15, 15, 0, 0x00007fff, simple),
47.20953 ++    IFLD(MEMB5, 5, 15, 0x000f8000, simple),
47.20954 ++    IFLD(W, 1, 25, 0x02000000, simple),
47.20955 ++    /* Coprocessor Multiple High/Low */
47.20956 ++    IFLD(CM_HL, 1, 8, 0x00000100, simple),
47.20957 ++    IFLD(K12CP, 12 ,0, 0x0000f0ff, k12cp),
47.20958 ++    IFLD(K9E, 9 ,0, 0x000001ff, simple),
47.20959 ++  };
47.20960 ++#undef IFLD
47.20961 ++
47.20962 ++
47.20963 ++struct avr32_opcode avr32_opc_table[] =
47.20964 ++  {
47.20965 ++    {
47.20966 ++      AVR32_OPC_ABS, 2, 0x5c400000, 0xfff00000,
47.20967 ++      &avr32_syntax_table[AVR32_SYNTAX_ABS],
47.20968 ++      BFD_RELOC_UNUSED, 1, -1,
47.20969 ++      {
47.20970 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.20971 ++      }
47.20972 ++    },
47.20973 ++    {
47.20974 ++      AVR32_OPC_ACALL, 2, 0xd0000000, 0xf00f0000,
47.20975 ++      &avr32_syntax_table[AVR32_SYNTAX_ACALL],
47.20976 ++      BFD_RELOC_UNUSED, 1, -1,
47.20977 ++      {
47.20978 ++	&avr32_ifield_table[AVR32_IFIELD_K8C],
47.20979 ++      },
47.20980 ++    },
47.20981 ++    {
47.20982 ++      AVR32_OPC_ACR, 2, 0x5c000000, 0xfff00000,
47.20983 ++      &avr32_syntax_table[AVR32_SYNTAX_ACR],
47.20984 ++      BFD_RELOC_UNUSED, 1, -1,
47.20985 ++      {
47.20986 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.20987 ++      },
47.20988 ++    },
47.20989 ++    {
47.20990 ++      AVR32_OPC_ADC, 4, 0xe0000040, 0xe1f0fff0,
47.20991 ++      &avr32_syntax_table[AVR32_SYNTAX_ADC],
47.20992 ++      BFD_RELOC_UNUSED, 3, -1,
47.20993 ++      {
47.20994 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.20995 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.20996 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.20997 ++      },
47.20998 ++    },
47.20999 ++    {
47.21000 ++      AVR32_OPC_ADD1, 2, 0x00000000, 0xe1f00000,
47.21001 ++      &avr32_syntax_table[AVR32_SYNTAX_ADD1],
47.21002 ++      BFD_RELOC_UNUSED, 2, -1,
47.21003 ++      {
47.21004 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21005 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21006 ++      },
47.21007 ++    },
47.21008 ++    {
47.21009 ++      AVR32_OPC_ADD2, 4, 0xe0000000, 0xe1f0ffc0,
47.21010 ++      &avr32_syntax_table[AVR32_SYNTAX_ADD2],
47.21011 ++      BFD_RELOC_UNUSED, 4, -1,
47.21012 ++      {
47.21013 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21014 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21015 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21016 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.21017 ++      },
47.21018 ++    },
47.21019 ++    {
47.21020 ++      AVR32_OPC_ADDABS, 4, 0xe0000e40, 0xe1f0fff0,
47.21021 ++      &avr32_syntax_table[AVR32_SYNTAX_ADDABS],
47.21022 ++      BFD_RELOC_UNUSED, 3, -1,
47.21023 ++      {
47.21024 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21025 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21026 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21027 ++      },
47.21028 ++    },
47.21029 ++    {
47.21030 ++      AVR32_OPC_ADDHH_W, 4, 0xe0000e00, 0xe1f0ffc0,
47.21031 ++      &avr32_syntax_table[AVR32_SYNTAX_ADDHH_W],
47.21032 ++      BFD_RELOC_UNUSED, 5, -1,
47.21033 ++      {
47.21034 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21035 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21036 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.21037 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21038 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.21039 ++      },
47.21040 ++    },
47.21041 ++    {
47.21042 ++      AVR32_OPC_AND1, 2, 0x00600000, 0xe1f00000,
47.21043 ++      &avr32_syntax_table[AVR32_SYNTAX_AND1],
47.21044 ++      BFD_RELOC_UNUSED, 2, -1,
47.21045 ++      {
47.21046 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21047 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21048 ++      },
47.21049 ++    },
47.21050 ++    {
47.21051 ++      AVR32_OPC_AND2, 4, 0xe1e00000, 0xe1f0fe00,
47.21052 ++      &avr32_syntax_table[AVR32_SYNTAX_AND2],
47.21053 ++      BFD_RELOC_UNUSED, 4, -1,
47.21054 ++      {
47.21055 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21056 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21057 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21058 ++	&avr32_ifield_table[AVR32_IFIELD_K5E2],
47.21059 ++      },
47.21060 ++    },
47.21061 ++    {
47.21062 ++      AVR32_OPC_AND3, 4, 0xe1e00200, 0xe1f0fe00,
47.21063 ++      &avr32_syntax_table[AVR32_SYNTAX_AND3],
47.21064 ++      BFD_RELOC_UNUSED, 4, -1,
47.21065 ++      {
47.21066 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21067 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21068 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21069 ++	&avr32_ifield_table[AVR32_IFIELD_K5E2],
47.21070 ++      },
47.21071 ++    },
47.21072 ++    {
47.21073 ++      AVR32_OPC_ANDH, 4, 0xe4100000, 0xfff00000,
47.21074 ++      &avr32_syntax_table[AVR32_SYNTAX_ANDH],
47.21075 ++      BFD_RELOC_AVR32_16U, 2, 1,
47.21076 ++      {
47.21077 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21078 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.21079 ++      },
47.21080 ++    },
47.21081 ++    {
47.21082 ++      AVR32_OPC_ANDH_COH, 4, 0xe6100000, 0xfff00000,
47.21083 ++      &avr32_syntax_table[AVR32_SYNTAX_ANDH_COH],
47.21084 ++      BFD_RELOC_AVR32_16U, 2, 1,
47.21085 ++      {
47.21086 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21087 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.21088 ++      },
47.21089 ++    },
47.21090 ++    {
47.21091 ++      AVR32_OPC_ANDL, 4, 0xe0100000, 0xfff00000,
47.21092 ++      &avr32_syntax_table[AVR32_SYNTAX_ANDL],
47.21093 ++      BFD_RELOC_AVR32_16U, 2, 1,
47.21094 ++      {
47.21095 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21096 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.21097 ++      },
47.21098 ++    },
47.21099 ++    {
47.21100 ++      AVR32_OPC_ANDL_COH, 4, 0xe2100000, 0xfff00000,
47.21101 ++      &avr32_syntax_table[AVR32_SYNTAX_ANDL_COH],
47.21102 ++      BFD_RELOC_AVR32_16U, 2, 1,
47.21103 ++      {
47.21104 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21105 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.21106 ++      },
47.21107 ++    },
47.21108 ++    {
47.21109 ++      AVR32_OPC_ANDN, 2, 0x00800000, 0xe1f00000,
47.21110 ++      &avr32_syntax_table[AVR32_SYNTAX_ANDN],
47.21111 ++      BFD_RELOC_UNUSED, 2, -1,
47.21112 ++      {
47.21113 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21114 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21115 ++      },
47.21116 ++    },
47.21117 ++    {
47.21118 ++      AVR32_OPC_ASR1, 4, 0xe0000840, 0xe1f0fff0,
47.21119 ++      &avr32_syntax_table[AVR32_SYNTAX_ASR1],
47.21120 ++      BFD_RELOC_UNUSED, 3, -1,
47.21121 ++      {
47.21122 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21123 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21124 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21125 ++      },
47.21126 ++    },
47.21127 ++    {
47.21128 ++      AVR32_OPC_ASR3, 4, 0xe0001400, 0xe1f0ffe0,
47.21129 ++      &avr32_syntax_table[AVR32_SYNTAX_ASR3],
47.21130 ++      BFD_RELOC_UNUSED, 3, -1,
47.21131 ++      {
47.21132 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21133 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21134 ++	&avr32_ifield_table[AVR32_IFIELD_K5E],
47.21135 ++      },
47.21136 ++    },
47.21137 ++    {
47.21138 ++      AVR32_OPC_ASR2, 2, 0xa1400000, 0xe1e00000,
47.21139 ++      &avr32_syntax_table[AVR32_SYNTAX_ASR2],
47.21140 ++      BFD_RELOC_UNUSED, 2, -1,
47.21141 ++      {
47.21142 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21143 ++	&avr32_ifield_table[AVR32_IFIELD_BIT5C],
47.21144 ++      },
47.21145 ++    },
47.21146 ++    {
47.21147 ++      AVR32_OPC_BLD, 4, 0xedb00000, 0xfff0ffe0,
47.21148 ++      &avr32_syntax_table[AVR32_SYNTAX_BLD],
47.21149 ++      BFD_RELOC_UNUSED, 2, -1,
47.21150 ++      {
47.21151 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21152 ++	&avr32_ifield_table[AVR32_IFIELD_K5E],
47.21153 ++      },
47.21154 ++    },
47.21155 ++    {
47.21156 ++      AVR32_OPC_BREQ1, 2, 0xc0000000, 0xf00f0000,
47.21157 ++      &avr32_syntax_table[AVR32_SYNTAX_BREQ1],
47.21158 ++      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
47.21159 ++      {
47.21160 ++	&avr32_ifield_table[AVR32_IFIELD_K8C],
47.21161 ++      },
47.21162 ++    },
47.21163 ++    {
47.21164 ++      AVR32_OPC_BRNE1, 2, 0xc0010000, 0xf00f0000,
47.21165 ++      &avr32_syntax_table[AVR32_SYNTAX_BRNE1],
47.21166 ++      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
47.21167 ++      {
47.21168 ++	&avr32_ifield_table[AVR32_IFIELD_K8C],
47.21169 ++      },
47.21170 ++    },
47.21171 ++    {
47.21172 ++      AVR32_OPC_BRCC1, 2, 0xc0020000, 0xf00f0000,
47.21173 ++      &avr32_syntax_table[AVR32_SYNTAX_BRCC1],
47.21174 ++      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
47.21175 ++      {
47.21176 ++	&avr32_ifield_table[AVR32_IFIELD_K8C],
47.21177 ++      },
47.21178 ++    },
47.21179 ++    {
47.21180 ++      AVR32_OPC_BRCS1, 2, 0xc0030000, 0xf00f0000,
47.21181 ++      &avr32_syntax_table[AVR32_SYNTAX_BRCS1],
47.21182 ++      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
47.21183 ++      {
47.21184 ++	&avr32_ifield_table[AVR32_IFIELD_K8C],
47.21185 ++      },
47.21186 ++    },
47.21187 ++    {
47.21188 ++      AVR32_OPC_BRGE1, 2, 0xc0040000, 0xf00f0000,
47.21189 ++      &avr32_syntax_table[AVR32_SYNTAX_BRGE1],
47.21190 ++      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
47.21191 ++      {
47.21192 ++	&avr32_ifield_table[AVR32_IFIELD_K8C],
47.21193 ++      },
47.21194 ++    },
47.21195 ++    {
47.21196 ++      AVR32_OPC_BRLT1, 2, 0xc0050000, 0xf00f0000,
47.21197 ++      &avr32_syntax_table[AVR32_SYNTAX_BRLT1],
47.21198 ++      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
47.21199 ++      {
47.21200 ++	&avr32_ifield_table[AVR32_IFIELD_K8C],
47.21201 ++      },
47.21202 ++    },
47.21203 ++    {
47.21204 ++      AVR32_OPC_BRMI1, 2, 0xc0060000, 0xf00f0000,
47.21205 ++      &avr32_syntax_table[AVR32_SYNTAX_BRMI1],
47.21206 ++      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
47.21207 ++      {
47.21208 ++	&avr32_ifield_table[AVR32_IFIELD_K8C],
47.21209 ++      },
47.21210 ++    },
47.21211 ++    {
47.21212 ++      AVR32_OPC_BRPL1, 2, 0xc0070000, 0xf00f0000,
47.21213 ++      &avr32_syntax_table[AVR32_SYNTAX_BRPL1],
47.21214 ++      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
47.21215 ++      {
47.21216 ++	&avr32_ifield_table[AVR32_IFIELD_K8C],
47.21217 ++      },
47.21218 ++    },
47.21219 ++    {
47.21220 ++      AVR32_OPC_BREQ2, 4, 0xe0800000, 0xe1ef0000,
47.21221 ++      &avr32_syntax_table[AVR32_SYNTAX_BREQ2],
47.21222 ++      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
47.21223 ++      {
47.21224 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.21225 ++      },
47.21226 ++    },
47.21227 ++    {
47.21228 ++      AVR32_OPC_BRNE2, 4, 0xe0810000, 0xe1ef0000,
47.21229 ++      &avr32_syntax_table[AVR32_SYNTAX_BRNE2],
47.21230 ++      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
47.21231 ++      {
47.21232 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.21233 ++      },
47.21234 ++    },
47.21235 ++    {
47.21236 ++      AVR32_OPC_BRCC2, 4, 0xe0820000, 0xe1ef0000,
47.21237 ++      &avr32_syntax_table[AVR32_SYNTAX_BRHS2],
47.21238 ++      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
47.21239 ++      {
47.21240 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.21241 ++      },
47.21242 ++    },
47.21243 ++    {
47.21244 ++      AVR32_OPC_BRCS2, 4, 0xe0830000, 0xe1ef0000,
47.21245 ++      &avr32_syntax_table[AVR32_SYNTAX_BRLO2],
47.21246 ++      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
47.21247 ++      {
47.21248 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.21249 ++      },
47.21250 ++    },
47.21251 ++    {
47.21252 ++      AVR32_OPC_BRGE2, 4, 0xe0840000, 0xe1ef0000,
47.21253 ++      &avr32_syntax_table[AVR32_SYNTAX_BRGE2],
47.21254 ++      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
47.21255 ++      {
47.21256 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.21257 ++      },
47.21258 ++    },
47.21259 ++    {
47.21260 ++      AVR32_OPC_BRLT2, 4, 0xe0850000, 0xe1ef0000,
47.21261 ++      &avr32_syntax_table[AVR32_SYNTAX_BRLT2],
47.21262 ++      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
47.21263 ++      {
47.21264 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.21265 ++      },
47.21266 ++    },
47.21267 ++    {
47.21268 ++      AVR32_OPC_BRMI2, 4, 0xe0860000, 0xe1ef0000,
47.21269 ++      &avr32_syntax_table[AVR32_SYNTAX_BRMI2],
47.21270 ++      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
47.21271 ++      {
47.21272 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.21273 ++      },
47.21274 ++    },
47.21275 ++    {
47.21276 ++      AVR32_OPC_BRPL2, 4, 0xe0870000, 0xe1ef0000,
47.21277 ++      &avr32_syntax_table[AVR32_SYNTAX_BRPL2],
47.21278 ++      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
47.21279 ++      {
47.21280 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.21281 ++      },
47.21282 ++    },
47.21283 ++    {
47.21284 ++      AVR32_OPC_BRLS, 4, 0xe0880000, 0xe1ef0000,
47.21285 ++      &avr32_syntax_table[AVR32_SYNTAX_BRLS],
47.21286 ++      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
47.21287 ++      {
47.21288 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.21289 ++      },
47.21290 ++    },
47.21291 ++    {
47.21292 ++      AVR32_OPC_BRGT, 4, 0xe0890000, 0xe1ef0000,
47.21293 ++      &avr32_syntax_table[AVR32_SYNTAX_BRGT],
47.21294 ++      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
47.21295 ++      {
47.21296 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.21297 ++      },
47.21298 ++    },
47.21299 ++    {
47.21300 ++      AVR32_OPC_BRLE, 4, 0xe08a0000, 0xe1ef0000,
47.21301 ++      &avr32_syntax_table[AVR32_SYNTAX_BRLE],
47.21302 ++      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
47.21303 ++      {
47.21304 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.21305 ++      },
47.21306 ++    },
47.21307 ++    {
47.21308 ++      AVR32_OPC_BRHI, 4, 0xe08b0000, 0xe1ef0000,
47.21309 ++      &avr32_syntax_table[AVR32_SYNTAX_BRHI],
47.21310 ++      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
47.21311 ++      {
47.21312 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.21313 ++      },
47.21314 ++    },
47.21315 ++    {
47.21316 ++      AVR32_OPC_BRVS, 4, 0xe08c0000, 0xe1ef0000,
47.21317 ++      &avr32_syntax_table[AVR32_SYNTAX_BRVS],
47.21318 ++      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
47.21319 ++      {
47.21320 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.21321 ++      },
47.21322 ++    },
47.21323 ++    {
47.21324 ++      AVR32_OPC_BRVC, 4, 0xe08d0000, 0xe1ef0000,
47.21325 ++      &avr32_syntax_table[AVR32_SYNTAX_BRVC],
47.21326 ++      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
47.21327 ++      {
47.21328 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.21329 ++      },
47.21330 ++    },
47.21331 ++    {
47.21332 ++      AVR32_OPC_BRQS, 4, 0xe08e0000, 0xe1ef0000,
47.21333 ++      &avr32_syntax_table[AVR32_SYNTAX_BRQS],
47.21334 ++      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
47.21335 ++      {
47.21336 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.21337 ++      },
47.21338 ++    },
47.21339 ++    {
47.21340 ++      AVR32_OPC_BRAL, 4, 0xe08f0000, 0xe1ef0000,
47.21341 ++      &avr32_syntax_table[AVR32_SYNTAX_BRAL],
47.21342 ++      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
47.21343 ++      {
47.21344 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.21345 ++      },
47.21346 ++    },
47.21347 ++    {
47.21348 ++      AVR32_OPC_BREAKPOINT, 2, 0xd6730000, 0xffff0000,
47.21349 ++      &avr32_syntax_table[AVR32_SYNTAX_BREAKPOINT],
47.21350 ++      BFD_RELOC_UNUSED, 0, -1, { NULL },
47.21351 ++    },
47.21352 ++    {
47.21353 ++      AVR32_OPC_BREV, 2, 0x5c900000, 0xfff00000,
47.21354 ++      &avr32_syntax_table[AVR32_SYNTAX_BREV],
47.21355 ++      BFD_RELOC_UNUSED, 1, -1,
47.21356 ++      {
47.21357 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21358 ++      },
47.21359 ++    },
47.21360 ++    {
47.21361 ++      AVR32_OPC_BST, 4, 0xefb00000, 0xfff0ffe0,
47.21362 ++      &avr32_syntax_table[AVR32_SYNTAX_BST],
47.21363 ++      BFD_RELOC_UNUSED, 2, -1,
47.21364 ++      {
47.21365 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21366 ++	&avr32_ifield_table[AVR32_IFIELD_K5E],
47.21367 ++      },
47.21368 ++    },
47.21369 ++    {
47.21370 ++      AVR32_OPC_CACHE, 4, 0xf4100000, 0xfff00000,
47.21371 ++      &avr32_syntax_table[AVR32_SYNTAX_CACHE],
47.21372 ++      BFD_RELOC_UNUSED, 3, -1,
47.21373 ++      {
47.21374 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21375 ++	&avr32_ifield_table[AVR32_IFIELD_K11],
47.21376 ++	&avr32_ifield_table[AVR32_IFIELD_CACHEOP],
47.21377 ++      },
47.21378 ++    },
47.21379 ++    {
47.21380 ++      AVR32_OPC_CASTS_B, 2, 0x5c600000, 0xfff00000,
47.21381 ++      &avr32_syntax_table[AVR32_SYNTAX_CASTS_B],
47.21382 ++      BFD_RELOC_UNUSED, 1, -1,
47.21383 ++      {
47.21384 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21385 ++      },
47.21386 ++    },
47.21387 ++    {
47.21388 ++      AVR32_OPC_CASTS_H, 2, 0x5c800000, 0xfff00000,
47.21389 ++      &avr32_syntax_table[AVR32_SYNTAX_CASTS_H],
47.21390 ++      BFD_RELOC_UNUSED, 1, -1,
47.21391 ++      {
47.21392 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21393 ++      },
47.21394 ++    },
47.21395 ++    {
47.21396 ++      AVR32_OPC_CASTU_B, 2, 0x5c500000, 0xfff00000,
47.21397 ++      &avr32_syntax_table[AVR32_SYNTAX_CASTU_B],
47.21398 ++      BFD_RELOC_UNUSED, 1, -1,
47.21399 ++      {
47.21400 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21401 ++      },
47.21402 ++    },
47.21403 ++    {
47.21404 ++      AVR32_OPC_CASTU_H, 2, 0x5c700000, 0xfff00000,
47.21405 ++      &avr32_syntax_table[AVR32_SYNTAX_CASTU_H],
47.21406 ++      BFD_RELOC_UNUSED, 1, -1,
47.21407 ++      {
47.21408 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21409 ++      },
47.21410 ++    },
47.21411 ++    {
47.21412 ++      AVR32_OPC_CBR, 2, 0xa1c00000, 0xe1e00000,
47.21413 ++      &avr32_syntax_table[AVR32_SYNTAX_CBR],
47.21414 ++      BFD_RELOC_UNUSED, 2, -1,
47.21415 ++      {
47.21416 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21417 ++	&avr32_ifield_table[AVR32_IFIELD_BIT5C],
47.21418 ++      },
47.21419 ++    },
47.21420 ++    {
47.21421 ++      AVR32_OPC_CLZ, 4, 0xe0001200, 0xe1f0ffff,
47.21422 ++      &avr32_syntax_table[AVR32_SYNTAX_CLZ],
47.21423 ++      BFD_RELOC_UNUSED, 2, -1,
47.21424 ++      {
47.21425 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21426 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21427 ++      },
47.21428 ++    },
47.21429 ++    {
47.21430 ++      AVR32_OPC_COM, 2, 0x5cd00000, 0xfff00000,
47.21431 ++      &avr32_syntax_table[AVR32_SYNTAX_COM],
47.21432 ++      BFD_RELOC_UNUSED, 1, -1,
47.21433 ++      {
47.21434 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21435 ++      },
47.21436 ++    },
47.21437 ++    {
47.21438 ++      AVR32_OPC_COP, 4, 0xe1a00000, 0xf9f00000,
47.21439 ++      &avr32_syntax_table[AVR32_SYNTAX_COP],
47.21440 ++      BFD_RELOC_UNUSED, 5, -1,
47.21441 ++      {
47.21442 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.21443 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
47.21444 ++	&avr32_ifield_table[AVR32_IFIELD_CRX],
47.21445 ++	&avr32_ifield_table[AVR32_IFIELD_CRY],
47.21446 ++	&avr32_ifield_table[AVR32_IFIELD_CPOP],
47.21447 ++      },
47.21448 ++    },
47.21449 ++    {
47.21450 ++      AVR32_OPC_CP_B, 4, 0xe0001800, 0xe1f0ffff,
47.21451 ++      &avr32_syntax_table[AVR32_SYNTAX_CP_B],
47.21452 ++      BFD_RELOC_UNUSED, 2, -1,
47.21453 ++      {
47.21454 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21455 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21456 ++      },
47.21457 ++    },
47.21458 ++    {
47.21459 ++      AVR32_OPC_CP_H, 4, 0xe0001900, 0xe1f0ffff,
47.21460 ++      &avr32_syntax_table[AVR32_SYNTAX_CP_H],
47.21461 ++      BFD_RELOC_UNUSED, 2, -1,
47.21462 ++      {
47.21463 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21464 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21465 ++      },
47.21466 ++    },
47.21467 ++    {
47.21468 ++      AVR32_OPC_CP_W1, 2, 0x00300000, 0xe1f00000,
47.21469 ++      &avr32_syntax_table[AVR32_SYNTAX_CP_W1],
47.21470 ++      BFD_RELOC_UNUSED, 2, -1,
47.21471 ++      {
47.21472 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21473 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21474 ++      },
47.21475 ++    },
47.21476 ++    {
47.21477 ++      AVR32_OPC_CP_W2, 2, 0x58000000, 0xfc000000,
47.21478 ++      &avr32_syntax_table[AVR32_SYNTAX_CP_W2],
47.21479 ++      BFD_RELOC_AVR32_6S, 2, 1,
47.21480 ++      {
47.21481 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21482 ++	&avr32_ifield_table[AVR32_IFIELD_K6],
47.21483 ++      },
47.21484 ++    },
47.21485 ++    {
47.21486 ++      AVR32_OPC_CP_W3, 4, 0xe0400000, 0xe1e00000,
47.21487 ++      &avr32_syntax_table[AVR32_SYNTAX_CP_W3],
47.21488 ++      BFD_RELOC_AVR32_21S, 2, 1,
47.21489 ++      {
47.21490 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21491 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.21492 ++      },
47.21493 ++    },
47.21494 ++    {
47.21495 ++      AVR32_OPC_CPC1, 4, 0xe0001300, 0xe1f0ffff,
47.21496 ++      &avr32_syntax_table[AVR32_SYNTAX_CPC1],
47.21497 ++      BFD_RELOC_UNUSED, 2, -1,
47.21498 ++      {
47.21499 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21500 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21501 ++      },
47.21502 ++    },
47.21503 ++    {
47.21504 ++      AVR32_OPC_CPC2, 2, 0x5c200000, 0xfff00000,
47.21505 ++      &avr32_syntax_table[AVR32_SYNTAX_CPC2],
47.21506 ++      BFD_RELOC_UNUSED, 1, -1,
47.21507 ++      {
47.21508 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21509 ++      },
47.21510 ++    },
47.21511 ++    {
47.21512 ++      AVR32_OPC_CSRF, 2, 0xd4030000, 0xfe0f0000,
47.21513 ++      &avr32_syntax_table[AVR32_SYNTAX_CSRF],
47.21514 ++      BFD_RELOC_UNUSED, 1, -1,
47.21515 ++      {
47.21516 ++	&avr32_ifield_table[AVR32_IFIELD_K5C],
47.21517 ++      },
47.21518 ++    },
47.21519 ++    {
47.21520 ++      AVR32_OPC_CSRFCZ, 2, 0xd0030000, 0xfe0f0000,
47.21521 ++      &avr32_syntax_table[AVR32_SYNTAX_CSRFCZ],
47.21522 ++      BFD_RELOC_UNUSED, 1, -1,
47.21523 ++      {
47.21524 ++	&avr32_ifield_table[AVR32_IFIELD_K5C],
47.21525 ++      },
47.21526 ++    },
47.21527 ++    {
47.21528 ++      AVR32_OPC_DIVS, 4, 0xe0000c00, 0xe1f0ffc0,
47.21529 ++      &avr32_syntax_table[AVR32_SYNTAX_DIVS],
47.21530 ++      BFD_RELOC_UNUSED, 3, -1,
47.21531 ++      {
47.21532 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21533 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21534 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21535 ++      },
47.21536 ++    },
47.21537 ++    {
47.21538 ++      AVR32_OPC_DIVU, 4, 0xe0000d00, 0xe1f0ffc0,
47.21539 ++      &avr32_syntax_table[AVR32_SYNTAX_DIVU],
47.21540 ++      BFD_RELOC_UNUSED, 3, -1,
47.21541 ++      {
47.21542 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21543 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21544 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21545 ++      },
47.21546 ++    },
47.21547 ++    {
47.21548 ++      AVR32_OPC_EOR1, 2, 0x00500000, 0xe1f00000,
47.21549 ++      &avr32_syntax_table[AVR32_SYNTAX_EOR1],
47.21550 ++      BFD_RELOC_UNUSED, 2, -1,
47.21551 ++      {
47.21552 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21553 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21554 ++      },
47.21555 ++    },
47.21556 ++    {
47.21557 ++      AVR32_OPC_EOR2, 4, 0xe1e02000, 0xe1f0fe00,
47.21558 ++      &avr32_syntax_table[AVR32_SYNTAX_EOR2],
47.21559 ++      BFD_RELOC_UNUSED, 4, -1,
47.21560 ++      {
47.21561 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21562 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21563 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21564 ++	&avr32_ifield_table[AVR32_IFIELD_K5E2],
47.21565 ++      }
47.21566 ++    },
47.21567 ++    {
47.21568 ++      AVR32_OPC_EOR3, 4, 0xe1e02200, 0xe1f0fe00,
47.21569 ++      &avr32_syntax_table[AVR32_SYNTAX_EOR3],
47.21570 ++      BFD_RELOC_UNUSED, 4, -1,
47.21571 ++      {
47.21572 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21573 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21574 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21575 ++	&avr32_ifield_table[AVR32_IFIELD_K5E2],
47.21576 ++      }
47.21577 ++    },
47.21578 ++    {
47.21579 ++      AVR32_OPC_EORL, 4, 0xec100000, 0xfff00000,
47.21580 ++      &avr32_syntax_table[AVR32_SYNTAX_EORL],
47.21581 ++      BFD_RELOC_AVR32_16U, 2, 1,
47.21582 ++      {
47.21583 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21584 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.21585 ++      },
47.21586 ++    },
47.21587 ++    {
47.21588 ++      AVR32_OPC_EORH, 4, 0xee100000, 0xfff00000,
47.21589 ++      &avr32_syntax_table[AVR32_SYNTAX_EORH],
47.21590 ++      BFD_RELOC_AVR32_16U, 2, 1,
47.21591 ++      {
47.21592 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21593 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.21594 ++      },
47.21595 ++    },
47.21596 ++    {
47.21597 ++      AVR32_OPC_FRS, 2, 0xd7430000, 0xffff0000,
47.21598 ++      &avr32_syntax_table[AVR32_SYNTAX_FRS],
47.21599 ++      BFD_RELOC_UNUSED, 0, -1, { NULL },
47.21600 ++    },
47.21601 ++    {
47.21602 ++      AVR32_OPC_ICALL, 2, 0x5d100000, 0xfff00000,
47.21603 ++      &avr32_syntax_table[AVR32_SYNTAX_ICALL],
47.21604 ++      BFD_RELOC_UNUSED, 1, -1,
47.21605 ++      {
47.21606 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21607 ++      },
47.21608 ++    },
47.21609 ++    {
47.21610 ++      AVR32_OPC_INCJOSP, 2, 0xd6830000, 0xff8f0000,
47.21611 ++      &avr32_syntax_table[AVR32_SYNTAX_INCJOSP],
47.21612 ++      BFD_RELOC_UNUSED, 1, -1,
47.21613 ++      {
47.21614 ++	&avr32_ifield_table[AVR32_IFIELD_K3],
47.21615 ++      },
47.21616 ++    },
47.21617 ++    {
47.21618 ++      AVR32_OPC_LD_D1, 2, 0xa1010000, 0xe1f10000,
47.21619 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_D1],
47.21620 ++      BFD_RELOC_UNUSED, 2, -1,
47.21621 ++      {
47.21622 ++	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
47.21623 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21624 ++      },
47.21625 ++    },
47.21626 ++    {
47.21627 ++      AVR32_OPC_LD_D2, 2, 0xa1100000, 0xe1f10000,
47.21628 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_D2],
47.21629 ++      BFD_RELOC_UNUSED, 2, -1,
47.21630 ++      {
47.21631 ++	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
47.21632 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21633 ++      },
47.21634 ++    },
47.21635 ++    {
47.21636 ++      AVR32_OPC_LD_D3, 2, 0xa1000000, 0xe1f10000,
47.21637 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_D3],
47.21638 ++      BFD_RELOC_UNUSED, 2, -1,
47.21639 ++      {
47.21640 ++	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
47.21641 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21642 ++      },
47.21643 ++    },
47.21644 ++    {
47.21645 ++      AVR32_OPC_LD_D5, 4, 0xe0000200, 0xe1f0ffc1,
47.21646 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_D5],
47.21647 ++      BFD_RELOC_UNUSED, 4, -1,
47.21648 ++      {
47.21649 ++	&avr32_ifield_table[AVR32_IFIELD_RD_DW],
47.21650 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21651 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21652 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.21653 ++      },
47.21654 ++    },
47.21655 ++    {
47.21656 ++      AVR32_OPC_LD_D4, 4, 0xe0e00000, 0xe1f10000,
47.21657 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_D4],
47.21658 ++      BFD_RELOC_AVR32_16S, 3, 2,
47.21659 ++      {
47.21660 ++	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
47.21661 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21662 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.21663 ++      },
47.21664 ++    },
47.21665 ++    {
47.21666 ++      AVR32_OPC_LD_SB2, 4, 0xe0000600, 0xe1f0ffc0,
47.21667 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_SB2],
47.21668 ++      BFD_RELOC_UNUSED, 4, -1,
47.21669 ++      {
47.21670 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21671 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21672 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21673 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.21674 ++      },
47.21675 ++    },
47.21676 ++    {
47.21677 ++      AVR32_OPC_LD_SB1, 4, 0xe1200000, 0xe1f00000,
47.21678 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_SB1],
47.21679 ++      BFD_RELOC_AVR32_16S, 3, -1,
47.21680 ++      {
47.21681 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21682 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21683 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.21684 ++      },
47.21685 ++    },
47.21686 ++    {
47.21687 ++      AVR32_OPC_LD_UB1, 2, 0x01300000, 0xe1f00000,
47.21688 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_UB1],
47.21689 ++      BFD_RELOC_UNUSED, 2, -1,
47.21690 ++      {
47.21691 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21692 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21693 ++      },
47.21694 ++    },
47.21695 ++    {
47.21696 ++      AVR32_OPC_LD_UB2, 2, 0x01700000, 0xe1f00000,
47.21697 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_UB2],
47.21698 ++      BFD_RELOC_UNUSED, 2, -1,
47.21699 ++      {
47.21700 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21701 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21702 ++      },
47.21703 ++    },
47.21704 ++    {
47.21705 ++      AVR32_OPC_LD_UB5, 4, 0xe0000700, 0xe1f0ffc0,
47.21706 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_UB5],
47.21707 ++      BFD_RELOC_UNUSED, 4, -1,
47.21708 ++      {
47.21709 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21710 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21711 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21712 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.21713 ++      },
47.21714 ++    },
47.21715 ++    {
47.21716 ++      AVR32_OPC_LD_UB3, 2, 0x01800000, 0xe1800000,
47.21717 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_UB3],
47.21718 ++      BFD_RELOC_AVR32_3U, 3, 2,
47.21719 ++      {
47.21720 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21721 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21722 ++	&avr32_ifield_table[AVR32_IFIELD_K3],
47.21723 ++      },
47.21724 ++    },
47.21725 ++    {
47.21726 ++      AVR32_OPC_LD_UB4, 4, 0xe1300000, 0xe1f00000,
47.21727 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_UB4],
47.21728 ++      BFD_RELOC_AVR32_16S, 3, 2,
47.21729 ++      {
47.21730 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21731 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21732 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.21733 ++      },
47.21734 ++    },
47.21735 ++    {
47.21736 ++      AVR32_OPC_LD_SH1, 2, 0x01100000, 0xe1f00000,
47.21737 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_SH1],
47.21738 ++      BFD_RELOC_UNUSED, 2, -1,
47.21739 ++      {
47.21740 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21741 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21742 ++      },
47.21743 ++    },
47.21744 ++    {
47.21745 ++      AVR32_OPC_LD_SH2, 2, 0x01500000, 0xe1f00000,
47.21746 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_SH2],
47.21747 ++      BFD_RELOC_UNUSED, 2, -1,
47.21748 ++      {
47.21749 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21750 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21751 ++      },
47.21752 ++    },
47.21753 ++    {
47.21754 ++      AVR32_OPC_LD_SH5, 4, 0xe0000400, 0xe1f0ffc0,
47.21755 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_SH5],
47.21756 ++      BFD_RELOC_UNUSED, 4, -1,
47.21757 ++      {
47.21758 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21759 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21760 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21761 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.21762 ++      },
47.21763 ++    },
47.21764 ++    {
47.21765 ++      AVR32_OPC_LD_SH3, 2, 0x80000000, 0xe1800000,
47.21766 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_SH3],
47.21767 ++      BFD_RELOC_AVR32_4UH, 3, 2,
47.21768 ++      {
47.21769 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21770 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21771 ++	&avr32_ifield_table[AVR32_IFIELD_K3],
47.21772 ++      },
47.21773 ++    },
47.21774 ++    {
47.21775 ++      AVR32_OPC_LD_SH4, 4, 0xe1000000, 0xe1f00000,
47.21776 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_SH4],
47.21777 ++      BFD_RELOC_AVR32_16S, 3, 2,
47.21778 ++      {
47.21779 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21780 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21781 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.21782 ++      },
47.21783 ++    },
47.21784 ++    {
47.21785 ++      AVR32_OPC_LD_UH1, 2, 0x01200000, 0xe1f00000,
47.21786 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_UH1],
47.21787 ++      BFD_RELOC_UNUSED, 2, -1,
47.21788 ++      {
47.21789 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21790 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21791 ++      },
47.21792 ++    },
47.21793 ++    {
47.21794 ++      AVR32_OPC_LD_UH2, 2, 0x01600000, 0xe1f00000,
47.21795 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_UH2],
47.21796 ++      BFD_RELOC_UNUSED, 2, -1,
47.21797 ++      {
47.21798 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21799 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21800 ++      },
47.21801 ++    },
47.21802 ++    {
47.21803 ++      AVR32_OPC_LD_UH5, 4, 0xe0000500, 0xe1f0ffc0,
47.21804 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_UH5],
47.21805 ++      BFD_RELOC_UNUSED, 4, -1,
47.21806 ++      {
47.21807 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21808 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21809 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21810 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.21811 ++      },
47.21812 ++    },
47.21813 ++    {
47.21814 ++      AVR32_OPC_LD_UH3, 2, 0x80800000, 0xe1800000,
47.21815 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_UH3],
47.21816 ++      BFD_RELOC_AVR32_4UH, 3, 2,
47.21817 ++      {
47.21818 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21819 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21820 ++	&avr32_ifield_table[AVR32_IFIELD_K3],
47.21821 ++      },
47.21822 ++    },
47.21823 ++    {
47.21824 ++      AVR32_OPC_LD_UH4, 4, 0xe1100000, 0xe1f00000,
47.21825 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_UH4],
47.21826 ++      BFD_RELOC_AVR32_16S, 3, 2,
47.21827 ++      {
47.21828 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21829 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21830 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.21831 ++      },
47.21832 ++    },
47.21833 ++    {
47.21834 ++      AVR32_OPC_LD_W1, 2, 0x01000000, 0xe1f00000,
47.21835 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_W1],
47.21836 ++      BFD_RELOC_UNUSED, 2, -1,
47.21837 ++      {
47.21838 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21839 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21840 ++      },
47.21841 ++    },
47.21842 ++    {
47.21843 ++      AVR32_OPC_LD_W2, 2, 0x01400000, 0xe1f00000,
47.21844 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_W2],
47.21845 ++      BFD_RELOC_UNUSED, 2, -1,
47.21846 ++      {
47.21847 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21848 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21849 ++      },
47.21850 ++    },
47.21851 ++    {
47.21852 ++      AVR32_OPC_LD_W5, 4, 0xe0000300, 0xe1f0ffc0,
47.21853 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_W5],
47.21854 ++      BFD_RELOC_UNUSED, 4, -1,
47.21855 ++      {
47.21856 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21857 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21858 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21859 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.21860 ++      },
47.21861 ++    },
47.21862 ++    {
47.21863 ++      AVR32_OPC_LD_W6, 4, 0xe0000f80, 0xe1f0ffc0,
47.21864 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_W6],
47.21865 ++      BFD_RELOC_UNUSED, 4, -1,
47.21866 ++      {
47.21867 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21868 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21869 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21870 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.21871 ++      },
47.21872 ++    },
47.21873 ++    {
47.21874 ++      AVR32_OPC_LD_W3, 2, 0x60000000, 0xe0000000,
47.21875 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_W3],
47.21876 ++      BFD_RELOC_AVR32_7UW, 3, 2,
47.21877 ++      {
47.21878 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21879 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21880 ++	&avr32_ifield_table[AVR32_IFIELD_K5C],
47.21881 ++      },
47.21882 ++    },
47.21883 ++    {
47.21884 ++      AVR32_OPC_LD_W4, 4, 0xe0f00000, 0xe1f00000,
47.21885 ++      &avr32_syntax_table[AVR32_SYNTAX_LD_W4],
47.21886 ++      BFD_RELOC_AVR32_16S, 3, 2,
47.21887 ++      {
47.21888 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21889 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.21890 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.21891 ++      },
47.21892 ++    },
47.21893 ++    {
47.21894 ++      AVR32_OPC_LDC_D1, 4, 0xe9a01000, 0xfff01100,
47.21895 ++      &avr32_syntax_table[AVR32_SYNTAX_LDC_D1],
47.21896 ++      BFD_RELOC_AVR32_10UW, 4, 3,
47.21897 ++      {
47.21898 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.21899 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
47.21900 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21901 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.21902 ++      },
47.21903 ++    },
47.21904 ++    {
47.21905 ++      AVR32_OPC_LDC_D2, 4, 0xefa00050, 0xfff011ff,
47.21906 ++      &avr32_syntax_table[AVR32_SYNTAX_LDC_D2],
47.21907 ++      BFD_RELOC_UNUSED, 3, -1,
47.21908 ++      {
47.21909 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.21910 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
47.21911 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21912 ++      },
47.21913 ++    },
47.21914 ++    {
47.21915 ++      AVR32_OPC_LDC_D3, 4, 0xefa01040, 0xfff011c0,
47.21916 ++      &avr32_syntax_table[AVR32_SYNTAX_LDC_D3],
47.21917 ++      BFD_RELOC_UNUSED, 5, -1,
47.21918 ++      {
47.21919 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.21920 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
47.21921 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21922 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21923 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.21924 ++      },
47.21925 ++    },
47.21926 ++    {
47.21927 ++      AVR32_OPC_LDC_W1, 4, 0xe9a00000, 0xfff01000,
47.21928 ++      &avr32_syntax_table[AVR32_SYNTAX_LDC_W1],
47.21929 ++      BFD_RELOC_AVR32_10UW, 4, 3,
47.21930 ++      {
47.21931 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.21932 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
47.21933 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21934 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.21935 ++      },
47.21936 ++    },
47.21937 ++    {
47.21938 ++      AVR32_OPC_LDC_W2, 4, 0xefa00040, 0xfff010ff,
47.21939 ++      &avr32_syntax_table[AVR32_SYNTAX_LDC_W2],
47.21940 ++      BFD_RELOC_UNUSED, 3, -1,
47.21941 ++      {
47.21942 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.21943 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
47.21944 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21945 ++      },
47.21946 ++    },
47.21947 ++    {
47.21948 ++      AVR32_OPC_LDC_W3, 4, 0xefa01000, 0xfff010c0,
47.21949 ++      &avr32_syntax_table[AVR32_SYNTAX_LDC_W3],
47.21950 ++      BFD_RELOC_UNUSED, 5, -1,
47.21951 ++      {
47.21952 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.21953 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
47.21954 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21955 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.21956 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.21957 ++      },
47.21958 ++    },
47.21959 ++    {
47.21960 ++      AVR32_OPC_LDC0_D, 4, 0xf3a00000, 0xfff00100,
47.21961 ++      &avr32_syntax_table[AVR32_SYNTAX_LDC0_D],
47.21962 ++      BFD_RELOC_AVR32_14UW, 3, 2,
47.21963 ++      {
47.21964 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
47.21965 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21966 ++	&avr32_ifield_table[AVR32_IFIELD_K12CP],
47.21967 ++      },
47.21968 ++    },
47.21969 ++    {
47.21970 ++      AVR32_OPC_LDC0_W, 4, 0xf1a00000, 0xfff00000,
47.21971 ++      &avr32_syntax_table[AVR32_SYNTAX_LDC0_W],
47.21972 ++      BFD_RELOC_AVR32_14UW, 3, 2,
47.21973 ++      {
47.21974 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
47.21975 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21976 ++	&avr32_ifield_table[AVR32_IFIELD_K12CP],
47.21977 ++      },
47.21978 ++    },
47.21979 ++    {
47.21980 ++      AVR32_OPC_LDCM_D, 4, 0xeda00400, 0xfff01f00,
47.21981 ++      &avr32_syntax_table[AVR32_SYNTAX_LDCM_D],
47.21982 ++      BFD_RELOC_UNUSED, 3, -1,
47.21983 ++      {
47.21984 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.21985 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21986 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.21987 ++      },
47.21988 ++    },
47.21989 ++    {
47.21990 ++      AVR32_OPC_LDCM_D_PU, 4, 0xeda01400, 0xfff01f00,
47.21991 ++      &avr32_syntax_table[AVR32_SYNTAX_LDCM_D_PU],
47.21992 ++      BFD_RELOC_UNUSED, 3, -1,
47.21993 ++      {
47.21994 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.21995 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.21996 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.21997 ++      },
47.21998 ++    },
47.21999 ++    {
47.22000 ++      AVR32_OPC_LDCM_W, 4, 0xeda00000, 0xfff01e00,
47.22001 ++      &avr32_syntax_table[AVR32_SYNTAX_LDCM_W],
47.22002 ++      BFD_RELOC_UNUSED, 4, -1,
47.22003 ++      {
47.22004 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.22005 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22006 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22007 ++	&avr32_ifield_table[AVR32_IFIELD_CM_HL],
47.22008 ++      },
47.22009 ++    },
47.22010 ++    {
47.22011 ++      AVR32_OPC_LDCM_W_PU, 4, 0xeda01000, 0xfff01e00,
47.22012 ++      &avr32_syntax_table[AVR32_SYNTAX_LDCM_W_PU],
47.22013 ++      BFD_RELOC_UNUSED, 4, -1,
47.22014 ++      {
47.22015 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.22016 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22017 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22018 ++	&avr32_ifield_table[AVR32_IFIELD_CM_HL],
47.22019 ++      },
47.22020 ++    },
47.22021 ++    {
47.22022 ++      AVR32_OPC_LDDPC, 2, 0x48000000, 0xf8000000,
47.22023 ++      &avr32_syntax_table[AVR32_SYNTAX_LDDPC],
47.22024 ++      BFD_RELOC_AVR32_9UW_PCREL, 2, 1,
47.22025 ++      {
47.22026 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22027 ++	&avr32_ifield_table[AVR32_IFIELD_K7C],
47.22028 ++      },
47.22029 ++    },
47.22030 ++    {
47.22031 ++      AVR32_OPC_LDDPC_EXT, 4, 0xfef00000, 0xfff00000,
47.22032 ++      &avr32_syntax_table[AVR32_SYNTAX_LDDPC_EXT],
47.22033 ++      BFD_RELOC_AVR32_16B_PCREL, 2, 1,
47.22034 ++      {
47.22035 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22036 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.22037 ++      },
47.22038 ++    },
47.22039 ++    {
47.22040 ++      AVR32_OPC_LDDSP, 2, 0x40000000, 0xf8000000,
47.22041 ++      &avr32_syntax_table[AVR32_SYNTAX_LDDSP],
47.22042 ++      BFD_RELOC_UNUSED, 2, -1,
47.22043 ++      {
47.22044 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22045 ++	&avr32_ifield_table[AVR32_IFIELD_K7C],
47.22046 ++      },
47.22047 ++    },
47.22048 ++    {
47.22049 ++      AVR32_OPC_LDINS_B, 4, 0xe1d04000, 0xe1f0c000,
47.22050 ++      &avr32_syntax_table[AVR32_SYNTAX_LDINS_B],
47.22051 ++      BFD_RELOC_UNUSED, 4, -1,
47.22052 ++      {
47.22053 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22054 ++	&avr32_ifield_table[AVR32_IFIELD_PART2_K12],
47.22055 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22056 ++	&avr32_ifield_table[AVR32_IFIELD_K12],
47.22057 ++      },
47.22058 ++    },
47.22059 ++    {
47.22060 ++      AVR32_OPC_LDINS_H, 4, 0xe1d00000, 0xe1f0e000,
47.22061 ++      &avr32_syntax_table[AVR32_SYNTAX_LDINS_H],
47.22062 ++      BFD_RELOC_UNUSED, 4, -1,
47.22063 ++      {
47.22064 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22065 ++	&avr32_ifield_table[AVR32_IFIELD_PART1_K12],
47.22066 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22067 ++	&avr32_ifield_table[AVR32_IFIELD_K12],
47.22068 ++      },
47.22069 ++    },
47.22070 ++    {
47.22071 ++      AVR32_OPC_LDM, 4, 0xe1c00000, 0xfdf00000,
47.22072 ++      &avr32_syntax_table[AVR32_SYNTAX_LDM],
47.22073 ++      BFD_RELOC_UNUSED, 3, -1,
47.22074 ++      {
47.22075 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22076 ++	&avr32_ifield_table[AVR32_IFIELD_W],
47.22077 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.22078 ++      },
47.22079 ++    },
47.22080 ++    {
47.22081 ++      AVR32_OPC_LDMTS, 4, 0xe5c00000, 0xfff00000,
47.22082 ++      &avr32_syntax_table[AVR32_SYNTAX_LDMTS],
47.22083 ++      BFD_RELOC_UNUSED, 2, -1,
47.22084 ++      {
47.22085 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22086 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.22087 ++      },
47.22088 ++    },
47.22089 ++    {
47.22090 ++      AVR32_OPC_LDMTS_PU, 4, 0xe7c00000, 0xfff00000,
47.22091 ++      &avr32_syntax_table[AVR32_SYNTAX_LDMTS_PU],
47.22092 ++      BFD_RELOC_UNUSED, 2, -1,
47.22093 ++      {
47.22094 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22095 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.22096 ++      },
47.22097 ++    },
47.22098 ++    {
47.22099 ++      AVR32_OPC_LDSWP_SH, 4, 0xe1d02000, 0xe1f0f000,
47.22100 ++      &avr32_syntax_table[AVR32_SYNTAX_LDSWP_SH],
47.22101 ++      BFD_RELOC_UNUSED, 3, -1,
47.22102 ++      {
47.22103 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22104 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22105 ++	&avr32_ifield_table[AVR32_IFIELD_K12],
47.22106 ++      },
47.22107 ++    },
47.22108 ++    {
47.22109 ++      AVR32_OPC_LDSWP_UH, 4, 0xe1d03000, 0xe1f0f000,
47.22110 ++      &avr32_syntax_table[AVR32_SYNTAX_LDSWP_UH],
47.22111 ++      BFD_RELOC_UNUSED, 3, -1,
47.22112 ++      {
47.22113 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22114 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22115 ++	&avr32_ifield_table[AVR32_IFIELD_K12],
47.22116 ++      },
47.22117 ++    },
47.22118 ++    {
47.22119 ++      AVR32_OPC_LDSWP_W, 4, 0xe1d08000, 0xe1f0f000,
47.22120 ++      &avr32_syntax_table[AVR32_SYNTAX_LDSWP_W],
47.22121 ++      BFD_RELOC_UNUSED, 3, -1,
47.22122 ++      {
47.22123 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22124 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22125 ++	&avr32_ifield_table[AVR32_IFIELD_K12],
47.22126 ++      },
47.22127 ++    },
47.22128 ++    {
47.22129 ++      AVR32_OPC_LSL1, 4, 0xe0000940, 0xe1f0fff0,
47.22130 ++      &avr32_syntax_table[AVR32_SYNTAX_LSL1],
47.22131 ++      BFD_RELOC_UNUSED, 3, -1,
47.22132 ++      {
47.22133 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22134 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22135 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22136 ++      },
47.22137 ++    },
47.22138 ++    {
47.22139 ++      AVR32_OPC_LSL3, 4, 0xe0001500, 0xe1f0ffe0,
47.22140 ++      &avr32_syntax_table[AVR32_SYNTAX_LSL3],
47.22141 ++      BFD_RELOC_UNUSED, 3, -1,
47.22142 ++      {
47.22143 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22144 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22145 ++	&avr32_ifield_table[AVR32_IFIELD_K5E],
47.22146 ++      },
47.22147 ++    },
47.22148 ++    {
47.22149 ++      AVR32_OPC_LSL2, 2, 0xa1600000, 0xe1e00000,
47.22150 ++      &avr32_syntax_table[AVR32_SYNTAX_LSL2],
47.22151 ++      BFD_RELOC_UNUSED, 2, -1,
47.22152 ++      {
47.22153 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22154 ++	&avr32_ifield_table[AVR32_IFIELD_BIT5C],
47.22155 ++      },
47.22156 ++    },
47.22157 ++    {
47.22158 ++      AVR32_OPC_LSR1, 4, 0xe0000a40, 0xe1f0fff0,
47.22159 ++      &avr32_syntax_table[AVR32_SYNTAX_LSR1],
47.22160 ++      BFD_RELOC_UNUSED, 3, -1,
47.22161 ++      {
47.22162 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22163 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22164 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22165 ++      },
47.22166 ++    },
47.22167 ++    {
47.22168 ++      AVR32_OPC_LSR3, 4, 0xe0001600, 0xe1f0ffe0,
47.22169 ++      &avr32_syntax_table[AVR32_SYNTAX_LSR3],
47.22170 ++      BFD_RELOC_UNUSED, 3, -1,
47.22171 ++      {
47.22172 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22173 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22174 ++	&avr32_ifield_table[AVR32_IFIELD_K5E],
47.22175 ++      },
47.22176 ++    },
47.22177 ++    {
47.22178 ++      AVR32_OPC_LSR2, 2, 0xa1800000, 0xe1e00000,
47.22179 ++      &avr32_syntax_table[AVR32_SYNTAX_LSR2],
47.22180 ++      BFD_RELOC_UNUSED, 2, -1,
47.22181 ++      {
47.22182 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22183 ++	&avr32_ifield_table[AVR32_IFIELD_BIT5C],
47.22184 ++      },
47.22185 ++    },
47.22186 ++    {
47.22187 ++      AVR32_OPC_MAC, 4, 0xe0000340, 0xe1f0fff0,
47.22188 ++      &avr32_syntax_table[AVR32_SYNTAX_MAC],
47.22189 ++      BFD_RELOC_UNUSED, 3, -1,
47.22190 ++      {
47.22191 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22192 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22193 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22194 ++      },
47.22195 ++    },
47.22196 ++    {
47.22197 ++      AVR32_OPC_MACHH_D, 4, 0xe0000580, 0xe1f0ffc1,
47.22198 ++      &avr32_syntax_table[AVR32_SYNTAX_MACHH_D],
47.22199 ++      BFD_RELOC_UNUSED, 5, -1,
47.22200 ++      {
47.22201 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22202 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22203 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.22204 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22205 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.22206 ++      },
47.22207 ++    },
47.22208 ++    {
47.22209 ++      AVR32_OPC_MACHH_W, 4, 0xe0000480, 0xe1f0ffc0,
47.22210 ++      &avr32_syntax_table[AVR32_SYNTAX_MACHH_W],
47.22211 ++      BFD_RELOC_UNUSED, 5, -1,
47.22212 ++      {
47.22213 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22214 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22215 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.22216 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22217 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.22218 ++      },
47.22219 ++    },
47.22220 ++    {
47.22221 ++      AVR32_OPC_MACS_D, 4, 0xe0000540, 0xe1f0fff1,
47.22222 ++      &avr32_syntax_table[AVR32_SYNTAX_MACS_D],
47.22223 ++      BFD_RELOC_UNUSED, 3, -1,
47.22224 ++      {
47.22225 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22226 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22227 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22228 ++      },
47.22229 ++    },
47.22230 ++    {
47.22231 ++      AVR32_OPC_MACSATHH_W, 4, 0xe0000680, 0xe1f0ffc0,
47.22232 ++      &avr32_syntax_table[AVR32_SYNTAX_MACSATHH_W],
47.22233 ++      BFD_RELOC_UNUSED, 5, -1,
47.22234 ++      {
47.22235 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22236 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22237 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.22238 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22239 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.22240 ++      },
47.22241 ++    },
47.22242 ++    {
47.22243 ++      AVR32_OPC_MACUD, 4, 0xe0000740, 0xe1f0fff1,
47.22244 ++      &avr32_syntax_table[AVR32_SYNTAX_MACUD],
47.22245 ++      BFD_RELOC_UNUSED, 3, -1,
47.22246 ++      {
47.22247 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22248 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22249 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22250 ++      },
47.22251 ++    },
47.22252 ++    {
47.22253 ++      AVR32_OPC_MACWH_D, 4, 0xe0000c80, 0xe1f0ffe1,
47.22254 ++      &avr32_syntax_table[AVR32_SYNTAX_MACWH_D],
47.22255 ++      BFD_RELOC_UNUSED, 4, -1,
47.22256 ++      {
47.22257 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22258 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22259 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22260 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.22261 ++      },
47.22262 ++    },
47.22263 ++    {
47.22264 ++      AVR32_OPC_MAX, 4, 0xe0000c40, 0xe1f0fff0,
47.22265 ++      &avr32_syntax_table[AVR32_SYNTAX_MAX],
47.22266 ++      BFD_RELOC_UNUSED, 3, -1,
47.22267 ++      {
47.22268 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22269 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22270 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22271 ++      },
47.22272 ++    },
47.22273 ++    {
47.22274 ++      AVR32_OPC_MCALL, 4, 0xf0100000, 0xfff00000,
47.22275 ++      &avr32_syntax_table[AVR32_SYNTAX_MCALL],
47.22276 ++      BFD_RELOC_AVR32_18W_PCREL, 2, 1,
47.22277 ++      {
47.22278 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22279 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.22280 ++      },
47.22281 ++    },
47.22282 ++    {
47.22283 ++      AVR32_OPC_MFDR, 4, 0xe5b00000, 0xfff0ff00,
47.22284 ++      &avr32_syntax_table[AVR32_SYNTAX_MFDR],
47.22285 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22286 ++      {
47.22287 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22288 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22289 ++      },
47.22290 ++    },
47.22291 ++    {
47.22292 ++      AVR32_OPC_MFSR, 4, 0xe1b00000, 0xfff0ff00,
47.22293 ++      &avr32_syntax_table[AVR32_SYNTAX_MFSR],
47.22294 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22295 ++      {
47.22296 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22297 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22298 ++      },
47.22299 ++    },
47.22300 ++    {
47.22301 ++      AVR32_OPC_MIN, 4, 0xe0000d40, 0xe1f0fff0,
47.22302 ++      &avr32_syntax_table[AVR32_SYNTAX_MIN],
47.22303 ++      BFD_RELOC_UNUSED, 3, -1,
47.22304 ++      {
47.22305 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22306 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22307 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22308 ++      },
47.22309 ++    },
47.22310 ++    {
47.22311 ++      AVR32_OPC_MOV3, 2, 0x00900000, 0xe1f00000,
47.22312 ++      &avr32_syntax_table[AVR32_SYNTAX_MOV3],
47.22313 ++      BFD_RELOC_NONE, 2, -1,
47.22314 ++      {
47.22315 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22316 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22317 ++      },
47.22318 ++    },
47.22319 ++    {
47.22320 ++      AVR32_OPC_MOV1, 2, 0x30000000, 0xf0000000,
47.22321 ++      &avr32_syntax_table[AVR32_SYNTAX_MOV1],
47.22322 ++      BFD_RELOC_AVR32_8S, 2, 1,
47.22323 ++      {
47.22324 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22325 ++	&avr32_ifield_table[AVR32_IFIELD_K8C],
47.22326 ++      },
47.22327 ++    },
47.22328 ++    {
47.22329 ++      AVR32_OPC_MOV2, 4, 0xe0600000, 0xe1e00000,
47.22330 ++      &avr32_syntax_table[AVR32_SYNTAX_MOV2],
47.22331 ++      BFD_RELOC_AVR32_21S, 2, 1,
47.22332 ++      {
47.22333 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22334 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.22335 ++      },
47.22336 ++    },
47.22337 ++    {
47.22338 ++      AVR32_OPC_MOVEQ1, 4, 0xe0001700, 0xe1f0ffff,
47.22339 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVEQ1],
47.22340 ++      BFD_RELOC_UNUSED, 2, -1,
47.22341 ++      {
47.22342 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22343 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22344 ++      },
47.22345 ++    },
47.22346 ++    {
47.22347 ++      AVR32_OPC_MOVNE1, 4, 0xe0001710, 0xe1f0ffff,
47.22348 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVNE1],
47.22349 ++      BFD_RELOC_UNUSED, 2, -1,
47.22350 ++      {
47.22351 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22352 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22353 ++      },
47.22354 ++    },
47.22355 ++    {
47.22356 ++      AVR32_OPC_MOVCC1, 4, 0xe0001720, 0xe1f0ffff,
47.22357 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVHS1],
47.22358 ++      BFD_RELOC_UNUSED, 2, -1,
47.22359 ++      {
47.22360 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22361 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22362 ++      },
47.22363 ++    },
47.22364 ++    {
47.22365 ++      AVR32_OPC_MOVCS1, 4, 0xe0001730, 0xe1f0ffff,
47.22366 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVLO1],
47.22367 ++      BFD_RELOC_UNUSED, 2, -1,
47.22368 ++      {
47.22369 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22370 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22371 ++      },
47.22372 ++    },
47.22373 ++    {
47.22374 ++      AVR32_OPC_MOVGE1, 4, 0xe0001740, 0xe1f0ffff,
47.22375 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVGE1],
47.22376 ++      BFD_RELOC_UNUSED, 2, -1,
47.22377 ++      {
47.22378 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22379 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22380 ++      },
47.22381 ++    },
47.22382 ++    {
47.22383 ++      AVR32_OPC_MOVLT1, 4, 0xe0001750, 0xe1f0ffff,
47.22384 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVLT1],
47.22385 ++      BFD_RELOC_UNUSED, 2, -1,
47.22386 ++      {
47.22387 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22388 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22389 ++      },
47.22390 ++    },
47.22391 ++    {
47.22392 ++      AVR32_OPC_MOVMI1, 4, 0xe0001760, 0xe1f0ffff,
47.22393 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVMI1],
47.22394 ++      BFD_RELOC_UNUSED, 2, -1,
47.22395 ++      {
47.22396 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22397 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22398 ++      },
47.22399 ++    },
47.22400 ++    {
47.22401 ++      AVR32_OPC_MOVPL1, 4, 0xe0001770, 0xe1f0ffff,
47.22402 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVPL1],
47.22403 ++      BFD_RELOC_UNUSED, 2, -1,
47.22404 ++      {
47.22405 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22406 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22407 ++      },
47.22408 ++    },
47.22409 ++    {
47.22410 ++      AVR32_OPC_MOVLS1, 4, 0xe0001780, 0xe1f0ffff,
47.22411 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVLS1],
47.22412 ++      BFD_RELOC_UNUSED, 2, -1,
47.22413 ++      {
47.22414 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22415 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22416 ++      },
47.22417 ++    },
47.22418 ++    {
47.22419 ++      AVR32_OPC_MOVGT1, 4, 0xe0001790, 0xe1f0ffff,
47.22420 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVGT1],
47.22421 ++      BFD_RELOC_UNUSED, 2, -1,
47.22422 ++      {
47.22423 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22424 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22425 ++      },
47.22426 ++    },
47.22427 ++    {
47.22428 ++      AVR32_OPC_MOVLE1, 4, 0xe00017a0, 0xe1f0ffff,
47.22429 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVLE1],
47.22430 ++      BFD_RELOC_UNUSED, 2, -1,
47.22431 ++      {
47.22432 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22433 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22434 ++      },
47.22435 ++    },
47.22436 ++    {
47.22437 ++      AVR32_OPC_MOVHI1, 4, 0xe00017b0, 0xe1f0ffff,
47.22438 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVHI1],
47.22439 ++      BFD_RELOC_UNUSED, 2, -1,
47.22440 ++      {
47.22441 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22442 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22443 ++      },
47.22444 ++    },
47.22445 ++    {
47.22446 ++      AVR32_OPC_MOVVS1, 4, 0xe00017c0, 0xe1f0ffff,
47.22447 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVVS1],
47.22448 ++      BFD_RELOC_UNUSED, 2, -1,
47.22449 ++      {
47.22450 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22451 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22452 ++      },
47.22453 ++    },
47.22454 ++    {
47.22455 ++      AVR32_OPC_MOVVC1, 4, 0xe00017d0, 0xe1f0ffff,
47.22456 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVVC1],
47.22457 ++      BFD_RELOC_UNUSED, 2, -1,
47.22458 ++      {
47.22459 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22460 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22461 ++      },
47.22462 ++    },
47.22463 ++    {
47.22464 ++      AVR32_OPC_MOVQS1, 4, 0xe00017e0, 0xe1f0ffff,
47.22465 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVQS1],
47.22466 ++      BFD_RELOC_UNUSED, 2, -1,
47.22467 ++      {
47.22468 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22469 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22470 ++      },
47.22471 ++    },
47.22472 ++    {
47.22473 ++      AVR32_OPC_MOVAL1, 4, 0xe00017f0, 0xe1f0ffff,
47.22474 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVAL1],
47.22475 ++      BFD_RELOC_UNUSED, 2, -1,
47.22476 ++      {
47.22477 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22478 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22479 ++      },
47.22480 ++    },
47.22481 ++    {
47.22482 ++      AVR32_OPC_MOVEQ2, 4, 0xf9b00000, 0xfff0ff00,
47.22483 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVEQ2],
47.22484 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22485 ++      {
47.22486 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22487 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22488 ++      },
47.22489 ++    },
47.22490 ++    {
47.22491 ++      AVR32_OPC_MOVNE2, 4, 0xf9b00100, 0xfff0ff00,
47.22492 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVNE2],
47.22493 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22494 ++      {
47.22495 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22496 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22497 ++      },
47.22498 ++    },
47.22499 ++    {
47.22500 ++      AVR32_OPC_MOVCC2, 4, 0xf9b00200, 0xfff0ff00,
47.22501 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVHS2],
47.22502 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22503 ++      {
47.22504 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22505 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22506 ++      },
47.22507 ++    },
47.22508 ++    {
47.22509 ++      AVR32_OPC_MOVCS2, 4, 0xf9b00300, 0xfff0ff00,
47.22510 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVLO2],
47.22511 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22512 ++      {
47.22513 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22514 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22515 ++      },
47.22516 ++    },
47.22517 ++    {
47.22518 ++      AVR32_OPC_MOVGE2, 4, 0xf9b00400, 0xfff0ff00,
47.22519 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVGE2],
47.22520 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22521 ++      {
47.22522 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22523 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22524 ++      },
47.22525 ++    },
47.22526 ++    {
47.22527 ++      AVR32_OPC_MOVLT2, 4, 0xf9b00500, 0xfff0ff00,
47.22528 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVLT2],
47.22529 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22530 ++      {
47.22531 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22532 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22533 ++      },
47.22534 ++    },
47.22535 ++    {
47.22536 ++      AVR32_OPC_MOVMI2, 4, 0xf9b00600, 0xfff0ff00,
47.22537 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVMI2],
47.22538 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22539 ++      {
47.22540 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22541 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22542 ++      },
47.22543 ++    },
47.22544 ++    {
47.22545 ++      AVR32_OPC_MOVPL2, 4, 0xf9b00700, 0xfff0ff00,
47.22546 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVPL2],
47.22547 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22548 ++      {
47.22549 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22550 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22551 ++      },
47.22552 ++    },
47.22553 ++    {
47.22554 ++      AVR32_OPC_MOVLS2, 4, 0xf9b00800, 0xfff0ff00,
47.22555 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVLS2],
47.22556 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22557 ++      {
47.22558 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22559 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22560 ++      },
47.22561 ++    },
47.22562 ++    {
47.22563 ++      AVR32_OPC_MOVGT2, 4, 0xf9b00900, 0xfff0ff00,
47.22564 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVGT2],
47.22565 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22566 ++      {
47.22567 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22568 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22569 ++      },
47.22570 ++    },
47.22571 ++    {
47.22572 ++      AVR32_OPC_MOVLE2, 4, 0xf9b00a00, 0xfff0ff00,
47.22573 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVLE2],
47.22574 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22575 ++      {
47.22576 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22577 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22578 ++      },
47.22579 ++    },
47.22580 ++    {
47.22581 ++      AVR32_OPC_MOVHI2, 4, 0xf9b00b00, 0xfff0ff00,
47.22582 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVHI2],
47.22583 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22584 ++      {
47.22585 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22586 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22587 ++      },
47.22588 ++    },
47.22589 ++    {
47.22590 ++      AVR32_OPC_MOVVS2, 4, 0xf9b00c00, 0xfff0ff00,
47.22591 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVVS2],
47.22592 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22593 ++      {
47.22594 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22595 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22596 ++      },
47.22597 ++    },
47.22598 ++    {
47.22599 ++      AVR32_OPC_MOVVC2, 4, 0xf9b00d00, 0xfff0ff00,
47.22600 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVVC2],
47.22601 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22602 ++      {
47.22603 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22604 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22605 ++      },
47.22606 ++    },
47.22607 ++    {
47.22608 ++      AVR32_OPC_MOVQS2, 4, 0xf9b00e00, 0xfff0ff00,
47.22609 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVQS2],
47.22610 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22611 ++      {
47.22612 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22613 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22614 ++      },
47.22615 ++    },
47.22616 ++    {
47.22617 ++      AVR32_OPC_MOVAL2, 4, 0xf9b00f00, 0xfff0ff00,
47.22618 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVAL2],
47.22619 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.22620 ++      {
47.22621 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22622 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22623 ++      },
47.22624 ++    },
47.22625 ++    {
47.22626 ++      AVR32_OPC_MTDR, 4, 0xe7b00000, 0xfff0ff00,
47.22627 ++      &avr32_syntax_table[AVR32_SYNTAX_MTDR],
47.22628 ++      BFD_RELOC_AVR32_8S_EXT, 2, 0,
47.22629 ++      {
47.22630 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22631 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22632 ++      },
47.22633 ++    },
47.22634 ++    {
47.22635 ++      AVR32_OPC_MTSR, 4, 0xe3b00000, 0xfff0ff00,
47.22636 ++      &avr32_syntax_table[AVR32_SYNTAX_MTSR],
47.22637 ++      BFD_RELOC_AVR32_8S_EXT, 2, 0,
47.22638 ++      {
47.22639 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22640 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22641 ++      },
47.22642 ++    },
47.22643 ++    {
47.22644 ++      AVR32_OPC_MUL1, 2, 0xa1300000, 0xe1f00000,
47.22645 ++      &avr32_syntax_table[AVR32_SYNTAX_MUL1],
47.22646 ++      BFD_RELOC_UNUSED, 2, -1,
47.22647 ++      {
47.22648 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22649 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22650 ++      },
47.22651 ++    },
47.22652 ++    {
47.22653 ++      AVR32_OPC_MUL2, 4, 0xe0000240, 0xe1f0fff0,
47.22654 ++      &avr32_syntax_table[AVR32_SYNTAX_MUL2],
47.22655 ++      BFD_RELOC_UNUSED, 3, -1,
47.22656 ++      {
47.22657 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22658 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22659 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22660 ++      },
47.22661 ++    },
47.22662 ++    {
47.22663 ++      AVR32_OPC_MUL3, 4, 0xe0001000, 0xe1f0ff00,
47.22664 ++      &avr32_syntax_table[AVR32_SYNTAX_MUL3],
47.22665 ++      BFD_RELOC_AVR32_8S_EXT, 3, 2,
47.22666 ++      {
47.22667 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22668 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22669 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.22670 ++      },
47.22671 ++    },
47.22672 ++    {
47.22673 ++      AVR32_OPC_MULHH_W, 4, 0xe0000780, 0xe1f0ffc0,
47.22674 ++      &avr32_syntax_table[AVR32_SYNTAX_MULHH_W],
47.22675 ++      BFD_RELOC_UNUSED, 5, -1,
47.22676 ++      {
47.22677 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22678 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22679 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.22680 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22681 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.22682 ++      },
47.22683 ++    },
47.22684 ++    {
47.22685 ++      AVR32_OPC_MULNHH_W, 4, 0xe0000180, 0xe1f0ffc0,
47.22686 ++      &avr32_syntax_table[AVR32_SYNTAX_MULNHH_W],
47.22687 ++      BFD_RELOC_UNUSED, 5, -1,
47.22688 ++      {
47.22689 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22690 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22691 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.22692 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22693 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.22694 ++      },
47.22695 ++    },
47.22696 ++    {
47.22697 ++      AVR32_OPC_MULNWH_D, 4, 0xe0000280, 0xe1f0ffe1,
47.22698 ++      &avr32_syntax_table[AVR32_SYNTAX_MULNWH_D],
47.22699 ++      BFD_RELOC_UNUSED, 4, -1,
47.22700 ++      {
47.22701 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22702 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22703 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22704 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.22705 ++      },
47.22706 ++    },
47.22707 ++    {
47.22708 ++      AVR32_OPC_MULSD, 4, 0xe0000440, 0xe1f0fff0,
47.22709 ++      &avr32_syntax_table[AVR32_SYNTAX_MULSD],
47.22710 ++      BFD_RELOC_UNUSED, 3, -1,
47.22711 ++      {
47.22712 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22713 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22714 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22715 ++      },
47.22716 ++    },
47.22717 ++    {
47.22718 ++      AVR32_OPC_MULSATHH_H, 4, 0xe0000880, 0xe1f0ffc0,
47.22719 ++      &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_H],
47.22720 ++      BFD_RELOC_UNUSED, 5, -1,
47.22721 ++      {
47.22722 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22723 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22724 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.22725 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22726 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.22727 ++      },
47.22728 ++    },
47.22729 ++    {
47.22730 ++      AVR32_OPC_MULSATHH_W, 4, 0xe0000980, 0xe1f0ffc0,
47.22731 ++      &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_W],
47.22732 ++      BFD_RELOC_UNUSED, 5, -1,
47.22733 ++      {
47.22734 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22735 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22736 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.22737 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22738 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.22739 ++      },
47.22740 ++    },
47.22741 ++    {
47.22742 ++      AVR32_OPC_MULSATRNDHH_H, 4, 0xe0000a80, 0xe1f0ffc0,
47.22743 ++      &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDHH_H],
47.22744 ++      BFD_RELOC_UNUSED, 5, -1,
47.22745 ++      {
47.22746 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22747 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22748 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.22749 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22750 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.22751 ++      },
47.22752 ++    },
47.22753 ++    {
47.22754 ++      AVR32_OPC_MULSATRNDWH_W, 4, 0xe0000b80, 0xe1f0ffe0,
47.22755 ++      &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDWH_W],
47.22756 ++      BFD_RELOC_UNUSED, 4, -1,
47.22757 ++      {
47.22758 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22759 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22760 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22761 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.22762 ++      },
47.22763 ++    },
47.22764 ++    {
47.22765 ++      AVR32_OPC_MULSATWH_W, 4, 0xe0000e80, 0xe1f0ffe0,
47.22766 ++      &avr32_syntax_table[AVR32_SYNTAX_MULSATWH_W],
47.22767 ++      BFD_RELOC_UNUSED, 4, -1,
47.22768 ++      {
47.22769 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22770 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22771 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22772 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.22773 ++      },
47.22774 ++    },
47.22775 ++    {
47.22776 ++      AVR32_OPC_MULU_D, 4, 0xe0000640, 0xe1f0fff1,
47.22777 ++      &avr32_syntax_table[AVR32_SYNTAX_MULU_D],
47.22778 ++      BFD_RELOC_UNUSED, 3, -1,
47.22779 ++      {
47.22780 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22781 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22782 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22783 ++      },
47.22784 ++    },
47.22785 ++    {
47.22786 ++      AVR32_OPC_MULWH_D, 4, 0xe0000d80, 0xe1f0ffe1,
47.22787 ++      &avr32_syntax_table[AVR32_SYNTAX_MULWH_D],
47.22788 ++      BFD_RELOC_UNUSED, 4, -1,
47.22789 ++      {
47.22790 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22791 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22792 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22793 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.22794 ++      },
47.22795 ++    },
47.22796 ++    {
47.22797 ++      AVR32_OPC_MUSFR, 2, 0x5d300000, 0xfff00000,
47.22798 ++      &avr32_syntax_table[AVR32_SYNTAX_MUSFR],
47.22799 ++      BFD_RELOC_UNUSED, 1, -1,
47.22800 ++      {
47.22801 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22802 ++      }
47.22803 ++    },
47.22804 ++    {
47.22805 ++      AVR32_OPC_MUSTR, 2, 0x5d200000, 0xfff00000,
47.22806 ++      &avr32_syntax_table[AVR32_SYNTAX_MUSTR],
47.22807 ++      BFD_RELOC_UNUSED, 1, -1,
47.22808 ++      {
47.22809 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22810 ++      }
47.22811 ++    },
47.22812 ++    {
47.22813 ++      AVR32_OPC_MVCR_D, 4, 0xefa00010, 0xfff111ff,
47.22814 ++      &avr32_syntax_table[AVR32_SYNTAX_MVCR_D],
47.22815 ++      BFD_RELOC_UNUSED, 3, -1,
47.22816 ++      {
47.22817 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.22818 ++	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
47.22819 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
47.22820 ++      },
47.22821 ++    },
47.22822 ++    {
47.22823 ++      AVR32_OPC_MVCR_W, 4, 0xefa00000, 0xfff010ff,
47.22824 ++      &avr32_syntax_table[AVR32_SYNTAX_MVCR_W],
47.22825 ++      BFD_RELOC_UNUSED, 3, -1,
47.22826 ++      {
47.22827 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.22828 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22829 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
47.22830 ++      },
47.22831 ++    },
47.22832 ++    {
47.22833 ++      AVR32_OPC_MVRC_D, 4, 0xefa00030, 0xfff111ff,
47.22834 ++      &avr32_syntax_table[AVR32_SYNTAX_MVRC_D],
47.22835 ++      BFD_RELOC_UNUSED, 3, -1,
47.22836 ++      {
47.22837 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.22838 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
47.22839 ++	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
47.22840 ++      },
47.22841 ++    },
47.22842 ++    {
47.22843 ++      AVR32_OPC_MVRC_W, 4, 0xefa00020, 0xfff010ff,
47.22844 ++      &avr32_syntax_table[AVR32_SYNTAX_MVRC_W],
47.22845 ++      BFD_RELOC_UNUSED, 3, -1,
47.22846 ++      {
47.22847 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.22848 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
47.22849 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22850 ++      },
47.22851 ++    },
47.22852 ++    {
47.22853 ++      AVR32_OPC_NEG, 2, 0x5c300000, 0xfff00000,
47.22854 ++      &avr32_syntax_table[AVR32_SYNTAX_NEG],
47.22855 ++      BFD_RELOC_UNUSED, 1, -1,
47.22856 ++      {
47.22857 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22858 ++      }
47.22859 ++    },
47.22860 ++    {
47.22861 ++      AVR32_OPC_NOP, 2, 0xd7030000, 0xffff0000,
47.22862 ++      &avr32_syntax_table[AVR32_SYNTAX_NOP],
47.22863 ++      BFD_RELOC_UNUSED, 0, -1, { NULL },
47.22864 ++    },
47.22865 ++    {
47.22866 ++      AVR32_OPC_OR1, 2, 0x00400000, 0xe1f00000,
47.22867 ++      &avr32_syntax_table[AVR32_SYNTAX_OR1],
47.22868 ++      BFD_RELOC_UNUSED, 2, -1,
47.22869 ++      {
47.22870 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22871 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22872 ++      },
47.22873 ++    },
47.22874 ++    {
47.22875 ++      AVR32_OPC_OR2, 4, 0xe1e01000, 0xe1f0fe00,
47.22876 ++      &avr32_syntax_table[AVR32_SYNTAX_OR2],
47.22877 ++      BFD_RELOC_UNUSED, 4, -1,
47.22878 ++      {
47.22879 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22880 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22881 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22882 ++	&avr32_ifield_table[AVR32_IFIELD_K5E2],
47.22883 ++      },
47.22884 ++    },
47.22885 ++    {
47.22886 ++      AVR32_OPC_OR3, 4, 0xe1e01200, 0xe1f0fe00,
47.22887 ++      &avr32_syntax_table[AVR32_SYNTAX_OR3],
47.22888 ++      BFD_RELOC_UNUSED, 4, -1,
47.22889 ++      {
47.22890 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22891 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22892 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22893 ++	&avr32_ifield_table[AVR32_IFIELD_K5E2],
47.22894 ++      },
47.22895 ++    },
47.22896 ++    {
47.22897 ++      AVR32_OPC_ORH, 4, 0xea100000, 0xfff00000,
47.22898 ++      &avr32_syntax_table[AVR32_SYNTAX_ORH],
47.22899 ++      BFD_RELOC_AVR32_16U, 2, 1,
47.22900 ++      {
47.22901 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22902 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.22903 ++      },
47.22904 ++    },
47.22905 ++    {
47.22906 ++      AVR32_OPC_ORL, 4, 0xe8100000, 0xfff00000,
47.22907 ++      &avr32_syntax_table[AVR32_SYNTAX_ORL],
47.22908 ++      BFD_RELOC_AVR32_16U, 2, 1,
47.22909 ++      {
47.22910 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22911 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.22912 ++      },
47.22913 ++    },
47.22914 ++    {
47.22915 ++      AVR32_OPC_PABS_SB, 4, 0xe00023e0, 0xfff0fff0,
47.22916 ++      &avr32_syntax_table[AVR32_SYNTAX_PABS_SB],
47.22917 ++      BFD_RELOC_UNUSED, 2, -1,
47.22918 ++      {
47.22919 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22920 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22921 ++      },
47.22922 ++    },
47.22923 ++    {
47.22924 ++      AVR32_OPC_PABS_SH, 4, 0xe00023f0, 0xfff0fff0,
47.22925 ++      &avr32_syntax_table[AVR32_SYNTAX_PABS_SH],
47.22926 ++      BFD_RELOC_UNUSED, 2, -1,
47.22927 ++      {
47.22928 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22929 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22930 ++      },
47.22931 ++    },
47.22932 ++    {
47.22933 ++      AVR32_OPC_PACKSH_SB, 4, 0xe00024d0, 0xe1f0fff0,
47.22934 ++      &avr32_syntax_table[AVR32_SYNTAX_PACKSH_SB],
47.22935 ++      BFD_RELOC_UNUSED, 3, -1,
47.22936 ++      {
47.22937 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22938 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22939 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22940 ++      },
47.22941 ++    },
47.22942 ++    {
47.22943 ++      AVR32_OPC_PACKSH_UB, 4, 0xe00024c0, 0xe1f0fff0,
47.22944 ++      &avr32_syntax_table[AVR32_SYNTAX_PACKSH_UB],
47.22945 ++      BFD_RELOC_UNUSED, 3, -1,
47.22946 ++      {
47.22947 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22948 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22949 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22950 ++      },
47.22951 ++    },
47.22952 ++    {
47.22953 ++      AVR32_OPC_PACKW_SH, 4, 0xe0002470, 0xe1f0fff0,
47.22954 ++      &avr32_syntax_table[AVR32_SYNTAX_PACKW_SH],
47.22955 ++      BFD_RELOC_UNUSED, 3, -1,
47.22956 ++      {
47.22957 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22958 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22959 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22960 ++      },
47.22961 ++    },
47.22962 ++    {
47.22963 ++      AVR32_OPC_PADD_B, 4, 0xe0002300, 0xe1f0fff0,
47.22964 ++      &avr32_syntax_table[AVR32_SYNTAX_PADD_B],
47.22965 ++      BFD_RELOC_UNUSED, 3, -1,
47.22966 ++      {
47.22967 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22968 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22969 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22970 ++      },
47.22971 ++    },
47.22972 ++    {
47.22973 ++      AVR32_OPC_PADD_H, 4, 0xe0002000, 0xe1f0fff0,
47.22974 ++      &avr32_syntax_table[AVR32_SYNTAX_PADD_H],
47.22975 ++      BFD_RELOC_UNUSED, 3, -1,
47.22976 ++      {
47.22977 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22978 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22979 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22980 ++      },
47.22981 ++    },
47.22982 ++    {
47.22983 ++      AVR32_OPC_PADDH_SH, 4, 0xe00020c0, 0xe1f0fff0,
47.22984 ++      &avr32_syntax_table[AVR32_SYNTAX_PADDH_SH],
47.22985 ++      BFD_RELOC_UNUSED, 3, -1,
47.22986 ++      {
47.22987 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22988 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22989 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.22990 ++      },
47.22991 ++    },
47.22992 ++    {
47.22993 ++      AVR32_OPC_PADDH_UB, 4, 0xe0002360, 0xe1f0fff0,
47.22994 ++      &avr32_syntax_table[AVR32_SYNTAX_PADDH_UB],
47.22995 ++      BFD_RELOC_UNUSED, 3, -1,
47.22996 ++      {
47.22997 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.22998 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.22999 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23000 ++      },
47.23001 ++    },
47.23002 ++    {
47.23003 ++      AVR32_OPC_PADDS_SB, 4, 0xe0002320, 0xe1f0fff0,
47.23004 ++      &avr32_syntax_table[AVR32_SYNTAX_PADDS_SB],
47.23005 ++      BFD_RELOC_UNUSED, 3, -1,
47.23006 ++      {
47.23007 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23008 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23009 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23010 ++      },
47.23011 ++    },
47.23012 ++    {
47.23013 ++      AVR32_OPC_PADDS_SH, 4, 0xe0002040, 0xe1f0fff0,
47.23014 ++      &avr32_syntax_table[AVR32_SYNTAX_PADDS_SH],
47.23015 ++      BFD_RELOC_UNUSED, 3, -1,
47.23016 ++      {
47.23017 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23018 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23019 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23020 ++      },
47.23021 ++    },
47.23022 ++    {
47.23023 ++      AVR32_OPC_PADDS_UB, 4, 0xe0002340, 0xe1f0fff0,
47.23024 ++      &avr32_syntax_table[AVR32_SYNTAX_PADDS_UB],
47.23025 ++      BFD_RELOC_UNUSED, 3, -1,
47.23026 ++      {
47.23027 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23028 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23029 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23030 ++      },
47.23031 ++    },
47.23032 ++    {
47.23033 ++      AVR32_OPC_PADDS_UH, 4, 0xe0002080, 0xe1f0fff0,
47.23034 ++      &avr32_syntax_table[AVR32_SYNTAX_PADDS_UH],
47.23035 ++      BFD_RELOC_UNUSED, 3, -1,
47.23036 ++      {
47.23037 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23038 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23039 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23040 ++      },
47.23041 ++    },
47.23042 ++    {
47.23043 ++      AVR32_OPC_PADDSUB_H, 4, 0xe0002100, 0xe1f0ffc0,
47.23044 ++      &avr32_syntax_table[AVR32_SYNTAX_PADDSUB_H],
47.23045 ++      BFD_RELOC_UNUSED, 5, -1,
47.23046 ++      {
47.23047 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23048 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23049 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.23050 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23051 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.23052 ++      },
47.23053 ++    },
47.23054 ++    {
47.23055 ++      AVR32_OPC_PADDSUBH_SH, 4, 0xe0002280, 0xe1f0ffc0,
47.23056 ++      &avr32_syntax_table[AVR32_SYNTAX_PADDSUBH_SH],
47.23057 ++      BFD_RELOC_UNUSED, 5, -1,
47.23058 ++      {
47.23059 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23060 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23061 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.23062 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23063 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.23064 ++      },
47.23065 ++    },
47.23066 ++    {
47.23067 ++      AVR32_OPC_PADDSUBS_SH, 4, 0xe0002180, 0xe1f0ffc0,
47.23068 ++      &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_SH],
47.23069 ++      BFD_RELOC_UNUSED, 5, -1,
47.23070 ++      {
47.23071 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23072 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23073 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.23074 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23075 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.23076 ++      },
47.23077 ++    },
47.23078 ++    {
47.23079 ++      AVR32_OPC_PADDSUBS_UH, 4, 0xe0002200, 0xe1f0ffc0,
47.23080 ++      &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_UH],
47.23081 ++      BFD_RELOC_UNUSED, 5, -1,
47.23082 ++      {
47.23083 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23084 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23085 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.23086 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23087 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.23088 ++      },
47.23089 ++    },
47.23090 ++    {
47.23091 ++      AVR32_OPC_PADDX_H, 4, 0xe0002020, 0xe1f0fff0,
47.23092 ++      &avr32_syntax_table[AVR32_SYNTAX_PADDX_H],
47.23093 ++      BFD_RELOC_UNUSED, 3, -1,
47.23094 ++      {
47.23095 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23096 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23097 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23098 ++      },
47.23099 ++    },
47.23100 ++    {
47.23101 ++      AVR32_OPC_PADDXH_SH, 4, 0xe00020e0, 0xe1f0fff0,
47.23102 ++      &avr32_syntax_table[AVR32_SYNTAX_PADDXH_SH],
47.23103 ++      BFD_RELOC_UNUSED, 3, -1,
47.23104 ++      {
47.23105 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23106 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23107 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23108 ++      },
47.23109 ++    },
47.23110 ++    {
47.23111 ++      AVR32_OPC_PADDXS_SH, 4, 0xe0002060, 0xe1f0fff0,
47.23112 ++      &avr32_syntax_table[AVR32_SYNTAX_PADDXS_SH],
47.23113 ++      BFD_RELOC_UNUSED, 3, -1,
47.23114 ++      {
47.23115 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23116 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23117 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23118 ++      },
47.23119 ++    },
47.23120 ++    {
47.23121 ++      AVR32_OPC_PADDXS_UH, 4, 0xe00020a0, 0xe1f0fff0,
47.23122 ++      &avr32_syntax_table[AVR32_SYNTAX_PADDXS_UH],
47.23123 ++      BFD_RELOC_UNUSED, 3, -1,
47.23124 ++      {
47.23125 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23126 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23127 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23128 ++      },
47.23129 ++    },
47.23130 ++    {
47.23131 ++      AVR32_OPC_PASR_B, 4, 0xe0002410, 0xe1f8fff0,
47.23132 ++      &avr32_syntax_table[AVR32_SYNTAX_PASR_B],
47.23133 ++      BFD_RELOC_UNUSED, 3, -1,
47.23134 ++      {
47.23135 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23136 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23137 ++	&avr32_ifield_table[AVR32_IFIELD_COND3],
47.23138 ++      },
47.23139 ++    },
47.23140 ++    {
47.23141 ++      AVR32_OPC_PASR_H, 4, 0xe0002440, 0xe1f0fff0,
47.23142 ++      &avr32_syntax_table[AVR32_SYNTAX_PASR_H],
47.23143 ++      BFD_RELOC_UNUSED, 3, -1,
47.23144 ++      {
47.23145 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23146 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23147 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23148 ++      },
47.23149 ++    },
47.23150 ++    {
47.23151 ++      AVR32_OPC_PAVG_SH, 4, 0xe00023d0, 0xe1f0fff0,
47.23152 ++      &avr32_syntax_table[AVR32_SYNTAX_PAVG_SH],
47.23153 ++      BFD_RELOC_UNUSED, 3, -1,
47.23154 ++      {
47.23155 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23156 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23157 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23158 ++      },
47.23159 ++    },
47.23160 ++    {
47.23161 ++      AVR32_OPC_PAVG_UB, 4, 0xe00023c0, 0xe1f0fff0,
47.23162 ++      &avr32_syntax_table[AVR32_SYNTAX_PAVG_UB],
47.23163 ++      BFD_RELOC_UNUSED, 3, -1,
47.23164 ++      {
47.23165 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23166 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23167 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23168 ++      },
47.23169 ++    },
47.23170 ++    {
47.23171 ++      AVR32_OPC_PLSL_B, 4, 0xe0002420, 0xe1f8fff0,
47.23172 ++      &avr32_syntax_table[AVR32_SYNTAX_PLSL_B],
47.23173 ++      BFD_RELOC_UNUSED, 3, -1,
47.23174 ++      {
47.23175 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23176 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23177 ++	&avr32_ifield_table[AVR32_IFIELD_COND3],
47.23178 ++      },
47.23179 ++    },
47.23180 ++    {
47.23181 ++      AVR32_OPC_PLSL_H, 4, 0xe0002450, 0xe1f0fff0,
47.23182 ++      &avr32_syntax_table[AVR32_SYNTAX_PLSL_H],
47.23183 ++      BFD_RELOC_UNUSED, 3, -1,
47.23184 ++      {
47.23185 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23186 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23187 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23188 ++      },
47.23189 ++    },
47.23190 ++    {
47.23191 ++      AVR32_OPC_PLSR_B, 4, 0xe0002430, 0xe1f8fff0,
47.23192 ++      &avr32_syntax_table[AVR32_SYNTAX_PLSR_B],
47.23193 ++      BFD_RELOC_UNUSED, 3, -1,
47.23194 ++      {
47.23195 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23196 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23197 ++	&avr32_ifield_table[AVR32_IFIELD_COND3],
47.23198 ++      },
47.23199 ++    },
47.23200 ++    {
47.23201 ++      AVR32_OPC_PLSR_H, 4, 0xe0002460, 0xe1f0fff0,
47.23202 ++      &avr32_syntax_table[AVR32_SYNTAX_PLSR_H],
47.23203 ++      BFD_RELOC_UNUSED, 3, -1,
47.23204 ++      {
47.23205 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23206 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23207 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23208 ++      },
47.23209 ++    },
47.23210 ++    {
47.23211 ++      AVR32_OPC_PMAX_SH, 4, 0xe0002390, 0xe1f0fff0,
47.23212 ++      &avr32_syntax_table[AVR32_SYNTAX_PMAX_SH],
47.23213 ++      BFD_RELOC_UNUSED, 3, -1,
47.23214 ++      {
47.23215 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23216 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23217 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23218 ++      },
47.23219 ++    },
47.23220 ++    {
47.23221 ++      AVR32_OPC_PMAX_UB, 4, 0xe0002380, 0xe1f0fff0,
47.23222 ++      &avr32_syntax_table[AVR32_SYNTAX_PMAX_UB],
47.23223 ++      BFD_RELOC_UNUSED, 3, -1,
47.23224 ++      {
47.23225 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23226 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23227 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23228 ++      },
47.23229 ++    },
47.23230 ++    {
47.23231 ++      AVR32_OPC_PMIN_SH, 4, 0xe00023b0, 0xe1f0fff0,
47.23232 ++      &avr32_syntax_table[AVR32_SYNTAX_PMIN_SH],
47.23233 ++      BFD_RELOC_UNUSED, 3, -1,
47.23234 ++      {
47.23235 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23236 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23237 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23238 ++      },
47.23239 ++    },
47.23240 ++    {
47.23241 ++      AVR32_OPC_PMIN_UB, 4, 0xe00023a0, 0xe1f0fff0,
47.23242 ++      &avr32_syntax_table[AVR32_SYNTAX_PMIN_UB],
47.23243 ++      BFD_RELOC_UNUSED, 3, -1,
47.23244 ++      {
47.23245 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23246 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23247 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23248 ++      },
47.23249 ++    },
47.23250 ++    {
47.23251 ++      AVR32_OPC_POPJC, 2, 0xd7130000, 0xffff0000,
47.23252 ++      &avr32_syntax_table[AVR32_SYNTAX_POPJC],
47.23253 ++      BFD_RELOC_UNUSED, 0, -1, { NULL },
47.23254 ++    },
47.23255 ++    {
47.23256 ++      AVR32_OPC_POPM, 2, 0xd0020000, 0xf0070000,
47.23257 ++      &avr32_syntax_table[AVR32_SYNTAX_POPM],
47.23258 ++      BFD_RELOC_UNUSED, 1, -1,
47.23259 ++      {
47.23260 ++	&avr32_ifield_table[AVR32_IFIELD_POPM],
47.23261 ++      },
47.23262 ++    },
47.23263 ++    {
47.23264 ++      AVR32_OPC_POPM_E, 4, 0xe3cd0000, 0xffff0000,
47.23265 ++      &avr32_syntax_table[AVR32_SYNTAX_POPM_E],
47.23266 ++      BFD_RELOC_UNUSED, 1, -1,
47.23267 ++      {
47.23268 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.23269 ++      },
47.23270 ++    },
47.23271 ++    {
47.23272 ++      AVR32_OPC_PREF, 4, 0xf2100000, 0xfff00000,
47.23273 ++      &avr32_syntax_table[AVR32_SYNTAX_PREF],
47.23274 ++      BFD_RELOC_AVR32_16S, 2, -1,
47.23275 ++      {
47.23276 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23277 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.23278 ++      },
47.23279 ++    },
47.23280 ++    {
47.23281 ++      AVR32_OPC_PSAD, 4, 0xe0002400, 0xe1f0fff0,
47.23282 ++      &avr32_syntax_table[AVR32_SYNTAX_PSAD],
47.23283 ++      BFD_RELOC_UNUSED, 3, -1,
47.23284 ++      {
47.23285 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23286 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23287 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23288 ++      },
47.23289 ++    },
47.23290 ++    {
47.23291 ++      AVR32_OPC_PSUB_B, 4, 0xe0002310, 0xe1f0fff0,
47.23292 ++      &avr32_syntax_table[AVR32_SYNTAX_PSUB_B],
47.23293 ++      BFD_RELOC_UNUSED, 3, -1,
47.23294 ++      {
47.23295 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23296 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23297 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23298 ++      },
47.23299 ++    },
47.23300 ++    {
47.23301 ++      AVR32_OPC_PSUB_H, 4, 0xe0002010, 0xe1f0fff0,
47.23302 ++      &avr32_syntax_table[AVR32_SYNTAX_PSUB_H],
47.23303 ++      BFD_RELOC_UNUSED, 3, -1,
47.23304 ++      {
47.23305 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23306 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23307 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23308 ++      },
47.23309 ++    },
47.23310 ++    {
47.23311 ++      AVR32_OPC_PSUBADD_H, 4, 0xe0002140, 0xe1f0ffc0,
47.23312 ++      &avr32_syntax_table[AVR32_SYNTAX_PSUBADD_H],
47.23313 ++      BFD_RELOC_UNUSED, 5, -1,
47.23314 ++      {
47.23315 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23316 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23317 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.23318 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23319 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.23320 ++      },
47.23321 ++    },
47.23322 ++    {
47.23323 ++      AVR32_OPC_PSUBADDH_SH, 4, 0xe00022c0, 0xe1f0ffc0,
47.23324 ++      &avr32_syntax_table[AVR32_SYNTAX_PSUBADDH_SH],
47.23325 ++      BFD_RELOC_UNUSED, 5, -1,
47.23326 ++      {
47.23327 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23328 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23329 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.23330 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23331 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.23332 ++      },
47.23333 ++    },
47.23334 ++    {
47.23335 ++      AVR32_OPC_PSUBADDS_SH, 4, 0xe00021c0, 0xe1f0ffc0,
47.23336 ++      &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_SH],
47.23337 ++      BFD_RELOC_UNUSED, 5, -1,
47.23338 ++      {
47.23339 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23340 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23341 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.23342 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23343 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.23344 ++      },
47.23345 ++    },
47.23346 ++    {
47.23347 ++      AVR32_OPC_PSUBADDS_UH, 4, 0xe0002240, 0xe1f0ffc0,
47.23348 ++      &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_UH],
47.23349 ++      BFD_RELOC_UNUSED, 5, -1,
47.23350 ++      {
47.23351 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23352 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23353 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.23354 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23355 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.23356 ++      },
47.23357 ++    },
47.23358 ++    {
47.23359 ++      AVR32_OPC_PSUBH_SH, 4, 0xe00020d0, 0xe1f0fff0,
47.23360 ++      &avr32_syntax_table[AVR32_SYNTAX_PSUBH_SH],
47.23361 ++      BFD_RELOC_UNUSED, 3, -1,
47.23362 ++      {
47.23363 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23364 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23365 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23366 ++      },
47.23367 ++    },
47.23368 ++    {
47.23369 ++      AVR32_OPC_PSUBH_UB, 4, 0xe0002370, 0xe1f0fff0,
47.23370 ++      &avr32_syntax_table[AVR32_SYNTAX_PSUBH_UB],
47.23371 ++      BFD_RELOC_UNUSED, 3, -1,
47.23372 ++      {
47.23373 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23374 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23375 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23376 ++      },
47.23377 ++    },
47.23378 ++    {
47.23379 ++      AVR32_OPC_PSUBS_SB, 4, 0xe0002330, 0xe1f0fff0,
47.23380 ++      &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SB],
47.23381 ++      BFD_RELOC_UNUSED, 3, -1,
47.23382 ++      {
47.23383 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23384 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23385 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23386 ++      },
47.23387 ++    },
47.23388 ++    {
47.23389 ++      AVR32_OPC_PSUBS_SH, 4, 0xe0002050, 0xe1f0fff0,
47.23390 ++      &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SH],
47.23391 ++      BFD_RELOC_UNUSED, 3, -1,
47.23392 ++      {
47.23393 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23394 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23395 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23396 ++      },
47.23397 ++    },
47.23398 ++    {
47.23399 ++      AVR32_OPC_PSUBS_UB, 4, 0xe0002350, 0xe1f0fff0,
47.23400 ++      &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UB],
47.23401 ++      BFD_RELOC_UNUSED, 3, -1,
47.23402 ++      {
47.23403 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23404 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23405 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23406 ++      },
47.23407 ++    },
47.23408 ++    {
47.23409 ++      AVR32_OPC_PSUBS_UH, 4, 0xe0002090, 0xe1f0fff0,
47.23410 ++      &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UH],
47.23411 ++      BFD_RELOC_UNUSED, 3, -1,
47.23412 ++      {
47.23413 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23414 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23415 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23416 ++      },
47.23417 ++    },
47.23418 ++    {
47.23419 ++      AVR32_OPC_PSUBX_H, 4, 0xe0002030, 0xe1f0fff0,
47.23420 ++      &avr32_syntax_table[AVR32_SYNTAX_PSUBX_H],
47.23421 ++      BFD_RELOC_UNUSED, 3, -1,
47.23422 ++      {
47.23423 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23424 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23425 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23426 ++      },
47.23427 ++    },
47.23428 ++    {
47.23429 ++      AVR32_OPC_PSUBXH_SH, 4, 0xe00020f0, 0xe1f0fff0,
47.23430 ++      &avr32_syntax_table[AVR32_SYNTAX_PSUBXH_SH],
47.23431 ++      BFD_RELOC_UNUSED, 3, -1,
47.23432 ++      {
47.23433 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23434 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23435 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23436 ++      },
47.23437 ++    },
47.23438 ++    {
47.23439 ++      AVR32_OPC_PSUBXS_SH, 4, 0xe0002070, 0xe1f0fff0,
47.23440 ++      &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_SH],
47.23441 ++      BFD_RELOC_UNUSED, 3, -1,
47.23442 ++      {
47.23443 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23444 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23445 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23446 ++      },
47.23447 ++    },
47.23448 ++    {
47.23449 ++      AVR32_OPC_PSUBXS_UH, 4, 0xe00020b0, 0xe1f0fff0,
47.23450 ++      &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_UH],
47.23451 ++      BFD_RELOC_UNUSED, 3, -1,
47.23452 ++      {
47.23453 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23454 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23455 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23456 ++      },
47.23457 ++    },
47.23458 ++    {
47.23459 ++      AVR32_OPC_PUNPCKSB_H, 4, 0xe00024a0, 0xe1ffffe0,
47.23460 ++      &avr32_syntax_table[AVR32_SYNTAX_PUNPCKSB_H],
47.23461 ++      BFD_RELOC_UNUSED, 3, -1,
47.23462 ++      {
47.23463 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23464 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23465 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.23466 ++      },
47.23467 ++    },
47.23468 ++    {
47.23469 ++      AVR32_OPC_PUNPCKUB_H, 4, 0xe0002480, 0xe1ffffe0,
47.23470 ++      &avr32_syntax_table[AVR32_SYNTAX_PUNPCKUB_H],
47.23471 ++      BFD_RELOC_UNUSED, 3, -1,
47.23472 ++      {
47.23473 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23474 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23475 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.23476 ++      },
47.23477 ++    },
47.23478 ++    {
47.23479 ++      AVR32_OPC_PUSHJC, 2, 0xd7230000, 0xffff0000,
47.23480 ++      &avr32_syntax_table[AVR32_SYNTAX_PUSHJC],
47.23481 ++      BFD_RELOC_UNUSED, 0, -1, { NULL },
47.23482 ++    },
47.23483 ++    {
47.23484 ++      AVR32_OPC_PUSHM, 2, 0xd0010000, 0xf00f0000,
47.23485 ++      &avr32_syntax_table[AVR32_SYNTAX_PUSHM],
47.23486 ++      BFD_RELOC_UNUSED, 1, -1,
47.23487 ++      {
47.23488 ++	&avr32_ifield_table[AVR32_IFIELD_K8C],
47.23489 ++      },
47.23490 ++    },
47.23491 ++    {
47.23492 ++      AVR32_OPC_PUSHM_E, 4, 0xebcd0000, 0xffff0000,
47.23493 ++      &avr32_syntax_table[AVR32_SYNTAX_PUSHM_E],
47.23494 ++      BFD_RELOC_UNUSED, 1, -1,
47.23495 ++      {
47.23496 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.23497 ++      },
47.23498 ++    },
47.23499 ++    {
47.23500 ++      AVR32_OPC_RCALL1, 2, 0xc00c0000, 0xf00c0000,
47.23501 ++      &avr32_syntax_table[AVR32_SYNTAX_RCALL1],
47.23502 ++      BFD_RELOC_AVR32_11H_PCREL, 1, 0,
47.23503 ++      {
47.23504 ++	&avr32_ifield_table[AVR32_IFIELD_K10],
47.23505 ++      },
47.23506 ++    },
47.23507 ++    {
47.23508 ++      AVR32_OPC_RCALL2, 4, 0xe0a00000, 0xe1ef0000,
47.23509 ++      &avr32_syntax_table[AVR32_SYNTAX_RCALL2],
47.23510 ++      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
47.23511 ++      {
47.23512 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.23513 ++      },
47.23514 ++    },
47.23515 ++    {
47.23516 ++      AVR32_OPC_RETEQ, 2, 0x5e000000, 0xfff00000,
47.23517 ++      &avr32_syntax_table[AVR32_SYNTAX_RETEQ],
47.23518 ++      BFD_RELOC_NONE, 1, -1,
47.23519 ++      {
47.23520 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23521 ++      },
47.23522 ++    },
47.23523 ++    {
47.23524 ++      AVR32_OPC_RETNE, 2, 0x5e100000, 0xfff00000,
47.23525 ++      &avr32_syntax_table[AVR32_SYNTAX_RETNE],
47.23526 ++      BFD_RELOC_NONE, 1, -1,
47.23527 ++      {
47.23528 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23529 ++      },
47.23530 ++    },
47.23531 ++    {
47.23532 ++      AVR32_OPC_RETCC, 2, 0x5e200000, 0xfff00000,
47.23533 ++      &avr32_syntax_table[AVR32_SYNTAX_RETHS],
47.23534 ++      BFD_RELOC_NONE, 1, -1,
47.23535 ++      {
47.23536 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23537 ++      },
47.23538 ++    },
47.23539 ++    {
47.23540 ++      AVR32_OPC_RETCS, 2, 0x5e300000, 0xfff00000,
47.23541 ++      &avr32_syntax_table[AVR32_SYNTAX_RETLO],
47.23542 ++      BFD_RELOC_NONE, 1, -1,
47.23543 ++      {
47.23544 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23545 ++      },
47.23546 ++    },
47.23547 ++    {
47.23548 ++      AVR32_OPC_RETGE, 2, 0x5e400000, 0xfff00000,
47.23549 ++      &avr32_syntax_table[AVR32_SYNTAX_RETGE],
47.23550 ++      BFD_RELOC_NONE, 1, -1,
47.23551 ++      {
47.23552 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23553 ++      },
47.23554 ++    },
47.23555 ++    {
47.23556 ++      AVR32_OPC_RETLT, 2, 0x5e500000, 0xfff00000,
47.23557 ++      &avr32_syntax_table[AVR32_SYNTAX_RETLT],
47.23558 ++      BFD_RELOC_NONE, 1, -1,
47.23559 ++      {
47.23560 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23561 ++      },
47.23562 ++    },
47.23563 ++    {
47.23564 ++      AVR32_OPC_RETMI, 2, 0x5e600000, 0xfff00000,
47.23565 ++      &avr32_syntax_table[AVR32_SYNTAX_RETMI],
47.23566 ++      BFD_RELOC_NONE, 1, -1,
47.23567 ++      {
47.23568 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23569 ++      },
47.23570 ++    },
47.23571 ++    {
47.23572 ++      AVR32_OPC_RETPL, 2, 0x5e700000, 0xfff00000,
47.23573 ++      &avr32_syntax_table[AVR32_SYNTAX_RETPL],
47.23574 ++      BFD_RELOC_NONE, 1, -1,
47.23575 ++      {
47.23576 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23577 ++      },
47.23578 ++    },
47.23579 ++    {
47.23580 ++      AVR32_OPC_RETLS, 2, 0x5e800000, 0xfff00000,
47.23581 ++      &avr32_syntax_table[AVR32_SYNTAX_RETLS],
47.23582 ++      BFD_RELOC_NONE, 1, -1,
47.23583 ++      {
47.23584 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23585 ++      },
47.23586 ++    },
47.23587 ++    {
47.23588 ++      AVR32_OPC_RETGT, 2, 0x5e900000, 0xfff00000,
47.23589 ++      &avr32_syntax_table[AVR32_SYNTAX_RETGT],
47.23590 ++      BFD_RELOC_NONE, 1, -1,
47.23591 ++      {
47.23592 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23593 ++      },
47.23594 ++    },
47.23595 ++    {
47.23596 ++      AVR32_OPC_RETLE, 2, 0x5ea00000, 0xfff00000,
47.23597 ++      &avr32_syntax_table[AVR32_SYNTAX_RETLE],
47.23598 ++      BFD_RELOC_NONE, 1, -1,
47.23599 ++      {
47.23600 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23601 ++      },
47.23602 ++    },
47.23603 ++    {
47.23604 ++      AVR32_OPC_RETHI, 2, 0x5eb00000, 0xfff00000,
47.23605 ++      &avr32_syntax_table[AVR32_SYNTAX_RETHI],
47.23606 ++      BFD_RELOC_NONE, 1, -1,
47.23607 ++      {
47.23608 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23609 ++      },
47.23610 ++    },
47.23611 ++    {
47.23612 ++      AVR32_OPC_RETVS, 2, 0x5ec00000, 0xfff00000,
47.23613 ++      &avr32_syntax_table[AVR32_SYNTAX_RETVS],
47.23614 ++      BFD_RELOC_NONE, 1, -1,
47.23615 ++      {
47.23616 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23617 ++      },
47.23618 ++    },
47.23619 ++    {
47.23620 ++      AVR32_OPC_RETVC, 2, 0x5ed00000, 0xfff00000,
47.23621 ++      &avr32_syntax_table[AVR32_SYNTAX_RETVC],
47.23622 ++      BFD_RELOC_NONE, 1, -1,
47.23623 ++      {
47.23624 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23625 ++      },
47.23626 ++    },
47.23627 ++    {
47.23628 ++      AVR32_OPC_RETQS, 2, 0x5ee00000, 0xfff00000,
47.23629 ++      &avr32_syntax_table[AVR32_SYNTAX_RETQS],
47.23630 ++      BFD_RELOC_NONE, 1, -1,
47.23631 ++      {
47.23632 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23633 ++      },
47.23634 ++    },
47.23635 ++    {
47.23636 ++      AVR32_OPC_RETAL, 2, 0x5ef00000, 0xfff00000,
47.23637 ++      &avr32_syntax_table[AVR32_SYNTAX_RETAL],
47.23638 ++      BFD_RELOC_NONE, 1, -1,
47.23639 ++      {
47.23640 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23641 ++      },
47.23642 ++    },
47.23643 ++    {
47.23644 ++      AVR32_OPC_RETD, 2, 0xd6230000, 0xffff0000,
47.23645 ++      &avr32_syntax_table[AVR32_SYNTAX_RETD],
47.23646 ++      BFD_RELOC_NONE, 0, -1, { NULL },
47.23647 ++    },
47.23648 ++    {
47.23649 ++      AVR32_OPC_RETE, 2, 0xd6030000, 0xffff0000,
47.23650 ++      &avr32_syntax_table[AVR32_SYNTAX_RETE],
47.23651 ++      BFD_RELOC_NONE, 0, -1, { NULL },
47.23652 ++    },
47.23653 ++    {
47.23654 ++      AVR32_OPC_RETJ, 2, 0xd6330000, 0xffff0000,
47.23655 ++      &avr32_syntax_table[AVR32_SYNTAX_RETJ],
47.23656 ++      BFD_RELOC_NONE, 0, -1, { NULL },
47.23657 ++    },
47.23658 ++    {
47.23659 ++      AVR32_OPC_RETS, 2, 0xd6130000, 0xffff0000,
47.23660 ++      &avr32_syntax_table[AVR32_SYNTAX_RETS],
47.23661 ++      BFD_RELOC_NONE, 0, -1, { NULL },
47.23662 ++    },
47.23663 ++    {
47.23664 ++      AVR32_OPC_RJMP, 2, 0xc0080000, 0xf00c0000,
47.23665 ++      &avr32_syntax_table[AVR32_SYNTAX_RJMP],
47.23666 ++      BFD_RELOC_AVR32_11H_PCREL, 1, 0,
47.23667 ++      {
47.23668 ++	&avr32_ifield_table[AVR32_IFIELD_K10],
47.23669 ++      },
47.23670 ++    },
47.23671 ++    {
47.23672 ++      AVR32_OPC_ROL, 2, 0x5cf00000, 0xfff00000,
47.23673 ++      &avr32_syntax_table[AVR32_SYNTAX_ROL],
47.23674 ++      BFD_RELOC_UNUSED, 1, -1,
47.23675 ++      {
47.23676 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23677 ++      }
47.23678 ++    },
47.23679 ++    {
47.23680 ++      AVR32_OPC_ROR, 2, 0x5d000000, 0xfff00000,
47.23681 ++      &avr32_syntax_table[AVR32_SYNTAX_ROR],
47.23682 ++      BFD_RELOC_UNUSED, 1, -1,
47.23683 ++      {
47.23684 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23685 ++      }
47.23686 ++    },
47.23687 ++    {
47.23688 ++      AVR32_OPC_RSUB1, 2, 0x00200000, 0xe1f00000,
47.23689 ++      &avr32_syntax_table[AVR32_SYNTAX_RSUB1],
47.23690 ++      BFD_RELOC_UNUSED, 2, -1,
47.23691 ++      {
47.23692 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23693 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23694 ++      },
47.23695 ++    },
47.23696 ++    {
47.23697 ++      AVR32_OPC_RSUB2, 4, 0xe0001100, 0xe1f0ff00,
47.23698 ++      &avr32_syntax_table[AVR32_SYNTAX_RSUB2],
47.23699 ++      BFD_RELOC_AVR32_8S_EXT, 3, 2,
47.23700 ++      {
47.23701 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23702 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23703 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.23704 ++      },
47.23705 ++    },
47.23706 ++    {
47.23707 ++      AVR32_OPC_SATADD_H, 4, 0xe00002c0, 0xe1f0fff0,
47.23708 ++      &avr32_syntax_table[AVR32_SYNTAX_SATADD_H],
47.23709 ++      BFD_RELOC_UNUSED, 3, -1,
47.23710 ++      {
47.23711 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23712 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23713 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23714 ++      },
47.23715 ++    },
47.23716 ++    {
47.23717 ++      AVR32_OPC_SATADD_W, 4, 0xe00000c0, 0xe1f0fff0,
47.23718 ++      &avr32_syntax_table[AVR32_SYNTAX_SATADD_W],
47.23719 ++      BFD_RELOC_UNUSED, 3, -1,
47.23720 ++      {
47.23721 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23722 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23723 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23724 ++      },
47.23725 ++    },
47.23726 ++    {
47.23727 ++      AVR32_OPC_SATRNDS, 4, 0xf3b00000, 0xfff0fc00,
47.23728 ++      &avr32_syntax_table[AVR32_SYNTAX_SATRNDS],
47.23729 ++      BFD_RELOC_UNUSED, 3, -1,
47.23730 ++      {
47.23731 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23732 ++	&avr32_ifield_table[AVR32_IFIELD_K5E],
47.23733 ++	&avr32_ifield_table[AVR32_IFIELD_S5],
47.23734 ++      },
47.23735 ++    },
47.23736 ++    {
47.23737 ++      AVR32_OPC_SATRNDU, 4, 0xf3b00400, 0xfff0fc00,
47.23738 ++      &avr32_syntax_table[AVR32_SYNTAX_SATRNDU],
47.23739 ++      BFD_RELOC_UNUSED, 3, -1,
47.23740 ++      {
47.23741 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23742 ++	&avr32_ifield_table[AVR32_IFIELD_K5E],
47.23743 ++	&avr32_ifield_table[AVR32_IFIELD_S5],
47.23744 ++      },
47.23745 ++    },
47.23746 ++    {
47.23747 ++      AVR32_OPC_SATS, 4, 0xf1b00000, 0xfff0fc00,
47.23748 ++      &avr32_syntax_table[AVR32_SYNTAX_SATS],
47.23749 ++      BFD_RELOC_UNUSED, 3, -1,
47.23750 ++      {
47.23751 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23752 ++	&avr32_ifield_table[AVR32_IFIELD_K5E],
47.23753 ++	&avr32_ifield_table[AVR32_IFIELD_S5],
47.23754 ++      },
47.23755 ++    },
47.23756 ++    {
47.23757 ++      AVR32_OPC_SATSUB_H, 4, 0xe00003c0, 0xe1f0fff0,
47.23758 ++      &avr32_syntax_table[AVR32_SYNTAX_SATSUB_H],
47.23759 ++      BFD_RELOC_UNUSED, 3, -1,
47.23760 ++      {
47.23761 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23762 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23763 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23764 ++      },
47.23765 ++    },
47.23766 ++    {
47.23767 ++      AVR32_OPC_SATSUB_W1, 4, 0xe00001c0, 0xe1f0fff0,
47.23768 ++      &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W1],
47.23769 ++      BFD_RELOC_UNUSED, 3, -1,
47.23770 ++      {
47.23771 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23772 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23773 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23774 ++      },
47.23775 ++    },
47.23776 ++    {
47.23777 ++      AVR32_OPC_SATSUB_W2, 4, 0xe0d00000, 0xe1f00000,
47.23778 ++      &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W2],
47.23779 ++      BFD_RELOC_UNUSED, 3, -1,
47.23780 ++      {
47.23781 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23782 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23783 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.23784 ++      },
47.23785 ++    },
47.23786 ++    {
47.23787 ++      AVR32_OPC_SATU, 4, 0xf1b00400, 0xfff0fc00,
47.23788 ++      &avr32_syntax_table[AVR32_SYNTAX_SATU],
47.23789 ++      BFD_RELOC_UNUSED, 3, -1,
47.23790 ++      {
47.23791 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23792 ++	&avr32_ifield_table[AVR32_IFIELD_K5E],
47.23793 ++	&avr32_ifield_table[AVR32_IFIELD_S5],
47.23794 ++      },
47.23795 ++    },
47.23796 ++    {
47.23797 ++      AVR32_OPC_SBC, 4, 0xe0000140, 0xe1f0fff0,
47.23798 ++      &avr32_syntax_table[AVR32_SYNTAX_SBC],
47.23799 ++      BFD_RELOC_UNUSED, 3, -1,
47.23800 ++      {
47.23801 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23802 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23803 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23804 ++      },
47.23805 ++    },
47.23806 ++    {
47.23807 ++      AVR32_OPC_SBR, 2, 0xa1a00000, 0xe1e00000,
47.23808 ++      &avr32_syntax_table[AVR32_SYNTAX_SBR],
47.23809 ++      BFD_RELOC_UNUSED, 2, -1,
47.23810 ++      {
47.23811 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23812 ++	&avr32_ifield_table[AVR32_IFIELD_BIT5C],
47.23813 ++      },
47.23814 ++    },
47.23815 ++    {
47.23816 ++      AVR32_OPC_SCALL, 2, 0xd7330000, 0xffff0000,
47.23817 ++      &avr32_syntax_table[AVR32_SYNTAX_SCALL],
47.23818 ++      BFD_RELOC_UNUSED, 0, -1, { NULL },
47.23819 ++    },
47.23820 ++    {
47.23821 ++      AVR32_OPC_SCR, 2, 0x5c100000, 0xfff00000,
47.23822 ++      &avr32_syntax_table[AVR32_SYNTAX_SCR],
47.23823 ++      BFD_RELOC_UNUSED, 1, -1,
47.23824 ++      {
47.23825 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23826 ++      },
47.23827 ++    },
47.23828 ++    {
47.23829 ++      AVR32_OPC_SLEEP, 4, 0xe9b00000, 0xffffff00,
47.23830 ++      &avr32_syntax_table[AVR32_SYNTAX_SLEEP],
47.23831 ++      BFD_RELOC_AVR32_8S_EXT, 1, 0,
47.23832 ++      {
47.23833 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.23834 ++      },
47.23835 ++    },
47.23836 ++    {
47.23837 ++      AVR32_OPC_SREQ, 2, 0x5f000000, 0xfff00000,
47.23838 ++      &avr32_syntax_table[AVR32_SYNTAX_SREQ],
47.23839 ++      BFD_RELOC_UNUSED, 1, -1,
47.23840 ++      {
47.23841 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23842 ++      },
47.23843 ++    },
47.23844 ++    {
47.23845 ++      AVR32_OPC_SRNE, 2, 0x5f100000, 0xfff00000,
47.23846 ++      &avr32_syntax_table[AVR32_SYNTAX_SRNE],
47.23847 ++      BFD_RELOC_UNUSED, 1, -1,
47.23848 ++      {
47.23849 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23850 ++      },
47.23851 ++    },
47.23852 ++    {
47.23853 ++      AVR32_OPC_SRCC, 2, 0x5f200000, 0xfff00000,
47.23854 ++      &avr32_syntax_table[AVR32_SYNTAX_SRHS],
47.23855 ++      BFD_RELOC_UNUSED, 1, -1,
47.23856 ++      {
47.23857 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23858 ++      },
47.23859 ++    },
47.23860 ++    {
47.23861 ++      AVR32_OPC_SRCS, 2, 0x5f300000, 0xfff00000,
47.23862 ++      &avr32_syntax_table[AVR32_SYNTAX_SRLO],
47.23863 ++      BFD_RELOC_UNUSED, 1, -1,
47.23864 ++      {
47.23865 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23866 ++      },
47.23867 ++    },
47.23868 ++    {
47.23869 ++      AVR32_OPC_SRGE, 2, 0x5f400000, 0xfff00000,
47.23870 ++      &avr32_syntax_table[AVR32_SYNTAX_SRGE],
47.23871 ++      BFD_RELOC_UNUSED, 1, -1,
47.23872 ++      {
47.23873 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23874 ++      },
47.23875 ++    },
47.23876 ++    {
47.23877 ++      AVR32_OPC_SRLT, 2, 0x5f500000, 0xfff00000,
47.23878 ++      &avr32_syntax_table[AVR32_SYNTAX_SRLT],
47.23879 ++      BFD_RELOC_UNUSED, 1, -1,
47.23880 ++      {
47.23881 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23882 ++      },
47.23883 ++    },
47.23884 ++    {
47.23885 ++      AVR32_OPC_SRMI, 2, 0x5f600000, 0xfff00000,
47.23886 ++      &avr32_syntax_table[AVR32_SYNTAX_SRMI],
47.23887 ++      BFD_RELOC_UNUSED, 1, -1,
47.23888 ++      {
47.23889 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23890 ++      },
47.23891 ++    },
47.23892 ++    {
47.23893 ++      AVR32_OPC_SRPL, 2, 0x5f700000, 0xfff00000,
47.23894 ++      &avr32_syntax_table[AVR32_SYNTAX_SRPL],
47.23895 ++      BFD_RELOC_UNUSED, 1, -1,
47.23896 ++      {
47.23897 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23898 ++      },
47.23899 ++    },
47.23900 ++    {
47.23901 ++      AVR32_OPC_SRLS, 2, 0x5f800000, 0xfff00000,
47.23902 ++      &avr32_syntax_table[AVR32_SYNTAX_SRLS],
47.23903 ++      BFD_RELOC_UNUSED, 1, -1,
47.23904 ++      {
47.23905 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23906 ++      },
47.23907 ++    },
47.23908 ++    {
47.23909 ++      AVR32_OPC_SRGT, 2, 0x5f900000, 0xfff00000,
47.23910 ++      &avr32_syntax_table[AVR32_SYNTAX_SRGT],
47.23911 ++      BFD_RELOC_UNUSED, 1, -1,
47.23912 ++      {
47.23913 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23914 ++      },
47.23915 ++    },
47.23916 ++    {
47.23917 ++      AVR32_OPC_SRLE, 2, 0x5fa00000, 0xfff00000,
47.23918 ++      &avr32_syntax_table[AVR32_SYNTAX_SRLE],
47.23919 ++      BFD_RELOC_UNUSED, 1, -1,
47.23920 ++      {
47.23921 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23922 ++      },
47.23923 ++    },
47.23924 ++    {
47.23925 ++      AVR32_OPC_SRHI, 2, 0x5fb00000, 0xfff00000,
47.23926 ++      &avr32_syntax_table[AVR32_SYNTAX_SRHI],
47.23927 ++      BFD_RELOC_UNUSED, 1, -1,
47.23928 ++      {
47.23929 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23930 ++      },
47.23931 ++    },
47.23932 ++    {
47.23933 ++      AVR32_OPC_SRVS, 2, 0x5fc00000, 0xfff00000,
47.23934 ++      &avr32_syntax_table[AVR32_SYNTAX_SRVS],
47.23935 ++      BFD_RELOC_UNUSED, 1, -1,
47.23936 ++      {
47.23937 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23938 ++      },
47.23939 ++    },
47.23940 ++    {
47.23941 ++      AVR32_OPC_SRVC, 2, 0x5fd00000, 0xfff00000,
47.23942 ++      &avr32_syntax_table[AVR32_SYNTAX_SRVC],
47.23943 ++      BFD_RELOC_UNUSED, 1, -1,
47.23944 ++      {
47.23945 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23946 ++      },
47.23947 ++    },
47.23948 ++    {
47.23949 ++      AVR32_OPC_SRQS, 2, 0x5fe00000, 0xfff00000,
47.23950 ++      &avr32_syntax_table[AVR32_SYNTAX_SRQS],
47.23951 ++      BFD_RELOC_UNUSED, 1, -1,
47.23952 ++      {
47.23953 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23954 ++      },
47.23955 ++    },
47.23956 ++    {
47.23957 ++      AVR32_OPC_SRAL, 2, 0x5ff00000, 0xfff00000,
47.23958 ++      &avr32_syntax_table[AVR32_SYNTAX_SRAL],
47.23959 ++      BFD_RELOC_UNUSED, 1, -1,
47.23960 ++      {
47.23961 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23962 ++      },
47.23963 ++    },
47.23964 ++    {
47.23965 ++      AVR32_OPC_SSRF, 2, 0xd2030000, 0xfe0f0000,
47.23966 ++      &avr32_syntax_table[AVR32_SYNTAX_SSRF],
47.23967 ++      BFD_RELOC_UNUSED, 1, -1,
47.23968 ++      {
47.23969 ++	&avr32_ifield_table[AVR32_IFIELD_K5C],
47.23970 ++      },
47.23971 ++    },
47.23972 ++    {
47.23973 ++      AVR32_OPC_ST_B1, 2, 0x00c00000, 0xe1f00000,
47.23974 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_B1],
47.23975 ++      BFD_RELOC_UNUSED, 2, -1,
47.23976 ++      {
47.23977 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23978 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23979 ++      },
47.23980 ++    },
47.23981 ++    {
47.23982 ++      AVR32_OPC_ST_B2, 2, 0x00f00000, 0xe1f00000,
47.23983 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_B2],
47.23984 ++      BFD_RELOC_UNUSED, 2, -1,
47.23985 ++      {
47.23986 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23987 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23988 ++      },
47.23989 ++    },
47.23990 ++    {
47.23991 ++      AVR32_OPC_ST_B5, 4, 0xe0000b00, 0xe1f0ffc0,
47.23992 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_B5],
47.23993 ++      BFD_RELOC_UNUSED, 4, -1,
47.23994 ++      {
47.23995 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.23996 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.23997 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.23998 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.23999 ++      },
47.24000 ++    },
47.24001 ++    {
47.24002 ++      AVR32_OPC_ST_B3, 2, 0xa0800000, 0xe1800000,
47.24003 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_B3],
47.24004 ++      BFD_RELOC_AVR32_3U, 3, 1,
47.24005 ++      {
47.24006 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24007 ++	&avr32_ifield_table[AVR32_IFIELD_K3],
47.24008 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24009 ++      },
47.24010 ++    },
47.24011 ++    {
47.24012 ++      AVR32_OPC_ST_B4, 4, 0xe1600000, 0xe1f00000,
47.24013 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_B4],
47.24014 ++      BFD_RELOC_AVR32_16S, 3, 1,
47.24015 ++      {
47.24016 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24017 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.24018 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24019 ++      },
47.24020 ++    },
47.24021 ++    {
47.24022 ++      AVR32_OPC_ST_D1, 2, 0xa1200000, 0xe1f10000,
47.24023 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_D1],
47.24024 ++      BFD_RELOC_UNUSED, 2, -1,
47.24025 ++      {
47.24026 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24027 ++	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
47.24028 ++      },
47.24029 ++    },
47.24030 ++    {
47.24031 ++      AVR32_OPC_ST_D2, 2, 0xa1210000, 0xe1f10000,
47.24032 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_D2],
47.24033 ++      BFD_RELOC_UNUSED, 2, -1,
47.24034 ++      {
47.24035 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24036 ++	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
47.24037 ++      },
47.24038 ++    },
47.24039 ++    {
47.24040 ++      AVR32_OPC_ST_D3, 2, 0xa1110000, 0xe1f10000,
47.24041 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_D3],
47.24042 ++      BFD_RELOC_UNUSED, 2, -1,
47.24043 ++      {
47.24044 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24045 ++	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
47.24046 ++      },
47.24047 ++    },
47.24048 ++    {
47.24049 ++      AVR32_OPC_ST_D5, 4, 0xe0000800, 0xe1f0ffc1,
47.24050 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_D5],
47.24051 ++      BFD_RELOC_UNUSED, 4, -1,
47.24052 ++      {
47.24053 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24054 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24055 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.24056 ++	&avr32_ifield_table[AVR32_IFIELD_RD_DW],
47.24057 ++      },
47.24058 ++    },
47.24059 ++    {
47.24060 ++      AVR32_OPC_ST_D4, 4, 0xe0e10000, 0xe1f10000,
47.24061 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_D4],
47.24062 ++      BFD_RELOC_AVR32_16S, 3, 1,
47.24063 ++      {
47.24064 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24065 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.24066 ++	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
47.24067 ++      },
47.24068 ++    },
47.24069 ++    {
47.24070 ++      AVR32_OPC_ST_H1, 2, 0x00b00000, 0xe1f00000,
47.24071 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_H1],
47.24072 ++      BFD_RELOC_UNUSED, 2, -1,
47.24073 ++      {
47.24074 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24075 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24076 ++      },
47.24077 ++    },
47.24078 ++    {
47.24079 ++      AVR32_OPC_ST_H2, 2, 0x00e00000, 0xe1f00000,
47.24080 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_H2],
47.24081 ++      BFD_RELOC_UNUSED, 2, -1,
47.24082 ++      {
47.24083 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24084 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24085 ++      },
47.24086 ++    },
47.24087 ++    {
47.24088 ++      AVR32_OPC_ST_H5, 4, 0xe0000a00, 0xe1f0ffc0,
47.24089 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_H5],
47.24090 ++      BFD_RELOC_UNUSED, 4, -1,
47.24091 ++      {
47.24092 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24093 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24094 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.24095 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.24096 ++      },
47.24097 ++    },
47.24098 ++    {
47.24099 ++      AVR32_OPC_ST_H3, 2, 0xa0000000, 0xe1800000,
47.24100 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_H3],
47.24101 ++      BFD_RELOC_AVR32_4UH, 3, 1,
47.24102 ++      {
47.24103 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24104 ++	&avr32_ifield_table[AVR32_IFIELD_K3],
47.24105 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24106 ++      },
47.24107 ++    },
47.24108 ++    {
47.24109 ++      AVR32_OPC_ST_H4, 4, 0xe1500000, 0xe1f00000,
47.24110 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_H4],
47.24111 ++      BFD_RELOC_AVR32_16S, 3, 1,
47.24112 ++      {
47.24113 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24114 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.24115 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24116 ++      },
47.24117 ++    },
47.24118 ++    {
47.24119 ++      AVR32_OPC_ST_W1, 2, 0x00a00000, 0xe1f00000,
47.24120 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_W1],
47.24121 ++      BFD_RELOC_UNUSED, 2, -1,
47.24122 ++      {
47.24123 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24124 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24125 ++      },
47.24126 ++    },
47.24127 ++    {
47.24128 ++      AVR32_OPC_ST_W2, 2, 0x00d00000, 0xe1f00000,
47.24129 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_W2],
47.24130 ++      BFD_RELOC_UNUSED, 2, -1,
47.24131 ++      {
47.24132 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24133 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24134 ++      },
47.24135 ++    },
47.24136 ++    {
47.24137 ++      AVR32_OPC_ST_W5, 4, 0xe0000900, 0xe1f0ffc0,
47.24138 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_W5],
47.24139 ++      BFD_RELOC_UNUSED, 4, -1,
47.24140 ++      {
47.24141 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24142 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24143 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.24144 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.24145 ++      },
47.24146 ++    },
47.24147 ++    {
47.24148 ++      AVR32_OPC_ST_W3, 2, 0x81000000, 0xe1000000,
47.24149 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_W3],
47.24150 ++      BFD_RELOC_AVR32_6UW, 3, 1,
47.24151 ++      {
47.24152 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24153 ++	&avr32_ifield_table[AVR32_IFIELD_K4],
47.24154 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24155 ++      },
47.24156 ++    },
47.24157 ++    {
47.24158 ++      AVR32_OPC_ST_W4, 4, 0xe1400000, 0xe1f00000,
47.24159 ++      &avr32_syntax_table[AVR32_SYNTAX_ST_W4],
47.24160 ++      BFD_RELOC_AVR32_16S, 3, 1,
47.24161 ++      {
47.24162 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24163 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.24164 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24165 ++      },
47.24166 ++    },
47.24167 ++    {
47.24168 ++      AVR32_OPC_STC_D1, 4, 0xeba01000, 0xfff01100,
47.24169 ++      &avr32_syntax_table[AVR32_SYNTAX_STC_D1],
47.24170 ++      BFD_RELOC_AVR32_10UW, 4, 2,
47.24171 ++      {
47.24172 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.24173 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24174 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24175 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
47.24176 ++      },
47.24177 ++    },
47.24178 ++    {
47.24179 ++      AVR32_OPC_STC_D2, 4, 0xefa00070, 0xfff011f0,
47.24180 ++      &avr32_syntax_table[AVR32_SYNTAX_STC_D2],
47.24181 ++      BFD_RELOC_UNUSED, 3, -1,
47.24182 ++      {
47.24183 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.24184 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24185 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
47.24186 ++      },
47.24187 ++    },
47.24188 ++    {
47.24189 ++      AVR32_OPC_STC_D3, 4, 0xefa010c0, 0xfff011c0,
47.24190 ++      &avr32_syntax_table[AVR32_SYNTAX_STC_D3],
47.24191 ++      BFD_RELOC_UNUSED, 5, -1,
47.24192 ++      {
47.24193 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.24194 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24195 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.24196 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.24197 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
47.24198 ++      },
47.24199 ++    },
47.24200 ++    {
47.24201 ++      AVR32_OPC_STC_W1, 4, 0xeba00000, 0xfff01000,
47.24202 ++      &avr32_syntax_table[AVR32_SYNTAX_STC_W1],
47.24203 ++      BFD_RELOC_AVR32_10UW, 4, 2,
47.24204 ++      {
47.24205 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.24206 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24207 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24208 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
47.24209 ++      },
47.24210 ++    },
47.24211 ++    {
47.24212 ++      AVR32_OPC_STC_W2, 4, 0xefa00060, 0xfff010ff,
47.24213 ++      &avr32_syntax_table[AVR32_SYNTAX_STC_W2],
47.24214 ++      BFD_RELOC_UNUSED, 3, -1,
47.24215 ++      {
47.24216 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.24217 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24218 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
47.24219 ++      },
47.24220 ++    },
47.24221 ++    {
47.24222 ++      AVR32_OPC_STC_W3, 4, 0xefa01080, 0xfff010c0,
47.24223 ++      &avr32_syntax_table[AVR32_SYNTAX_STC_W3],
47.24224 ++      BFD_RELOC_UNUSED, 5, -1,
47.24225 ++      {
47.24226 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.24227 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24228 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.24229 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.24230 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
47.24231 ++      },
47.24232 ++    },
47.24233 ++    {
47.24234 ++      AVR32_OPC_STC0_D, 4, 0xf7a00000, 0xfff00100,
47.24235 ++      &avr32_syntax_table[AVR32_SYNTAX_STC0_D],
47.24236 ++      BFD_RELOC_AVR32_14UW, 3, 1,
47.24237 ++      {
47.24238 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24239 ++	&avr32_ifield_table[AVR32_IFIELD_K12CP],
47.24240 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
47.24241 ++      },
47.24242 ++    },
47.24243 ++    {
47.24244 ++      AVR32_OPC_STC0_W, 4, 0xf5a00000, 0xfff00000,
47.24245 ++      &avr32_syntax_table[AVR32_SYNTAX_STC0_W],
47.24246 ++      BFD_RELOC_AVR32_14UW, 3, 1,
47.24247 ++      {
47.24248 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24249 ++	&avr32_ifield_table[AVR32_IFIELD_K12CP],
47.24250 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
47.24251 ++      },
47.24252 ++    },
47.24253 ++    {
47.24254 ++      AVR32_OPC_STCM_D, 4, 0xeda00500, 0xfff01f00,
47.24255 ++      &avr32_syntax_table[AVR32_SYNTAX_STCM_D],
47.24256 ++      BFD_RELOC_UNUSED, 3, -1,
47.24257 ++      {
47.24258 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.24259 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24260 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24261 ++      },
47.24262 ++    },
47.24263 ++    {
47.24264 ++      AVR32_OPC_STCM_D_PU, 4, 0xeda01500, 0xfff01f00,
47.24265 ++      &avr32_syntax_table[AVR32_SYNTAX_STCM_D_PU],
47.24266 ++      BFD_RELOC_UNUSED, 3, -1,
47.24267 ++      {
47.24268 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.24269 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24270 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24271 ++      },
47.24272 ++    },
47.24273 ++    {
47.24274 ++      AVR32_OPC_STCM_W, 4, 0xeda00200, 0xfff01e00,
47.24275 ++      &avr32_syntax_table[AVR32_SYNTAX_STCM_W],
47.24276 ++      BFD_RELOC_UNUSED, 4, -1,
47.24277 ++      {
47.24278 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.24279 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24280 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24281 ++	&avr32_ifield_table[AVR32_IFIELD_CM_HL],
47.24282 ++      },
47.24283 ++    },
47.24284 ++    {
47.24285 ++      AVR32_OPC_STCM_W_PU, 4, 0xeda01200, 0xfff01e00,
47.24286 ++      &avr32_syntax_table[AVR32_SYNTAX_STCM_W_PU],
47.24287 ++      BFD_RELOC_UNUSED, 4, -1,
47.24288 ++      {
47.24289 ++	&avr32_ifield_table[AVR32_IFIELD_CPNO],
47.24290 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24291 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24292 ++	&avr32_ifield_table[AVR32_IFIELD_CM_HL],
47.24293 ++      },
47.24294 ++    },
47.24295 ++    {
47.24296 ++      AVR32_OPC_STCOND, 4, 0xe1700000, 0xe1f00000,
47.24297 ++      &avr32_syntax_table[AVR32_SYNTAX_STCOND],
47.24298 ++      BFD_RELOC_UNUSED, 3, -1,
47.24299 ++      {
47.24300 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24301 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.24302 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24303 ++      },
47.24304 ++    },
47.24305 ++    {
47.24306 ++      AVR32_OPC_STDSP, 2, 0x50000000, 0xf8000000,
47.24307 ++      &avr32_syntax_table[AVR32_SYNTAX_STDSP],
47.24308 ++      BFD_RELOC_UNUSED, 2, -1,
47.24309 ++      {
47.24310 ++	&avr32_ifield_table[AVR32_IFIELD_K7C],
47.24311 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24312 ++      },
47.24313 ++    },
47.24314 ++    {
47.24315 ++      AVR32_OPC_STHH_W2, 4, 0xe1e08000, 0xe1f0c0c0,
47.24316 ++      &avr32_syntax_table[AVR32_SYNTAX_STHH_W2],
47.24317 ++      BFD_RELOC_UNUSED, 7, -1,
47.24318 ++      {
47.24319 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.24320 ++	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
47.24321 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.24322 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24323 ++	&avr32_ifield_table[AVR32_IFIELD_X2],
47.24324 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24325 ++	&avr32_ifield_table[AVR32_IFIELD_Y2],
47.24326 ++      },
47.24327 ++    },
47.24328 ++    {
47.24329 ++      AVR32_OPC_STHH_W1, 4, 0xe1e0c000, 0xe1f0c000,
47.24330 ++      &avr32_syntax_table[AVR32_SYNTAX_STHH_W1],
47.24331 ++      BFD_RELOC_AVR32_STHH_W, 6, 1,
47.24332 ++      {
47.24333 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.24334 ++	&avr32_ifield_table[AVR32_IFIELD_K8E2],
47.24335 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24336 ++	&avr32_ifield_table[AVR32_IFIELD_X2],
47.24337 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24338 ++	&avr32_ifield_table[AVR32_IFIELD_Y2],
47.24339 ++      },
47.24340 ++    },
47.24341 ++    {
47.24342 ++      AVR32_OPC_STM, 4, 0xe9c00000, 0xfff00000,
47.24343 ++      &avr32_syntax_table[AVR32_SYNTAX_STM],
47.24344 ++      BFD_RELOC_UNUSED, 2, -1,
47.24345 ++      {
47.24346 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24347 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.24348 ++      },
47.24349 ++    },
47.24350 ++    {
47.24351 ++      AVR32_OPC_STM_PU, 4, 0xebc00000, 0xfff00000,
47.24352 ++      &avr32_syntax_table[AVR32_SYNTAX_STM_PU],
47.24353 ++      BFD_RELOC_UNUSED, 2, -1,
47.24354 ++      {
47.24355 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24356 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.24357 ++      },
47.24358 ++    },
47.24359 ++    {
47.24360 ++      AVR32_OPC_STMTS, 4, 0xedc00000, 0xfff00000,
47.24361 ++      &avr32_syntax_table[AVR32_SYNTAX_STMTS],
47.24362 ++      BFD_RELOC_UNUSED, 2, -1,
47.24363 ++      {
47.24364 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24365 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.24366 ++      },
47.24367 ++    },
47.24368 ++    {
47.24369 ++      AVR32_OPC_STMTS_PU, 4, 0xefc00000, 0xfff00000,
47.24370 ++      &avr32_syntax_table[AVR32_SYNTAX_STMTS_PU],
47.24371 ++      BFD_RELOC_UNUSED, 2, -1,
47.24372 ++      {
47.24373 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24374 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.24375 ++      },
47.24376 ++    },
47.24377 ++    {
47.24378 ++      AVR32_OPC_STSWP_H, 4, 0xe1d09000, 0xe1f0f000,
47.24379 ++      &avr32_syntax_table[AVR32_SYNTAX_STSWP_H],
47.24380 ++      BFD_RELOC_UNUSED, 3, -1,
47.24381 ++      {
47.24382 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24383 ++	&avr32_ifield_table[AVR32_IFIELD_K12],
47.24384 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24385 ++      },
47.24386 ++    },
47.24387 ++    {
47.24388 ++      AVR32_OPC_STSWP_W, 4, 0xe1d0a000, 0xe1f0f000,
47.24389 ++      &avr32_syntax_table[AVR32_SYNTAX_STSWP_W],
47.24390 ++      BFD_RELOC_UNUSED, 3, -1,
47.24391 ++      {
47.24392 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24393 ++	&avr32_ifield_table[AVR32_IFIELD_K12],
47.24394 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24395 ++      },
47.24396 ++    },
47.24397 ++    {
47.24398 ++      AVR32_OPC_SUB1, 2, 0x00100000, 0xe1f00000,
47.24399 ++      &avr32_syntax_table[AVR32_SYNTAX_SUB1],
47.24400 ++      BFD_RELOC_UNUSED, 2, -1,
47.24401 ++      {
47.24402 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24403 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24404 ++      },
47.24405 ++    },
47.24406 ++    {
47.24407 ++      AVR32_OPC_SUB2, 4, 0xe0000100, 0xe1f0ffc0,
47.24408 ++      &avr32_syntax_table[AVR32_SYNTAX_SUB2],
47.24409 ++      BFD_RELOC_UNUSED, 4, -1,
47.24410 ++      {
47.24411 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.24412 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24413 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24414 ++	&avr32_ifield_table[AVR32_IFIELD_K2],
47.24415 ++      },
47.24416 ++    },
47.24417 ++    {
47.24418 ++      AVR32_OPC_SUB5, 4, 0xe0c00000, 0xe1f00000,
47.24419 ++      &avr32_syntax_table[AVR32_SYNTAX_SUB5],
47.24420 ++      BFD_RELOC_AVR32_SUB5, 3, 2,
47.24421 ++      {
47.24422 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24423 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24424 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.24425 ++      },
47.24426 ++    },
47.24427 ++    {
47.24428 ++      AVR32_OPC_SUB3_SP, 2, 0x200d0000, 0xf00f0000,
47.24429 ++      &avr32_syntax_table[AVR32_SYNTAX_SUB3_SP],
47.24430 ++      BFD_RELOC_AVR32_10SW, 2, 1,
47.24431 ++      {
47.24432 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24433 ++	&avr32_ifield_table[AVR32_IFIELD_K8C],
47.24434 ++      },
47.24435 ++    },
47.24436 ++    {
47.24437 ++      AVR32_OPC_SUB3, 2, 0x20000000, 0xf0000000,
47.24438 ++      &avr32_syntax_table[AVR32_SYNTAX_SUB3],
47.24439 ++      BFD_RELOC_AVR32_8S, 2, 1,
47.24440 ++      {
47.24441 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24442 ++	&avr32_ifield_table[AVR32_IFIELD_K8C],
47.24443 ++      },
47.24444 ++    },
47.24445 ++    {
47.24446 ++      AVR32_OPC_SUB4, 4, 0xe0200000, 0xe1e00000,
47.24447 ++      &avr32_syntax_table[AVR32_SYNTAX_SUB4],
47.24448 ++      BFD_RELOC_AVR32_21S, 2, 1,
47.24449 ++      {
47.24450 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24451 ++	&avr32_ifield_table[AVR32_IFIELD_K21],
47.24452 ++      },
47.24453 ++    },
47.24454 ++    {
47.24455 ++      AVR32_OPC_SUBEQ, 4, 0xf7b00000, 0xfff0ff00,
47.24456 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBEQ],
47.24457 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24458 ++      {
47.24459 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24460 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24461 ++      },
47.24462 ++    },
47.24463 ++    {
47.24464 ++      AVR32_OPC_SUBNE, 4, 0xf7b00100, 0xfff0ff00,
47.24465 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBNE],
47.24466 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24467 ++      {
47.24468 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24469 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24470 ++      },
47.24471 ++    },
47.24472 ++    {
47.24473 ++      AVR32_OPC_SUBCC, 4, 0xf7b00200, 0xfff0ff00,
47.24474 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBHS],
47.24475 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24476 ++      {
47.24477 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24478 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24479 ++      },
47.24480 ++    },
47.24481 ++    {
47.24482 ++      AVR32_OPC_SUBCS, 4, 0xf7b00300, 0xfff0ff00,
47.24483 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBLO],
47.24484 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24485 ++      {
47.24486 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24487 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24488 ++      },
47.24489 ++    },
47.24490 ++    {
47.24491 ++      AVR32_OPC_SUBGE, 4, 0xf7b00400, 0xfff0ff00,
47.24492 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBGE],
47.24493 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24494 ++      {
47.24495 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24496 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24497 ++      },
47.24498 ++    },
47.24499 ++    {
47.24500 ++      AVR32_OPC_SUBLT, 4, 0xf7b00500, 0xfff0ff00,
47.24501 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBLT],
47.24502 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24503 ++      {
47.24504 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24505 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24506 ++      },
47.24507 ++    },
47.24508 ++    {
47.24509 ++      AVR32_OPC_SUBMI, 4, 0xf7b00600, 0xfff0ff00,
47.24510 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBMI],
47.24511 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24512 ++      {
47.24513 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24514 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24515 ++      },
47.24516 ++    },
47.24517 ++    {
47.24518 ++      AVR32_OPC_SUBPL, 4, 0xf7b00700, 0xfff0ff00,
47.24519 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBPL],
47.24520 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24521 ++      {
47.24522 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24523 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24524 ++      },
47.24525 ++    },
47.24526 ++    {
47.24527 ++      AVR32_OPC_SUBLS, 4, 0xf7b00800, 0xfff0ff00,
47.24528 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBLS],
47.24529 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24530 ++      {
47.24531 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24532 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24533 ++      },
47.24534 ++    },
47.24535 ++    {
47.24536 ++      AVR32_OPC_SUBGT, 4, 0xf7b00900, 0xfff0ff00,
47.24537 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBGT],
47.24538 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24539 ++      {
47.24540 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24541 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24542 ++      },
47.24543 ++    },
47.24544 ++    {
47.24545 ++      AVR32_OPC_SUBLE, 4, 0xf7b00a00, 0xfff0ff00,
47.24546 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBLE],
47.24547 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24548 ++      {
47.24549 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24550 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24551 ++      },
47.24552 ++    },
47.24553 ++    {
47.24554 ++      AVR32_OPC_SUBHI, 4, 0xf7b00b00, 0xfff0ff00,
47.24555 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBHI],
47.24556 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24557 ++      {
47.24558 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24559 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24560 ++      },
47.24561 ++    },
47.24562 ++    {
47.24563 ++      AVR32_OPC_SUBVS, 4, 0xf7b00c00, 0xfff0ff00,
47.24564 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBVS],
47.24565 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24566 ++      {
47.24567 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24568 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24569 ++      },
47.24570 ++    },
47.24571 ++    {
47.24572 ++      AVR32_OPC_SUBVC, 4, 0xf7b00d00, 0xfff0ff00,
47.24573 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBVC],
47.24574 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24575 ++      {
47.24576 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24577 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24578 ++      },
47.24579 ++    },
47.24580 ++    {
47.24581 ++      AVR32_OPC_SUBQS, 4, 0xf7b00e00, 0xfff0ff00,
47.24582 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBQS],
47.24583 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24584 ++      {
47.24585 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24586 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24587 ++      },
47.24588 ++    },
47.24589 ++    {
47.24590 ++      AVR32_OPC_SUBAL, 4, 0xf7b00f00, 0xfff0ff00,
47.24591 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBAL],
47.24592 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24593 ++      {
47.24594 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24595 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24596 ++      },
47.24597 ++    },
47.24598 ++    {
47.24599 ++      AVR32_OPC_SUBFEQ, 4, 0xf5b00000, 0xfff0ff00,
47.24600 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBFEQ],
47.24601 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24602 ++      {
47.24603 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24604 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24605 ++      },
47.24606 ++    },
47.24607 ++    {
47.24608 ++      AVR32_OPC_SUBFNE, 4, 0xf5b00100, 0xfff0ff00,
47.24609 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBFNE],
47.24610 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24611 ++      {
47.24612 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24613 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24614 ++      },
47.24615 ++    },
47.24616 ++    {
47.24617 ++      AVR32_OPC_SUBFCC, 4, 0xf5b00200, 0xfff0ff00,
47.24618 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBFHS],
47.24619 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24620 ++      {
47.24621 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24622 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24623 ++      },
47.24624 ++    },
47.24625 ++    {
47.24626 ++      AVR32_OPC_SUBFCS, 4, 0xf5b00300, 0xfff0ff00,
47.24627 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBFLO],
47.24628 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24629 ++      {
47.24630 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24631 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24632 ++      },
47.24633 ++    },
47.24634 ++    {
47.24635 ++      AVR32_OPC_SUBFGE, 4, 0xf5b00400, 0xfff0ff00,
47.24636 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBFGE],
47.24637 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24638 ++      {
47.24639 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24640 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24641 ++      },
47.24642 ++    },
47.24643 ++    {
47.24644 ++      AVR32_OPC_SUBFLT, 4, 0xf5b00500, 0xfff0ff00,
47.24645 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBFLT],
47.24646 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24647 ++      {
47.24648 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24649 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24650 ++      },
47.24651 ++    },
47.24652 ++    {
47.24653 ++      AVR32_OPC_SUBFMI, 4, 0xf5b00600, 0xfff0ff00,
47.24654 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBFMI],
47.24655 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24656 ++      {
47.24657 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24658 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24659 ++      },
47.24660 ++    },
47.24661 ++    {
47.24662 ++      AVR32_OPC_SUBFPL, 4, 0xf5b00700, 0xfff0ff00,
47.24663 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBFPL],
47.24664 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24665 ++      {
47.24666 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24667 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24668 ++      },
47.24669 ++    },
47.24670 ++    {
47.24671 ++      AVR32_OPC_SUBFLS, 4, 0xf5b00800, 0xfff0ff00,
47.24672 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBFLS],
47.24673 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24674 ++      {
47.24675 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24676 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24677 ++      },
47.24678 ++    },
47.24679 ++    {
47.24680 ++      AVR32_OPC_SUBFGT, 4, 0xf5b00900, 0xfff0ff00,
47.24681 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBFGT],
47.24682 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24683 ++      {
47.24684 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24685 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24686 ++      },
47.24687 ++    },
47.24688 ++    {
47.24689 ++      AVR32_OPC_SUBFLE, 4, 0xf5b00a00, 0xfff0ff00,
47.24690 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBFLE],
47.24691 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24692 ++      {
47.24693 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24694 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24695 ++      },
47.24696 ++    },
47.24697 ++    {
47.24698 ++      AVR32_OPC_SUBFHI, 4, 0xf5b00b00, 0xfff0ff00,
47.24699 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBFHI],
47.24700 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24701 ++      {
47.24702 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24703 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24704 ++      },
47.24705 ++    },
47.24706 ++    {
47.24707 ++      AVR32_OPC_SUBFVS, 4, 0xf5b00c00, 0xfff0ff00,
47.24708 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBFVS],
47.24709 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24710 ++      {
47.24711 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24712 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24713 ++      },
47.24714 ++    },
47.24715 ++    {
47.24716 ++      AVR32_OPC_SUBFVC, 4, 0xf5b00d00, 0xfff0ff00,
47.24717 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBFVC],
47.24718 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24719 ++      {
47.24720 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24721 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24722 ++      },
47.24723 ++    },
47.24724 ++    {
47.24725 ++      AVR32_OPC_SUBFQS, 4, 0xf5b00e00, 0xfff0ff00,
47.24726 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBFQS],
47.24727 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24728 ++      {
47.24729 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24730 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24731 ++      },
47.24732 ++    },
47.24733 ++    {
47.24734 ++      AVR32_OPC_SUBFAL, 4, 0xf5b00f00, 0xfff0ff00,
47.24735 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBFAL],
47.24736 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,
47.24737 ++      {
47.24738 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24739 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24740 ++      },
47.24741 ++    },
47.24742 ++    {
47.24743 ++      AVR32_OPC_SUBHH_W, 4, 0xe0000f00, 0xe1f0ffc0,
47.24744 ++      &avr32_syntax_table[AVR32_SYNTAX_SUBHH_W],
47.24745 ++      BFD_RELOC_UNUSED, 5, -1,
47.24746 ++      {
47.24747 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.24748 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24749 ++	&avr32_ifield_table[AVR32_IFIELD_X],
47.24750 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24751 ++	&avr32_ifield_table[AVR32_IFIELD_Y],
47.24752 ++      },
47.24753 ++    },
47.24754 ++    {
47.24755 ++      AVR32_OPC_SWAP_B, 2, 0x5cb00000, 0xfff00000,
47.24756 ++      &avr32_syntax_table[AVR32_SYNTAX_SWAP_B],
47.24757 ++      BFD_RELOC_UNUSED, 1, -1,
47.24758 ++      {
47.24759 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24760 ++      }
47.24761 ++    },
47.24762 ++    {
47.24763 ++      AVR32_OPC_SWAP_BH, 2, 0x5cc00000, 0xfff00000,
47.24764 ++      &avr32_syntax_table[AVR32_SYNTAX_SWAP_BH],
47.24765 ++      BFD_RELOC_UNUSED, 1, -1,
47.24766 ++      {
47.24767 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24768 ++      }
47.24769 ++    },
47.24770 ++    {
47.24771 ++      AVR32_OPC_SWAP_H, 2, 0x5ca00000, 0xfff00000,
47.24772 ++      &avr32_syntax_table[AVR32_SYNTAX_SWAP_H],
47.24773 ++      BFD_RELOC_UNUSED, 1, -1,
47.24774 ++      {
47.24775 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24776 ++      }
47.24777 ++    },
47.24778 ++    {
47.24779 ++      AVR32_OPC_SYNC, 4, 0xebb00000, 0xffffff00,
47.24780 ++      &avr32_syntax_table[AVR32_SYNTAX_SYNC],
47.24781 ++      BFD_RELOC_AVR32_8S_EXT, 1, 0,
47.24782 ++      {
47.24783 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],
47.24784 ++      }
47.24785 ++    },
47.24786 ++    {
47.24787 ++      AVR32_OPC_TLBR, 2, 0xd6430000, 0xffff0000,
47.24788 ++      &avr32_syntax_table[AVR32_SYNTAX_TLBR],
47.24789 ++      BFD_RELOC_UNUSED, 0, -1, { NULL },
47.24790 ++    },
47.24791 ++    {
47.24792 ++      AVR32_OPC_TLBS, 2, 0xd6530000, 0xffff0000,
47.24793 ++      &avr32_syntax_table[AVR32_SYNTAX_TLBS],
47.24794 ++      BFD_RELOC_UNUSED, 0, -1, { NULL },
47.24795 ++    },
47.24796 ++    {
47.24797 ++      AVR32_OPC_TLBW, 2, 0xd6630000, 0xffff0000,
47.24798 ++      &avr32_syntax_table[AVR32_SYNTAX_TLBW],
47.24799 ++      BFD_RELOC_UNUSED, 0, -1, { NULL },
47.24800 ++    },
47.24801 ++    {
47.24802 ++      AVR32_OPC_TNBZ, 2, 0x5ce00000, 0xfff00000,
47.24803 ++      &avr32_syntax_table[AVR32_SYNTAX_TNBZ],
47.24804 ++      BFD_RELOC_UNUSED, 1, -1,
47.24805 ++      {
47.24806 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24807 ++      }
47.24808 ++    },
47.24809 ++    {
47.24810 ++      AVR32_OPC_TST, 2, 0x00700000, 0xe1f00000,
47.24811 ++      &avr32_syntax_table[AVR32_SYNTAX_TST],
47.24812 ++      BFD_RELOC_UNUSED, 2, -1,
47.24813 ++      {
47.24814 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24815 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24816 ++      },
47.24817 ++    },
47.24818 ++    {
47.24819 ++      AVR32_OPC_XCHG, 4, 0xe0000b40, 0xe1f0fff0,
47.24820 ++      &avr32_syntax_table[AVR32_SYNTAX_XCHG],
47.24821 ++      BFD_RELOC_UNUSED, 3, -1,
47.24822 ++      {
47.24823 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],
47.24824 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24825 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24826 ++      },
47.24827 ++    },
47.24828 ++    {
47.24829 ++      AVR32_OPC_MEMC, 4, 0xf6100000, 0xfff00000,
47.24830 ++      &avr32_syntax_table[AVR32_SYNTAX_MEMC],
47.24831 ++      BFD_RELOC_AVR32_15S, 2, 0,
47.24832 ++      {
47.24833 ++	&avr32_ifield_table[AVR32_IFIELD_MEM15],
47.24834 ++	&avr32_ifield_table[AVR32_IFIELD_MEMB5],
47.24835 ++      },
47.24836 ++    },
47.24837 ++    {
47.24838 ++      AVR32_OPC_MEMS, 4, 0xf8100000, 0xfff00000,
47.24839 ++      &avr32_syntax_table[AVR32_SYNTAX_MEMS],
47.24840 ++      BFD_RELOC_AVR32_15S, 2, 0,
47.24841 ++      {
47.24842 ++	&avr32_ifield_table[AVR32_IFIELD_MEM15],
47.24843 ++	&avr32_ifield_table[AVR32_IFIELD_MEMB5],
47.24844 ++      },
47.24845 ++    },
47.24846 ++    {
47.24847 ++      AVR32_OPC_MEMT, 4, 0xfa100000, 0xfff00000,
47.24848 ++      &avr32_syntax_table[AVR32_SYNTAX_MEMT],
47.24849 ++      BFD_RELOC_AVR32_15S, 2, 0,
47.24850 ++      {
47.24851 ++	&avr32_ifield_table[AVR32_IFIELD_MEM15],
47.24852 ++	&avr32_ifield_table[AVR32_IFIELD_MEMB5],
47.24853 ++      },
47.24854 ++    },
47.24855 ++    {
47.24856 ++      AVR32_OPC_BFEXTS, 4, 0xe1d0b000, 0xe1f0fc00,
47.24857 ++      &avr32_syntax_table[AVR32_SYNTAX_BFEXTS],
47.24858 ++      BFD_RELOC_UNUSED, 4, -1,
47.24859 ++      {
47.24860 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24861 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24862 ++	&avr32_ifield_table[AVR32_IFIELD_S5],
47.24863 ++	&avr32_ifield_table[AVR32_IFIELD_K5E],
47.24864 ++      },
47.24865 ++    },
47.24866 ++    {
47.24867 ++      AVR32_OPC_BFEXTU, 4, 0xe1d0c000, 0xe1f0fc00,
47.24868 ++      &avr32_syntax_table[AVR32_SYNTAX_BFEXTU],
47.24869 ++      BFD_RELOC_UNUSED, 4, -1,
47.24870 ++      {
47.24871 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24872 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24873 ++	&avr32_ifield_table[AVR32_IFIELD_S5],
47.24874 ++	&avr32_ifield_table[AVR32_IFIELD_K5E],
47.24875 ++      },
47.24876 ++    },
47.24877 ++    {
47.24878 ++      AVR32_OPC_BFINS, 4, 0xe1d0d000, 0xe1f0fc00,
47.24879 ++      &avr32_syntax_table[AVR32_SYNTAX_BFINS],
47.24880 ++      BFD_RELOC_UNUSED, 4, -1,
47.24881 ++      {
47.24882 ++	&avr32_ifield_table[AVR32_IFIELD_RX],
47.24883 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.24884 ++	&avr32_ifield_table[AVR32_IFIELD_S5],
47.24885 ++	&avr32_ifield_table[AVR32_IFIELD_K5E],
47.24886 ++      },
47.24887 ++    },
47.24888 ++#define AVR32_OPCODE_RSUBCOND(cond_name, cond_field)                    \
47.24889 ++    {                                                                   \
47.24890 ++      AVR32_OPC_RSUB ## cond_name , 4,                                  \
47.24891 ++      0xfbb00000 | (cond_field << 8), 0xfff0ff00,                       \
47.24892 ++      &avr32_syntax_table[AVR32_SYNTAX_RSUB ## cond_name ],             \
47.24893 ++      BFD_RELOC_AVR32_8S_EXT, 2, 1,                                     \
47.24894 ++      {                                                                 \
47.24895 ++	&avr32_ifield_table[AVR32_IFIELD_RY],                           \
47.24896 ++	&avr32_ifield_table[AVR32_IFIELD_K8E],                          \
47.24897 ++      },                                                                \
47.24898 ++    },
47.24899 ++
47.24900 ++    AVR32_OPCODE_RSUBCOND (EQ, 0) 
47.24901 ++    AVR32_OPCODE_RSUBCOND (NE, 1) 
47.24902 ++    AVR32_OPCODE_RSUBCOND (CC, 2) 
47.24903 ++    AVR32_OPCODE_RSUBCOND (CS, 3) 
47.24904 ++    AVR32_OPCODE_RSUBCOND (GE, 4) 
47.24905 ++    AVR32_OPCODE_RSUBCOND (LT, 5) 
47.24906 ++    AVR32_OPCODE_RSUBCOND (MI, 6) 
47.24907 ++    AVR32_OPCODE_RSUBCOND (PL, 7) 
47.24908 ++    AVR32_OPCODE_RSUBCOND (LS, 8) 
47.24909 ++    AVR32_OPCODE_RSUBCOND (GT, 9) 
47.24910 ++    AVR32_OPCODE_RSUBCOND (LE, 10) 
47.24911 ++    AVR32_OPCODE_RSUBCOND (HI, 11) 
47.24912 ++    AVR32_OPCODE_RSUBCOND (VS, 12) 
47.24913 ++    AVR32_OPCODE_RSUBCOND (VC, 13) 
47.24914 ++    AVR32_OPCODE_RSUBCOND (QS, 14) 
47.24915 ++    AVR32_OPCODE_RSUBCOND (AL, 15) 
47.24916 ++
47.24917 ++#define AVR32_OPCODE_OP3_COND(op_name, op_field, cond_name, cond_field) \
47.24918 ++    {                                                                   \
47.24919 ++      AVR32_OPC_ ## op_name ## cond_name , 4,                           \
47.24920 ++      0xe1d0e000 | (cond_field << 8) | (op_field << 4), 0xe1f0fff0,     \
47.24921 ++      &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ],      \
47.24922 ++      BFD_RELOC_UNUSED, 3, -1,                                          \
47.24923 ++      {                                                                 \
47.24924 ++	&avr32_ifield_table[AVR32_IFIELD_RD_E],                         \
47.24925 ++	&avr32_ifield_table[AVR32_IFIELD_RX],                           \
47.24926 ++	&avr32_ifield_table[AVR32_IFIELD_RY],                           \
47.24927 ++      },                                                                \
47.24928 ++    },
47.24929 ++
47.24930 ++    AVR32_OPCODE_OP3_COND (ADD, 0, EQ, 0)
47.24931 ++    AVR32_OPCODE_OP3_COND (ADD, 0, NE, 1)
47.24932 ++    AVR32_OPCODE_OP3_COND (ADD, 0, CC, 2)
47.24933 ++    AVR32_OPCODE_OP3_COND (ADD, 0, CS, 3)
47.24934 ++    AVR32_OPCODE_OP3_COND (ADD, 0, GE, 4)
47.24935 ++    AVR32_OPCODE_OP3_COND (ADD, 0, LT, 5)
47.24936 ++    AVR32_OPCODE_OP3_COND (ADD, 0, MI, 6)
47.24937 ++    AVR32_OPCODE_OP3_COND (ADD, 0, PL, 7)
47.24938 ++    AVR32_OPCODE_OP3_COND (ADD, 0, LS, 8)
47.24939 ++    AVR32_OPCODE_OP3_COND (ADD, 0, GT, 9)
47.24940 ++    AVR32_OPCODE_OP3_COND (ADD, 0, LE, 10)
47.24941 ++    AVR32_OPCODE_OP3_COND (ADD, 0, HI, 11)
47.24942 ++    AVR32_OPCODE_OP3_COND (ADD, 0, VS, 12)
47.24943 ++    AVR32_OPCODE_OP3_COND (ADD, 0, VC, 13)
47.24944 ++    AVR32_OPCODE_OP3_COND (ADD, 0, QS, 14)
47.24945 ++    AVR32_OPCODE_OP3_COND (ADD, 0, AL, 15)
47.24946 ++
47.24947 ++    AVR32_OPCODE_OP3_COND (SUB2, 1, EQ, 0)
47.24948 ++    AVR32_OPCODE_OP3_COND (SUB2, 1, NE, 1)
47.24949 ++    AVR32_OPCODE_OP3_COND (SUB2, 1, CC, 2)
47.24950 ++    AVR32_OPCODE_OP3_COND (SUB2, 1, CS, 3)
47.24951 ++    AVR32_OPCODE_OP3_COND (SUB2, 1, GE, 4)
47.24952 ++    AVR32_OPCODE_OP3_COND (SUB2, 1, LT, 5)
47.24953 ++    AVR32_OPCODE_OP3_COND (SUB2, 1, MI, 6)
47.24954 ++    AVR32_OPCODE_OP3_COND (SUB2, 1, PL, 7)
47.24955 ++    AVR32_OPCODE_OP3_COND (SUB2, 1, LS, 8)
47.24956 ++    AVR32_OPCODE_OP3_COND (SUB2, 1, GT, 9)
47.24957 ++    AVR32_OPCODE_OP3_COND (SUB2, 1, LE, 10)
47.24958 ++    AVR32_OPCODE_OP3_COND (SUB2, 1, HI, 11)
47.24959 ++    AVR32_OPCODE_OP3_COND (SUB2, 1, VS, 12)
47.24960 ++    AVR32_OPCODE_OP3_COND (SUB2, 1, VC, 13)
47.24961 ++    AVR32_OPCODE_OP3_COND (SUB2, 1, QS, 14)
47.24962 ++    AVR32_OPCODE_OP3_COND (SUB2, 1, AL, 15)
47.24963 ++
47.24964 ++    AVR32_OPCODE_OP3_COND (AND, 2, EQ, 0)
47.24965 ++    AVR32_OPCODE_OP3_COND (AND, 2, NE, 1)
47.24966 ++    AVR32_OPCODE_OP3_COND (AND, 2, CC, 2)
47.24967 ++    AVR32_OPCODE_OP3_COND (AND, 2, CS, 3)
47.24968 ++    AVR32_OPCODE_OP3_COND (AND, 2, GE, 4)
47.24969 ++    AVR32_OPCODE_OP3_COND (AND, 2, LT, 5)
47.24970 ++    AVR32_OPCODE_OP3_COND (AND, 2, MI, 6)
47.24971 ++    AVR32_OPCODE_OP3_COND (AND, 2, PL, 7)
47.24972 ++    AVR32_OPCODE_OP3_COND (AND, 2, LS, 8)
47.24973 ++    AVR32_OPCODE_OP3_COND (AND, 2, GT, 9)
47.24974 ++    AVR32_OPCODE_OP3_COND (AND, 2, LE, 10)
47.24975 ++    AVR32_OPCODE_OP3_COND (AND, 2, HI, 11)
47.24976 ++    AVR32_OPCODE_OP3_COND (AND, 2, VS, 12)
47.24977 ++    AVR32_OPCODE_OP3_COND (AND, 2, VC, 13)
47.24978 ++    AVR32_OPCODE_OP3_COND (AND, 2, QS, 14)
47.24979 ++    AVR32_OPCODE_OP3_COND (AND, 2, AL, 15)
47.24980 ++
47.24981 ++    AVR32_OPCODE_OP3_COND (OR, 3, EQ, 0)
47.24982 ++    AVR32_OPCODE_OP3_COND (OR, 3, NE, 1)
47.24983 ++    AVR32_OPCODE_OP3_COND (OR, 3, CC, 2)
47.24984 ++    AVR32_OPCODE_OP3_COND (OR, 3, CS, 3)
47.24985 ++    AVR32_OPCODE_OP3_COND (OR, 3, GE, 4)
47.24986 ++    AVR32_OPCODE_OP3_COND (OR, 3, LT, 5)
47.24987 ++    AVR32_OPCODE_OP3_COND (OR, 3, MI, 6)
47.24988 ++    AVR32_OPCODE_OP3_COND (OR, 3, PL, 7)
47.24989 ++    AVR32_OPCODE_OP3_COND (OR, 3, LS, 8)
47.24990 ++    AVR32_OPCODE_OP3_COND (OR, 3, GT, 9)
47.24991 ++    AVR32_OPCODE_OP3_COND (OR, 3, LE, 10)
47.24992 ++    AVR32_OPCODE_OP3_COND (OR, 3, HI, 11)
47.24993 ++    AVR32_OPCODE_OP3_COND (OR, 3, VS, 12)
47.24994 ++    AVR32_OPCODE_OP3_COND (OR, 3, VC, 13)
47.24995 ++    AVR32_OPCODE_OP3_COND (OR, 3, QS, 14)
47.24996 ++    AVR32_OPCODE_OP3_COND (OR, 3, AL, 15)
47.24997 ++
47.24998 ++    AVR32_OPCODE_OP3_COND (EOR, 4, EQ, 0)
47.24999 ++    AVR32_OPCODE_OP3_COND (EOR, 4, NE, 1)
47.25000 ++    AVR32_OPCODE_OP3_COND (EOR, 4, CC, 2)
47.25001 ++    AVR32_OPCODE_OP3_COND (EOR, 4, CS, 3)
47.25002 ++    AVR32_OPCODE_OP3_COND (EOR, 4, GE, 4)
47.25003 ++    AVR32_OPCODE_OP3_COND (EOR, 4, LT, 5)
47.25004 ++    AVR32_OPCODE_OP3_COND (EOR, 4, MI, 6)
47.25005 ++    AVR32_OPCODE_OP3_COND (EOR, 4, PL, 7)
47.25006 ++    AVR32_OPCODE_OP3_COND (EOR, 4, LS, 8)
47.25007 ++    AVR32_OPCODE_OP3_COND (EOR, 4, GT, 9)
47.25008 ++    AVR32_OPCODE_OP3_COND (EOR, 4, LE, 10)
47.25009 ++    AVR32_OPCODE_OP3_COND (EOR, 4, HI, 11)
47.25010 ++    AVR32_OPCODE_OP3_COND (EOR, 4, VS, 12)
47.25011 ++    AVR32_OPCODE_OP3_COND (EOR, 4, VC, 13)
47.25012 ++    AVR32_OPCODE_OP3_COND (EOR, 4, QS, 14)
47.25013 ++    AVR32_OPCODE_OP3_COND (EOR, 4, AL, 15) 
47.25014 ++
47.25015 ++#define AVR32_OPCODE_LD_COND(op_name, op_field, cond_name, cond_field)  \
47.25016 ++    {                                                                   \
47.25017 ++      AVR32_OPC_ ## op_name ## cond_name , 4,                           \
47.25018 ++      0xe1f00000 | (cond_field << 12) | (op_field  << 9), 0xe1f0fe00,   \
47.25019 ++      &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ],      \
47.25020 ++      BFD_RELOC_UNUSED, 3, -1,                                          \
47.25021 ++      {                                                                 \
47.25022 ++	&avr32_ifield_table[AVR32_IFIELD_RY],                           \
47.25023 ++	&avr32_ifield_table[AVR32_IFIELD_RX],                           \
47.25024 ++	&avr32_ifield_table[AVR32_IFIELD_K9E],                          \
47.25025 ++      },                                                                \
47.25026 ++    },
47.25027 ++    
47.25028 ++#define AVR32_OPCODE_ST_COND(op_name, op_field, cond_name, cond_field)  \
47.25029 ++    {                                                                   \
47.25030 ++      AVR32_OPC_ ## op_name ## cond_name , 4,                           \
47.25031 ++      0xe1f00000 | (cond_field << 12) | (op_field  << 9), 0xe1f0fe00,   \
47.25032 ++      &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ],      \
47.25033 ++      BFD_RELOC_UNUSED, 3, -1,                                          \
47.25034 ++      {                                                                 \
47.25035 ++	&avr32_ifield_table[AVR32_IFIELD_RX],                           \
47.25036 ++	&avr32_ifield_table[AVR32_IFIELD_K9E],                          \
47.25037 ++	&avr32_ifield_table[AVR32_IFIELD_RY],                           \
47.25038 ++      },                                                                \
47.25039 ++    },
47.25040 ++
47.25041 ++    AVR32_OPCODE_LD_COND (LD_W, 0, EQ, 0) 
47.25042 ++    AVR32_OPCODE_LD_COND (LD_W, 0, NE, 1) 
47.25043 ++    AVR32_OPCODE_LD_COND (LD_W, 0, CC, 2) 
47.25044 ++    AVR32_OPCODE_LD_COND (LD_W, 0, CS, 3) 
47.25045 ++    AVR32_OPCODE_LD_COND (LD_W, 0, GE, 4) 
47.25046 ++    AVR32_OPCODE_LD_COND (LD_W, 0, LT, 5) 
47.25047 ++    AVR32_OPCODE_LD_COND (LD_W, 0, MI, 6) 
47.25048 ++    AVR32_OPCODE_LD_COND (LD_W, 0, PL, 7) 
47.25049 ++    AVR32_OPCODE_LD_COND (LD_W, 0, LS, 8) 
47.25050 ++    AVR32_OPCODE_LD_COND (LD_W, 0, GT, 9) 
47.25051 ++    AVR32_OPCODE_LD_COND (LD_W, 0, LE, 10) 
47.25052 ++    AVR32_OPCODE_LD_COND (LD_W, 0, HI, 11) 
47.25053 ++    AVR32_OPCODE_LD_COND (LD_W, 0, VS, 12) 
47.25054 ++    AVR32_OPCODE_LD_COND (LD_W, 0, VC, 13) 
47.25055 ++    AVR32_OPCODE_LD_COND (LD_W, 0, QS, 14) 
47.25056 ++    AVR32_OPCODE_LD_COND (LD_W, 0, AL, 15) 
47.25057 ++
47.25058 ++    AVR32_OPCODE_LD_COND (LD_SH, 1, EQ, 0) 
47.25059 ++    AVR32_OPCODE_LD_COND (LD_SH, 1, NE, 1) 
47.25060 ++    AVR32_OPCODE_LD_COND (LD_SH, 1, CC, 2) 
47.25061 ++    AVR32_OPCODE_LD_COND (LD_SH, 1, CS, 3) 
47.25062 ++    AVR32_OPCODE_LD_COND (LD_SH, 1, GE, 4) 
47.25063 ++    AVR32_OPCODE_LD_COND (LD_SH, 1, LT, 5) 
47.25064 ++    AVR32_OPCODE_LD_COND (LD_SH, 1, MI, 6) 
47.25065 ++    AVR32_OPCODE_LD_COND (LD_SH, 1, PL, 7) 
47.25066 ++    AVR32_OPCODE_LD_COND (LD_SH, 1, LS, 8) 
47.25067 ++    AVR32_OPCODE_LD_COND (LD_SH, 1, GT, 9) 
47.25068 ++    AVR32_OPCODE_LD_COND (LD_SH, 1, LE, 10) 
47.25069 ++    AVR32_OPCODE_LD_COND (LD_SH, 1, HI, 11) 
47.25070 ++    AVR32_OPCODE_LD_COND (LD_SH, 1, VS, 12) 
47.25071 ++    AVR32_OPCODE_LD_COND (LD_SH, 1, VC, 13) 
47.25072 ++    AVR32_OPCODE_LD_COND (LD_SH, 1, QS, 14) 
47.25073 ++    AVR32_OPCODE_LD_COND (LD_SH, 1, AL, 15) 
47.25074 ++
47.25075 ++    AVR32_OPCODE_LD_COND (LD_UH, 2, EQ, 0) 
47.25076 ++    AVR32_OPCODE_LD_COND (LD_UH, 2, NE, 1) 
47.25077 ++    AVR32_OPCODE_LD_COND (LD_UH, 2, CC, 2) 
47.25078 ++    AVR32_OPCODE_LD_COND (LD_UH, 2, CS, 3) 
47.25079 ++    AVR32_OPCODE_LD_COND (LD_UH, 2, GE, 4) 
47.25080 ++    AVR32_OPCODE_LD_COND (LD_UH, 2, LT, 5) 
47.25081 ++    AVR32_OPCODE_LD_COND (LD_UH, 2, MI, 6) 
47.25082 ++    AVR32_OPCODE_LD_COND (LD_UH, 2, PL, 7) 
47.25083 ++    AVR32_OPCODE_LD_COND (LD_SH, 2, LS, 8) 
47.25084 ++    AVR32_OPCODE_LD_COND (LD_SH, 2, GT, 9) 
47.25085 ++    AVR32_OPCODE_LD_COND (LD_SH, 2, LE, 10) 
47.25086 ++    AVR32_OPCODE_LD_COND (LD_SH, 2, HI, 11) 
47.25087 ++    AVR32_OPCODE_LD_COND (LD_SH, 2, VS, 12) 
47.25088 ++    AVR32_OPCODE_LD_COND (LD_SH, 2, VC, 13) 
47.25089 ++    AVR32_OPCODE_LD_COND (LD_SH, 2, QS, 14) 
47.25090 ++    AVR32_OPCODE_LD_COND (LD_SH, 2, AL, 15) 
47.25091 ++
47.25092 ++    AVR32_OPCODE_LD_COND (LD_SB, 3, EQ, 0) 
47.25093 ++    AVR32_OPCODE_LD_COND (LD_SB, 3, NE, 1) 
47.25094 ++    AVR32_OPCODE_LD_COND (LD_SB, 3, CC, 2) 
47.25095 ++    AVR32_OPCODE_LD_COND (LD_SB, 3, CS, 3) 
47.25096 ++    AVR32_OPCODE_LD_COND (LD_SB, 3, GE, 4) 
47.25097 ++    AVR32_OPCODE_LD_COND (LD_SB, 3, LT, 5) 
47.25098 ++    AVR32_OPCODE_LD_COND (LD_SB, 3, MI, 6) 
47.25099 ++    AVR32_OPCODE_LD_COND (LD_SB, 3, PL, 7) 
47.25100 ++    AVR32_OPCODE_LD_COND (LD_SB, 3, LS, 8) 
47.25101 ++    AVR32_OPCODE_LD_COND (LD_SB, 3, GT, 9) 
47.25102 ++    AVR32_OPCODE_LD_COND (LD_SB, 3, LE, 10) 
47.25103 ++    AVR32_OPCODE_LD_COND (LD_SB, 3, HI, 11) 
47.25104 ++    AVR32_OPCODE_LD_COND (LD_SB, 3, VS, 12) 
47.25105 ++    AVR32_OPCODE_LD_COND (LD_SB, 3, VC, 13) 
47.25106 ++    AVR32_OPCODE_LD_COND (LD_SB, 3, QS, 14) 
47.25107 ++    AVR32_OPCODE_LD_COND (LD_SB, 3, AL, 15) 
47.25108 ++
47.25109 ++    AVR32_OPCODE_LD_COND (LD_UB, 4, EQ, 0) 
47.25110 ++    AVR32_OPCODE_LD_COND (LD_UB, 4, NE, 1) 
47.25111 ++    AVR32_OPCODE_LD_COND (LD_UB, 4, CC, 2) 
47.25112 ++    AVR32_OPCODE_LD_COND (LD_UB, 4, CS, 3) 
47.25113 ++    AVR32_OPCODE_LD_COND (LD_UB, 4, GE, 4) 
47.25114 ++    AVR32_OPCODE_LD_COND (LD_UB, 4, LT, 5) 
47.25115 ++    AVR32_OPCODE_LD_COND (LD_UB, 4, MI, 6) 
47.25116 ++    AVR32_OPCODE_LD_COND (LD_UB, 4, PL, 7) 
47.25117 ++    AVR32_OPCODE_LD_COND (LD_UB, 4, LS, 8) 
47.25118 ++    AVR32_OPCODE_LD_COND (LD_UB, 4, GT, 9) 
47.25119 ++    AVR32_OPCODE_LD_COND (LD_UB, 4, LE, 10) 
47.25120 ++    AVR32_OPCODE_LD_COND (LD_UB, 4, HI, 11) 
47.25121 ++    AVR32_OPCODE_LD_COND (LD_UB, 4, VS, 12) 
47.25122 ++    AVR32_OPCODE_LD_COND (LD_UB, 4, VC, 13) 
47.25123 ++    AVR32_OPCODE_LD_COND (LD_UB, 4, QS, 14) 
47.25124 ++    AVR32_OPCODE_LD_COND (LD_UB, 4, AL, 15) 
47.25125 ++
47.25126 ++    AVR32_OPCODE_ST_COND (ST_W, 5, EQ, 0) 
47.25127 ++    AVR32_OPCODE_ST_COND (ST_W, 5, NE, 1) 
47.25128 ++    AVR32_OPCODE_ST_COND (ST_W, 5, CC, 2) 
47.25129 ++    AVR32_OPCODE_ST_COND (ST_W, 5, CS, 3) 
47.25130 ++    AVR32_OPCODE_ST_COND (ST_W, 5, GE, 4) 
47.25131 ++    AVR32_OPCODE_ST_COND (ST_W, 5, LT, 5) 
47.25132 ++    AVR32_OPCODE_ST_COND (ST_W, 5, MI, 6) 
47.25133 ++    AVR32_OPCODE_ST_COND (ST_W, 5, PL, 7) 
47.25134 ++    AVR32_OPCODE_ST_COND (ST_W, 5, LS, 8) 
47.25135 ++    AVR32_OPCODE_ST_COND (ST_W, 5, GT, 9) 
47.25136 ++    AVR32_OPCODE_ST_COND (ST_W, 5, LE, 10) 
47.25137 ++    AVR32_OPCODE_ST_COND (ST_W, 5, HI, 11) 
47.25138 ++    AVR32_OPCODE_ST_COND (ST_W, 5, VS, 12) 
47.25139 ++    AVR32_OPCODE_ST_COND (ST_W, 5, VC, 13) 
47.25140 ++    AVR32_OPCODE_ST_COND (ST_W, 5, QS, 14) 
47.25141 ++    AVR32_OPCODE_ST_COND (ST_W, 5, AL, 15) 
47.25142 ++
47.25143 ++    AVR32_OPCODE_ST_COND (ST_H, 6, EQ, 0) 
47.25144 ++    AVR32_OPCODE_ST_COND (ST_H, 6, NE, 1) 
47.25145 ++    AVR32_OPCODE_ST_COND (ST_H, 6, CC, 2) 
47.25146 ++    AVR32_OPCODE_ST_COND (ST_H, 6, CS, 3) 
47.25147 ++    AVR32_OPCODE_ST_COND (ST_H, 6, GE, 4) 
47.25148 ++    AVR32_OPCODE_ST_COND (ST_H, 6, LT, 5) 
47.25149 ++    AVR32_OPCODE_ST_COND (ST_H, 6, MI, 6) 
47.25150 ++    AVR32_OPCODE_ST_COND (ST_H, 6, PL, 7) 
47.25151 ++    AVR32_OPCODE_ST_COND (ST_H, 6, LS, 8) 
47.25152 ++    AVR32_OPCODE_ST_COND (ST_H, 6, GT, 9) 
47.25153 ++    AVR32_OPCODE_ST_COND (ST_H, 6, LE, 10) 
47.25154 ++    AVR32_OPCODE_ST_COND (ST_H, 6, HI, 11) 
47.25155 ++    AVR32_OPCODE_ST_COND (ST_H, 6, VS, 12) 
47.25156 ++    AVR32_OPCODE_ST_COND (ST_H, 6, VC, 13) 
47.25157 ++    AVR32_OPCODE_ST_COND (ST_H, 6, QS, 14) 
47.25158 ++    AVR32_OPCODE_ST_COND (ST_H, 6, AL, 15) 
47.25159 ++
47.25160 ++    AVR32_OPCODE_ST_COND (ST_B, 7, EQ, 0) 
47.25161 ++    AVR32_OPCODE_ST_COND (ST_B, 7, NE, 1) 
47.25162 ++    AVR32_OPCODE_ST_COND (ST_B, 7, CC, 2) 
47.25163 ++    AVR32_OPCODE_ST_COND (ST_B, 7, CS, 3) 
47.25164 ++    AVR32_OPCODE_ST_COND (ST_B, 7, GE, 4) 
47.25165 ++    AVR32_OPCODE_ST_COND (ST_B, 7, LT, 5) 
47.25166 ++    AVR32_OPCODE_ST_COND (ST_B, 7, MI, 6) 
47.25167 ++    AVR32_OPCODE_ST_COND (ST_B, 7, PL, 7) 
47.25168 ++    AVR32_OPCODE_ST_COND (ST_B, 7, LS, 8) 
47.25169 ++    AVR32_OPCODE_ST_COND (ST_B, 7, GT, 9) 
47.25170 ++    AVR32_OPCODE_ST_COND (ST_B, 7, LE, 10) 
47.25171 ++    AVR32_OPCODE_ST_COND (ST_B, 7, HI, 11) 
47.25172 ++    AVR32_OPCODE_ST_COND (ST_B, 7, VS, 12) 
47.25173 ++    AVR32_OPCODE_ST_COND (ST_B, 7, VC, 13) 
47.25174 ++    AVR32_OPCODE_ST_COND (ST_B, 7, QS, 14) 
47.25175 ++    AVR32_OPCODE_ST_COND (ST_B, 7, AL, 15) 
47.25176 ++
47.25177 ++    {
47.25178 ++      AVR32_OPC_MOVH, 4, 0xfc100000, 0xfff00000,
47.25179 ++      &avr32_syntax_table[AVR32_SYNTAX_MOVH],
47.25180 ++      BFD_RELOC_AVR32_16U,  2, 1,
47.25181 ++      {
47.25182 ++	&avr32_ifield_table[AVR32_IFIELD_RY],
47.25183 ++	&avr32_ifield_table[AVR32_IFIELD_K16],
47.25184 ++      },
47.25185 ++    },
47.25186 ++
47.25187 ++ };
47.25188 ++
47.25189 ++#define FPALIAS_DXY(name, opcode)			\
47.25190 ++  {							\
47.25191 ++    AVR32_ALIAS_##name##_S,				\
47.25192 ++    &avr32_opc_table[AVR32_OPC_COP],			\
47.25193 ++    {							\
47.25194 ++      { 0, 0 },						\
47.25195 ++      { 1, 0 }, { 1, 1 }, { 1, 2 },			\
47.25196 ++      { 0, opcode },					\
47.25197 ++    },							\
47.25198 ++  }, {							\
47.25199 ++    AVR32_ALIAS_##name##_D,				\
47.25200 ++    &avr32_opc_table[AVR32_OPC_COP],			\
47.25201 ++    {							\
47.25202 ++      { 0, 0 },						\
47.25203 ++      { 1, 0 }, { 1, 1 }, { 1, 2 },			\
47.25204 ++      { 0, (opcode) | 0x40 },				\
47.25205 ++    },							\
47.25206 ++  }
47.25207 ++#define FPALIAS_DX(name, opcode)			\
47.25208 ++  {							\
47.25209 ++    AVR32_ALIAS_##name##_S,				\
47.25210 ++    &avr32_opc_table[AVR32_OPC_COP],			\
47.25211 ++    {							\
47.25212 ++      { 0, 0 },						\
47.25213 ++      { 1, 0 }, { 1, 1 }, { 0, 0 },			\
47.25214 ++      { 0, opcode },					\
47.25215 ++    },							\
47.25216 ++  }, {							\
47.25217 ++    AVR32_ALIAS_##name##_D,				\
47.25218 ++    &avr32_opc_table[AVR32_OPC_COP],			\
47.25219 ++    {							\
47.25220 ++      { 0, 0 },						\
47.25221 ++      { 1, 0 }, { 1, 1 }, { 0, 0 },			\
47.25222 ++      { 0, (opcode) | 0x40 },				\
47.25223 ++    },							\
47.25224 ++  }
47.25225 ++#define FPALIAS_XY(name, opcode)			\
47.25226 ++  {							\
47.25227 ++    AVR32_ALIAS_##name##_S,				\
47.25228 ++    &avr32_opc_table[AVR32_OPC_COP],			\
47.25229 ++    {							\
47.25230 ++      { 0, 0 },						\
47.25231 ++      { 0, 0 }, { 1, 0 }, { 1, 1 },			\
47.25232 ++      { 0, opcode },					\
47.25233 ++    },							\
47.25234 ++  }, {							\
47.25235 ++    AVR32_ALIAS_##name##_D,				\
47.25236 ++    &avr32_opc_table[AVR32_OPC_COP],			\
47.25237 ++    {							\
47.25238 ++      { 0, 0 },						\
47.25239 ++      { 0, 0 }, { 1, 0 }, { 1, 1 },			\
47.25240 ++      { 0, (opcode) | 0x40 },				\
47.25241 ++    },							\
47.25242 ++  }
47.25243 ++
47.25244 ++const struct avr32_alias avr32_alias_table[] =
47.25245 ++  {
47.25246 ++    FPALIAS_DXY(FMAC, 0x00),
47.25247 ++    FPALIAS_DXY(FNMAC, 0x01),
47.25248 ++    FPALIAS_DXY(FMSC, 0x02),
47.25249 ++    FPALIAS_DXY(FNMSC, 0x03),
47.25250 ++    FPALIAS_DXY(FADD, 0x04),
47.25251 ++    FPALIAS_DXY(FSUB, 0x05),
47.25252 ++    FPALIAS_DXY(FMUL, 0x06),
47.25253 ++    FPALIAS_DXY(FNMUL, 0x07),
47.25254 ++    FPALIAS_DX(FNEG, 0x08),
47.25255 ++    FPALIAS_DX(FABS, 0x09),
47.25256 ++    FPALIAS_XY(FCMP, 0x0d),
47.25257 ++    FPALIAS_DX(FMOV1, 0x0a),
47.25258 ++    {
47.25259 ++      AVR32_ALIAS_FMOV2_S,
47.25260 ++      &avr32_opc_table[AVR32_OPC_MVCR_W],
47.25261 ++      { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
47.25262 ++    },
47.25263 ++    {
47.25264 ++      AVR32_ALIAS_FMOV2_D,
47.25265 ++      &avr32_opc_table[AVR32_OPC_MVCR_D],
47.25266 ++      { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
47.25267 ++    },
47.25268 ++    {
47.25269 ++      AVR32_ALIAS_FMOV3_S,
47.25270 ++      &avr32_opc_table[AVR32_OPC_MVRC_W],
47.25271 ++      { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
47.25272 ++    },
47.25273 ++    {
47.25274 ++      AVR32_ALIAS_FMOV3_D,
47.25275 ++      &avr32_opc_table[AVR32_OPC_MVRC_D],
47.25276 ++      { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
47.25277 ++    },
47.25278 ++    {
47.25279 ++      AVR32_ALIAS_FCASTS_D,
47.25280 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25281 ++      {
47.25282 ++	{ 0, 0 },
47.25283 ++	{ 1, 0 }, { 1, 1 }, { 0, 0 },
47.25284 ++	{ 0, 0x0f },
47.25285 ++      },
47.25286 ++    },
47.25287 ++    {
47.25288 ++      AVR32_ALIAS_FCASTD_S,
47.25289 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25290 ++      {
47.25291 ++	{ 0, 0 },
47.25292 ++	{ 1, 0 }, { 1, 1 }, { 0, 0 },
47.25293 ++	{ 0, 0x10 },
47.25294 ++      },
47.25295 ++    },
47.25296 ++    {
47.25297 ++      AVR32_ALIAS_PICOSVMAC0,
47.25298 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25299 ++      {
47.25300 ++	{ 0, PICO_CPNO },
47.25301 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25302 ++	{ 0, 0x0c },
47.25303 ++      },
47.25304 ++    },
47.25305 ++    {
47.25306 ++      AVR32_ALIAS_PICOSVMAC1,
47.25307 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25308 ++      {
47.25309 ++	{ 0, PICO_CPNO },
47.25310 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25311 ++	{ 0, 0x0d },
47.25312 ++      },
47.25313 ++    },
47.25314 ++    {
47.25315 ++      AVR32_ALIAS_PICOSVMAC2,
47.25316 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25317 ++      {
47.25318 ++	{ 0, PICO_CPNO },
47.25319 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25320 ++	{ 0, 0x0e },
47.25321 ++      },
47.25322 ++    },
47.25323 ++    {
47.25324 ++      AVR32_ALIAS_PICOSVMAC3,
47.25325 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25326 ++      {
47.25327 ++	{ 0, PICO_CPNO },
47.25328 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25329 ++	{ 0, 0x0f },
47.25330 ++      },
47.25331 ++    },
47.25332 ++    {
47.25333 ++      AVR32_ALIAS_PICOSVMUL0,
47.25334 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25335 ++      {
47.25336 ++	{ 0, PICO_CPNO },
47.25337 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25338 ++	{ 0, 0x08 },
47.25339 ++      },
47.25340 ++    },
47.25341 ++    {
47.25342 ++      AVR32_ALIAS_PICOSVMUL1,
47.25343 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25344 ++      {
47.25345 ++	{ 0, PICO_CPNO },
47.25346 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25347 ++	{ 0, 0x09 },
47.25348 ++      },
47.25349 ++    },
47.25350 ++    {
47.25351 ++      AVR32_ALIAS_PICOSVMUL2,
47.25352 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25353 ++      {
47.25354 ++	{ 0, PICO_CPNO },
47.25355 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25356 ++	{ 0, 0x0a },
47.25357 ++      },
47.25358 ++    },
47.25359 ++    {
47.25360 ++      AVR32_ALIAS_PICOSVMUL3,
47.25361 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25362 ++      {
47.25363 ++	{ 0, PICO_CPNO },
47.25364 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25365 ++	{ 0, 0x0b },
47.25366 ++      },
47.25367 ++    },
47.25368 ++    {
47.25369 ++      AVR32_ALIAS_PICOVMAC0,
47.25370 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25371 ++      {
47.25372 ++	{ 0, PICO_CPNO },
47.25373 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25374 ++	{ 0, 0x04 },
47.25375 ++      },
47.25376 ++    },
47.25377 ++    {
47.25378 ++      AVR32_ALIAS_PICOVMAC1,
47.25379 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25380 ++      {
47.25381 ++	{ 0, PICO_CPNO },
47.25382 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25383 ++	{ 0, 0x05 },
47.25384 ++      },
47.25385 ++    },
47.25386 ++    {
47.25387 ++      AVR32_ALIAS_PICOVMAC2,
47.25388 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25389 ++      {
47.25390 ++	{ 0, PICO_CPNO },
47.25391 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25392 ++	{ 0, 0x06 },
47.25393 ++      },
47.25394 ++    },
47.25395 ++    {
47.25396 ++      AVR32_ALIAS_PICOVMAC3,
47.25397 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25398 ++      {
47.25399 ++	{ 0, PICO_CPNO },
47.25400 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25401 ++	{ 0, 0x07 },
47.25402 ++      },
47.25403 ++    },
47.25404 ++    {
47.25405 ++      AVR32_ALIAS_PICOVMUL0,
47.25406 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25407 ++      {
47.25408 ++	{ 0, PICO_CPNO },
47.25409 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25410 ++	{ 0, 0x00 },
47.25411 ++      },
47.25412 ++    },
47.25413 ++    {
47.25414 ++      AVR32_ALIAS_PICOVMUL1,
47.25415 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25416 ++      {
47.25417 ++	{ 0, PICO_CPNO },
47.25418 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25419 ++	{ 0, 0x01 },
47.25420 ++      },
47.25421 ++    },
47.25422 ++    {
47.25423 ++      AVR32_ALIAS_PICOVMUL2,
47.25424 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25425 ++      {
47.25426 ++	{ 0, PICO_CPNO },
47.25427 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25428 ++	{ 0, 0x02 },
47.25429 ++      },
47.25430 ++    },
47.25431 ++    {
47.25432 ++      AVR32_ALIAS_PICOVMUL3,
47.25433 ++      &avr32_opc_table[AVR32_OPC_COP],
47.25434 ++      {
47.25435 ++	{ 0, PICO_CPNO },
47.25436 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25437 ++	{ 0, 0x03 },
47.25438 ++      },
47.25439 ++    },
47.25440 ++    {
47.25441 ++      AVR32_ALIAS_PICOLD_D1,
47.25442 ++      &avr32_opc_table[AVR32_OPC_LDC_D1],
47.25443 ++      {
47.25444 ++	{ 0, PICO_CPNO },
47.25445 ++	{ 1, 0 }, { 1, 1 },
47.25446 ++      },
47.25447 ++    },
47.25448 ++    {
47.25449 ++      AVR32_ALIAS_PICOLD_D2,
47.25450 ++      &avr32_opc_table[AVR32_OPC_LDC_D2],
47.25451 ++      {
47.25452 ++	{ 0, PICO_CPNO },
47.25453 ++	{ 1, 0 }, { 1, 1 },
47.25454 ++      },
47.25455 ++    },
47.25456 ++    {
47.25457 ++      AVR32_ALIAS_PICOLD_D3,
47.25458 ++      &avr32_opc_table[AVR32_OPC_LDC_D3],
47.25459 ++      {
47.25460 ++	{ 0, PICO_CPNO },
47.25461 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
47.25462 ++      },
47.25463 ++    },
47.25464 ++    {
47.25465 ++      AVR32_ALIAS_PICOLD_W1,
47.25466 ++      &avr32_opc_table[AVR32_OPC_LDC_W1],
47.25467 ++      {
47.25468 ++	{ 0, PICO_CPNO },
47.25469 ++	{ 1, 0 }, { 1, 1 },
47.25470 ++      },
47.25471 ++    },
47.25472 ++    {
47.25473 ++      AVR32_ALIAS_PICOLD_W2,
47.25474 ++      &avr32_opc_table[AVR32_OPC_LDC_W2],
47.25475 ++      {
47.25476 ++	{ 0, PICO_CPNO },
47.25477 ++	{ 1, 0 }, { 1, 1 },
47.25478 ++      },
47.25479 ++    },
47.25480 ++    {
47.25481 ++      AVR32_ALIAS_PICOLD_W3,
47.25482 ++      &avr32_opc_table[AVR32_OPC_LDC_W3],
47.25483 ++      {
47.25484 ++	{ 0, PICO_CPNO },
47.25485 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
47.25486 ++      },
47.25487 ++    },
47.25488 ++    {
47.25489 ++      AVR32_ALIAS_PICOLDM_D,
47.25490 ++      &avr32_opc_table[AVR32_OPC_LDCM_D],
47.25491 ++      {
47.25492 ++	{ 0, PICO_CPNO },
47.25493 ++	{ 1, 0 }, { 1, 1 },
47.25494 ++      },
47.25495 ++    },
47.25496 ++    {
47.25497 ++      AVR32_ALIAS_PICOLDM_D_PU,
47.25498 ++      &avr32_opc_table[AVR32_OPC_LDCM_D_PU],
47.25499 ++      {
47.25500 ++	{ 0, PICO_CPNO },
47.25501 ++	{ 1, 0 }, { 1, 1 },
47.25502 ++      },
47.25503 ++    },
47.25504 ++    {
47.25505 ++      AVR32_ALIAS_PICOLDM_W,
47.25506 ++      &avr32_opc_table[AVR32_OPC_LDCM_W],
47.25507 ++      {
47.25508 ++	{ 0, PICO_CPNO },
47.25509 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25510 ++      },
47.25511 ++    },
47.25512 ++    {
47.25513 ++      AVR32_ALIAS_PICOLDM_W_PU,
47.25514 ++      &avr32_opc_table[AVR32_OPC_LDCM_W_PU],
47.25515 ++      {
47.25516 ++	{ 0, PICO_CPNO },
47.25517 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25518 ++      },
47.25519 ++    },
47.25520 ++    {
47.25521 ++      AVR32_ALIAS_PICOMV_D1,
47.25522 ++      &avr32_opc_table[AVR32_OPC_MVCR_D],
47.25523 ++      {
47.25524 ++	{ 0, PICO_CPNO },
47.25525 ++	{ 1, 0 }, { 1, 1 },
47.25526 ++      },
47.25527 ++    },
47.25528 ++    {
47.25529 ++      AVR32_ALIAS_PICOMV_D2,
47.25530 ++      &avr32_opc_table[AVR32_OPC_MVRC_D],
47.25531 ++      {
47.25532 ++	{ 0, PICO_CPNO },
47.25533 ++	{ 1, 0 }, { 1, 1 },
47.25534 ++      },
47.25535 ++    },
47.25536 ++    {
47.25537 ++      AVR32_ALIAS_PICOMV_W1,
47.25538 ++      &avr32_opc_table[AVR32_OPC_MVCR_W],
47.25539 ++      {
47.25540 ++	{ 0, PICO_CPNO },
47.25541 ++	{ 1, 0 }, { 1, 1 },
47.25542 ++      },
47.25543 ++    },
47.25544 ++    {
47.25545 ++      AVR32_ALIAS_PICOMV_W2,
47.25546 ++      &avr32_opc_table[AVR32_OPC_MVRC_W],
47.25547 ++      {
47.25548 ++	{ 0, PICO_CPNO },
47.25549 ++	{ 1, 0 }, { 1, 1 },
47.25550 ++      },
47.25551 ++    },
47.25552 ++    {
47.25553 ++      AVR32_ALIAS_PICOST_D1,
47.25554 ++      &avr32_opc_table[AVR32_OPC_STC_D1],
47.25555 ++      {
47.25556 ++	{ 0, PICO_CPNO },
47.25557 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25558 ++      },
47.25559 ++    },
47.25560 ++    {
47.25561 ++      AVR32_ALIAS_PICOST_D2,
47.25562 ++      &avr32_opc_table[AVR32_OPC_STC_D2],
47.25563 ++      {
47.25564 ++	{ 0, PICO_CPNO },
47.25565 ++	{ 1, 0 }, { 1, 1 },
47.25566 ++      },
47.25567 ++    },
47.25568 ++    {
47.25569 ++      AVR32_ALIAS_PICOST_D3,
47.25570 ++      &avr32_opc_table[AVR32_OPC_STC_D3],
47.25571 ++      {
47.25572 ++	{ 0, PICO_CPNO },
47.25573 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
47.25574 ++      },
47.25575 ++    },
47.25576 ++    {
47.25577 ++      AVR32_ALIAS_PICOST_W1,
47.25578 ++      &avr32_opc_table[AVR32_OPC_STC_W1],
47.25579 ++      {
47.25580 ++	{ 0, PICO_CPNO },
47.25581 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25582 ++      },
47.25583 ++    },
47.25584 ++    {
47.25585 ++      AVR32_ALIAS_PICOST_W2,
47.25586 ++      &avr32_opc_table[AVR32_OPC_STC_W2],
47.25587 ++      {
47.25588 ++	{ 0, PICO_CPNO },
47.25589 ++	{ 1, 0 }, { 1, 1 },
47.25590 ++      },
47.25591 ++    },
47.25592 ++    {
47.25593 ++      AVR32_ALIAS_PICOST_W3,
47.25594 ++      &avr32_opc_table[AVR32_OPC_STC_W3],
47.25595 ++      {
47.25596 ++	{ 0, PICO_CPNO },
47.25597 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
47.25598 ++      },
47.25599 ++    },
47.25600 ++    {
47.25601 ++      AVR32_ALIAS_PICOSTM_D,
47.25602 ++      &avr32_opc_table[AVR32_OPC_STCM_D],
47.25603 ++      {
47.25604 ++	{ 0, PICO_CPNO },
47.25605 ++	{ 1, 0 }, { 1, 1 },
47.25606 ++      },
47.25607 ++    },
47.25608 ++    {
47.25609 ++      AVR32_ALIAS_PICOSTM_D_PU,
47.25610 ++      &avr32_opc_table[AVR32_OPC_STCM_D_PU],
47.25611 ++      {
47.25612 ++	{ 0, PICO_CPNO },
47.25613 ++	{ 1, 0 }, { 1, 1 },
47.25614 ++      },
47.25615 ++    },
47.25616 ++    {
47.25617 ++      AVR32_ALIAS_PICOSTM_W,
47.25618 ++      &avr32_opc_table[AVR32_OPC_STCM_W],
47.25619 ++      {
47.25620 ++	{ 0, PICO_CPNO },
47.25621 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25622 ++      },
47.25623 ++    },
47.25624 ++    {
47.25625 ++      AVR32_ALIAS_PICOSTM_W_PU,
47.25626 ++      &avr32_opc_table[AVR32_OPC_STCM_W_PU],
47.25627 ++      {
47.25628 ++	{ 0, PICO_CPNO },
47.25629 ++	{ 1, 0 }, { 1, 1 }, { 1, 2 },
47.25630 ++      },
47.25631 ++    },
47.25632 ++  };
47.25633 ++
47.25634 ++
47.25635 ++#define SYNTAX_NORMAL0(id, mne, opc, arch)			\
47.25636 ++  {							\
47.25637 ++    AVR32_SYNTAX_##id, arch,			\
47.25638 ++    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
47.25639 ++    AVR32_PARSER_NORMAL,					\
47.25640 ++    { &avr32_opc_table[AVR32_OPC_##opc], },		\
47.25641 ++    NULL, 0, { }					\
47.25642 ++  }
47.25643 ++#define SYNTAX_NORMAL1(id, mne, opc, op0, arch)		\
47.25644 ++  {							\
47.25645 ++    AVR32_SYNTAX_##id, arch,			\
47.25646 ++    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
47.25647 ++    AVR32_PARSER_NORMAL,					\
47.25648 ++    { &avr32_opc_table[AVR32_OPC_##opc], },		\
47.25649 ++    NULL, 1,						\
47.25650 ++    {							\
47.25651 ++      AVR32_OPERAND_##op0,				\
47.25652 ++    }							\
47.25653 ++  }
47.25654 ++#define SYNTAX_NORMALM1(id, mne, opc, op0, arch)		\
47.25655 ++  {							\
47.25656 ++    AVR32_SYNTAX_##id, arch,			\
47.25657 ++    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
47.25658 ++    AVR32_PARSER_NORMAL,					\
47.25659 ++    { &avr32_opc_table[AVR32_OPC_##opc], },			\
47.25660 ++    NULL, -1,						\
47.25661 ++    {							\
47.25662 ++      AVR32_OPERAND_##op0,				\
47.25663 ++    }							\
47.25664 ++  }
47.25665 ++#define SYNTAX_NORMAL2(id, mne, opc, op0, op1, arch)		\
47.25666 ++  {							\
47.25667 ++    AVR32_SYNTAX_##id, arch,			\
47.25668 ++    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
47.25669 ++    AVR32_PARSER_NORMAL,					\
47.25670 ++    { &avr32_opc_table[AVR32_OPC_##opc], },			\
47.25671 ++    NULL, 2,						\
47.25672 ++    {							\
47.25673 ++      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
47.25674 ++    }							\
47.25675 ++  }
47.25676 ++#define SYNTAX_NORMALM2(id, mne, opc, op0, op1, arch)		\
47.25677 ++  {							\
47.25678 ++    AVR32_SYNTAX_##id, arch,			\
47.25679 ++    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
47.25680 ++    AVR32_PARSER_NORMAL,					\
47.25681 ++    { &avr32_opc_table[AVR32_OPC_##opc], },			\
47.25682 ++    NULL, -2,						\
47.25683 ++    {							\
47.25684 ++      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
47.25685 ++    }							\
47.25686 ++  }
47.25687 ++#define SYNTAX_NORMAL3(id, mne, opc, op0, op1, op2, arch)	\
47.25688 ++  {							\
47.25689 ++    AVR32_SYNTAX_##id, arch,			\
47.25690 ++    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
47.25691 ++    AVR32_PARSER_NORMAL,					\
47.25692 ++    { &avr32_opc_table[AVR32_OPC_##opc], },			\
47.25693 ++    NULL, 3,						\
47.25694 ++    {							\
47.25695 ++      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
47.25696 ++      AVR32_OPERAND_##op2,				\
47.25697 ++    }							\
47.25698 ++  }
47.25699 ++#define SYNTAX_NORMALM3(id, mne, opc, op0, op1, op2, arch)	\
47.25700 ++  {							\
47.25701 ++    AVR32_SYNTAX_##id, arch,			\
47.25702 ++    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
47.25703 ++    AVR32_PARSER_NORMAL,					\
47.25704 ++    { &avr32_opc_table[AVR32_OPC_##opc], },			\
47.25705 ++    NULL, -3,						\
47.25706 ++    {							\
47.25707 ++      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
47.25708 ++      AVR32_OPERAND_##op2,				\
47.25709 ++    }							\
47.25710 ++  }
47.25711 ++#define SYNTAX_NORMAL4(id, mne, opc, op0, op1, op2, op3, arch)\
47.25712 ++  {							\
47.25713 ++    AVR32_SYNTAX_##id, arch,			\
47.25714 ++    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
47.25715 ++    AVR32_PARSER_NORMAL,					\
47.25716 ++    { &avr32_opc_table[AVR32_OPC_##opc], },			\
47.25717 ++    NULL, 4,						\
47.25718 ++    {							\
47.25719 ++      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
47.25720 ++      AVR32_OPERAND_##op2, AVR32_OPERAND_##op3,		\
47.25721 ++    }							\
47.25722 ++  }
47.25723 ++#define SYNTAX_NORMAL5(id, mne, opc, op0, op1, op2, op3, op4, arch)	\
47.25724 ++  {								\
47.25725 ++    AVR32_SYNTAX_##id, arch,				\
47.25726 ++    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],		\
47.25727 ++    AVR32_PARSER_NORMAL,						\
47.25728 ++    { &avr32_opc_table[AVR32_OPC_##opc], },				\
47.25729 ++    NULL, 5,							\
47.25730 ++    {								\
47.25731 ++      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,			\
47.25732 ++      AVR32_OPERAND_##op2, AVR32_OPERAND_##op3,			\
47.25733 ++      AVR32_OPERAND_##op4,					\
47.25734 ++    }								\
47.25735 ++  }
47.25736 ++
47.25737 ++#define SYNTAX_NORMAL_C1(id, mne, opc, nxt, op0, arch)	\
47.25738 ++  {							\
47.25739 ++    AVR32_SYNTAX_##id, arch,			\
47.25740 ++    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
47.25741 ++    AVR32_PARSER_NORMAL,					\
47.25742 ++    { &avr32_opc_table[AVR32_OPC_##opc], },			\
47.25743 ++    &avr32_syntax_table[AVR32_SYNTAX_##nxt], 1,		\
47.25744 ++    {							\
47.25745 ++      AVR32_OPERAND_##op0,				\
47.25746 ++    }							\
47.25747 ++  }
47.25748 ++#define SYNTAX_NORMAL_CM1(id, mne, opc, nxt, op0, arch)	\
47.25749 ++  {							\
47.25750 ++    AVR32_SYNTAX_##id, arch,			\
47.25751 ++    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
47.25752 ++    AVR32_PARSER_NORMAL,					\
47.25753 ++    { &avr32_opc_table[AVR32_OPC_##opc], },			\
47.25754 ++    &avr32_syntax_table[AVR32_SYNTAX_##nxt], -1,	\
47.25755 ++    {							\
47.25756 ++      AVR32_OPERAND_##op0,				\
47.25757 ++    }							\
47.25758 ++  }
47.25759 ++#define SYNTAX_NORMAL_C2(id, mne, opc, nxt, op0, op1, arch)	\
47.25760 ++  {							\
47.25761 ++    AVR32_SYNTAX_##id, arch,			\
47.25762 ++    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
47.25763 ++    AVR32_PARSER_NORMAL,					\
47.25764 ++    { &avr32_opc_table[AVR32_OPC_##opc], },			\
47.25765 ++    &avr32_syntax_table[AVR32_SYNTAX_##nxt], 2,		\
47.25766 ++    {							\
47.25767 ++      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
47.25768 ++    }							\
47.25769 ++  }
47.25770 ++#define SYNTAX_NORMAL_CM2(id, mne, opc, nxt, op0, op1, arch)	\
47.25771 ++  {							\
47.25772 ++    AVR32_SYNTAX_##id, arch,			\
47.25773 ++    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
47.25774 ++    AVR32_PARSER_NORMAL,					\
47.25775 ++    { &avr32_opc_table[AVR32_OPC_##opc], },			\
47.25776 ++    &avr32_syntax_table[AVR32_SYNTAX_##nxt], -2,	\
47.25777 ++    {							\
47.25778 ++      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
47.25779 ++    }							\
47.25780 ++  }
47.25781 ++#define SYNTAX_NORMAL_C3(id, mne, opc, nxt, op0, op1, op2, arch)	\
47.25782 ++  {								\
47.25783 ++    AVR32_SYNTAX_##id, arch,				\
47.25784 ++    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],		\
47.25785 ++    AVR32_PARSER_NORMAL,						\
47.25786 ++    { &avr32_opc_table[AVR32_OPC_##opc], },				\
47.25787 ++    &avr32_syntax_table[AVR32_SYNTAX_##nxt], 3,			\
47.25788 ++    {								\
47.25789 ++      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,			\
47.25790 ++      AVR32_OPERAND_##op2,					\
47.25791 ++    }								\
47.25792 ++  }
47.25793 ++#define SYNTAX_NORMAL_CM3(id, mne, opc, nxt, op0, op1, op2, arch)	\
47.25794 ++  {								\
47.25795 ++    AVR32_SYNTAX_##id, arch,				\
47.25796 ++    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],		\
47.25797 ++    AVR32_PARSER_NORMAL,						\
47.25798 ++    { &avr32_opc_table[AVR32_OPC_##opc], },				\
47.25799 ++    &avr32_syntax_table[AVR32_SYNTAX_##nxt], -3,		\
47.25800 ++    {								\
47.25801 ++      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,			\
47.25802 ++      AVR32_OPERAND_##op2,					\
47.25803 ++    }								\
47.25804 ++  }
47.25805 ++
47.25806 ++#define SYNTAX_FP(name, nr_ops)					\
47.25807 ++    {								\
47.25808 ++      AVR32_SYNTAX_##name##_S,					\
47.25809 ++      AVR32_FP, NULL, AVR32_PARSER_ALIAS,			\
47.25810 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_S] },	\
47.25811 ++      NULL, nr_ops,						\
47.25812 ++      {								\
47.25813 ++	AVR32_OPERAND_FPREG_S,					\
47.25814 ++	AVR32_OPERAND_FPREG_S,					\
47.25815 ++	AVR32_OPERAND_FPREG_S,					\
47.25816 ++      },							\
47.25817 ++    },								\
47.25818 ++    {								\
47.25819 ++      AVR32_SYNTAX_##name##_D,					\
47.25820 ++      AVR32_FP, NULL, AVR32_PARSER_ALIAS,			\
47.25821 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_D] },	\
47.25822 ++      NULL, nr_ops,						\
47.25823 ++      {								\
47.25824 ++	AVR32_OPERAND_FPREG_D,					\
47.25825 ++	AVR32_OPERAND_FPREG_D,					\
47.25826 ++	AVR32_OPERAND_FPREG_D,					\
47.25827 ++      },							\
47.25828 ++    }
47.25829 ++
47.25830 ++const struct avr32_syntax avr32_syntax_table[] =
47.25831 ++  {
47.25832 ++    SYNTAX_NORMAL1(ABS, ABS, ABS, INTREG, AVR32_V1),
47.25833 ++    SYNTAX_NORMAL1(ACALL, ACALL, ACALL, UNSIGNED_CONST_W, AVR32_V1),
47.25834 ++    SYNTAX_NORMAL1(ACR, ACR, ACR, INTREG,AVR32_V1),
47.25835 ++    SYNTAX_NORMAL3(ADC, ADC, ADC, INTREG, INTREG, INTREG, AVR32_V1),
47.25836 ++    SYNTAX_NORMAL_C2(ADD1, ADD, ADD1, ADD2, INTREG, INTREG, AVR32_V1),
47.25837 ++    SYNTAX_NORMAL3(ADD2, ADD, ADD2, INTREG, INTREG, INTREG_LSL, AVR32_V1),
47.25838 ++    SYNTAX_NORMAL3(ADDABS, ADDABS, ADDABS, INTREG, INTREG, INTREG, AVR32_V1),
47.25839 ++    SYNTAX_NORMAL3(ADDHH_W, ADDHH_W, ADDHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
47.25840 ++    SYNTAX_NORMAL_C2(AND1, AND, AND1, AND2, INTREG, INTREG, AVR32_V1),
47.25841 ++    SYNTAX_NORMAL_C3(AND2, AND, AND2, AND3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
47.25842 ++    SYNTAX_NORMAL3(AND3, AND, AND3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
47.25843 ++    SYNTAX_NORMAL_C2(ANDH, ANDH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
47.25844 ++    SYNTAX_NORMAL3(ANDH_COH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
47.25845 ++    SYNTAX_NORMAL_C2(ANDL, ANDL, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
47.25846 ++    SYNTAX_NORMAL3(ANDL_COH, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
47.25847 ++    SYNTAX_NORMAL2(ANDN, ANDN, ANDN, INTREG, INTREG, AVR32_V1),
47.25848 ++    SYNTAX_NORMAL_C3(ASR1, ASR, ASR1, ASR3, INTREG, INTREG, INTREG, AVR32_V1),
47.25849 ++    SYNTAX_NORMAL_C3(ASR3, ASR, ASR3, ASR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
47.25850 ++    SYNTAX_NORMAL2(ASR2, ASR, ASR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
47.25851 ++    SYNTAX_NORMAL4(BFEXTS, BFEXTS, BFEXTS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
47.25852 ++    SYNTAX_NORMAL4(BFEXTU, BFEXTU, BFEXTU, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
47.25853 ++    SYNTAX_NORMAL4(BFINS, BFINS, BFINS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
47.25854 ++    SYNTAX_NORMAL2(BLD, BLD, BLD, INTREG, UNSIGNED_NUMBER, AVR32_V1),
47.25855 ++    SYNTAX_NORMAL_C1(BREQ1, BREQ, BREQ1, BREQ2, JMPLABEL, AVR32_V1),
47.25856 ++    SYNTAX_NORMAL_C1(BRNE1, BRNE, BRNE1, BRNE2, JMPLABEL, AVR32_V1),
47.25857 ++    SYNTAX_NORMAL_C1(BRCC1, BRCC, BRCC1, BRCC2, JMPLABEL, AVR32_V1),
47.25858 ++    SYNTAX_NORMAL_C1(BRCS1, BRCS, BRCS1, BRCS2, JMPLABEL, AVR32_V1),
47.25859 ++    SYNTAX_NORMAL_C1(BRGE1, BRGE, BRGE1, BRGE2, JMPLABEL, AVR32_V1),
47.25860 ++    SYNTAX_NORMAL_C1(BRLT1, BRLT, BRLT1, BRLT2, JMPLABEL, AVR32_V1),
47.25861 ++    SYNTAX_NORMAL_C1(BRMI1, BRMI, BRMI1, BRMI2, JMPLABEL, AVR32_V1),
47.25862 ++    SYNTAX_NORMAL_C1(BRPL1, BRPL, BRPL1, BRPL2, JMPLABEL, AVR32_V1),
47.25863 ++    SYNTAX_NORMAL_C1(BRHS1, BRHS, BRCC1, BRHS2, JMPLABEL, AVR32_V1),
47.25864 ++    SYNTAX_NORMAL_C1(BRLO1, BRLO, BRCS1, BRLO2, JMPLABEL, AVR32_V1),
47.25865 ++    SYNTAX_NORMAL1(BREQ2, BREQ, BREQ2, JMPLABEL, AVR32_V1),
47.25866 ++    SYNTAX_NORMAL1(BRNE2, BRNE, BRNE2, JMPLABEL, AVR32_V1),
47.25867 ++    SYNTAX_NORMAL1(BRCC2, BRCC, BRCC2, JMPLABEL, AVR32_V1),
47.25868 ++    SYNTAX_NORMAL1(BRCS2, BRCS, BRCS2, JMPLABEL, AVR32_V1),
47.25869 ++    SYNTAX_NORMAL1(BRGE2, BRGE, BRGE2, JMPLABEL, AVR32_V1),
47.25870 ++    SYNTAX_NORMAL1(BRLT2, BRLT, BRLT2, JMPLABEL, AVR32_V1),
47.25871 ++    SYNTAX_NORMAL1(BRMI2, BRMI, BRMI2, JMPLABEL, AVR32_V1),
47.25872 ++    SYNTAX_NORMAL1(BRPL2, BRPL, BRPL2, JMPLABEL, AVR32_V1),
47.25873 ++    SYNTAX_NORMAL1(BRLS, BRLS, BRLS, JMPLABEL, AVR32_V1),
47.25874 ++    SYNTAX_NORMAL1(BRGT, BRGT, BRGT, JMPLABEL, AVR32_V1),
47.25875 ++    SYNTAX_NORMAL1(BRLE, BRLE, BRLE, JMPLABEL, AVR32_V1),
47.25876 ++    SYNTAX_NORMAL1(BRHI, BRHI, BRHI, JMPLABEL, AVR32_V1),
47.25877 ++    SYNTAX_NORMAL1(BRVS, BRVS, BRVS, JMPLABEL, AVR32_V1),
47.25878 ++    SYNTAX_NORMAL1(BRVC, BRVC, BRVC, JMPLABEL, AVR32_V1),
47.25879 ++    SYNTAX_NORMAL1(BRQS, BRQS, BRQS, JMPLABEL, AVR32_V1),
47.25880 ++    SYNTAX_NORMAL1(BRAL, BRAL, BRAL, JMPLABEL, AVR32_V1),
47.25881 ++    SYNTAX_NORMAL1(BRHS2, BRHS, BRCC2, JMPLABEL, AVR32_V1),
47.25882 ++    SYNTAX_NORMAL1(BRLO2, BRLO, BRCS2, JMPLABEL, AVR32_V1),
47.25883 ++    SYNTAX_NORMAL0(BREAKPOINT, BREAKPOINT, BREAKPOINT, AVR32_V1),
47.25884 ++    SYNTAX_NORMAL1(BREV, BREV, BREV, INTREG, AVR32_V1),
47.25885 ++    SYNTAX_NORMAL2(BST, BST, BST, INTREG, UNSIGNED_NUMBER, AVR32_V1),
47.25886 ++    SYNTAX_NORMAL2(CACHE, CACHE, CACHE, INTREG_SDISP, UNSIGNED_NUMBER, AVR32_V1),
47.25887 ++    SYNTAX_NORMAL1(CASTS_B, CASTS_B, CASTS_B, INTREG, AVR32_V1),
47.25888 ++    SYNTAX_NORMAL1(CASTS_H, CASTS_H, CASTS_H, INTREG, AVR32_V1),
47.25889 ++    SYNTAX_NORMAL1(CASTU_B, CASTU_B, CASTU_B, INTREG, AVR32_V1),
47.25890 ++    SYNTAX_NORMAL1(CASTU_H, CASTU_H, CASTU_H, INTREG, AVR32_V1),
47.25891 ++    SYNTAX_NORMAL2(CBR, CBR, CBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
47.25892 ++    SYNTAX_NORMAL2(CLZ, CLZ, CLZ, INTREG, INTREG, AVR32_V1),
47.25893 ++    SYNTAX_NORMAL1(COM, COM, COM, INTREG, AVR32_V1),
47.25894 ++    SYNTAX_NORMAL5(COP, COP, COP, CPNO, CPREG, CPREG, CPREG, UNSIGNED_NUMBER, AVR32_V1),
47.25895 ++    SYNTAX_NORMAL2(CP_B, CP_B, CP_B, INTREG, INTREG, AVR32_V1),
47.25896 ++    SYNTAX_NORMAL2(CP_H, CP_H, CP_H, INTREG, INTREG, AVR32_V1),
47.25897 ++    SYNTAX_NORMAL_C2(CP_W1, CP_W, CP_W1, CP_W2, INTREG, INTREG, AVR32_V1),
47.25898 ++    SYNTAX_NORMAL_C2(CP_W2, CP_W, CP_W2, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
47.25899 ++    SYNTAX_NORMAL2(CP_W3, CP_W, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
47.25900 ++    SYNTAX_NORMAL_C2(CPC1, CPC, CPC1, CPC2, INTREG, INTREG, AVR32_V1),
47.25901 ++    SYNTAX_NORMAL1(CPC2, CPC, CPC2, INTREG, AVR32_V1),
47.25902 ++    SYNTAX_NORMAL1(CSRF, CSRF, CSRF, UNSIGNED_NUMBER, AVR32_V1),
47.25903 ++    SYNTAX_NORMAL1(CSRFCZ, CSRFCZ, CSRFCZ, UNSIGNED_NUMBER, AVR32_V1),
47.25904 ++    SYNTAX_NORMAL3(DIVS, DIVS, DIVS, INTREG, INTREG, INTREG, AVR32_V1),
47.25905 ++    SYNTAX_NORMAL3(DIVU, DIVU, DIVU, INTREG, INTREG, INTREG, AVR32_V1),
47.25906 ++    SYNTAX_NORMAL_C2(EOR1, EOR, EOR1, EOR2, INTREG, INTREG, AVR32_V1),
47.25907 ++    SYNTAX_NORMAL_C3(EOR2, EOR, EOR2, EOR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
47.25908 ++    SYNTAX_NORMAL3(EOR3, EOR, EOR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
47.25909 ++    SYNTAX_NORMAL2(EORL, EORL, EORL, INTREG, UNSIGNED_CONST, AVR32_V1),
47.25910 ++    SYNTAX_NORMAL2(EORH, EORH, EORH, INTREG, UNSIGNED_CONST, AVR32_V1),
47.25911 ++    SYNTAX_NORMAL0(FRS, FRS, FRS, AVR32_V1),
47.25912 ++    SYNTAX_NORMAL1(ICALL, ICALL, ICALL, INTREG, AVR32_V1),
47.25913 ++    SYNTAX_NORMAL1(INCJOSP, INCJOSP, INCJOSP, JOSPINC, AVR32_V1),
47.25914 ++    SYNTAX_NORMAL_C2(LD_D1, LD_D, LD_D1, LD_D2, DWREG, INTREG_POSTINC, AVR32_V1),
47.25915 ++    SYNTAX_NORMAL_C2(LD_D2, LD_D, LD_D2, LD_D3, DWREG, INTREG_PREDEC, AVR32_V1),
47.25916 ++    SYNTAX_NORMAL_C2(LD_D3, LD_D, LD_D3, LD_D5, DWREG, INTREG, AVR32_V1),
47.25917 ++    SYNTAX_NORMAL_C2(LD_D5, LD_D, LD_D5, LD_D4, DWREG, INTREG_INDEX, AVR32_V1),
47.25918 ++    SYNTAX_NORMAL2(LD_D4, LD_D, LD_D4, DWREG, INTREG_SDISP, AVR32_V1),
47.25919 ++    SYNTAX_NORMAL_C2(LD_SB2, LD_SB, LD_SB2, LD_SB1, INTREG, INTREG_INDEX, AVR32_V1),
47.25920 ++    SYNTAX_NORMAL2(LD_SB1, LD_SB, LD_SB1, INTREG, INTREG_SDISP, AVR32_V1),
47.25921 ++    SYNTAX_NORMAL_C2(LD_UB1, LD_UB, LD_UB1, LD_UB2, INTREG, INTREG_POSTINC, AVR32_V1),
47.25922 ++    SYNTAX_NORMAL_C2(LD_UB2, LD_UB, LD_UB2, LD_UB5, INTREG, INTREG_PREDEC, AVR32_V1),
47.25923 ++    SYNTAX_NORMAL_C2(LD_UB5, LD_UB, LD_UB5, LD_UB3, INTREG, INTREG_INDEX, AVR32_V1),
47.25924 ++    SYNTAX_NORMAL_C2(LD_UB3, LD_UB, LD_UB3, LD_UB4, INTREG, INTREG_UDISP, AVR32_V1),
47.25925 ++    SYNTAX_NORMAL2(LD_UB4, LD_UB, LD_UB4, INTREG, INTREG_SDISP, AVR32_V1),
47.25926 ++    SYNTAX_NORMAL_C2(LD_SH1, LD_SH, LD_SH1, LD_SH2, INTREG, INTREG_POSTINC, AVR32_V1),
47.25927 ++    SYNTAX_NORMAL_C2(LD_SH2, LD_SH, LD_SH2, LD_SH5, INTREG, INTREG_PREDEC, AVR32_V1),
47.25928 ++    SYNTAX_NORMAL_C2(LD_SH5, LD_SH, LD_SH5, LD_SH3, INTREG, INTREG_INDEX, AVR32_V1),
47.25929 ++    SYNTAX_NORMAL_C2(LD_SH3, LD_SH, LD_SH3, LD_SH4, INTREG, INTREG_UDISP_H, AVR32_V1),
47.25930 ++    SYNTAX_NORMAL2(LD_SH4, LD_SH, LD_SH4, INTREG, INTREG_SDISP, AVR32_V1),
47.25931 ++    SYNTAX_NORMAL_C2(LD_UH1, LD_UH, LD_UH1, LD_UH2, INTREG, INTREG_POSTINC, AVR32_V1),
47.25932 ++    SYNTAX_NORMAL_C2(LD_UH2, LD_UH, LD_UH2, LD_UH5, INTREG, INTREG_PREDEC, AVR32_V1),
47.25933 ++    SYNTAX_NORMAL_C2(LD_UH5, LD_UH, LD_UH5, LD_UH3, INTREG, INTREG_INDEX, AVR32_V1),
47.25934 ++    SYNTAX_NORMAL_C2(LD_UH3, LD_UH, LD_UH3, LD_UH4, INTREG, INTREG_UDISP_H, AVR32_V1),
47.25935 ++    SYNTAX_NORMAL2(LD_UH4, LD_UH, LD_UH4, INTREG, INTREG_SDISP, AVR32_V1),
47.25936 ++    SYNTAX_NORMAL_C2(LD_W1, LD_W, LD_W1, LD_W2, INTREG, INTREG_POSTINC, AVR32_V1),
47.25937 ++    SYNTAX_NORMAL_C2(LD_W2, LD_W, LD_W2, LD_W5, INTREG, INTREG_PREDEC, AVR32_V1),
47.25938 ++    SYNTAX_NORMAL_C2(LD_W5, LD_W, LD_W5, LD_W6, INTREG, INTREG_INDEX, AVR32_V1),
47.25939 ++    SYNTAX_NORMAL_C2(LD_W6, LD_W, LD_W6, LD_W3, INTREG, INTREG_XINDEX, AVR32_V1),
47.25940 ++    SYNTAX_NORMAL_C2(LD_W3, LD_W, LD_W3, LD_W4, INTREG, INTREG_UDISP_W, AVR32_V1),
47.25941 ++    SYNTAX_NORMAL2(LD_W4, LD_W, LD_W4, INTREG, INTREG_SDISP, AVR32_V1),
47.25942 ++    SYNTAX_NORMAL3(LDC_D1, LDC_D, LDC_D1, CPNO, CPREG_D, INTREG_UDISP_W, AVR32_V1),
47.25943 ++    SYNTAX_NORMAL_C3(LDC_D2, LDC_D, LDC_D2, LDC_D1, CPNO, CPREG_D, INTREG_PREDEC, AVR32_V1),
47.25944 ++    SYNTAX_NORMAL_C3(LDC_D3, LDC_D, LDC_D3, LDC_D2, CPNO, CPREG_D, INTREG_INDEX, AVR32_V1),
47.25945 ++    SYNTAX_NORMAL3(LDC_W1, LDC_W, LDC_W1, CPNO, CPREG, INTREG_UDISP_W, AVR32_V1),
47.25946 ++    SYNTAX_NORMAL_C3(LDC_W2, LDC_W, LDC_W2, LDC_W1, CPNO, CPREG, INTREG_PREDEC, AVR32_V1),
47.25947 ++    SYNTAX_NORMAL_C3(LDC_W3, LDC_W, LDC_W3, LDC_W2, CPNO, CPREG, INTREG_INDEX, AVR32_V1),
47.25948 ++    SYNTAX_NORMAL2(LDC0_D, LDC0_D, LDC0_D, CPREG_D, INTREG_UDISP_W, AVR32_V1),
47.25949 ++    SYNTAX_NORMAL2(LDC0_W, LDC0_W, LDC0_W, CPREG, INTREG_UDISP_W, AVR32_V1),
47.25950 ++    SYNTAX_NORMAL_CM3(LDCM_D, LDCM_D, LDCM_D, LDCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
47.25951 ++    SYNTAX_NORMALM3(LDCM_D_PU, LDCM_D, LDCM_D_PU, CPNO, INTREG_POSTINC, REGLIST_CPD8, AVR32_V1),
47.25952 ++    SYNTAX_NORMAL_CM3(LDCM_W, LDCM_W, LDCM_W, LDCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
47.25953 ++    SYNTAX_NORMALM3(LDCM_W_PU, LDCM_W, LDCM_W_PU, CPNO, INTREG_POSTINC, REGLIST_CP8, AVR32_V1),
47.25954 ++    SYNTAX_NORMAL2(LDDPC, LDDPC, LDDPC, INTREG, PC_UDISP_W, AVR32_V1),
47.25955 ++    SYNTAX_NORMAL2(LDDPC_EXT, LDDPC, LDDPC_EXT, INTREG, SIGNED_CONST, AVR32_V1),
47.25956 ++    SYNTAX_NORMAL2(LDDSP, LDDSP, LDDSP, INTREG, SP_UDISP_W, AVR32_V1),
47.25957 ++    SYNTAX_NORMAL2(LDINS_B, LDINS_B, LDINS_B, INTREG_BSEL, INTREG_SDISP, AVR32_V1),
47.25958 ++    SYNTAX_NORMAL2(LDINS_H, LDINS_H, LDINS_H, INTREG_HSEL, INTREG_SDISP_H, AVR32_V1),
47.25959 ++    SYNTAX_NORMALM1(LDM, LDM, LDM, REGLIST_LDM, AVR32_V1),
47.25960 ++    SYNTAX_NORMAL_CM2(LDMTS, LDMTS, LDMTS, LDMTS_PU, INTREG, REGLIST16, AVR32_V1),
47.25961 ++    SYNTAX_NORMALM2(LDMTS_PU, LDMTS, LDMTS_PU, INTREG_POSTINC, REGLIST16, AVR32_V1),
47.25962 ++    SYNTAX_NORMAL2(LDSWP_SH, LDSWP_SH, LDSWP_SH, INTREG, INTREG_SDISP_H, AVR32_V1),
47.25963 ++    SYNTAX_NORMAL2(LDSWP_UH, LDSWP_UH, LDSWP_UH, INTREG, INTREG_SDISP_H, AVR32_V1),
47.25964 ++    SYNTAX_NORMAL2(LDSWP_W, LDSWP_W, LDSWP_W, INTREG, INTREG_SDISP_W, AVR32_V1),
47.25965 ++    SYNTAX_NORMAL_C3(LSL1, LSL, LSL1, LSL3, INTREG, INTREG, INTREG, AVR32_V1),
47.25966 ++    SYNTAX_NORMAL_C3(LSL3, LSL, LSL3, LSL2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
47.25967 ++    SYNTAX_NORMAL2(LSL2, LSL, LSL2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
47.25968 ++    SYNTAX_NORMAL_C3(LSR1, LSR, LSR1, LSR3, INTREG, INTREG, INTREG, AVR32_V1),
47.25969 ++    SYNTAX_NORMAL_C3(LSR3, LSR, LSR3, LSR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
47.25970 ++    SYNTAX_NORMAL2(LSR2, LSR, LSR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
47.25971 ++    SYNTAX_NORMAL3(MAC, MAC, MAC, INTREG, INTREG, INTREG, AVR32_V1),
47.25972 ++    SYNTAX_NORMAL3(MACHH_D, MACHH_D, MACHH_D, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
47.25973 ++    SYNTAX_NORMAL3(MACHH_W, MACHH_W, MACHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
47.25974 ++    SYNTAX_NORMAL3(MACS_D, MACS_D, MACS_D, INTREG, INTREG, INTREG, AVR32_V1),
47.25975 ++    SYNTAX_NORMAL3(MACSATHH_W, MACSATHH_W, MACSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
47.25976 ++    SYNTAX_NORMAL3(MACUD, MACU_D, MACUD, INTREG, INTREG, INTREG, AVR32_V1),
47.25977 ++    SYNTAX_NORMAL3(MACWH_D, MACWH_D, MACWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
47.25978 ++    SYNTAX_NORMAL3(MAX, MAX, MAX, INTREG, INTREG, INTREG, AVR32_V1),
47.25979 ++    SYNTAX_NORMAL1(MCALL, MCALL, MCALL, MCALL, AVR32_V1),
47.25980 ++    SYNTAX_NORMAL2(MFDR, MFDR, MFDR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
47.25981 ++    SYNTAX_NORMAL2(MFSR, MFSR, MFSR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
47.25982 ++    SYNTAX_NORMAL3(MIN, MIN, MIN, INTREG, INTREG, INTREG, AVR32_V1),
47.25983 ++    SYNTAX_NORMAL_C2(MOV3, MOV, MOV3, MOV1, INTREG, INTREG, AVR32_V1),
47.25984 ++    SYNTAX_NORMAL_C2(MOV1, MOV, MOV1, MOV2, INTREG, SIGNED_CONST, AVR32_V1),
47.25985 ++    SYNTAX_NORMAL2(MOV2, MOV, MOV2,INTREG, SIGNED_CONST, AVR32_V1),
47.25986 ++    SYNTAX_NORMAL_C2(MOVEQ1, MOVEQ, MOVEQ1, MOVEQ2, INTREG, INTREG, AVR32_V1),
47.25987 ++    SYNTAX_NORMAL_C2(MOVNE1, MOVNE, MOVNE1, MOVNE2, INTREG, INTREG, AVR32_V1),
47.25988 ++    SYNTAX_NORMAL_C2(MOVCC1, MOVCC, MOVCC1, MOVCC2, INTREG, INTREG, AVR32_V1),
47.25989 ++    SYNTAX_NORMAL_C2(MOVCS1, MOVCS, MOVCS1, MOVCS2, INTREG, INTREG, AVR32_V1),
47.25990 ++    SYNTAX_NORMAL_C2(MOVGE1, MOVGE, MOVGE1, MOVGE2, INTREG, INTREG, AVR32_V1),
47.25991 ++    SYNTAX_NORMAL_C2(MOVLT1, MOVLT, MOVLT1, MOVLT2, INTREG, INTREG, AVR32_V1),
47.25992 ++    SYNTAX_NORMAL_C2(MOVMI1, MOVMI, MOVMI1, MOVMI2, INTREG, INTREG, AVR32_V1),
47.25993 ++    SYNTAX_NORMAL_C2(MOVPL1, MOVPL, MOVPL1, MOVPL2, INTREG, INTREG, AVR32_V1),
47.25994 ++    SYNTAX_NORMAL_C2(MOVLS1, MOVLS, MOVLS1, MOVLS2, INTREG, INTREG, AVR32_V1),
47.25995 ++    SYNTAX_NORMAL_C2(MOVGT1, MOVGT, MOVGT1, MOVGT2, INTREG, INTREG, AVR32_V1),
47.25996 ++    SYNTAX_NORMAL_C2(MOVLE1, MOVLE, MOVLE1, MOVLE2, INTREG, INTREG, AVR32_V1),
47.25997 ++    SYNTAX_NORMAL_C2(MOVHI1, MOVHI, MOVHI1, MOVHI2, INTREG, INTREG, AVR32_V1),
47.25998 ++    SYNTAX_NORMAL_C2(MOVVS1, MOVVS, MOVVS1, MOVVS2, INTREG, INTREG, AVR32_V1),
47.25999 ++    SYNTAX_NORMAL_C2(MOVVC1, MOVVC, MOVVC1, MOVVC2, INTREG, INTREG, AVR32_V1),
47.26000 ++    SYNTAX_NORMAL_C2(MOVQS1, MOVQS, MOVQS1, MOVQS2, INTREG, INTREG, AVR32_V1),
47.26001 ++    SYNTAX_NORMAL_C2(MOVAL1, MOVAL, MOVAL1, MOVAL2, INTREG, INTREG, AVR32_V1),
47.26002 ++    SYNTAX_NORMAL_C2(MOVHS1, MOVHS, MOVCC1, MOVHS2, INTREG, INTREG, AVR32_V1),
47.26003 ++    SYNTAX_NORMAL_C2(MOVLO1, MOVLO, MOVCS1, MOVLO2, INTREG, INTREG, AVR32_V1),
47.26004 ++    SYNTAX_NORMAL2(MOVEQ2, MOVEQ, MOVEQ2, INTREG, SIGNED_CONST, AVR32_V1),
47.26005 ++    SYNTAX_NORMAL2(MOVNE2, MOVNE, MOVNE2, INTREG, SIGNED_CONST, AVR32_V1),
47.26006 ++    SYNTAX_NORMAL2(MOVCC2, MOVCC, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
47.26007 ++    SYNTAX_NORMAL2(MOVCS2, MOVCS, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
47.26008 ++    SYNTAX_NORMAL2(MOVGE2, MOVGE, MOVGE2, INTREG, SIGNED_CONST, AVR32_V1),
47.26009 ++    SYNTAX_NORMAL2(MOVLT2, MOVLT, MOVLT2, INTREG, SIGNED_CONST, AVR32_V1),
47.26010 ++    SYNTAX_NORMAL2(MOVMI2, MOVMI, MOVMI2, INTREG, SIGNED_CONST, AVR32_V1),
47.26011 ++    SYNTAX_NORMAL2(MOVPL2, MOVPL, MOVPL2, INTREG, SIGNED_CONST, AVR32_V1),
47.26012 ++    SYNTAX_NORMAL2(MOVLS2, MOVLS, MOVLS2, INTREG, SIGNED_CONST, AVR32_V1),
47.26013 ++    SYNTAX_NORMAL2(MOVGT2, MOVGT, MOVGT2, INTREG, SIGNED_CONST, AVR32_V1),
47.26014 ++    SYNTAX_NORMAL2(MOVLE2, MOVLE, MOVLE2, INTREG, SIGNED_CONST, AVR32_V1),
47.26015 ++    SYNTAX_NORMAL2(MOVHI2, MOVHI, MOVHI2, INTREG, SIGNED_CONST, AVR32_V1),
47.26016 ++    SYNTAX_NORMAL2(MOVVS2, MOVVS, MOVVS2, INTREG, SIGNED_CONST, AVR32_V1),
47.26017 ++    SYNTAX_NORMAL2(MOVVC2, MOVVC, MOVVC2, INTREG, SIGNED_CONST, AVR32_V1),
47.26018 ++    SYNTAX_NORMAL2(MOVQS2, MOVQS, MOVQS2, INTREG, SIGNED_CONST, AVR32_V1),
47.26019 ++    SYNTAX_NORMAL2(MOVAL2, MOVAL, MOVAL2, INTREG, SIGNED_CONST, AVR32_V1),
47.26020 ++    SYNTAX_NORMAL2(MOVHS2, MOVHS, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
47.26021 ++    SYNTAX_NORMAL2(MOVLO2, MOVLO, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
47.26022 ++    SYNTAX_NORMAL2(MTDR, MTDR, MTDR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
47.26023 ++    SYNTAX_NORMAL2(MTSR, MTSR, MTSR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
47.26024 ++    SYNTAX_NORMAL_C2(MUL1, MUL, MUL1, MUL2, INTREG, INTREG, AVR32_V1),
47.26025 ++    SYNTAX_NORMAL_C3(MUL2, MUL, MUL2, MUL3, INTREG, INTREG, INTREG, AVR32_V1),
47.26026 ++    SYNTAX_NORMAL3(MUL3, MUL, MUL3, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
47.26027 ++    SYNTAX_NORMAL3(MULHH_W, MULHH_W, MULHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
47.26028 ++    SYNTAX_NORMAL3(MULNHH_W, MULNHH_W, MULNHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
47.26029 ++    SYNTAX_NORMAL3(MULNWH_D, MULNWH_D, MULNWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
47.26030 ++    SYNTAX_NORMAL3(MULSD, MULS_D, MULSD, INTREG, INTREG, INTREG, AVR32_V1),
47.26031 ++    SYNTAX_NORMAL3(MULSATHH_H, MULSATHH_H, MULSATHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
47.26032 ++    SYNTAX_NORMAL3(MULSATHH_W, MULSATHH_W, MULSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
47.26033 ++    SYNTAX_NORMAL3(MULSATRNDHH_H, MULSATRNDHH_H, MULSATRNDHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
47.26034 ++    SYNTAX_NORMAL3(MULSATRNDWH_W, MULSATRNDWH_W, MULSATRNDWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
47.26035 ++    SYNTAX_NORMAL3(MULSATWH_W, MULSATWH_W, MULSATWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
47.26036 ++    SYNTAX_NORMAL3(MULU_D, MULU_D, MULU_D, INTREG, INTREG, INTREG, AVR32_V1),
47.26037 ++    SYNTAX_NORMAL3(MULWH_D, MULWH_D, MULWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
47.26038 ++    SYNTAX_NORMAL1(MUSFR, MUSFR, MUSFR, INTREG, AVR32_V1),
47.26039 ++    SYNTAX_NORMAL1(MUSTR, MUSTR, MUSTR, INTREG, AVR32_V1),
47.26040 ++    SYNTAX_NORMAL3(MVCR_D, MVCR_D, MVCR_D, CPNO, DWREG, CPREG_D, AVR32_V1),
47.26041 ++    SYNTAX_NORMAL3(MVCR_W, MVCR_W, MVCR_W, CPNO, INTREG, CPREG, AVR32_V1),
47.26042 ++    SYNTAX_NORMAL3(MVRC_D, MVRC_D, MVRC_D, CPNO, CPREG_D, DWREG, AVR32_V1),
47.26043 ++    SYNTAX_NORMAL3(MVRC_W, MVRC_W, MVRC_W, CPNO, CPREG, INTREG, AVR32_V1),
47.26044 ++    SYNTAX_NORMAL1(NEG, NEG, NEG, INTREG, AVR32_V1),
47.26045 ++    SYNTAX_NORMAL0(NOP, NOP, NOP, AVR32_V1),
47.26046 ++    SYNTAX_NORMAL_C2(OR1, OR, OR1, OR2, INTREG, INTREG, AVR32_V1),
47.26047 ++    SYNTAX_NORMAL_C3(OR2, OR, OR2, OR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
47.26048 ++    SYNTAX_NORMAL3(OR3, OR, OR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
47.26049 ++    SYNTAX_NORMAL2(ORH, ORH, ORH, INTREG, UNSIGNED_CONST, AVR32_V1),
47.26050 ++    SYNTAX_NORMAL2(ORL, ORL, ORL, INTREG, UNSIGNED_CONST, AVR32_V1),
47.26051 ++    SYNTAX_NORMAL2(PABS_SB, PABS_SB, PABS_SB, INTREG, INTREG, AVR32_SIMD),
47.26052 ++    SYNTAX_NORMAL2(PABS_SH, PABS_SH, PABS_SH, INTREG, INTREG, AVR32_SIMD),
47.26053 ++    SYNTAX_NORMAL3(PACKSH_SB, PACKSH_SB, PACKSH_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26054 ++    SYNTAX_NORMAL3(PACKSH_UB, PACKSH_UB, PACKSH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26055 ++    SYNTAX_NORMAL3(PACKW_SH, PACKW_SH, PACKW_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26056 ++    SYNTAX_NORMAL3(PADD_B, PADD_B, PADD_B, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26057 ++    SYNTAX_NORMAL3(PADD_H, PADD_H, PADD_H, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26058 ++    SYNTAX_NORMAL3(PADDH_SH, PADDH_SH, PADDH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26059 ++    SYNTAX_NORMAL3(PADDH_UB, PADDH_UB, PADDH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26060 ++    SYNTAX_NORMAL3(PADDS_SB, PADDS_SB, PADDS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26061 ++    SYNTAX_NORMAL3(PADDS_SH, PADDS_SH, PADDS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26062 ++    SYNTAX_NORMAL3(PADDS_UB, PADDS_UB, PADDS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26063 ++    SYNTAX_NORMAL3(PADDS_UH, PADDS_UH, PADDS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26064 ++    SYNTAX_NORMAL3(PADDSUB_H, PADDSUB_H, PADDSUB_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
47.26065 ++    SYNTAX_NORMAL3(PADDSUBH_SH, PADDSUBH_SH, PADDSUBH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
47.26066 ++    SYNTAX_NORMAL3(PADDSUBS_SH, PADDSUBS_SH, PADDSUBS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
47.26067 ++    SYNTAX_NORMAL3(PADDSUBS_UH, PADDSUBS_UH, PADDSUBS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
47.26068 ++    SYNTAX_NORMAL3(PADDX_H, PADDX_H, PADDX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26069 ++    SYNTAX_NORMAL3(PADDXH_SH, PADDXH_SH, PADDXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26070 ++    SYNTAX_NORMAL3(PADDXS_SH, PADDXS_SH, PADDXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26071 ++    SYNTAX_NORMAL3(PADDXS_UH, PADDXS_UH, PADDXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26072 ++    SYNTAX_NORMAL3(PASR_B, PASR_B, PASR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
47.26073 ++    SYNTAX_NORMAL3(PASR_H, PASR_H, PASR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
47.26074 ++    SYNTAX_NORMAL3(PAVG_SH, PAVG_SH, PAVG_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26075 ++    SYNTAX_NORMAL3(PAVG_UB, PAVG_UB, PAVG_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26076 ++    SYNTAX_NORMAL3(PLSL_B, PLSL_B, PLSL_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
47.26077 ++    SYNTAX_NORMAL3(PLSL_H, PLSL_H, PLSL_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
47.26078 ++    SYNTAX_NORMAL3(PLSR_B, PLSR_B, PLSR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
47.26079 ++    SYNTAX_NORMAL3(PLSR_H, PLSR_H, PLSR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
47.26080 ++    SYNTAX_NORMAL3(PMAX_SH, PMAX_SH, PMAX_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26081 ++    SYNTAX_NORMAL3(PMAX_UB, PMAX_UB, PMAX_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26082 ++    SYNTAX_NORMAL3(PMIN_SH, PMIN_SH, PMIN_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26083 ++    SYNTAX_NORMAL3(PMIN_UB, PMIN_UB, PMIN_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26084 ++    SYNTAX_NORMAL0(POPJC, POPJC, POPJC, AVR32_V1),
47.26085 ++    SYNTAX_NORMAL_CM1(POPM, POPM, POPM, POPM_E, REGLIST9, AVR32_V1),
47.26086 ++    SYNTAX_NORMALM1(POPM_E, POPM, POPM_E, REGLIST16, AVR32_V1),
47.26087 ++    SYNTAX_NORMAL1(PREF, PREF, PREF, INTREG_SDISP, AVR32_V1),
47.26088 ++    SYNTAX_NORMAL3(PSAD, PSAD, PSAD, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26089 ++    SYNTAX_NORMAL3(PSUB_B, PSUB_B, PSUB_B, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26090 ++    SYNTAX_NORMAL3(PSUB_H, PSUB_H, PSUB_H, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26091 ++    SYNTAX_NORMAL3(PSUBADD_H, PSUBADD_H, PSUBADD_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
47.26092 ++    SYNTAX_NORMAL3(PSUBADDH_SH, PSUBADDH_SH, PSUBADDH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
47.26093 ++    SYNTAX_NORMAL3(PSUBADDS_SH, PSUBADDS_SH, PSUBADDS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
47.26094 ++    SYNTAX_NORMAL3(PSUBADDS_UH, PSUBADDS_UH, PSUBADDS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
47.26095 ++    SYNTAX_NORMAL3(PSUBH_SH, PSUBH_SH, PSUBH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26096 ++    SYNTAX_NORMAL3(PSUBH_UB, PSUBH_UB, PSUBH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26097 ++    SYNTAX_NORMAL3(PSUBS_SB, PSUBS_SB, PSUBS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26098 ++    SYNTAX_NORMAL3(PSUBS_SH, PSUBS_SH, PSUBS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26099 ++    SYNTAX_NORMAL3(PSUBS_UB, PSUBS_UB, PSUBS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26100 ++    SYNTAX_NORMAL3(PSUBS_UH, PSUBS_UH, PSUBS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26101 ++    SYNTAX_NORMAL3(PSUBX_H, PSUBX_H, PSUBX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26102 ++    SYNTAX_NORMAL3(PSUBXH_SH, PSUBXH_SH, PSUBXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26103 ++    SYNTAX_NORMAL3(PSUBXS_SH, PSUBXS_SH, PSUBXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26104 ++    SYNTAX_NORMAL3(PSUBXS_UH, PSUBXS_UH, PSUBXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
47.26105 ++    SYNTAX_NORMAL2(PUNPCKSB_H, PUNPCKSB_H, PUNPCKSB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
47.26106 ++    SYNTAX_NORMAL2(PUNPCKUB_H, PUNPCKUB_H, PUNPCKUB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
47.26107 ++    SYNTAX_NORMAL0(PUSHJC, PUSHJC, PUSHJC, AVR32_V1),
47.26108 ++    SYNTAX_NORMAL_CM1(PUSHM, PUSHM, PUSHM, PUSHM_E, REGLIST8, AVR32_V1),
47.26109 ++    SYNTAX_NORMALM1(PUSHM_E, PUSHM, PUSHM_E, REGLIST16, AVR32_V1),
47.26110 ++    SYNTAX_NORMAL_C1(RCALL1, RCALL, RCALL1, RCALL2, JMPLABEL, AVR32_V1),
47.26111 ++    SYNTAX_NORMAL1(RCALL2, RCALL, RCALL2, JMPLABEL, AVR32_V1),
47.26112 ++    SYNTAX_NORMAL1(RETEQ, RETEQ, RETEQ, RETVAL, AVR32_V1),
47.26113 ++    SYNTAX_NORMAL1(RETNE, RETNE, RETNE, RETVAL, AVR32_V1),
47.26114 ++    SYNTAX_NORMAL1(RETCC, RETCC, RETCC, RETVAL, AVR32_V1),
47.26115 ++    SYNTAX_NORMAL1(RETCS, RETCS, RETCS, RETVAL, AVR32_V1),
47.26116 ++    SYNTAX_NORMAL1(RETGE, RETGE, RETGE, RETVAL, AVR32_V1),
47.26117 ++    SYNTAX_NORMAL1(RETLT, RETLT, RETLT, RETVAL, AVR32_V1),
47.26118 ++    SYNTAX_NORMAL1(RETMI, RETMI, RETMI, RETVAL, AVR32_V1),
47.26119 ++    SYNTAX_NORMAL1(RETPL, RETPL, RETPL, RETVAL, AVR32_V1),
47.26120 ++    SYNTAX_NORMAL1(RETLS, RETLS, RETLS, RETVAL, AVR32_V1),
47.26121 ++    SYNTAX_NORMAL1(RETGT, RETGT, RETGT, RETVAL, AVR32_V1),
47.26122 ++    SYNTAX_NORMAL1(RETLE, RETLE, RETLE, RETVAL, AVR32_V1),
47.26123 ++    SYNTAX_NORMAL1(RETHI, RETHI, RETHI, RETVAL, AVR32_V1),
47.26124 ++    SYNTAX_NORMAL1(RETVS, RETVS, RETVS, RETVAL, AVR32_V1),
47.26125 ++    SYNTAX_NORMAL1(RETVC, RETVC, RETVC, RETVAL, AVR32_V1),
47.26126 ++    SYNTAX_NORMAL1(RETQS, RETQS, RETQS, RETVAL, AVR32_V1),
47.26127 ++    SYNTAX_NORMAL1(RETAL, RETAL, RETAL, RETVAL, AVR32_V1),
47.26128 ++    SYNTAX_NORMAL1(RETHS, RETHS, RETCC, RETVAL, AVR32_V1),
47.26129 ++    SYNTAX_NORMAL1(RETLO, RETLO, RETCS, RETVAL, AVR32_V1),
47.26130 ++    SYNTAX_NORMAL0(RETD, RETD, RETD, AVR32_V1),
47.26131 ++    SYNTAX_NORMAL0(RETE, RETE, RETE, AVR32_V1),
47.26132 ++    SYNTAX_NORMAL0(RETJ, RETJ, RETJ, AVR32_V1),
47.26133 ++    SYNTAX_NORMAL0(RETS, RETS, RETS, AVR32_V1),
47.26134 ++    SYNTAX_NORMAL1(RJMP, RJMP, RJMP, JMPLABEL, AVR32_V1),
47.26135 ++    SYNTAX_NORMAL1(ROL, ROL, ROL, INTREG, AVR32_V1),
47.26136 ++    SYNTAX_NORMAL1(ROR, ROR, ROR, INTREG, AVR32_V1),
47.26137 ++    SYNTAX_NORMAL_C2(RSUB1, RSUB, RSUB1, RSUB2, INTREG, INTREG, AVR32_V1),
47.26138 ++    SYNTAX_NORMAL3(RSUB2, RSUB, RSUB2, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
47.26139 ++    SYNTAX_NORMAL3(SATADD_H, SATADD_H, SATADD_H, INTREG, INTREG, INTREG,  AVR32_DSP),
47.26140 ++    SYNTAX_NORMAL3(SATADD_W, SATADD_W, SATADD_W, INTREG, INTREG, INTREG, AVR32_DSP),
47.26141 ++    SYNTAX_NORMAL2(SATRNDS, SATRNDS, SATRNDS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
47.26142 ++    SYNTAX_NORMAL2(SATRNDU, SATRNDU, SATRNDU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
47.26143 ++    SYNTAX_NORMAL2(SATS, SATS, SATS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
47.26144 ++    SYNTAX_NORMAL3(SATSUB_H, SATSUB_H, SATSUB_H, INTREG, INTREG, INTREG, AVR32_DSP),
47.26145 ++    SYNTAX_NORMAL_C3(SATSUB_W1, SATSUB_W, SATSUB_W1, SATSUB_W2, INTREG, INTREG, INTREG, AVR32_DSP),
47.26146 ++    SYNTAX_NORMAL3(SATSUB_W2, SATSUB_W, SATSUB_W2, INTREG, INTREG, SIGNED_CONST, AVR32_DSP),
47.26147 ++    SYNTAX_NORMAL2(SATU, SATU, SATU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_V1),
47.26148 ++    SYNTAX_NORMAL3(SBC, SBC, SBC, INTREG, INTREG, INTREG, AVR32_V1),
47.26149 ++    SYNTAX_NORMAL2(SBR, SBR, SBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
47.26150 ++    SYNTAX_NORMAL0(SCALL, SCALL, SCALL, AVR32_V1),
47.26151 ++    SYNTAX_NORMAL1(SCR, SCR, SCR, INTREG, AVR32_V1),
47.26152 ++    SYNTAX_NORMAL1(SLEEP, SLEEP, SLEEP, UNSIGNED_CONST, AVR32_V1),
47.26153 ++    SYNTAX_NORMAL1(SREQ, SREQ, SREQ, INTREG, AVR32_V1),
47.26154 ++    SYNTAX_NORMAL1(SRNE, SRNE, SRNE, INTREG, AVR32_V1),
47.26155 ++    SYNTAX_NORMAL1(SRCC, SRCC, SRCC, INTREG, AVR32_V1),
47.26156 ++    SYNTAX_NORMAL1(SRCS, SRCS, SRCS, INTREG, AVR32_V1),
47.26157 ++    SYNTAX_NORMAL1(SRGE, SRGE, SRGE, INTREG, AVR32_V1),
47.26158 ++    SYNTAX_NORMAL1(SRLT, SRLT, SRLT, INTREG, AVR32_V1),
47.26159 ++    SYNTAX_NORMAL1(SRMI, SRMI, SRMI, INTREG, AVR32_V1),
47.26160 ++    SYNTAX_NORMAL1(SRPL, SRPL, SRPL, INTREG, AVR32_V1),
47.26161 ++    SYNTAX_NORMAL1(SRLS, SRLS, SRLS, INTREG, AVR32_V1),
47.26162 ++    SYNTAX_NORMAL1(SRGT, SRGT, SRGT, INTREG, AVR32_V1),
47.26163 ++    SYNTAX_NORMAL1(SRLE, SRLE, SRLE, INTREG, AVR32_V1),
47.26164 ++    SYNTAX_NORMAL1(SRHI, SRHI, SRHI, INTREG, AVR32_V1),
47.26165 ++    SYNTAX_NORMAL1(SRVS, SRVS, SRVS, INTREG, AVR32_V1),
47.26166 ++    SYNTAX_NORMAL1(SRVC, SRVC, SRVC, INTREG, AVR32_V1),
47.26167 ++    SYNTAX_NORMAL1(SRQS, SRQS, SRQS, INTREG, AVR32_V1),
47.26168 ++    SYNTAX_NORMAL1(SRAL, SRAL, SRAL, INTREG, AVR32_V1),
47.26169 ++    SYNTAX_NORMAL1(SRHS, SRHS, SRCC, INTREG, AVR32_V1),
47.26170 ++    SYNTAX_NORMAL1(SRLO, SRLO, SRCS, INTREG, AVR32_V1),
47.26171 ++    SYNTAX_NORMAL1(SSRF, SSRF, SSRF, UNSIGNED_NUMBER, AVR32_V1),
47.26172 ++    SYNTAX_NORMAL_C2(ST_B1, ST_B, ST_B1, ST_B2, INTREG_POSTINC, INTREG, AVR32_V1),
47.26173 ++    SYNTAX_NORMAL_C2(ST_B2, ST_B, ST_B2, ST_B5, INTREG_PREDEC, INTREG, AVR32_V1),
47.26174 ++    SYNTAX_NORMAL_C2(ST_B5, ST_B, ST_B5, ST_B3, INTREG_INDEX, INTREG, AVR32_V1),
47.26175 ++    SYNTAX_NORMAL_C2(ST_B3, ST_B, ST_B3, ST_B4, INTREG_UDISP, INTREG, AVR32_V1),
47.26176 ++    SYNTAX_NORMAL2(ST_B4, ST_B, ST_B4, INTREG_SDISP, INTREG, AVR32_V1),
47.26177 ++    SYNTAX_NORMAL_C2(ST_D1, ST_D, ST_D1, ST_D2, INTREG_POSTINC, DWREG, AVR32_V1),
47.26178 ++    SYNTAX_NORMAL_C2(ST_D2, ST_D, ST_D2, ST_D3, INTREG_PREDEC, DWREG, AVR32_V1),
47.26179 ++    SYNTAX_NORMAL_C2(ST_D3, ST_D, ST_D3, ST_D5, INTREG, DWREG, AVR32_V1),
47.26180 ++    SYNTAX_NORMAL_C2(ST_D5, ST_D, ST_D5, ST_D4, INTREG_INDEX, DWREG, AVR32_V1),
47.26181 ++    SYNTAX_NORMAL2(ST_D4, ST_D, ST_D4, INTREG_SDISP, DWREG, AVR32_V1),
47.26182 ++    SYNTAX_NORMAL_C2(ST_H1, ST_H, ST_H1, ST_H2, INTREG_POSTINC, INTREG, AVR32_V1),
47.26183 ++    SYNTAX_NORMAL_C2(ST_H2, ST_H, ST_H2, ST_H5, INTREG_PREDEC, INTREG, AVR32_V1),
47.26184 ++    SYNTAX_NORMAL_C2(ST_H5, ST_H, ST_H5, ST_H3, INTREG_INDEX, INTREG, AVR32_V1),
47.26185 ++    SYNTAX_NORMAL_C2(ST_H3, ST_H, ST_H3, ST_H4, INTREG_UDISP_H, INTREG, AVR32_V1),
47.26186 ++    SYNTAX_NORMAL2(ST_H4, ST_H, ST_H4, INTREG_SDISP, INTREG, AVR32_V1),
47.26187 ++    SYNTAX_NORMAL_C2(ST_W1, ST_W, ST_W1, ST_W2, INTREG_POSTINC, INTREG, AVR32_V1),
47.26188 ++    SYNTAX_NORMAL_C2(ST_W2, ST_W, ST_W2, ST_W5, INTREG_PREDEC, INTREG, AVR32_V1),
47.26189 ++    SYNTAX_NORMAL_C2(ST_W5, ST_W, ST_W5, ST_W3, INTREG_INDEX, INTREG, AVR32_V1),
47.26190 ++    SYNTAX_NORMAL_C2(ST_W3, ST_W, ST_W3, ST_W4, INTREG_UDISP_W, INTREG, AVR32_V1),
47.26191 ++    SYNTAX_NORMAL2(ST_W4, ST_W, ST_W4, INTREG_SDISP, INTREG, AVR32_V1),
47.26192 ++    SYNTAX_NORMAL3(STC_D1, STC_D, STC_D1, CPNO, INTREG_UDISP_W, CPREG_D, AVR32_V1),
47.26193 ++    SYNTAX_NORMAL_C3(STC_D2, STC_D, STC_D2, STC_D1, CPNO, INTREG_POSTINC, CPREG_D, AVR32_V1),
47.26194 ++    SYNTAX_NORMAL_C3(STC_D3, STC_D, STC_D3, STC_D2, CPNO, INTREG_INDEX, CPREG_D, AVR32_V1),
47.26195 ++    SYNTAX_NORMAL3(STC_W1, STC_W, STC_W1, CPNO, INTREG_UDISP_W, CPREG, AVR32_V1),
47.26196 ++    SYNTAX_NORMAL_C3(STC_W2, STC_W, STC_W2, STC_W1, CPNO, INTREG_POSTINC, CPREG, AVR32_V1),
47.26197 ++    SYNTAX_NORMAL_C3(STC_W3, STC_W, STC_W3, STC_W2, CPNO, INTREG_INDEX, CPREG, AVR32_V1),
47.26198 ++    SYNTAX_NORMAL2(STC0_D, STC0_D, STC0_D, INTREG_UDISP_W, CPREG_D, AVR32_V1),
47.26199 ++    SYNTAX_NORMAL2(STC0_W, STC0_W, STC0_W, INTREG_UDISP_W, CPREG, AVR32_V1),
47.26200 ++    SYNTAX_NORMAL_CM3(STCM_D, STCM_D, STCM_D, STCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
47.26201 ++    SYNTAX_NORMALM3(STCM_D_PU, STCM_D, STCM_D_PU, CPNO, INTREG_PREDEC, REGLIST_CPD8, AVR32_V1),
47.26202 ++    SYNTAX_NORMAL_CM3(STCM_W, STCM_W, STCM_W, STCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
47.26203 ++    SYNTAX_NORMALM3(STCM_W_PU, STCM_W, STCM_W_PU, CPNO, INTREG_PREDEC, REGLIST_CP8, AVR32_V1),
47.26204 ++    SYNTAX_NORMAL2(STCOND, STCOND, STCOND, INTREG_SDISP, INTREG, AVR32_V1),
47.26205 ++    SYNTAX_NORMAL2(STDSP, STDSP, STDSP, SP_UDISP_W, INTREG, AVR32_V1),
47.26206 ++    SYNTAX_NORMAL_C3(STHH_W2, STHH_W, STHH_W2, STHH_W1, INTREG_INDEX, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
47.26207 ++    SYNTAX_NORMAL3(STHH_W1, STHH_W, STHH_W1, INTREG_UDISP_W, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
47.26208 ++    SYNTAX_NORMAL_CM2(STM, STM, STM, STM_PU, INTREG, REGLIST16, AVR32_V1),
47.26209 ++    SYNTAX_NORMALM2(STM_PU, STM, STM_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
47.26210 ++    SYNTAX_NORMAL_CM2(STMTS, STMTS, STMTS, STMTS_PU, INTREG, REGLIST16, AVR32_V1),
47.26211 ++    SYNTAX_NORMALM2(STMTS_PU, STMTS, STMTS_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
47.26212 ++    SYNTAX_NORMAL2(STSWP_H, STSWP_H, STSWP_H, INTREG_SDISP_H, INTREG, AVR32_V1),
47.26213 ++    SYNTAX_NORMAL2(STSWP_W, STSWP_W, STSWP_W, INTREG_SDISP_W, INTREG, AVR32_V1),
47.26214 ++    SYNTAX_NORMAL_C2(SUB1, SUB, SUB1, SUB2, INTREG, INTREG, AVR32_V1),
47.26215 ++    SYNTAX_NORMAL_C3(SUB2, SUB, SUB2, SUB5, INTREG, INTREG, INTREG_LSL, AVR32_V1),
47.26216 ++    SYNTAX_NORMAL_C3(SUB5, SUB, SUB5, SUB3_SP, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
47.26217 ++    SYNTAX_NORMAL_C2(SUB3_SP, SUB, SUB3_SP, SUB3, SP, SIGNED_CONST_W, AVR32_V1),
47.26218 ++    SYNTAX_NORMAL_C2(SUB3, SUB, SUB3, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
47.26219 ++    SYNTAX_NORMAL2(SUB4, SUB, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
47.26220 ++    SYNTAX_NORMAL_C2(SUBEQ, SUBEQ, SUBEQ, SUB2EQ, INTREG, SIGNED_CONST, AVR32_V1),
47.26221 ++    SYNTAX_NORMAL_C2(SUBNE, SUBNE, SUBNE, SUB2NE, INTREG, SIGNED_CONST, AVR32_V1),
47.26222 ++    SYNTAX_NORMAL_C2(SUBCC, SUBCC, SUBCC, SUB2CC, INTREG, SIGNED_CONST, AVR32_V1),
47.26223 ++    SYNTAX_NORMAL_C2(SUBCS, SUBCS, SUBCS, SUB2CS, INTREG, SIGNED_CONST, AVR32_V1),
47.26224 ++    SYNTAX_NORMAL_C2(SUBGE, SUBGE, SUBGE, SUB2GE, INTREG, SIGNED_CONST, AVR32_V1),
47.26225 ++    SYNTAX_NORMAL_C2(SUBLT, SUBLT, SUBLT, SUB2LT, INTREG, SIGNED_CONST, AVR32_V1),
47.26226 ++    SYNTAX_NORMAL_C2(SUBMI, SUBMI, SUBMI, SUB2MI, INTREG, SIGNED_CONST, AVR32_V1),
47.26227 ++    SYNTAX_NORMAL_C2(SUBPL, SUBPL, SUBPL, SUB2PL, INTREG, SIGNED_CONST, AVR32_V1),
47.26228 ++    SYNTAX_NORMAL_C2(SUBLS, SUBLS, SUBLS, SUB2LS, INTREG, SIGNED_CONST, AVR32_V1),
47.26229 ++    SYNTAX_NORMAL_C2(SUBGT, SUBGT, SUBGT, SUB2GT, INTREG, SIGNED_CONST, AVR32_V1),
47.26230 ++    SYNTAX_NORMAL_C2(SUBLE, SUBLE, SUBLE, SUB2LE, INTREG, SIGNED_CONST, AVR32_V1),
47.26231 ++    SYNTAX_NORMAL_C2(SUBHI, SUBHI, SUBHI, SUB2HI, INTREG, SIGNED_CONST, AVR32_V1),
47.26232 ++    SYNTAX_NORMAL_C2(SUBVS, SUBVS, SUBVS, SUB2VS, INTREG, SIGNED_CONST, AVR32_V1),
47.26233 ++    SYNTAX_NORMAL_C2(SUBVC, SUBVC, SUBVC, SUB2VC, INTREG, SIGNED_CONST, AVR32_V1),
47.26234 ++    SYNTAX_NORMAL_C2(SUBQS, SUBQS, SUBQS, SUB2QS, INTREG, SIGNED_CONST, AVR32_V1),
47.26235 ++    SYNTAX_NORMAL_C2(SUBAL, SUBAL, SUBAL, SUB2AL, INTREG, SIGNED_CONST, AVR32_V1),
47.26236 ++    SYNTAX_NORMAL_C2(SUBHS, SUBHS, SUBCC, SUB2CC, INTREG, SIGNED_CONST, AVR32_V1),
47.26237 ++    SYNTAX_NORMAL_C2(SUBLO, SUBLO, SUBCS, SUB2CS, INTREG, SIGNED_CONST, AVR32_V1),
47.26238 ++    SYNTAX_NORMAL2(SUBFEQ, SUBFEQ, SUBFEQ, INTREG, SIGNED_CONST, AVR32_V1),
47.26239 ++    SYNTAX_NORMAL2(SUBFNE, SUBFNE, SUBFNE, INTREG, SIGNED_CONST, AVR32_V1),
47.26240 ++    SYNTAX_NORMAL2(SUBFCC, SUBFCC, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
47.26241 ++    SYNTAX_NORMAL2(SUBFCS, SUBFCS, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
47.26242 ++    SYNTAX_NORMAL2(SUBFGE, SUBFGE, SUBFGE, INTREG, SIGNED_CONST, AVR32_V1),
47.26243 ++    SYNTAX_NORMAL2(SUBFLT, SUBFLT, SUBFLT, INTREG, SIGNED_CONST, AVR32_V1),
47.26244 ++    SYNTAX_NORMAL2(SUBFMI, SUBFMI, SUBFMI, INTREG, SIGNED_CONST, AVR32_V1),
47.26245 ++    SYNTAX_NORMAL2(SUBFPL, SUBFPL, SUBFPL, INTREG, SIGNED_CONST, AVR32_V1),
47.26246 ++    SYNTAX_NORMAL2(SUBFLS, SUBFLS, SUBFLS, INTREG, SIGNED_CONST, AVR32_V1),
47.26247 ++    SYNTAX_NORMAL2(SUBFGT, SUBFGT, SUBFGT, INTREG, SIGNED_CONST, AVR32_V1),
47.26248 ++    SYNTAX_NORMAL2(SUBFLE, SUBFLE, SUBFLE, INTREG, SIGNED_CONST, AVR32_V1),
47.26249 ++    SYNTAX_NORMAL2(SUBFHI, SUBFHI, SUBFHI, INTREG, SIGNED_CONST, AVR32_V1),
47.26250 ++    SYNTAX_NORMAL2(SUBFVS, SUBFVS, SUBFVS, INTREG, SIGNED_CONST, AVR32_V1),
47.26251 ++    SYNTAX_NORMAL2(SUBFVC, SUBFVC, SUBFVC, INTREG, SIGNED_CONST, AVR32_V1),
47.26252 ++    SYNTAX_NORMAL2(SUBFQS, SUBFQS, SUBFQS, INTREG, SIGNED_CONST, AVR32_V1),
47.26253 ++    SYNTAX_NORMAL2(SUBFAL, SUBFAL, SUBFAL, INTREG, SIGNED_CONST, AVR32_V1),
47.26254 ++    SYNTAX_NORMAL2(SUBFHS, SUBFHS, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
47.26255 ++    SYNTAX_NORMAL2(SUBFLO, SUBFLO, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
47.26256 ++    SYNTAX_NORMAL3(SUBHH_W, SUBHH_W, SUBHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
47.26257 ++    SYNTAX_NORMAL1(SWAP_B, SWAP_B, SWAP_B, INTREG, AVR32_V1),
47.26258 ++    SYNTAX_NORMAL1(SWAP_BH, SWAP_BH, SWAP_BH, INTREG, AVR32_V1),
47.26259 ++    SYNTAX_NORMAL1(SWAP_H, SWAP_H, SWAP_H, INTREG, AVR32_V1),
47.26260 ++    SYNTAX_NORMAL1(SYNC, SYNC, SYNC, UNSIGNED_CONST, AVR32_V1),
47.26261 ++    SYNTAX_NORMAL0(TLBR, TLBR, TLBR, AVR32_V1),
47.26262 ++    SYNTAX_NORMAL0(TLBS, TLBS, TLBS, AVR32_V1),
47.26263 ++    SYNTAX_NORMAL0(TLBW, TLBW, TLBW, AVR32_V1),
47.26264 ++    SYNTAX_NORMAL1(TNBZ, TNBZ, TNBZ, INTREG, AVR32_V1),
47.26265 ++    SYNTAX_NORMAL2(TST, TST, TST, INTREG, INTREG, AVR32_V1),
47.26266 ++    SYNTAX_NORMAL3(XCHG, XCHG, XCHG, INTREG, INTREG, INTREG, AVR32_V1),
47.26267 ++    SYNTAX_NORMAL2(MEMC, MEMC, MEMC, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
47.26268 ++    SYNTAX_NORMAL2(MEMS, MEMS, MEMS, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
47.26269 ++    SYNTAX_NORMAL2(MEMT, MEMT, MEMT, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
47.26270 ++    SYNTAX_FP(FADD, 3),
47.26271 ++    SYNTAX_FP(FSUB, 3),
47.26272 ++    SYNTAX_FP(FMAC, 3),
47.26273 ++    SYNTAX_FP(FNMAC, 3),
47.26274 ++    SYNTAX_FP(FMSC, 3),
47.26275 ++    SYNTAX_FP(FNMSC, 3),
47.26276 ++    SYNTAX_FP(FMUL, 3),
47.26277 ++    SYNTAX_FP(FNMUL, 3),
47.26278 ++    SYNTAX_FP(FNEG, 2),
47.26279 ++    SYNTAX_FP(FABS, 2),
47.26280 ++    SYNTAX_FP(FCMP, 2),
47.26281 ++    {
47.26282 ++      AVR32_SYNTAX_FMOV1_S,
47.26283 ++      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
47.26284 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_S] },
47.26285 ++      &avr32_syntax_table[AVR32_SYNTAX_FMOV2_S],
47.26286 ++      2,
47.26287 ++      {
47.26288 ++	AVR32_OPERAND_FPREG_S,
47.26289 ++	AVR32_OPERAND_FPREG_S,
47.26290 ++      },
47.26291 ++    },
47.26292 ++    {
47.26293 ++      AVR32_SYNTAX_FMOV1_D,
47.26294 ++      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
47.26295 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_D] },
47.26296 ++      &avr32_syntax_table[AVR32_SYNTAX_FMOV2_D],
47.26297 ++      2,
47.26298 ++      {
47.26299 ++	AVR32_OPERAND_FPREG_D,
47.26300 ++	AVR32_OPERAND_FPREG_D,
47.26301 ++      },
47.26302 ++    },
47.26303 ++    {
47.26304 ++      AVR32_SYNTAX_FMOV2_S,
47.26305 ++      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
47.26306 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_S] },
47.26307 ++      &avr32_syntax_table[AVR32_SYNTAX_FMOV3_S],
47.26308 ++      2,
47.26309 ++      {
47.26310 ++	AVR32_OPERAND_INTREG,
47.26311 ++	AVR32_OPERAND_FPREG_S,
47.26312 ++      },
47.26313 ++    },
47.26314 ++    {
47.26315 ++      AVR32_SYNTAX_FMOV2_D,
47.26316 ++      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
47.26317 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_D] },
47.26318 ++      &avr32_syntax_table[AVR32_SYNTAX_FMOV3_D],
47.26319 ++      2,
47.26320 ++      {
47.26321 ++	AVR32_OPERAND_DWREG,
47.26322 ++	AVR32_OPERAND_FPREG_D,
47.26323 ++      },
47.26324 ++    },
47.26325 ++    {
47.26326 ++      AVR32_SYNTAX_FMOV3_S,
47.26327 ++      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
47.26328 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_S] }, NULL,
47.26329 ++      2,
47.26330 ++      {
47.26331 ++	AVR32_OPERAND_FPREG_S,
47.26332 ++	AVR32_OPERAND_INTREG,
47.26333 ++      },
47.26334 ++    },
47.26335 ++    {
47.26336 ++      AVR32_SYNTAX_FMOV3_D,
47.26337 ++      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
47.26338 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_D] }, NULL,
47.26339 ++      2,
47.26340 ++      {
47.26341 ++	AVR32_OPERAND_FPREG_D,
47.26342 ++	AVR32_OPERAND_DWREG,
47.26343 ++      },
47.26344 ++    },
47.26345 ++    {
47.26346 ++      AVR32_SYNTAX_FCASTS_D,
47.26347 ++      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
47.26348 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTS_D] }, NULL,
47.26349 ++      2,
47.26350 ++      {
47.26351 ++	AVR32_OPERAND_FPREG_S,
47.26352 ++	AVR32_OPERAND_FPREG_D,
47.26353 ++      },
47.26354 ++    },
47.26355 ++    {
47.26356 ++      AVR32_SYNTAX_FCASTD_S,
47.26357 ++      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
47.26358 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTD_S] }, NULL,
47.26359 ++      2,
47.26360 ++      {
47.26361 ++	AVR32_OPERAND_FPREG_D,
47.26362 ++	AVR32_OPERAND_FPREG_S,
47.26363 ++      },
47.26364 ++    },
47.26365 ++    {
47.26366 ++      AVR32_SYNTAX_LDA_W,
47.26367 ++      AVR32_V1, NULL, AVR32_PARSER_LDA,
47.26368 ++      { NULL }, NULL,
47.26369 ++      2,
47.26370 ++      {
47.26371 ++	AVR32_OPERAND_INTREG,
47.26372 ++	AVR32_OPERAND_SIGNED_CONST,
47.26373 ++      },
47.26374 ++    },
47.26375 ++    {
47.26376 ++      AVR32_SYNTAX_CALL,
47.26377 ++      AVR32_V1, NULL, AVR32_PARSER_CALL,
47.26378 ++      { NULL }, NULL,
47.26379 ++      1,
47.26380 ++      {
47.26381 ++	AVR32_OPERAND_JMPLABEL,
47.26382 ++      },
47.26383 ++    },
47.26384 ++    {
47.26385 ++      AVR32_SYNTAX_PICOSVMAC0,
47.26386 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
47.26387 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC0] },
47.26388 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC1], 4,
47.26389 ++      {
47.26390 ++	AVR32_OPERAND_PICO_OUT0,
47.26391 ++	AVR32_OPERAND_PICO_IN,
47.26392 ++	AVR32_OPERAND_PICO_IN,
47.26393 ++	AVR32_OPERAND_PICO_IN,
47.26394 ++      },
47.26395 ++    },
47.26396 ++    {
47.26397 ++      AVR32_SYNTAX_PICOSVMAC1,
47.26398 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
47.26399 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC1] },
47.26400 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC2], 4,
47.26401 ++      {
47.26402 ++	AVR32_OPERAND_PICO_OUT1,
47.26403 ++	AVR32_OPERAND_PICO_IN,
47.26404 ++	AVR32_OPERAND_PICO_IN,
47.26405 ++	AVR32_OPERAND_PICO_IN,
47.26406 ++      },
47.26407 ++    },
47.26408 ++    {
47.26409 ++      AVR32_SYNTAX_PICOSVMAC2,
47.26410 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
47.26411 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC2] },
47.26412 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC3], 4,
47.26413 ++      {
47.26414 ++	AVR32_OPERAND_PICO_OUT2,
47.26415 ++	AVR32_OPERAND_PICO_IN,
47.26416 ++	AVR32_OPERAND_PICO_IN,
47.26417 ++	AVR32_OPERAND_PICO_IN,
47.26418 ++      },
47.26419 ++    },
47.26420 ++    {
47.26421 ++      AVR32_SYNTAX_PICOSVMAC3,
47.26422 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
47.26423 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC3] },
47.26424 ++      NULL, 4,
47.26425 ++      {
47.26426 ++	AVR32_OPERAND_PICO_OUT3,
47.26427 ++	AVR32_OPERAND_PICO_IN,
47.26428 ++	AVR32_OPERAND_PICO_IN,
47.26429 ++	AVR32_OPERAND_PICO_IN,
47.26430 ++      },
47.26431 ++    },
47.26432 ++    {
47.26433 ++      AVR32_SYNTAX_PICOSVMUL0,
47.26434 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
47.26435 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL0] },
47.26436 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL1], 4,
47.26437 ++      {
47.26438 ++	AVR32_OPERAND_PICO_OUT0,
47.26439 ++	AVR32_OPERAND_PICO_IN,
47.26440 ++	AVR32_OPERAND_PICO_IN,
47.26441 ++	AVR32_OPERAND_PICO_IN,
47.26442 ++      },
47.26443 ++    },
47.26444 ++    {
47.26445 ++      AVR32_SYNTAX_PICOSVMUL1,
47.26446 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
47.26447 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL1] },
47.26448 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL2], 4,
47.26449 ++      {
47.26450 ++	AVR32_OPERAND_PICO_OUT1,
47.26451 ++	AVR32_OPERAND_PICO_IN,
47.26452 ++	AVR32_OPERAND_PICO_IN,
47.26453 ++	AVR32_OPERAND_PICO_IN,
47.26454 ++      },
47.26455 ++    },
47.26456 ++    {
47.26457 ++      AVR32_SYNTAX_PICOSVMUL2,
47.26458 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
47.26459 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL2] },
47.26460 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL3], 4,
47.26461 ++      {
47.26462 ++	AVR32_OPERAND_PICO_OUT2,
47.26463 ++	AVR32_OPERAND_PICO_IN,
47.26464 ++	AVR32_OPERAND_PICO_IN,
47.26465 ++	AVR32_OPERAND_PICO_IN,
47.26466 ++      },
47.26467 ++    },
47.26468 ++    {
47.26469 ++      AVR32_SYNTAX_PICOSVMUL3,
47.26470 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
47.26471 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL3] },
47.26472 ++      NULL, 4,
47.26473 ++      {
47.26474 ++	AVR32_OPERAND_PICO_OUT3,
47.26475 ++	AVR32_OPERAND_PICO_IN,
47.26476 ++	AVR32_OPERAND_PICO_IN,
47.26477 ++	AVR32_OPERAND_PICO_IN,
47.26478 ++      },
47.26479 ++    },
47.26480 ++    {
47.26481 ++      AVR32_SYNTAX_PICOVMAC0,
47.26482 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
47.26483 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC0] },
47.26484 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC1], 4,
47.26485 ++      {
47.26486 ++	AVR32_OPERAND_PICO_OUT0,
47.26487 ++	AVR32_OPERAND_PICO_IN,
47.26488 ++	AVR32_OPERAND_PICO_IN,
47.26489 ++	AVR32_OPERAND_PICO_IN,
47.26490 ++      },
47.26491 ++    },
47.26492 ++    {
47.26493 ++      AVR32_SYNTAX_PICOVMAC1,
47.26494 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
47.26495 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC1] },
47.26496 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC2], 4,
47.26497 ++      {
47.26498 ++	AVR32_OPERAND_PICO_OUT1,
47.26499 ++	AVR32_OPERAND_PICO_IN,
47.26500 ++	AVR32_OPERAND_PICO_IN,
47.26501 ++	AVR32_OPERAND_PICO_IN,
47.26502 ++      },
47.26503 ++    },
47.26504 ++    {
47.26505 ++      AVR32_SYNTAX_PICOVMAC2,
47.26506 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
47.26507 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC2] },
47.26508 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC3], 4,
47.26509 ++      {
47.26510 ++	AVR32_OPERAND_PICO_OUT2,
47.26511 ++	AVR32_OPERAND_PICO_IN,
47.26512 ++	AVR32_OPERAND_PICO_IN,
47.26513 ++	AVR32_OPERAND_PICO_IN,
47.26514 ++      },
47.26515 ++    },
47.26516 ++    {
47.26517 ++      AVR32_SYNTAX_PICOVMAC3,
47.26518 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
47.26519 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC3] },
47.26520 ++      NULL, 4,
47.26521 ++      {
47.26522 ++	AVR32_OPERAND_PICO_OUT3,
47.26523 ++	AVR32_OPERAND_PICO_IN,
47.26524 ++	AVR32_OPERAND_PICO_IN,
47.26525 ++	AVR32_OPERAND_PICO_IN,
47.26526 ++      },
47.26527 ++    },
47.26528 ++    {
47.26529 ++      AVR32_SYNTAX_PICOVMUL0,
47.26530 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
47.26531 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL0] },
47.26532 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL1], 4,
47.26533 ++      {
47.26534 ++	AVR32_OPERAND_PICO_OUT0,
47.26535 ++	AVR32_OPERAND_PICO_IN,
47.26536 ++	AVR32_OPERAND_PICO_IN,
47.26537 ++	AVR32_OPERAND_PICO_IN,
47.26538 ++      },
47.26539 ++    },
47.26540 ++    {
47.26541 ++      AVR32_SYNTAX_PICOVMUL1,
47.26542 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
47.26543 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL1] },
47.26544 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL2], 4,
47.26545 ++      {
47.26546 ++	AVR32_OPERAND_PICO_OUT1,
47.26547 ++	AVR32_OPERAND_PICO_IN,
47.26548 ++	AVR32_OPERAND_PICO_IN,
47.26549 ++	AVR32_OPERAND_PICO_IN,
47.26550 ++      },
47.26551 ++    },
47.26552 ++    {
47.26553 ++      AVR32_SYNTAX_PICOVMUL2,
47.26554 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
47.26555 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL2] },
47.26556 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL3], 4,
47.26557 ++      {
47.26558 ++	AVR32_OPERAND_PICO_OUT2,
47.26559 ++	AVR32_OPERAND_PICO_IN,
47.26560 ++	AVR32_OPERAND_PICO_IN,
47.26561 ++	AVR32_OPERAND_PICO_IN,
47.26562 ++      },
47.26563 ++    },
47.26564 ++    {
47.26565 ++      AVR32_SYNTAX_PICOVMUL3,
47.26566 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
47.26567 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL3] },
47.26568 ++      NULL, 4,
47.26569 ++      {
47.26570 ++	AVR32_OPERAND_PICO_OUT3,
47.26571 ++	AVR32_OPERAND_PICO_IN,
47.26572 ++	AVR32_OPERAND_PICO_IN,
47.26573 ++	AVR32_OPERAND_PICO_IN,
47.26574 ++      },
47.26575 ++    },
47.26576 ++    {
47.26577 ++      AVR32_SYNTAX_PICOLD_D2,
47.26578 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
47.26579 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D2] },
47.26580 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D3], 2,
47.26581 ++      {
47.26582 ++	AVR32_OPERAND_PICO_REG_D,
47.26583 ++	AVR32_OPERAND_INTREG_PREDEC,
47.26584 ++      },
47.26585 ++    },
47.26586 ++    {
47.26587 ++      AVR32_SYNTAX_PICOLD_D3,
47.26588 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
47.26589 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D3] },
47.26590 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D1], 2,
47.26591 ++      {
47.26592 ++	AVR32_OPERAND_PICO_REG_D,
47.26593 ++	AVR32_OPERAND_INTREG_INDEX,
47.26594 ++      },
47.26595 ++    },
47.26596 ++    {
47.26597 ++      AVR32_SYNTAX_PICOLD_D1,
47.26598 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
47.26599 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D1] },
47.26600 ++      NULL, 2,
47.26601 ++      {
47.26602 ++	AVR32_OPERAND_PICO_REG_D,
47.26603 ++	AVR32_OPERAND_INTREG_UDISP_W,
47.26604 ++      },
47.26605 ++    },
47.26606 ++    {
47.26607 ++      AVR32_SYNTAX_PICOLD_W2,
47.26608 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
47.26609 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W2] },
47.26610 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W3], 2,
47.26611 ++      {
47.26612 ++	AVR32_OPERAND_PICO_REG_W,
47.26613 ++	AVR32_OPERAND_INTREG_PREDEC,
47.26614 ++      },
47.26615 ++    },
47.26616 ++    {
47.26617 ++      AVR32_SYNTAX_PICOLD_W3,
47.26618 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
47.26619 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W3] },
47.26620 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W1], 2,
47.26621 ++      {
47.26622 ++	AVR32_OPERAND_PICO_REG_W,
47.26623 ++	AVR32_OPERAND_INTREG_INDEX,
47.26624 ++      },
47.26625 ++    },
47.26626 ++    {
47.26627 ++      AVR32_SYNTAX_PICOLD_W1,
47.26628 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
47.26629 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W1] },
47.26630 ++      NULL, 2,
47.26631 ++      {
47.26632 ++	AVR32_OPERAND_PICO_REG_W,
47.26633 ++	AVR32_OPERAND_INTREG_UDISP_W,
47.26634 ++      },
47.26635 ++    },
47.26636 ++    {
47.26637 ++      AVR32_SYNTAX_PICOLDM_D,
47.26638 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
47.26639 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D] },
47.26640 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_D_PU], -2,
47.26641 ++      {
47.26642 ++	AVR32_OPERAND_INTREG,
47.26643 ++	AVR32_OPERAND_PICO_REGLIST_D,
47.26644 ++      },
47.26645 ++    },
47.26646 ++    {
47.26647 ++      AVR32_SYNTAX_PICOLDM_D_PU,
47.26648 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
47.26649 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D_PU] },
47.26650 ++      NULL, -2,
47.26651 ++      {
47.26652 ++	AVR32_OPERAND_INTREG_POSTINC,
47.26653 ++	AVR32_OPERAND_PICO_REGLIST_D,
47.26654 ++      },
47.26655 ++    },
47.26656 ++    {
47.26657 ++      AVR32_SYNTAX_PICOLDM_W,
47.26658 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
47.26659 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W] },
47.26660 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_W_PU], -2,
47.26661 ++      {
47.26662 ++	AVR32_OPERAND_INTREG,
47.26663 ++	AVR32_OPERAND_PICO_REGLIST_W,
47.26664 ++      },
47.26665 ++    },
47.26666 ++    {
47.26667 ++      AVR32_SYNTAX_PICOLDM_W_PU,
47.26668 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
47.26669 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W_PU] },
47.26670 ++      NULL, -2,
47.26671 ++      {
47.26672 ++	AVR32_OPERAND_INTREG_POSTINC,
47.26673 ++	AVR32_OPERAND_PICO_REGLIST_W,
47.26674 ++      },
47.26675 ++    },
47.26676 ++    {
47.26677 ++      AVR32_SYNTAX_PICOMV_D1,
47.26678 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
47.26679 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D1] },
47.26680 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOMV_D2], 2,
47.26681 ++      {
47.26682 ++	AVR32_OPERAND_DWREG,
47.26683 ++	AVR32_OPERAND_PICO_REG_D,
47.26684 ++      },
47.26685 ++    },
47.26686 ++    {
47.26687 ++      AVR32_SYNTAX_PICOMV_D2,
47.26688 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
47.26689 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D2] },
47.26690 ++      NULL, 2,
47.26691 ++      {
47.26692 ++	AVR32_OPERAND_PICO_REG_D,
47.26693 ++	AVR32_OPERAND_DWREG,
47.26694 ++      },
47.26695 ++    },
47.26696 ++    {
47.26697 ++      AVR32_SYNTAX_PICOMV_W1,
47.26698 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
47.26699 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W1] },
47.26700 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOMV_W2], 2,
47.26701 ++      {
47.26702 ++	AVR32_OPERAND_INTREG,
47.26703 ++	AVR32_OPERAND_PICO_REG_W,
47.26704 ++      },
47.26705 ++    },
47.26706 ++    {
47.26707 ++      AVR32_SYNTAX_PICOMV_W2,
47.26708 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
47.26709 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W2] },
47.26710 ++      NULL, 2,
47.26711 ++      {
47.26712 ++	AVR32_OPERAND_PICO_REG_W,
47.26713 ++	AVR32_OPERAND_INTREG,
47.26714 ++      },
47.26715 ++    },
47.26716 ++    {
47.26717 ++      AVR32_SYNTAX_PICOST_D2,
47.26718 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
47.26719 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D2] },
47.26720 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOST_D3], 2,
47.26721 ++      {
47.26722 ++	AVR32_OPERAND_INTREG_POSTINC,
47.26723 ++	AVR32_OPERAND_PICO_REG_D,
47.26724 ++      },
47.26725 ++    },
47.26726 ++    {
47.26727 ++      AVR32_SYNTAX_PICOST_D3,
47.26728 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
47.26729 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D3] },
47.26730 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOST_D1], 2,
47.26731 ++      {
47.26732 ++	AVR32_OPERAND_INTREG_INDEX,
47.26733 ++	AVR32_OPERAND_PICO_REG_D,
47.26734 ++      },
47.26735 ++    },
47.26736 ++    {
47.26737 ++      AVR32_SYNTAX_PICOST_D1,
47.26738 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
47.26739 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D1] },
47.26740 ++      NULL, 2,
47.26741 ++      {
47.26742 ++	AVR32_OPERAND_INTREG_UDISP_W,
47.26743 ++	AVR32_OPERAND_PICO_REG_D,
47.26744 ++      },
47.26745 ++    },
47.26746 ++    {
47.26747 ++      AVR32_SYNTAX_PICOST_W2,
47.26748 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
47.26749 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W2] },
47.26750 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOST_W3], 2,
47.26751 ++      {
47.26752 ++	AVR32_OPERAND_INTREG_POSTINC,
47.26753 ++	AVR32_OPERAND_PICO_REG_W,
47.26754 ++      },
47.26755 ++    },
47.26756 ++    {
47.26757 ++      AVR32_SYNTAX_PICOST_W3,
47.26758 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
47.26759 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W3] },
47.26760 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOST_W1], 2,
47.26761 ++      {
47.26762 ++	AVR32_OPERAND_INTREG_INDEX,
47.26763 ++	AVR32_OPERAND_PICO_REG_W,
47.26764 ++      },
47.26765 ++    },
47.26766 ++    {
47.26767 ++      AVR32_SYNTAX_PICOST_W1,
47.26768 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
47.26769 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W1] },
47.26770 ++      NULL, 2,
47.26771 ++      {
47.26772 ++	AVR32_OPERAND_INTREG_UDISP_W,
47.26773 ++	AVR32_OPERAND_PICO_REG_W,
47.26774 ++      },
47.26775 ++    },
47.26776 ++    {
47.26777 ++      AVR32_SYNTAX_PICOSTM_D,
47.26778 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
47.26779 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D] },
47.26780 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_D_PU], -2,
47.26781 ++      {
47.26782 ++	AVR32_OPERAND_INTREG,
47.26783 ++	AVR32_OPERAND_PICO_REGLIST_D,
47.26784 ++      },
47.26785 ++    },
47.26786 ++    {
47.26787 ++      AVR32_SYNTAX_PICOSTM_D_PU,
47.26788 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
47.26789 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D_PU] },
47.26790 ++      NULL, -2,
47.26791 ++      {
47.26792 ++	AVR32_OPERAND_INTREG_PREDEC,
47.26793 ++	AVR32_OPERAND_PICO_REGLIST_D,
47.26794 ++      },
47.26795 ++    },
47.26796 ++    {
47.26797 ++      AVR32_SYNTAX_PICOSTM_W,
47.26798 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
47.26799 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W] },
47.26800 ++      &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_W_PU], -2,
47.26801 ++      {
47.26802 ++	AVR32_OPERAND_INTREG,
47.26803 ++	AVR32_OPERAND_PICO_REGLIST_W,
47.26804 ++      },
47.26805 ++    },
47.26806 ++    {
47.26807 ++      AVR32_SYNTAX_PICOSTM_W_PU,
47.26808 ++      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
47.26809 ++      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W_PU] },
47.26810 ++      NULL, -2,
47.26811 ++      {
47.26812 ++	AVR32_OPERAND_INTREG_PREDEC,
47.26813 ++	AVR32_OPERAND_PICO_REGLIST_W,
47.26814 ++      },
47.26815 ++    },
47.26816 ++    SYNTAX_NORMAL2(RSUBEQ, RSUBEQ, RSUBEQ, INTREG, SIGNED_CONST, AVR32_V1),
47.26817 ++    SYNTAX_NORMAL2(RSUBNE, RSUBNE, RSUBNE, INTREG, SIGNED_CONST, AVR32_V2),
47.26818 ++    SYNTAX_NORMAL2(RSUBCC, RSUBCC, RSUBCC, INTREG, SIGNED_CONST, AVR32_V2),
47.26819 ++    SYNTAX_NORMAL2(RSUBCS, RSUBCS, RSUBCS, INTREG, SIGNED_CONST, AVR32_V2),
47.26820 ++    SYNTAX_NORMAL2(RSUBGE, RSUBGE, RSUBGE, INTREG, SIGNED_CONST, AVR32_V2),
47.26821 ++    SYNTAX_NORMAL2(RSUBLT, RSUBLT, RSUBLT, INTREG, SIGNED_CONST, AVR32_V2),
47.26822 ++    SYNTAX_NORMAL2(RSUBMI, RSUBMI, RSUBMI, INTREG, SIGNED_CONST, AVR32_V2),
47.26823 ++    SYNTAX_NORMAL2(RSUBPL, RSUBPL, RSUBPL, INTREG, SIGNED_CONST, AVR32_V2),
47.26824 ++    SYNTAX_NORMAL2(RSUBLS, RSUBLS, RSUBLS, INTREG, SIGNED_CONST, AVR32_V2),
47.26825 ++    SYNTAX_NORMAL2(RSUBGT, RSUBGT, RSUBGT, INTREG, SIGNED_CONST, AVR32_V2),
47.26826 ++    SYNTAX_NORMAL2(RSUBLE, RSUBLE, RSUBLE, INTREG, SIGNED_CONST, AVR32_V2),
47.26827 ++    SYNTAX_NORMAL2(RSUBHI, RSUBHI, RSUBHI, INTREG, SIGNED_CONST, AVR32_V2),
47.26828 ++    SYNTAX_NORMAL2(RSUBVS, RSUBVS, RSUBVS, INTREG, SIGNED_CONST, AVR32_V2),
47.26829 ++    SYNTAX_NORMAL2(RSUBVC, RSUBVC, RSUBVC, INTREG, SIGNED_CONST, AVR32_V2),
47.26830 ++    SYNTAX_NORMAL2(RSUBQS, RSUBQS, RSUBQS, INTREG, SIGNED_CONST, AVR32_V2),
47.26831 ++    SYNTAX_NORMAL2(RSUBAL, RSUBAL, RSUBAL, INTREG, SIGNED_CONST, AVR32_V2),
47.26832 ++    SYNTAX_NORMAL2(RSUBHS, RSUBHS, RSUBCC, INTREG, SIGNED_CONST, AVR32_V2),
47.26833 ++    SYNTAX_NORMAL2(RSUBLO, RSUBLO, RSUBCS, INTREG, SIGNED_CONST, AVR32_V2),
47.26834 ++    SYNTAX_NORMAL3(ADDEQ, ADDEQ, ADDEQ, INTREG, INTREG, INTREG, AVR32_V2),
47.26835 ++    SYNTAX_NORMAL3(ADDNE, ADDNE, ADDNE, INTREG, INTREG, INTREG, AVR32_V2),
47.26836 ++    SYNTAX_NORMAL3(ADDCC, ADDCC, ADDCC, INTREG, INTREG, INTREG, AVR32_V2),
47.26837 ++    SYNTAX_NORMAL3(ADDCS, ADDCS, ADDCS, INTREG, INTREG, INTREG, AVR32_V2),
47.26838 ++    SYNTAX_NORMAL3(ADDGE, ADDGE, ADDGE, INTREG, INTREG, INTREG, AVR32_V2),
47.26839 ++    SYNTAX_NORMAL3(ADDLT, ADDLT, ADDLT, INTREG, INTREG, INTREG, AVR32_V2),
47.26840 ++    SYNTAX_NORMAL3(ADDMI, ADDMI, ADDMI, INTREG, INTREG, INTREG, AVR32_V2),
47.26841 ++    SYNTAX_NORMAL3(ADDPL, ADDPL, ADDPL, INTREG, INTREG, INTREG, AVR32_V2),
47.26842 ++    SYNTAX_NORMAL3(ADDLS, ADDLS, ADDLS, INTREG, INTREG, INTREG, AVR32_V2),
47.26843 ++    SYNTAX_NORMAL3(ADDGT, ADDGT, ADDGT, INTREG, INTREG, INTREG, AVR32_V2),
47.26844 ++    SYNTAX_NORMAL3(ADDLE, ADDLE, ADDLE, INTREG, INTREG, INTREG, AVR32_V2),
47.26845 ++    SYNTAX_NORMAL3(ADDHI, ADDHI, ADDHI, INTREG, INTREG, INTREG, AVR32_V2),
47.26846 ++    SYNTAX_NORMAL3(ADDVS, ADDVS, ADDVS, INTREG, INTREG, INTREG, AVR32_V2),
47.26847 ++    SYNTAX_NORMAL3(ADDVC, ADDVC, ADDVC, INTREG, INTREG, INTREG, AVR32_V2),
47.26848 ++    SYNTAX_NORMAL3(ADDQS, ADDQS, ADDQS, INTREG, INTREG, INTREG, AVR32_V2),
47.26849 ++    SYNTAX_NORMAL3(ADDAL, ADDAL, ADDAL, INTREG, INTREG, INTREG, AVR32_V2),
47.26850 ++    SYNTAX_NORMAL3(ADDHS, ADDHS, ADDCC, INTREG, INTREG, INTREG, AVR32_V2),
47.26851 ++    SYNTAX_NORMAL3(ADDLO, ADDLO, ADDCS, INTREG, INTREG, INTREG, AVR32_V2),
47.26852 ++    SYNTAX_NORMAL3(SUB2EQ, SUBEQ, SUB2EQ, INTREG, INTREG, INTREG, AVR32_V2),
47.26853 ++    SYNTAX_NORMAL3(SUB2NE, SUBNE, SUB2NE, INTREG, INTREG, INTREG, AVR32_V2),
47.26854 ++    SYNTAX_NORMAL3(SUB2CC, SUBCC, SUB2CC, INTREG, INTREG, INTREG, AVR32_V2),
47.26855 ++    SYNTAX_NORMAL3(SUB2CS, SUBCS, SUB2CS, INTREG, INTREG, INTREG, AVR32_V2),
47.26856 ++    SYNTAX_NORMAL3(SUB2GE, SUBGE, SUB2GE, INTREG, INTREG, INTREG, AVR32_V2),
47.26857 ++    SYNTAX_NORMAL3(SUB2LT, SUBLT, SUB2LT, INTREG, INTREG, INTREG, AVR32_V2),
47.26858 ++    SYNTAX_NORMAL3(SUB2MI, SUBMI, SUB2MI, INTREG, INTREG, INTREG, AVR32_V2),
47.26859 ++    SYNTAX_NORMAL3(SUB2PL, SUBPL, SUB2PL, INTREG, INTREG, INTREG, AVR32_V2),
47.26860 ++    SYNTAX_NORMAL3(SUB2LS, SUBLS, SUB2LS, INTREG, INTREG, INTREG, AVR32_V2),
47.26861 ++    SYNTAX_NORMAL3(SUB2GT, SUBGT, SUB2GT, INTREG, INTREG, INTREG, AVR32_V2),
47.26862 ++    SYNTAX_NORMAL3(SUB2LE, SUBLE, SUB2LE, INTREG, INTREG, INTREG, AVR32_V2),
47.26863 ++    SYNTAX_NORMAL3(SUB2HI, SUBHI, SUB2HI, INTREG, INTREG, INTREG, AVR32_V2),
47.26864 ++    SYNTAX_NORMAL3(SUB2VS, SUBVS, SUB2VS, INTREG, INTREG, INTREG, AVR32_V2),
47.26865 ++    SYNTAX_NORMAL3(SUB2VC, SUBVC, SUB2VC, INTREG, INTREG, INTREG, AVR32_V2),
47.26866 ++    SYNTAX_NORMAL3(SUB2QS, SUBQS, SUB2QS, INTREG, INTREG, INTREG, AVR32_V2),
47.26867 ++    SYNTAX_NORMAL3(SUB2AL, SUBAL, SUB2AL, INTREG, INTREG, INTREG, AVR32_V2),
47.26868 ++    SYNTAX_NORMAL3(SUB2HS, SUBHS, SUB2CC, INTREG, INTREG, INTREG, AVR32_V2),
47.26869 ++    SYNTAX_NORMAL3(SUB2LO, SUBLO, SUB2CS, INTREG, INTREG, INTREG, AVR32_V2),
47.26870 ++    SYNTAX_NORMAL3(ANDEQ, ANDEQ, ANDEQ, INTREG, INTREG, INTREG, AVR32_V2),
47.26871 ++    SYNTAX_NORMAL3(ANDNE, ANDNE, ANDNE, INTREG, INTREG, INTREG, AVR32_V2),
47.26872 ++    SYNTAX_NORMAL3(ANDCC, ANDCC, ANDCC, INTREG, INTREG, INTREG, AVR32_V2),
47.26873 ++    SYNTAX_NORMAL3(ANDCS, ANDCS, ANDCS, INTREG, INTREG, INTREG, AVR32_V2),
47.26874 ++    SYNTAX_NORMAL3(ANDGE, ANDGE, ANDGE, INTREG, INTREG, INTREG, AVR32_V2),
47.26875 ++    SYNTAX_NORMAL3(ANDLT, ANDLT, ANDLT, INTREG, INTREG, INTREG, AVR32_V2),
47.26876 ++    SYNTAX_NORMAL3(ANDMI, ANDMI, ANDMI, INTREG, INTREG, INTREG, AVR32_V2),
47.26877 ++    SYNTAX_NORMAL3(ANDPL, ANDPL, ANDPL, INTREG, INTREG, INTREG, AVR32_V2),
47.26878 ++    SYNTAX_NORMAL3(ANDLS, ANDLS, ANDLS, INTREG, INTREG, INTREG, AVR32_V2),
47.26879 ++    SYNTAX_NORMAL3(ANDGT, ANDGT, ANDGT, INTREG, INTREG, INTREG, AVR32_V2),
47.26880 ++    SYNTAX_NORMAL3(ANDLE, ANDLE, ANDLE, INTREG, INTREG, INTREG, AVR32_V2),
47.26881 ++    SYNTAX_NORMAL3(ANDHI, ANDHI, ANDHI, INTREG, INTREG, INTREG, AVR32_V2),
47.26882 ++    SYNTAX_NORMAL3(ANDVS, ANDVS, ANDVS, INTREG, INTREG, INTREG, AVR32_V2),
47.26883 ++    SYNTAX_NORMAL3(ANDVC, ANDVC, ANDVC, INTREG, INTREG, INTREG, AVR32_V2),
47.26884 ++    SYNTAX_NORMAL3(ANDQS, ANDQS, ANDQS, INTREG, INTREG, INTREG, AVR32_V2),
47.26885 ++    SYNTAX_NORMAL3(ANDAL, ANDAL, ANDAL, INTREG, INTREG, INTREG, AVR32_V2),
47.26886 ++    SYNTAX_NORMAL3(ANDHS, ANDHS, ANDCC, INTREG, INTREG, INTREG, AVR32_V2),
47.26887 ++    SYNTAX_NORMAL3(ANDLO, ANDLO, ANDCS, INTREG, INTREG, INTREG, AVR32_V2),
47.26888 ++    SYNTAX_NORMAL3(OREQ, OREQ, OREQ, INTREG, INTREG, INTREG, AVR32_V2),
47.26889 ++    SYNTAX_NORMAL3(ORNE, ORNE, ORNE, INTREG, INTREG, INTREG, AVR32_V2),
47.26890 ++    SYNTAX_NORMAL3(ORCC, ORCC, ORCC, INTREG, INTREG, INTREG, AVR32_V2),
47.26891 ++    SYNTAX_NORMAL3(ORCS, ORCS, ORCS, INTREG, INTREG, INTREG, AVR32_V2),
47.26892 ++    SYNTAX_NORMAL3(ORGE, ORGE, ORGE, INTREG, INTREG, INTREG, AVR32_V2),
47.26893 ++    SYNTAX_NORMAL3(ORLT, ORLT, ORLT, INTREG, INTREG, INTREG, AVR32_V2),
47.26894 ++    SYNTAX_NORMAL3(ORMI, ORMI, ORMI, INTREG, INTREG, INTREG, AVR32_V2),
47.26895 ++    SYNTAX_NORMAL3(ORPL, ORPL, ORPL, INTREG, INTREG, INTREG, AVR32_V2),
47.26896 ++    SYNTAX_NORMAL3(ORLS, ORLS, ORLS, INTREG, INTREG, INTREG, AVR32_V2),
47.26897 ++    SYNTAX_NORMAL3(ORGT, ORGT, ORGT, INTREG, INTREG, INTREG, AVR32_V2),
47.26898 ++    SYNTAX_NORMAL3(ORLE, ORLE, ORLE, INTREG, INTREG, INTREG, AVR32_V2),
47.26899 ++    SYNTAX_NORMAL3(ORHI, ORHI, ORHI, INTREG, INTREG, INTREG, AVR32_V2),
47.26900 ++    SYNTAX_NORMAL3(ORVS, ORVS, ORVS, INTREG, INTREG, INTREG, AVR32_V2),
47.26901 ++    SYNTAX_NORMAL3(ORVC, ORVC, ORVC, INTREG, INTREG, INTREG, AVR32_V2),
47.26902 ++    SYNTAX_NORMAL3(ORQS, ORQS, ORQS, INTREG, INTREG, INTREG, AVR32_V2),
47.26903 ++    SYNTAX_NORMAL3(ORAL, ORAL, ORAL, INTREG, INTREG, INTREG, AVR32_V2),
47.26904 ++    SYNTAX_NORMAL3(ORHS, ORHS, ORCC, INTREG, INTREG, INTREG, AVR32_V2),
47.26905 ++    SYNTAX_NORMAL3(ORLO, ORLO, ORCS, INTREG, INTREG, INTREG, AVR32_V2),
47.26906 ++    SYNTAX_NORMAL3(EOREQ, EOREQ, EOREQ, INTREG, INTREG, INTREG, AVR32_V2),
47.26907 ++    SYNTAX_NORMAL3(EORNE, EORNE, EORNE, INTREG, INTREG, INTREG, AVR32_V2),
47.26908 ++    SYNTAX_NORMAL3(EORCC, EORCC, EORCC, INTREG, INTREG, INTREG, AVR32_V2),
47.26909 ++    SYNTAX_NORMAL3(EORCS, EORCS, EORCS, INTREG, INTREG, INTREG, AVR32_V2),
47.26910 ++    SYNTAX_NORMAL3(EORGE, EORGE, EORGE, INTREG, INTREG, INTREG, AVR32_V2),
47.26911 ++    SYNTAX_NORMAL3(EORLT, EORLT, EORLT, INTREG, INTREG, INTREG, AVR32_V2),
47.26912 ++    SYNTAX_NORMAL3(EORMI, EORMI, EORMI, INTREG, INTREG, INTREG, AVR32_V2),
47.26913 ++    SYNTAX_NORMAL3(EORPL, EORPL, EORPL, INTREG, INTREG, INTREG, AVR32_V2),
47.26914 ++    SYNTAX_NORMAL3(EORLS, EORLS, EORLS, INTREG, INTREG, INTREG, AVR32_V2),
47.26915 ++    SYNTAX_NORMAL3(EORGT, EORGT, EORGT, INTREG, INTREG, INTREG, AVR32_V2),
47.26916 ++    SYNTAX_NORMAL3(EORLE, EORLE, EORLE, INTREG, INTREG, INTREG, AVR32_V2),
47.26917 ++    SYNTAX_NORMAL3(EORHI, EORHI, EORHI, INTREG, INTREG, INTREG, AVR32_V2),
47.26918 ++    SYNTAX_NORMAL3(EORVS, EORVS, EORVS, INTREG, INTREG, INTREG, AVR32_V2),
47.26919 ++    SYNTAX_NORMAL3(EORVC, EORVC, EORVC, INTREG, INTREG, INTREG, AVR32_V2),
47.26920 ++    SYNTAX_NORMAL3(EORQS, EORQS, EORQS, INTREG, INTREG, INTREG, AVR32_V2),
47.26921 ++    SYNTAX_NORMAL3(EORAL, EORAL, EORAL, INTREG, INTREG, INTREG, AVR32_V2),
47.26922 ++    SYNTAX_NORMAL3(EORHS, EORHS, EORCC, INTREG, INTREG, INTREG, AVR32_V2),
47.26923 ++    SYNTAX_NORMAL3(EORLO, EORLO, EORCS, INTREG, INTREG, INTREG, AVR32_V2),
47.26924 ++    SYNTAX_NORMAL2(LD_WEQ, LD_WEQ, LD_WEQ, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26925 ++    SYNTAX_NORMAL2(LD_WNE, LD_WNE, LD_WNE, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26926 ++    SYNTAX_NORMAL2(LD_WCC, LD_WCC, LD_WCC, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26927 ++    SYNTAX_NORMAL2(LD_WCS, LD_WCS, LD_WCS, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26928 ++    SYNTAX_NORMAL2(LD_WGE, LD_WGE, LD_WGE, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26929 ++    SYNTAX_NORMAL2(LD_WLT, LD_WLT, LD_WLT, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26930 ++    SYNTAX_NORMAL2(LD_WMI, LD_WMI, LD_WMI, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26931 ++    SYNTAX_NORMAL2(LD_WPL, LD_WPL, LD_WPL, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26932 ++    SYNTAX_NORMAL2(LD_WLS, LD_WLS, LD_WLS, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26933 ++    SYNTAX_NORMAL2(LD_WGT, LD_WGT, LD_WGT, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26934 ++    SYNTAX_NORMAL2(LD_WLE, LD_WLE, LD_WLE, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26935 ++    SYNTAX_NORMAL2(LD_WHI, LD_WHI, LD_WHI, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26936 ++    SYNTAX_NORMAL2(LD_WVS, LD_WVS, LD_WVS, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26937 ++    SYNTAX_NORMAL2(LD_WVC, LD_WVC, LD_WVC, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26938 ++    SYNTAX_NORMAL2(LD_WQS, LD_WQS, LD_WQS, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26939 ++    SYNTAX_NORMAL2(LD_WAL, LD_WAL, LD_WAL, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26940 ++    SYNTAX_NORMAL2(LD_WHS, LD_WHS, LD_WCC, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26941 ++    SYNTAX_NORMAL2(LD_WLO, LD_WLO, LD_WCS, INTREG, INTREG_UDISP_W, AVR32_V2),
47.26942 ++    SYNTAX_NORMAL2(LD_SHEQ, LD_SHEQ, LD_SHEQ, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26943 ++    SYNTAX_NORMAL2(LD_SHNE, LD_SHNE, LD_SHNE, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26944 ++    SYNTAX_NORMAL2(LD_SHCC, LD_SHCC, LD_SHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26945 ++    SYNTAX_NORMAL2(LD_SHCS, LD_SHCS, LD_SHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26946 ++    SYNTAX_NORMAL2(LD_SHGE, LD_SHGE, LD_SHGE, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26947 ++    SYNTAX_NORMAL2(LD_SHLT, LD_SHLT, LD_SHLT, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26948 ++    SYNTAX_NORMAL2(LD_SHMI, LD_SHMI, LD_SHMI, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26949 ++    SYNTAX_NORMAL2(LD_SHPL, LD_SHPL, LD_SHPL, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26950 ++    SYNTAX_NORMAL2(LD_SHLS, LD_SHLS, LD_SHLS, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26951 ++    SYNTAX_NORMAL2(LD_SHGT, LD_SHGT, LD_SHGT, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26952 ++    SYNTAX_NORMAL2(LD_SHLE, LD_SHLE, LD_SHLE, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26953 ++    SYNTAX_NORMAL2(LD_SHHI, LD_SHHI, LD_SHHI, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26954 ++    SYNTAX_NORMAL2(LD_SHVS, LD_SHVS, LD_SHVS, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26955 ++    SYNTAX_NORMAL2(LD_SHVC, LD_SHVC, LD_SHVC, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26956 ++    SYNTAX_NORMAL2(LD_SHQS, LD_SHQS, LD_SHQS, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26957 ++    SYNTAX_NORMAL2(LD_SHAL, LD_SHAL, LD_SHAL, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26958 ++    SYNTAX_NORMAL2(LD_SHHS, LD_SHHS, LD_SHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26959 ++    SYNTAX_NORMAL2(LD_SHLO, LD_SHLO, LD_SHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26960 ++    SYNTAX_NORMAL2(LD_UHEQ, LD_UHEQ, LD_UHEQ, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26961 ++    SYNTAX_NORMAL2(LD_UHNE, LD_UHNE, LD_UHNE, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26962 ++    SYNTAX_NORMAL2(LD_UHCC, LD_UHCC, LD_UHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26963 ++    SYNTAX_NORMAL2(LD_UHCS, LD_UHCS, LD_UHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26964 ++    SYNTAX_NORMAL2(LD_UHGE, LD_UHGE, LD_UHGE, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26965 ++    SYNTAX_NORMAL2(LD_UHLT, LD_UHLT, LD_UHLT, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26966 ++    SYNTAX_NORMAL2(LD_UHMI, LD_UHMI, LD_UHMI, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26967 ++    SYNTAX_NORMAL2(LD_UHPL, LD_UHPL, LD_UHPL, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26968 ++    SYNTAX_NORMAL2(LD_UHLS, LD_UHLS, LD_UHLS, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26969 ++    SYNTAX_NORMAL2(LD_UHGT, LD_UHGT, LD_UHGT, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26970 ++    SYNTAX_NORMAL2(LD_UHLE, LD_UHLE, LD_UHLE, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26971 ++    SYNTAX_NORMAL2(LD_UHHI, LD_UHHI, LD_UHHI, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26972 ++    SYNTAX_NORMAL2(LD_UHVS, LD_UHVS, LD_UHVS, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26973 ++    SYNTAX_NORMAL2(LD_UHVC, LD_UHVC, LD_UHVC, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26974 ++    SYNTAX_NORMAL2(LD_UHQS, LD_UHQS, LD_UHQS, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26975 ++    SYNTAX_NORMAL2(LD_UHAL, LD_UHAL, LD_UHAL, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26976 ++    SYNTAX_NORMAL2(LD_UHHS, LD_UHHS, LD_UHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26977 ++    SYNTAX_NORMAL2(LD_UHLO, LD_UHLO, LD_UHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
47.26978 ++    SYNTAX_NORMAL2(LD_SBEQ, LD_SBEQ, LD_SBEQ, INTREG, INTREG_UDISP, AVR32_V2),
47.26979 ++    SYNTAX_NORMAL2(LD_SBNE, LD_SBNE, LD_SBNE, INTREG, INTREG_UDISP, AVR32_V2),
47.26980 ++    SYNTAX_NORMAL2(LD_SBCC, LD_SBCC, LD_SBCC, INTREG, INTREG_UDISP, AVR32_V2),
47.26981 ++    SYNTAX_NORMAL2(LD_SBCS, LD_SBCS, LD_SBCS, INTREG, INTREG_UDISP, AVR32_V2),
47.26982 ++    SYNTAX_NORMAL2(LD_SBGE, LD_SBGE, LD_SBGE, INTREG, INTREG_UDISP, AVR32_V2),
47.26983 ++    SYNTAX_NORMAL2(LD_SBLT, LD_SBLT, LD_SBLT, INTREG, INTREG_UDISP, AVR32_V2),
47.26984 ++    SYNTAX_NORMAL2(LD_SBMI, LD_SBMI, LD_SBMI, INTREG, INTREG_UDISP, AVR32_V2),
47.26985 ++    SYNTAX_NORMAL2(LD_SBPL, LD_SBPL, LD_SBPL, INTREG, INTREG_UDISP, AVR32_V2),
47.26986 ++    SYNTAX_NORMAL2(LD_SBLS, LD_SBLS, LD_SBLS, INTREG, INTREG_UDISP, AVR32_V2),
47.26987 ++    SYNTAX_NORMAL2(LD_SBGT, LD_SBGT, LD_SBGT, INTREG, INTREG_UDISP, AVR32_V2),
47.26988 ++    SYNTAX_NORMAL2(LD_SBLE, LD_SBLE, LD_SBLE, INTREG, INTREG_UDISP, AVR32_V2),
47.26989 ++    SYNTAX_NORMAL2(LD_SBHI, LD_SBHI, LD_SBHI, INTREG, INTREG_UDISP, AVR32_V2),
47.26990 ++    SYNTAX_NORMAL2(LD_SBVS, LD_SBVS, LD_SBVS, INTREG, INTREG_UDISP, AVR32_V2),
47.26991 ++    SYNTAX_NORMAL2(LD_SBVC, LD_SBVC, LD_SBVC, INTREG, INTREG_UDISP, AVR32_V2),
47.26992 ++    SYNTAX_NORMAL2(LD_SBQS, LD_SBQS, LD_SBQS, INTREG, INTREG_UDISP, AVR32_V2),
47.26993 ++    SYNTAX_NORMAL2(LD_SBAL, LD_SBAL, LD_SBAL, INTREG, INTREG_UDISP, AVR32_V2),
47.26994 ++    SYNTAX_NORMAL2(LD_SBHS, LD_SBHS, LD_SBCC, INTREG, INTREG_UDISP, AVR32_V2),
47.26995 ++    SYNTAX_NORMAL2(LD_SBLO, LD_SBLO, LD_SBCS, INTREG, INTREG_UDISP, AVR32_V2),
47.26996 ++    SYNTAX_NORMAL2(LD_UBEQ, LD_UBEQ, LD_UBEQ, INTREG, INTREG_UDISP, AVR32_V2),
47.26997 ++    SYNTAX_NORMAL2(LD_UBNE, LD_UBNE, LD_UBNE, INTREG, INTREG_UDISP, AVR32_V2),
47.26998 ++    SYNTAX_NORMAL2(LD_UBCC, LD_UBCC, LD_UBCC, INTREG, INTREG_UDISP, AVR32_V2),
47.26999 ++    SYNTAX_NORMAL2(LD_UBCS, LD_UBCS, LD_UBCS, INTREG, INTREG_UDISP, AVR32_V2),
47.27000 ++    SYNTAX_NORMAL2(LD_UBGE, LD_UBGE, LD_UBGE, INTREG, INTREG_UDISP, AVR32_V2),
47.27001 ++    SYNTAX_NORMAL2(LD_UBLT, LD_UBLT, LD_UBLT, INTREG, INTREG_UDISP, AVR32_V2),
47.27002 ++    SYNTAX_NORMAL2(LD_UBMI, LD_UBMI, LD_UBMI, INTREG, INTREG_UDISP, AVR32_V2),
47.27003 ++    SYNTAX_NORMAL2(LD_UBPL, LD_UBPL, LD_UBPL, INTREG, INTREG_UDISP, AVR32_V2),
47.27004 ++    SYNTAX_NORMAL2(LD_UBLS, LD_UBLS, LD_UBLS, INTREG, INTREG_UDISP, AVR32_V2),
47.27005 ++    SYNTAX_NORMAL2(LD_UBGT, LD_UBGT, LD_UBGT, INTREG, INTREG_UDISP, AVR32_V2),
47.27006 ++    SYNTAX_NORMAL2(LD_UBLE, LD_UBLE, LD_UBLE, INTREG, INTREG_UDISP, AVR32_V2),
47.27007 ++    SYNTAX_NORMAL2(LD_UBHI, LD_UBHI, LD_UBHI, INTREG, INTREG_UDISP, AVR32_V2),
47.27008 ++    SYNTAX_NORMAL2(LD_UBVS, LD_UBVS, LD_UBVS, INTREG, INTREG_UDISP, AVR32_V2),
47.27009 ++    SYNTAX_NORMAL2(LD_UBVC, LD_UBVC, LD_UBVC, INTREG, INTREG_UDISP, AVR32_V2),
47.27010 ++    SYNTAX_NORMAL2(LD_UBQS, LD_UBQS, LD_UBQS, INTREG, INTREG_UDISP, AVR32_V2),
47.27011 ++    SYNTAX_NORMAL2(LD_UBAL, LD_UBAL, LD_UBAL, INTREG, INTREG_UDISP, AVR32_V2),
47.27012 ++    SYNTAX_NORMAL2(LD_UBHS, LD_UBHS, LD_UBCC, INTREG, INTREG_UDISP, AVR32_V2),
47.27013 ++    SYNTAX_NORMAL2(LD_UBLO, LD_UBLO, LD_UBCS, INTREG, INTREG_UDISP, AVR32_V2),
47.27014 ++    SYNTAX_NORMAL2(ST_WEQ, ST_WEQ, ST_WEQ, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27015 ++    SYNTAX_NORMAL2(ST_WNE, ST_WNE, ST_WNE, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27016 ++    SYNTAX_NORMAL2(ST_WCC, ST_WCC, ST_WCC, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27017 ++    SYNTAX_NORMAL2(ST_WCS, ST_WCS, ST_WCS, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27018 ++    SYNTAX_NORMAL2(ST_WGE, ST_WGE, ST_WGE, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27019 ++    SYNTAX_NORMAL2(ST_WLT, ST_WLT, ST_WLT, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27020 ++    SYNTAX_NORMAL2(ST_WMI, ST_WMI, ST_WMI, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27021 ++    SYNTAX_NORMAL2(ST_WPL, ST_WPL, ST_WPL, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27022 ++    SYNTAX_NORMAL2(ST_WLS, ST_WLS, ST_WLS, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27023 ++    SYNTAX_NORMAL2(ST_WGT, ST_WGT, ST_WGT, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27024 ++    SYNTAX_NORMAL2(ST_WLE, ST_WLE, ST_WLE, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27025 ++    SYNTAX_NORMAL2(ST_WHI, ST_WHI, ST_WHI, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27026 ++    SYNTAX_NORMAL2(ST_WVS, ST_WVS, ST_WVS, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27027 ++    SYNTAX_NORMAL2(ST_WVC, ST_WVC, ST_WVC, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27028 ++    SYNTAX_NORMAL2(ST_WQS, ST_WQS, ST_WQS, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27029 ++    SYNTAX_NORMAL2(ST_WAL, ST_WAL, ST_WAL, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27030 ++    SYNTAX_NORMAL2(ST_WHS, ST_WHS, ST_WCC, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27031 ++    SYNTAX_NORMAL2(ST_WLO, ST_WLO, ST_WCS, INTREG_UDISP_W, INTREG, AVR32_V2),
47.27032 ++    SYNTAX_NORMAL2(ST_HEQ, ST_HEQ, ST_HEQ, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27033 ++    SYNTAX_NORMAL2(ST_HNE, ST_HNE, ST_HNE, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27034 ++    SYNTAX_NORMAL2(ST_HCC, ST_HCC, ST_HCC, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27035 ++    SYNTAX_NORMAL2(ST_HCS, ST_HCS, ST_HCS, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27036 ++    SYNTAX_NORMAL2(ST_HGE, ST_HGE, ST_HGE, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27037 ++    SYNTAX_NORMAL2(ST_HLT, ST_HLT, ST_HLT, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27038 ++    SYNTAX_NORMAL2(ST_HMI, ST_HMI, ST_HMI, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27039 ++    SYNTAX_NORMAL2(ST_HPL, ST_HPL, ST_HPL, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27040 ++    SYNTAX_NORMAL2(ST_HLS, ST_HLS, ST_HLS, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27041 ++    SYNTAX_NORMAL2(ST_HGT, ST_HGT, ST_HGT, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27042 ++    SYNTAX_NORMAL2(ST_HLE, ST_HLE, ST_HLE, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27043 ++    SYNTAX_NORMAL2(ST_HHI, ST_HHI, ST_HHI, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27044 ++    SYNTAX_NORMAL2(ST_HVS, ST_HVS, ST_HVS, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27045 ++    SYNTAX_NORMAL2(ST_HVC, ST_HVC, ST_HVC, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27046 ++    SYNTAX_NORMAL2(ST_HQS, ST_HQS, ST_HQS, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27047 ++    SYNTAX_NORMAL2(ST_HAL, ST_HAL, ST_HAL, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27048 ++    SYNTAX_NORMAL2(ST_HHS, ST_HHS, ST_HCC, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27049 ++    SYNTAX_NORMAL2(ST_HLO, ST_HLO, ST_HCS, INTREG_UDISP_H, INTREG, AVR32_V2),
47.27050 ++    SYNTAX_NORMAL2(ST_BEQ, ST_BEQ, ST_BEQ, INTREG_UDISP, INTREG, AVR32_V2),
47.27051 ++    SYNTAX_NORMAL2(ST_BNE, ST_BNE, ST_BNE, INTREG_UDISP, INTREG, AVR32_V2),
47.27052 ++    SYNTAX_NORMAL2(ST_BCC, ST_BCC, ST_BCC, INTREG_UDISP, INTREG, AVR32_V2),
47.27053 ++    SYNTAX_NORMAL2(ST_BCS, ST_BCS, ST_BCS, INTREG_UDISP, INTREG, AVR32_V2),
47.27054 ++    SYNTAX_NORMAL2(ST_BGE, ST_BGE, ST_BGE, INTREG_UDISP, INTREG, AVR32_V2),
47.27055 ++    SYNTAX_NORMAL2(ST_BLT, ST_BLT, ST_BLT, INTREG_UDISP, INTREG, AVR32_V2),
47.27056 ++    SYNTAX_NORMAL2(ST_BMI, ST_BMI, ST_BMI, INTREG_UDISP, INTREG, AVR32_V2),
47.27057 ++    SYNTAX_NORMAL2(ST_BPL, ST_BPL, ST_BPL, INTREG_UDISP, INTREG, AVR32_V2),
47.27058 ++    SYNTAX_NORMAL2(ST_BLS, ST_BLS, ST_BLS, INTREG_UDISP, INTREG, AVR32_V2),
47.27059 ++    SYNTAX_NORMAL2(ST_BGT, ST_BGT, ST_BGT, INTREG_UDISP, INTREG, AVR32_V2),
47.27060 ++    SYNTAX_NORMAL2(ST_BLE, ST_BLE, ST_BLE, INTREG_UDISP, INTREG, AVR32_V2),
47.27061 ++    SYNTAX_NORMAL2(ST_BHI, ST_BHI, ST_BHI, INTREG_UDISP, INTREG, AVR32_V2),
47.27062 ++    SYNTAX_NORMAL2(ST_BVS, ST_BVS, ST_BVS, INTREG_UDISP, INTREG, AVR32_V2),
47.27063 ++    SYNTAX_NORMAL2(ST_BVC, ST_BVC, ST_BVC, INTREG_UDISP, INTREG, AVR32_V2),
47.27064 ++    SYNTAX_NORMAL2(ST_BQS, ST_BQS, ST_BQS, INTREG_UDISP, INTREG, AVR32_V2),
47.27065 ++    SYNTAX_NORMAL2(ST_BAL, ST_BAL, ST_BAL, INTREG_UDISP, INTREG, AVR32_V2),
47.27066 ++    SYNTAX_NORMAL2(ST_BHS, ST_BHS, ST_BCC, INTREG_UDISP, INTREG, AVR32_V2),
47.27067 ++    SYNTAX_NORMAL2(ST_BLO, ST_BLO, ST_BCS, INTREG_UDISP, INTREG, AVR32_V2),
47.27068 ++    SYNTAX_NORMAL2(MOVH, MOVH, MOVH, INTREG, UNSIGNED_CONST, AVR32_V2),
47.27069 ++
47.27070 ++  };
47.27071 ++
47.27072 ++#define NORMAL_MNEMONIC(name, syntax, str)		\
47.27073 ++  {							\
47.27074 ++    AVR32_MNEMONIC_##name, str,				\
47.27075 ++    &avr32_syntax_table[AVR32_SYNTAX_##syntax],		\
47.27076 ++  }
47.27077 ++#define FP_MNEMONIC(name, syntax, str)			\
47.27078 ++  NORMAL_MNEMONIC(name##_S, syntax##_S, str ".s"),	\
47.27079 ++  NORMAL_MNEMONIC(name##_D, syntax##_D, str ".d")
47.27080 ++
47.27081 ++const struct avr32_mnemonic avr32_mnemonic_table[] =
47.27082 ++  {
47.27083 ++    NORMAL_MNEMONIC(ABS, ABS, "abs"),
47.27084 ++    NORMAL_MNEMONIC(ACALL, ACALL, "acall"),
47.27085 ++    NORMAL_MNEMONIC(ACR, ACR, "acr"),
47.27086 ++    NORMAL_MNEMONIC(ADC, ADC, "adc"),
47.27087 ++    NORMAL_MNEMONIC(ADD, ADD1, "add"),
47.27088 ++    NORMAL_MNEMONIC(ADDABS, ADDABS, "addabs"),
47.27089 ++    NORMAL_MNEMONIC(ADDHH_W, ADDHH_W, "addhh.w"),
47.27090 ++    NORMAL_MNEMONIC(AND, AND1, "and"),
47.27091 ++    NORMAL_MNEMONIC(ANDH, ANDH, "andh"),
47.27092 ++    NORMAL_MNEMONIC(ANDL, ANDL, "andl"),
47.27093 ++    NORMAL_MNEMONIC(ANDN, ANDN, "andn"),
47.27094 ++    NORMAL_MNEMONIC(ASR, ASR1, "asr"),
47.27095 ++    NORMAL_MNEMONIC(BFEXTS, BFEXTS, "bfexts"),
47.27096 ++    NORMAL_MNEMONIC(BFEXTU, BFEXTU, "bfextu"),
47.27097 ++    NORMAL_MNEMONIC(BFINS, BFINS, "bfins"),
47.27098 ++    NORMAL_MNEMONIC(BLD, BLD, "bld"),
47.27099 ++    NORMAL_MNEMONIC(BREQ, BREQ1, "breq"),
47.27100 ++    NORMAL_MNEMONIC(BRNE, BRNE1, "brne"),
47.27101 ++    NORMAL_MNEMONIC(BRCC, BRCC1, "brcc"),
47.27102 ++    NORMAL_MNEMONIC(BRCS, BRCS1, "brcs"),
47.27103 ++    NORMAL_MNEMONIC(BRGE, BRGE1, "brge"),
47.27104 ++    NORMAL_MNEMONIC(BRLT, BRLT1, "brlt"),
47.27105 ++    NORMAL_MNEMONIC(BRMI, BRMI1, "brmi"),
47.27106 ++    NORMAL_MNEMONIC(BRPL, BRPL1, "brpl"),
47.27107 ++    NORMAL_MNEMONIC(BRHS, BRHS1, "brhs"),
47.27108 ++    NORMAL_MNEMONIC(BRLO, BRLO1, "brlo"),
47.27109 ++    NORMAL_MNEMONIC(BRLS, BRLS, "brls"),
47.27110 ++    NORMAL_MNEMONIC(BRGT, BRGT, "brgt"),
47.27111 ++    NORMAL_MNEMONIC(BRLE, BRLE, "brle"),
47.27112 ++    NORMAL_MNEMONIC(BRHI, BRHI, "brhi"),
47.27113 ++    NORMAL_MNEMONIC(BRVS, BRVS, "brvs"),
47.27114 ++    NORMAL_MNEMONIC(BRVC, BRVC, "brvc"),
47.27115 ++    NORMAL_MNEMONIC(BRQS, BRQS, "brqs"),
47.27116 ++    NORMAL_MNEMONIC(BRAL, BRAL, "bral"),
47.27117 ++    NORMAL_MNEMONIC(BREAKPOINT, BREAKPOINT, "breakpoint"),
47.27118 ++    NORMAL_MNEMONIC(BREV, BREV, "brev"),
47.27119 ++    NORMAL_MNEMONIC(BST, BST, "bst"),
47.27120 ++    NORMAL_MNEMONIC(CACHE, CACHE, "cache"),
47.27121 ++    NORMAL_MNEMONIC(CASTS_B, CASTS_B, "casts.b"),
47.27122 ++    NORMAL_MNEMONIC(CASTS_H, CASTS_H, "casts.h"),
47.27123 ++    NORMAL_MNEMONIC(CASTU_B, CASTU_B, "castu.b"),
47.27124 ++    NORMAL_MNEMONIC(CASTU_H, CASTU_H, "castu.h"),
47.27125 ++    NORMAL_MNEMONIC(CBR, CBR, "cbr"),
47.27126 ++    NORMAL_MNEMONIC(CLZ, CLZ, "clz"),
47.27127 ++    NORMAL_MNEMONIC(COM, COM, "com"),
47.27128 ++    NORMAL_MNEMONIC(COP, COP, "cop"),
47.27129 ++    NORMAL_MNEMONIC(CP_B, CP_B, "cp.b"),
47.27130 ++    NORMAL_MNEMONIC(CP_H, CP_H, "cp.h"),
47.27131 ++    NORMAL_MNEMONIC(CP_W, CP_W1, "cp.w"),
47.27132 ++    NORMAL_MNEMONIC(CP, CP_W1, "cp"),
47.27133 ++    NORMAL_MNEMONIC(CPC, CPC1, "cpc"),
47.27134 ++    NORMAL_MNEMONIC(CSRF, CSRF, "csrf"),
47.27135 ++    NORMAL_MNEMONIC(CSRFCZ, CSRFCZ, "csrfcz"),
47.27136 ++    NORMAL_MNEMONIC(DIVS, DIVS, "divs"),
47.27137 ++    NORMAL_MNEMONIC(DIVU, DIVU, "divu"),
47.27138 ++    NORMAL_MNEMONIC(EOR, EOR1, "eor"),
47.27139 ++    NORMAL_MNEMONIC(EORL, EORL, "eorl"),
47.27140 ++    NORMAL_MNEMONIC(EORH, EORH, "eorh"),
47.27141 ++    NORMAL_MNEMONIC(FRS, FRS, "frs"),
47.27142 ++    NORMAL_MNEMONIC(ICALL, ICALL, "icall"),
47.27143 ++    NORMAL_MNEMONIC(INCJOSP, INCJOSP, "incjosp"),
47.27144 ++    NORMAL_MNEMONIC(LD_D, LD_D1, "ld.d"),
47.27145 ++    NORMAL_MNEMONIC(LD_SB, LD_SB2, "ld.sb"),
47.27146 ++    NORMAL_MNEMONIC(LD_UB, LD_UB1, "ld.ub"),
47.27147 ++    NORMAL_MNEMONIC(LD_SH, LD_SH1, "ld.sh"),
47.27148 ++    NORMAL_MNEMONIC(LD_UH, LD_UH1, "ld.uh"),
47.27149 ++    NORMAL_MNEMONIC(LD_W, LD_W1, "ld.w"),
47.27150 ++    NORMAL_MNEMONIC(LDC_D, LDC_D3, "ldc.d"),
47.27151 ++    NORMAL_MNEMONIC(LDC_W, LDC_W3, "ldc.w"),
47.27152 ++    NORMAL_MNEMONIC(LDC0_D, LDC0_D, "ldc0.d"),
47.27153 ++    NORMAL_MNEMONIC(LDC0_W, LDC0_W, "ldc0.w"),
47.27154 ++    NORMAL_MNEMONIC(LDCM_D, LDCM_D, "ldcm.d"),
47.27155 ++    NORMAL_MNEMONIC(LDCM_W, LDCM_W, "ldcm.w"),
47.27156 ++    NORMAL_MNEMONIC(LDDPC, LDDPC, "lddpc"),
47.27157 ++    NORMAL_MNEMONIC(LDDSP, LDDSP, "lddsp"),
47.27158 ++    NORMAL_MNEMONIC(LDINS_B, LDINS_B, "ldins.b"),
47.27159 ++    NORMAL_MNEMONIC(LDINS_H, LDINS_H, "ldins.h"),
47.27160 ++    NORMAL_MNEMONIC(LDM, LDM, "ldm"),
47.27161 ++    NORMAL_MNEMONIC(LDMTS, LDMTS, "ldmts"),
47.27162 ++    NORMAL_MNEMONIC(LDSWP_SH, LDSWP_SH, "ldswp.sh"),
47.27163 ++    NORMAL_MNEMONIC(LDSWP_UH, LDSWP_UH, "ldswp.uh"),
47.27164 ++    NORMAL_MNEMONIC(LDSWP_W, LDSWP_W, "ldswp.w"),
47.27165 ++    NORMAL_MNEMONIC(LSL, LSL1, "lsl"),
47.27166 ++    NORMAL_MNEMONIC(LSR, LSR1, "lsr"),
47.27167 ++    NORMAL_MNEMONIC(MAC, MAC, "mac"),
47.27168 ++    NORMAL_MNEMONIC(MACHH_D, MACHH_D, "machh.d"),
47.27169 ++    NORMAL_MNEMONIC(MACHH_W, MACHH_W, "machh.w"),
47.27170 ++    NORMAL_MNEMONIC(MACS_D, MACS_D, "macs.d"),
47.27171 ++    NORMAL_MNEMONIC(MACSATHH_W, MACSATHH_W, "macsathh.w"),
47.27172 ++    NORMAL_MNEMONIC(MACU_D, MACUD, "macu.d"),
47.27173 ++    NORMAL_MNEMONIC(MACWH_D, MACWH_D, "macwh.d"),
47.27174 ++    NORMAL_MNEMONIC(MAX, MAX, "max"),
47.27175 ++    NORMAL_MNEMONIC(MCALL, MCALL, "mcall"),
47.27176 ++    NORMAL_MNEMONIC(MFDR, MFDR, "mfdr"),
47.27177 ++    NORMAL_MNEMONIC(MFSR, MFSR, "mfsr"),
47.27178 ++    NORMAL_MNEMONIC(MIN, MIN, "min"),
47.27179 ++    NORMAL_MNEMONIC(MOV, MOV3, "mov"),
47.27180 ++    NORMAL_MNEMONIC(MOVEQ, MOVEQ1, "moveq"),
47.27181 ++    NORMAL_MNEMONIC(MOVNE, MOVNE1, "movne"),
47.27182 ++    NORMAL_MNEMONIC(MOVCC, MOVCC1, "movcc"),
47.27183 ++    NORMAL_MNEMONIC(MOVCS, MOVCS1, "movcs"),
47.27184 ++    NORMAL_MNEMONIC(MOVGE, MOVGE1, "movge"),
47.27185 ++    NORMAL_MNEMONIC(MOVLT, MOVLT1, "movlt"),
47.27186 ++    NORMAL_MNEMONIC(MOVMI, MOVMI1, "movmi"),
47.27187 ++    NORMAL_MNEMONIC(MOVPL, MOVPL1, "movpl"),
47.27188 ++    NORMAL_MNEMONIC(MOVLS, MOVLS1, "movls"),
47.27189 ++    NORMAL_MNEMONIC(MOVGT, MOVGT1, "movgt"),
47.27190 ++    NORMAL_MNEMONIC(MOVLE, MOVLE1, "movle"),
47.27191 ++    NORMAL_MNEMONIC(MOVHI, MOVHI1, "movhi"),
47.27192 ++    NORMAL_MNEMONIC(MOVVS, MOVVS1, "movvs"),
47.27193 ++    NORMAL_MNEMONIC(MOVVC, MOVVC1, "movvc"),
47.27194 ++    NORMAL_MNEMONIC(MOVQS, MOVQS1, "movqs"),
47.27195 ++    NORMAL_MNEMONIC(MOVAL, MOVAL1, "moval"),
47.27196 ++    NORMAL_MNEMONIC(MOVHS, MOVHS1, "movhs"),
47.27197 ++    NORMAL_MNEMONIC(MOVLO, MOVLO1, "movlo"),
47.27198 ++    NORMAL_MNEMONIC(MTDR, MTDR, "mtdr"),
47.27199 ++    NORMAL_MNEMONIC(MTSR, MTSR, "mtsr"),
47.27200 ++    NORMAL_MNEMONIC(MUL, MUL1, "mul"),
47.27201 ++    NORMAL_MNEMONIC(MULHH_W, MULHH_W, "mulhh.w"),
47.27202 ++    NORMAL_MNEMONIC(MULNHH_W, MULNHH_W, "mulnhh.w"),
47.27203 ++    NORMAL_MNEMONIC(MULNWH_D, MULNWH_D, "mulnwh.d"),
47.27204 ++    NORMAL_MNEMONIC(MULS_D, MULSD, "muls.d"),
47.27205 ++    NORMAL_MNEMONIC(MULSATHH_H, MULSATHH_H, "mulsathh.h"),
47.27206 ++    NORMAL_MNEMONIC(MULSATHH_W, MULSATHH_W, "mulsathh.w"),
47.27207 ++    NORMAL_MNEMONIC(MULSATRNDHH_H, MULSATRNDHH_H, "mulsatrndhh.h"),
47.27208 ++    NORMAL_MNEMONIC(MULSATRNDWH_W, MULSATRNDWH_W, "mulsatrndwh.w"),
47.27209 ++    NORMAL_MNEMONIC(MULSATWH_W, MULSATWH_W, "mulsatwh.w"),
47.27210 ++    NORMAL_MNEMONIC(MULU_D, MULU_D, "mulu.d"),
47.27211 ++    NORMAL_MNEMONIC(MULWH_D, MULWH_D, "mulwh.d"),
47.27212 ++    NORMAL_MNEMONIC(MUSFR, MUSFR, "musfr"),
47.27213 ++    NORMAL_MNEMONIC(MUSTR, MUSTR, "mustr"),
47.27214 ++    NORMAL_MNEMONIC(MVCR_D, MVCR_D, "mvcr.d"),
47.27215 ++    NORMAL_MNEMONIC(MVCR_W, MVCR_W, "mvcr.w"),
47.27216 ++    NORMAL_MNEMONIC(MVRC_D, MVRC_D, "mvrc.d"),
47.27217 ++    NORMAL_MNEMONIC(MVRC_W, MVRC_W, "mvrc.w"),
47.27218 ++    NORMAL_MNEMONIC(NEG, NEG, "neg"),
47.27219 ++    NORMAL_MNEMONIC(NOP, NOP, "nop"),
47.27220 ++    NORMAL_MNEMONIC(OR, OR1, "or"),
47.27221 ++    NORMAL_MNEMONIC(ORH, ORH, "orh"),
47.27222 ++    NORMAL_MNEMONIC(ORL, ORL, "orl"),
47.27223 ++    NORMAL_MNEMONIC(PABS_SB, PABS_SB, "pabs.sb"),
47.27224 ++    NORMAL_MNEMONIC(PABS_SH, PABS_SH, "pabs.sh"),
47.27225 ++    NORMAL_MNEMONIC(PACKSH_SB, PACKSH_SB, "packsh.sb"),
47.27226 ++    NORMAL_MNEMONIC(PACKSH_UB, PACKSH_UB, "packsh.ub"),
47.27227 ++    NORMAL_MNEMONIC(PACKW_SH, PACKW_SH, "packw.sh"),
47.27228 ++    NORMAL_MNEMONIC(PADD_B, PADD_B, "padd.b"),
47.27229 ++    NORMAL_MNEMONIC(PADD_H, PADD_H, "padd.h"),
47.27230 ++    NORMAL_MNEMONIC(PADDH_SH, PADDH_SH, "paddh.sh"),
47.27231 ++    NORMAL_MNEMONIC(PADDH_UB, PADDH_UB, "paddh.ub"),
47.27232 ++    NORMAL_MNEMONIC(PADDS_SB, PADDS_SB, "padds.sb"),
47.27233 ++    NORMAL_MNEMONIC(PADDS_SH, PADDS_SH, "padds.sh"),
47.27234 ++    NORMAL_MNEMONIC(PADDS_UB, PADDS_UB, "padds.ub"),
47.27235 ++    NORMAL_MNEMONIC(PADDS_UH, PADDS_UH, "padds.uh"),
47.27236 ++    NORMAL_MNEMONIC(PADDSUB_H, PADDSUB_H, "paddsub.h"),
47.27237 ++    NORMAL_MNEMONIC(PADDSUBH_SH, PADDSUBH_SH, "paddsubh.sh"),
47.27238 ++    NORMAL_MNEMONIC(PADDSUBS_SH, PADDSUBS_SH, "paddsubs.sh"),
47.27239 ++    NORMAL_MNEMONIC(PADDSUBS_UH, PADDSUBS_UH, "paddsubs.uh"),
47.27240 ++    NORMAL_MNEMONIC(PADDX_H, PADDX_H, "paddx.h"),
47.27241 ++    NORMAL_MNEMONIC(PADDXH_SH, PADDXH_SH, "paddxh.sh"),
47.27242 ++    NORMAL_MNEMONIC(PADDXS_SH, PADDXS_SH, "paddxs.sh"),
47.27243 ++    NORMAL_MNEMONIC(PADDXS_UH, PADDXS_UH, "paddxs.uh"),
47.27244 ++    NORMAL_MNEMONIC(PASR_B, PASR_B, "pasr.b"),
47.27245 ++    NORMAL_MNEMONIC(PASR_H, PASR_H, "pasr.h"),
47.27246 ++    NORMAL_MNEMONIC(PAVG_SH, PAVG_SH, "pavg.sh"),
47.27247 ++    NORMAL_MNEMONIC(PAVG_UB, PAVG_UB, "pavg.ub"),
47.27248 ++    NORMAL_MNEMONIC(PLSL_B, PLSL_B, "plsl.b"),
47.27249 ++    NORMAL_MNEMONIC(PLSL_H, PLSL_H, "plsl.h"),
47.27250 ++    NORMAL_MNEMONIC(PLSR_B, PLSR_B, "plsr.b"),
47.27251 ++    NORMAL_MNEMONIC(PLSR_H, PLSR_H, "plsr.h"),
47.27252 ++    NORMAL_MNEMONIC(PMAX_SH, PMAX_SH, "pmax.sh"),
47.27253 ++    NORMAL_MNEMONIC(PMAX_UB, PMAX_UB, "pmax.ub"),
47.27254 ++    NORMAL_MNEMONIC(PMIN_SH, PMIN_SH, "pmin.sh"),
47.27255 ++    NORMAL_MNEMONIC(PMIN_UB, PMIN_UB, "pmin.ub"),
47.27256 ++    NORMAL_MNEMONIC(POPJC, POPJC, "popjc"),
47.27257 ++    NORMAL_MNEMONIC(POPM, POPM, "popm"),
47.27258 ++    NORMAL_MNEMONIC(PREF, PREF, "pref"),
47.27259 ++    NORMAL_MNEMONIC(PSAD, PSAD, "psad"),
47.27260 ++    NORMAL_MNEMONIC(PSUB_B, PSUB_B, "psub.b"),
47.27261 ++    NORMAL_MNEMONIC(PSUB_H, PSUB_H, "psub.h"),
47.27262 ++    NORMAL_MNEMONIC(PSUBADD_H, PSUBADD_H, "psubadd.h"),
47.27263 ++    NORMAL_MNEMONIC(PSUBADDH_SH, PSUBADDH_SH, "psubaddh.sh"),
47.27264 ++    NORMAL_MNEMONIC(PSUBADDS_SH, PSUBADDS_SH, "psubadds.sh"),
47.27265 ++    NORMAL_MNEMONIC(PSUBADDS_UH, PSUBADDS_UH, "psubadds.uh"),
47.27266 ++    NORMAL_MNEMONIC(PSUBH_SH, PSUBH_SH, "psubh.sh"),
47.27267 ++    NORMAL_MNEMONIC(PSUBH_UB, PSUBH_UB, "psubh.ub"),
47.27268 ++    NORMAL_MNEMONIC(PSUBS_SB, PSUBS_SB, "psubs.sb"),
47.27269 ++    NORMAL_MNEMONIC(PSUBS_SH, PSUBS_SH, "psubs.sh"),
47.27270 ++    NORMAL_MNEMONIC(PSUBS_UB, PSUBS_UB, "psubs.ub"),
47.27271 ++    NORMAL_MNEMONIC(PSUBS_UH, PSUBS_UH, "psubs.uh"),
47.27272 ++    NORMAL_MNEMONIC(PSUBX_H, PSUBX_H, "psubx.h"),
47.27273 ++    NORMAL_MNEMONIC(PSUBXH_SH, PSUBXH_SH, "psubxh.sh"),
47.27274 ++    NORMAL_MNEMONIC(PSUBXS_SH, PSUBXS_SH, "psubxs.sh"),
47.27275 ++    NORMAL_MNEMONIC(PSUBXS_UH, PSUBXS_UH, "psubxs.uh"),
47.27276 ++    NORMAL_MNEMONIC(PUNPCKSB_H, PUNPCKSB_H, "punpcksb.h"),
47.27277 ++    NORMAL_MNEMONIC(PUNPCKUB_H, PUNPCKUB_H, "punpckub.h"),
47.27278 ++    NORMAL_MNEMONIC(PUSHJC, PUSHJC, "pushjc"),
47.27279 ++    NORMAL_MNEMONIC(PUSHM, PUSHM, "pushm"),
47.27280 ++    NORMAL_MNEMONIC(RCALL, RCALL1, "rcall"),
47.27281 ++    NORMAL_MNEMONIC(RETEQ, RETEQ, "reteq"),
47.27282 ++    NORMAL_MNEMONIC(RETNE, RETNE, "retne"),
47.27283 ++    NORMAL_MNEMONIC(RETCC, RETCC, "retcc"),
47.27284 ++    NORMAL_MNEMONIC(RETCS, RETCS, "retcs"),
47.27285 ++    NORMAL_MNEMONIC(RETGE, RETGE, "retge"),
47.27286 ++    NORMAL_MNEMONIC(RETLT, RETLT, "retlt"),
47.27287 ++    NORMAL_MNEMONIC(RETMI, RETMI, "retmi"),
47.27288 ++    NORMAL_MNEMONIC(RETPL, RETPL, "retpl"),
47.27289 ++    NORMAL_MNEMONIC(RETLS, RETLS, "retls"),
47.27290 ++    NORMAL_MNEMONIC(RETGT, RETGT, "retgt"),
47.27291 ++    NORMAL_MNEMONIC(RETLE, RETLE, "retle"),
47.27292 ++    NORMAL_MNEMONIC(RETHI, RETHI, "rethi"),
47.27293 ++    NORMAL_MNEMONIC(RETVS, RETVS, "retvs"),
47.27294 ++    NORMAL_MNEMONIC(RETVC, RETVC, "retvc"),
47.27295 ++    NORMAL_MNEMONIC(RETQS, RETQS, "retqs"),
47.27296 ++    NORMAL_MNEMONIC(RETAL, RETAL, "retal"),
47.27297 ++    NORMAL_MNEMONIC(RETHS, RETHS, "reths"),
47.27298 ++    NORMAL_MNEMONIC(RETLO, RETLO, "retlo"),
47.27299 ++    NORMAL_MNEMONIC(RET, RETAL, "ret"),
47.27300 ++    NORMAL_MNEMONIC(RETD, RETD, "retd"),
47.27301 ++    NORMAL_MNEMONIC(RETE, RETE, "rete"),
47.27302 ++    NORMAL_MNEMONIC(RETJ, RETJ, "retj"),
47.27303 ++    NORMAL_MNEMONIC(RETS, RETS, "rets"),
47.27304 ++    NORMAL_MNEMONIC(RJMP, RJMP, "rjmp"),
47.27305 ++    NORMAL_MNEMONIC(ROL, ROL, "rol"),
47.27306 ++    NORMAL_MNEMONIC(ROR, ROR, "ror"),
47.27307 ++    NORMAL_MNEMONIC(RSUB, RSUB1, "rsub"),
47.27308 ++    NORMAL_MNEMONIC(SATADD_H, SATADD_H, "satadd.h"),
47.27309 ++    NORMAL_MNEMONIC(SATADD_W, SATADD_W, "satadd.w"),
47.27310 ++    NORMAL_MNEMONIC(SATRNDS, SATRNDS, "satrnds"),
47.27311 ++    NORMAL_MNEMONIC(SATRNDU, SATRNDU, "satrndu"),
47.27312 ++    NORMAL_MNEMONIC(SATS, SATS, "sats"),
47.27313 ++    NORMAL_MNEMONIC(SATSUB_H, SATSUB_H, "satsub.h"),
47.27314 ++    NORMAL_MNEMONIC(SATSUB_W, SATSUB_W1, "satsub.w"),
47.27315 ++    NORMAL_MNEMONIC(SATU, SATU, "satu"),
47.27316 ++    NORMAL_MNEMONIC(SBC, SBC, "sbc"),
47.27317 ++    NORMAL_MNEMONIC(SBR, SBR, "sbr"),
47.27318 ++    NORMAL_MNEMONIC(SCALL, SCALL, "scall"),
47.27319 ++    NORMAL_MNEMONIC(SCR, SCR, "scr"),
47.27320 ++    NORMAL_MNEMONIC(SLEEP, SLEEP, "sleep"),
47.27321 ++    NORMAL_MNEMONIC(SREQ, SREQ, "sreq"),
47.27322 ++    NORMAL_MNEMONIC(SRNE, SRNE, "srne"),
47.27323 ++    NORMAL_MNEMONIC(SRCC, SRCC, "srcc"),
47.27324 ++    NORMAL_MNEMONIC(SRCS, SRCS, "srcs"),
47.27325 ++    NORMAL_MNEMONIC(SRGE, SRGE, "srge"),
47.27326 ++    NORMAL_MNEMONIC(SRLT, SRLT, "srlt"),
47.27327 ++    NORMAL_MNEMONIC(SRMI, SRMI, "srmi"),
47.27328 ++    NORMAL_MNEMONIC(SRPL, SRPL, "srpl"),
47.27329 ++    NORMAL_MNEMONIC(SRLS, SRLS, "srls"),
47.27330 ++    NORMAL_MNEMONIC(SRGT, SRGT, "srgt"),
47.27331 ++    NORMAL_MNEMONIC(SRLE, SRLE, "srle"),
47.27332 ++    NORMAL_MNEMONIC(SRHI, SRHI, "srhi"),
47.27333 ++    NORMAL_MNEMONIC(SRVS, SRVS, "srvs"),
47.27334 ++    NORMAL_MNEMONIC(SRVC, SRVC, "srvc"),
47.27335 ++    NORMAL_MNEMONIC(SRQS, SRQS, "srqs"),
47.27336 ++    NORMAL_MNEMONIC(SRAL, SRAL, "sral"),
47.27337 ++    NORMAL_MNEMONIC(SRHS, SRHS, "srhs"),
47.27338 ++    NORMAL_MNEMONIC(SRLO, SRLO, "srlo"),
47.27339 ++    NORMAL_MNEMONIC(SSRF, SSRF, "ssrf"),
47.27340 ++    NORMAL_MNEMONIC(ST_B, ST_B1, "st.b"),
47.27341 ++    NORMAL_MNEMONIC(ST_D, ST_D1, "st.d"),
47.27342 ++    NORMAL_MNEMONIC(ST_H, ST_H1, "st.h"),
47.27343 ++    NORMAL_MNEMONIC(ST_W, ST_W1, "st.w"),
47.27344 ++    NORMAL_MNEMONIC(STC_D, STC_D3, "stc.d"),
47.27345 ++    NORMAL_MNEMONIC(STC_W, STC_W3, "stc.w"),
47.27346 ++    NORMAL_MNEMONIC(STC0_D, STC0_D, "stc0.d"),
47.27347 ++    NORMAL_MNEMONIC(STC0_W, STC0_W, "stc0.w"),
47.27348 ++    NORMAL_MNEMONIC(STCM_D, STCM_D, "stcm.d"),
47.27349 ++    NORMAL_MNEMONIC(STCM_W, STCM_W, "stcm.w"),
47.27350 ++    NORMAL_MNEMONIC(STCOND, STCOND, "stcond"),
47.27351 ++    NORMAL_MNEMONIC(STDSP, STDSP, "stdsp"),
47.27352 ++    NORMAL_MNEMONIC(STHH_W, STHH_W2, "sthh.w"),
47.27353 ++    NORMAL_MNEMONIC(STM, STM, "stm"),
47.27354 ++    NORMAL_MNEMONIC(STMTS, STMTS, "stmts"),
47.27355 ++    NORMAL_MNEMONIC(STSWP_H, STSWP_H, "stswp.h"),
47.27356 ++    NORMAL_MNEMONIC(STSWP_W, STSWP_W, "stswp.w"),
47.27357 ++    NORMAL_MNEMONIC(SUB, SUB1, "sub"),
47.27358 ++    NORMAL_MNEMONIC(SUBEQ, SUBEQ, "subeq"),
47.27359 ++    NORMAL_MNEMONIC(SUBNE, SUBNE, "subne"),
47.27360 ++    NORMAL_MNEMONIC(SUBCC, SUBCC, "subcc"),
47.27361 ++    NORMAL_MNEMONIC(SUBCS, SUBCS, "subcs"),
47.27362 ++    NORMAL_MNEMONIC(SUBGE, SUBGE, "subge"),
47.27363 ++    NORMAL_MNEMONIC(SUBLT, SUBLT, "sublt"),
47.27364 ++    NORMAL_MNEMONIC(SUBMI, SUBMI, "submi"),
47.27365 ++    NORMAL_MNEMONIC(SUBPL, SUBPL, "subpl"),
47.27366 ++    NORMAL_MNEMONIC(SUBLS, SUBLS, "subls"),
47.27367 ++    NORMAL_MNEMONIC(SUBGT, SUBGT, "subgt"),
47.27368 ++    NORMAL_MNEMONIC(SUBLE, SUBLE, "suble"),
47.27369 ++    NORMAL_MNEMONIC(SUBHI, SUBHI, "subhi"),
47.27370 ++    NORMAL_MNEMONIC(SUBVS, SUBVS, "subvs"),
47.27371 ++    NORMAL_MNEMONIC(SUBVC, SUBVC, "subvc"),
47.27372 ++    NORMAL_MNEMONIC(SUBQS, SUBQS, "subqs"),
47.27373 ++    NORMAL_MNEMONIC(SUBAL, SUBAL, "subal"),
47.27374 ++    NORMAL_MNEMONIC(SUBHS, SUBHS, "subhs"),
47.27375 ++    NORMAL_MNEMONIC(SUBLO, SUBLO, "sublo"),
47.27376 ++    NORMAL_MNEMONIC(SUBFEQ, SUBFEQ, "subfeq"),
47.27377 ++    NORMAL_MNEMONIC(SUBFNE, SUBFNE, "subfne"),
47.27378 ++    NORMAL_MNEMONIC(SUBFCC, SUBFCC, "subfcc"),
47.27379 ++    NORMAL_MNEMONIC(SUBFCS, SUBFCS, "subfcs"),
47.27380 ++    NORMAL_MNEMONIC(SUBFGE, SUBFGE, "subfge"),
47.27381 ++    NORMAL_MNEMONIC(SUBFLT, SUBFLT, "subflt"),
47.27382 ++    NORMAL_MNEMONIC(SUBFMI, SUBFMI, "subfmi"),
47.27383 ++    NORMAL_MNEMONIC(SUBFPL, SUBFPL, "subfpl"),
47.27384 ++    NORMAL_MNEMONIC(SUBFLS, SUBFLS, "subfls"),
47.27385 ++    NORMAL_MNEMONIC(SUBFGT, SUBFGT, "subfgt"),
47.27386 ++    NORMAL_MNEMONIC(SUBFLE, SUBFLE, "subfle"),
47.27387 ++    NORMAL_MNEMONIC(SUBFHI, SUBFHI, "subfhi"),
47.27388 ++    NORMAL_MNEMONIC(SUBFVS, SUBFVS, "subfvs"),
47.27389 ++    NORMAL_MNEMONIC(SUBFVC, SUBFVC, "subfvc"),
47.27390 ++    NORMAL_MNEMONIC(SUBFQS, SUBFQS, "subfqs"),
47.27391 ++    NORMAL_MNEMONIC(SUBFAL, SUBFAL, "subfal"),
47.27392 ++    NORMAL_MNEMONIC(SUBFHS, SUBFHS, "subfhs"),
47.27393 ++    NORMAL_MNEMONIC(SUBFLO, SUBFLO, "subflo"),
47.27394 ++    NORMAL_MNEMONIC(SUBHH_W, SUBHH_W, "subhh.w"),
47.27395 ++    NORMAL_MNEMONIC(SWAP_B, SWAP_B, "swap.b"),
47.27396 ++    NORMAL_MNEMONIC(SWAP_BH, SWAP_BH, "swap.bh"),
47.27397 ++    NORMAL_MNEMONIC(SWAP_H, SWAP_H, "swap.h"),
47.27398 ++    NORMAL_MNEMONIC(SYNC, SYNC, "sync"),
47.27399 ++    NORMAL_MNEMONIC(TLBR, TLBR, "tlbr"),
47.27400 ++    NORMAL_MNEMONIC(TLBS, TLBS, "tlbs"),
47.27401 ++    NORMAL_MNEMONIC(TLBW, TLBW, "tlbw"),
47.27402 ++    NORMAL_MNEMONIC(TNBZ, TNBZ, "tnbz"),
47.27403 ++    NORMAL_MNEMONIC(TST, TST, "tst"),
47.27404 ++    NORMAL_MNEMONIC(XCHG, XCHG, "xchg"),
47.27405 ++    NORMAL_MNEMONIC(MEMC, MEMC, "memc"),
47.27406 ++    NORMAL_MNEMONIC(MEMS, MEMS, "mems"),
47.27407 ++    NORMAL_MNEMONIC(MEMT, MEMT, "memt"),
47.27408 ++    FP_MNEMONIC(FADD, FADD, "fadd"),
47.27409 ++    FP_MNEMONIC(FSUB, FSUB, "fsub"),
47.27410 ++    FP_MNEMONIC(FMAC, FMAC, "fmac"),
47.27411 ++    FP_MNEMONIC(FNMAC, FNMAC, "fnmac"),
47.27412 ++    FP_MNEMONIC(FMSC, FMSC, "fmsc"),
47.27413 ++    FP_MNEMONIC(FNMSC, FNMSC, "fnmsc"),
47.27414 ++    FP_MNEMONIC(FMUL, FMUL, "fmul"),
47.27415 ++    FP_MNEMONIC(FNMUL, FNMUL, "fnmul"),
47.27416 ++    FP_MNEMONIC(FNEG, FNEG, "fneg"),
47.27417 ++    FP_MNEMONIC(FABS, FABS, "fabs"),
47.27418 ++    FP_MNEMONIC(FCMP, FCMP, "fcmp"),
47.27419 ++    FP_MNEMONIC(FMOV, FMOV1, "fmov"),
47.27420 ++    NORMAL_MNEMONIC(FCASTS_D, FCASTS_D, "fcasts.d"),
47.27421 ++    NORMAL_MNEMONIC(FCASTD_S, FCASTD_S, "fcastd.s"),
47.27422 ++    NORMAL_MNEMONIC(LDA_W, LDA_W, "lda.w"),
47.27423 ++    NORMAL_MNEMONIC(CALL, CALL, "call"),
47.27424 ++    NORMAL_MNEMONIC(PICOSVMAC, PICOSVMAC0, "picosvmac"),
47.27425 ++    NORMAL_MNEMONIC(PICOSVMUL, PICOSVMUL0, "picosvmul"),
47.27426 ++    NORMAL_MNEMONIC(PICOVMAC, PICOVMAC0, "picovmac"),
47.27427 ++    NORMAL_MNEMONIC(PICOVMUL, PICOVMUL0, "picovmul"),
47.27428 ++    NORMAL_MNEMONIC(PICOLD_D, PICOLD_D2, "picold.d"),
47.27429 ++    NORMAL_MNEMONIC(PICOLD_W, PICOLD_W2, "picold.w"),
47.27430 ++    NORMAL_MNEMONIC(PICOLDM_D, PICOLDM_D, "picoldm.d"),
47.27431 ++    NORMAL_MNEMONIC(PICOLDM_W, PICOLDM_W, "picoldm.w"),
47.27432 ++    NORMAL_MNEMONIC(PICOMV_D, PICOMV_D1, "picomv.d"),
47.27433 ++    NORMAL_MNEMONIC(PICOMV_W, PICOMV_W1, "picomv.w"),
47.27434 ++    NORMAL_MNEMONIC(PICOST_D, PICOST_D2, "picost.d"),
47.27435 ++    NORMAL_MNEMONIC(PICOST_W, PICOST_W2, "picost.w"),
47.27436 ++    NORMAL_MNEMONIC(PICOSTM_D, PICOSTM_D, "picostm.d"),
47.27437 ++    NORMAL_MNEMONIC(PICOSTM_W, PICOSTM_W, "picostm.w"),
47.27438 ++    NORMAL_MNEMONIC(RSUBEQ, RSUBEQ, "rsubeq"),
47.27439 ++    NORMAL_MNEMONIC(RSUBNE, RSUBNE, "rsubne"),
47.27440 ++    NORMAL_MNEMONIC(RSUBCC, RSUBCC, "rsubcc"),
47.27441 ++    NORMAL_MNEMONIC(RSUBCS, RSUBCS, "rsubcs"),
47.27442 ++    NORMAL_MNEMONIC(RSUBGE, RSUBGE, "rsubge"),
47.27443 ++    NORMAL_MNEMONIC(RSUBLT, RSUBLT, "rsublt"),
47.27444 ++    NORMAL_MNEMONIC(RSUBMI, RSUBMI, "rsubmi"),
47.27445 ++    NORMAL_MNEMONIC(RSUBPL, RSUBPL, "rsubpl"),
47.27446 ++    NORMAL_MNEMONIC(RSUBLS, RSUBLS, "rsubls"),
47.27447 ++    NORMAL_MNEMONIC(RSUBGT, RSUBGT, "rsubgt"),
47.27448 ++    NORMAL_MNEMONIC(RSUBLE, RSUBLE, "rsuble"),
47.27449 ++    NORMAL_MNEMONIC(RSUBHI, RSUBHI, "rsubhi"),
47.27450 ++    NORMAL_MNEMONIC(RSUBVS, RSUBVS, "rsubvs"),
47.27451 ++    NORMAL_MNEMONIC(RSUBVC, RSUBVC, "rsubvc"),
47.27452 ++    NORMAL_MNEMONIC(RSUBQS, RSUBQS, "rsubqs"),
47.27453 ++    NORMAL_MNEMONIC(RSUBAL, RSUBAL, "rsubal"),
47.27454 ++    NORMAL_MNEMONIC(RSUBHS, RSUBHS, "rsubhs"),
47.27455 ++    NORMAL_MNEMONIC(RSUBLO, RSUBLO, "rsublo"),
47.27456 ++    NORMAL_MNEMONIC(ADDEQ, ADDEQ, "addeq"),
47.27457 ++    NORMAL_MNEMONIC(ADDNE, ADDNE, "addne"),
47.27458 ++    NORMAL_MNEMONIC(ADDCC, ADDCC, "addcc"),
47.27459 ++    NORMAL_MNEMONIC(ADDCS, ADDCS, "addcs"),
47.27460 ++    NORMAL_MNEMONIC(ADDGE, ADDGE, "addge"),
47.27461 ++    NORMAL_MNEMONIC(ADDLT, ADDLT, "addlt"),
47.27462 ++    NORMAL_MNEMONIC(ADDMI, ADDMI, "addmi"),
47.27463 ++    NORMAL_MNEMONIC(ADDPL, ADDPL, "addpl"),
47.27464 ++    NORMAL_MNEMONIC(ADDLS, ADDLS, "addls"),
47.27465 ++    NORMAL_MNEMONIC(ADDGT, ADDGT, "addgt"),
47.27466 ++    NORMAL_MNEMONIC(ADDLE, ADDLE, "addle"),
47.27467 ++    NORMAL_MNEMONIC(ADDHI, ADDHI, "addhi"),
47.27468 ++    NORMAL_MNEMONIC(ADDVS, ADDVS, "addvs"),
47.27469 ++    NORMAL_MNEMONIC(ADDVC, ADDVC, "addvc"),
47.27470 ++    NORMAL_MNEMONIC(ADDQS, ADDQS, "addqs"),
47.27471 ++    NORMAL_MNEMONIC(ADDAL, ADDAL, "addal"),
47.27472 ++    NORMAL_MNEMONIC(ADDHS, ADDHS, "addhs"),
47.27473 ++    NORMAL_MNEMONIC(ADDLO, ADDLO, "addlo"),
47.27474 ++    NORMAL_MNEMONIC(ANDEQ, ANDEQ, "andeq"),
47.27475 ++    NORMAL_MNEMONIC(ANDNE, ANDNE, "andne"),
47.27476 ++    NORMAL_MNEMONIC(ANDCC, ANDCC, "andcc"),
47.27477 ++    NORMAL_MNEMONIC(ANDCS, ANDCS, "andcs"),
47.27478 ++    NORMAL_MNEMONIC(ANDGE, ANDGE, "andge"),
47.27479 ++    NORMAL_MNEMONIC(ANDLT, ANDLT, "andlt"),
47.27480 ++    NORMAL_MNEMONIC(ANDMI, ANDMI, "andmi"),
47.27481 ++    NORMAL_MNEMONIC(ANDPL, ANDPL, "andpl"),
47.27482 ++    NORMAL_MNEMONIC(ANDLS, ANDLS, "andls"),
47.27483 ++    NORMAL_MNEMONIC(ANDGT, ANDGT, "andgt"),
47.27484 ++    NORMAL_MNEMONIC(ANDLE, ANDLE, "andle"),
47.27485 ++    NORMAL_MNEMONIC(ANDHI, ANDHI, "andhi"),
47.27486 ++    NORMAL_MNEMONIC(ANDVS, ANDVS, "andvs"),
47.27487 ++    NORMAL_MNEMONIC(ANDVC, ANDVC, "andvc"),
47.27488 ++    NORMAL_MNEMONIC(ANDQS, ANDQS, "andqs"),
47.27489 ++    NORMAL_MNEMONIC(ANDAL, ANDAL, "andal"),
47.27490 ++    NORMAL_MNEMONIC(ANDHS, ANDHS, "andhs"),
47.27491 ++    NORMAL_MNEMONIC(ANDLO, ANDLO, "andlo"),
47.27492 ++    NORMAL_MNEMONIC(OREQ, OREQ, "oreq"),
47.27493 ++    NORMAL_MNEMONIC(ORNE, ORNE, "orne"),
47.27494 ++    NORMAL_MNEMONIC(ORCC, ORCC, "orcc"),
47.27495 ++    NORMAL_MNEMONIC(ORCS, ORCS, "orcs"),
47.27496 ++    NORMAL_MNEMONIC(ORGE, ORGE, "orge"),
47.27497 ++    NORMAL_MNEMONIC(ORLT, ORLT, "orlt"),
47.27498 ++    NORMAL_MNEMONIC(ORMI, ORMI, "ormi"),
47.27499 ++    NORMAL_MNEMONIC(ORPL, ORPL, "orpl"),
47.27500 ++    NORMAL_MNEMONIC(ORLS, ORLS, "orls"),
47.27501 ++    NORMAL_MNEMONIC(ORGT, ORGT, "orgt"),
47.27502 ++    NORMAL_MNEMONIC(ORLE, ORLE, "orle"),
47.27503 ++    NORMAL_MNEMONIC(ORHI, ORHI, "orhi"),
47.27504 ++    NORMAL_MNEMONIC(ORVS, ORVS, "orvs"),
47.27505 ++    NORMAL_MNEMONIC(ORVC, ORVC, "orvc"),
47.27506 ++    NORMAL_MNEMONIC(ORQS, ORQS, "orqs"),
47.27507 ++    NORMAL_MNEMONIC(ORAL, ORAL, "oral"),
47.27508 ++    NORMAL_MNEMONIC(ORHS, ORHS, "orhs"),
47.27509 ++    NORMAL_MNEMONIC(ORLO, ORLO, "orlo"),
47.27510 ++    NORMAL_MNEMONIC(EOREQ, EOREQ, "eoreq"),
47.27511 ++    NORMAL_MNEMONIC(EORNE, EORNE, "eorne"),
47.27512 ++    NORMAL_MNEMONIC(EORCC, EORCC, "eorcc"),
47.27513 ++    NORMAL_MNEMONIC(EORCS, EORCS, "eorcs"),
47.27514 ++    NORMAL_MNEMONIC(EORGE, EORGE, "eorge"),
47.27515 ++    NORMAL_MNEMONIC(EORLT, EORLT, "eorlt"),
47.27516 ++    NORMAL_MNEMONIC(EORMI, EORMI, "eormi"),
47.27517 ++    NORMAL_MNEMONIC(EORPL, EORPL, "eorpl"),
47.27518 ++    NORMAL_MNEMONIC(EORLS, EORLS, "eorls"),
47.27519 ++    NORMAL_MNEMONIC(EORGT, EORGT, "eorgt"),
47.27520 ++    NORMAL_MNEMONIC(EORLE, EORLE, "eorle"),
47.27521 ++    NORMAL_MNEMONIC(EORHI, EORHI, "eorhi"),
47.27522 ++    NORMAL_MNEMONIC(EORVS, EORVS, "eorvs"),
47.27523 ++    NORMAL_MNEMONIC(EORVC, EORVC, "eorvc"),
47.27524 ++    NORMAL_MNEMONIC(EORQS, EORQS, "eorqs"),
47.27525 ++    NORMAL_MNEMONIC(EORAL, EORAL, "eoral"),
47.27526 ++    NORMAL_MNEMONIC(EORHS, EORHS, "eorhs"),
47.27527 ++    NORMAL_MNEMONIC(EORLO, EORLO, "eorlo"),
47.27528 ++    NORMAL_MNEMONIC(LD_WEQ, LD_WEQ, "ld.weq"),
47.27529 ++    NORMAL_MNEMONIC(LD_WNE, LD_WNE, "ld.wne"),
47.27530 ++    NORMAL_MNEMONIC(LD_WCC, LD_WCC, "ld.wcc"),
47.27531 ++    NORMAL_MNEMONIC(LD_WCS, LD_WCS, "ld.wcs"),
47.27532 ++    NORMAL_MNEMONIC(LD_WGE, LD_WGE, "ld.wge"),
47.27533 ++    NORMAL_MNEMONIC(LD_WLT, LD_WLT, "ld.wlt"),
47.27534 ++    NORMAL_MNEMONIC(LD_WMI, LD_WMI, "ld.wmi"),
47.27535 ++    NORMAL_MNEMONIC(LD_WPL, LD_WPL, "ld.wpl"),
47.27536 ++    NORMAL_MNEMONIC(LD_WLS, LD_WLS, "ld.wls"),
47.27537 ++    NORMAL_MNEMONIC(LD_WGT, LD_WGT, "ld.wgt"),
47.27538 ++    NORMAL_MNEMONIC(LD_WLE, LD_WLE, "ld.wle"),
47.27539 ++    NORMAL_MNEMONIC(LD_WHI, LD_WHI, "ld.whi"),
47.27540 ++    NORMAL_MNEMONIC(LD_WVS, LD_WVS, "ld.wvs"),
47.27541 ++    NORMAL_MNEMONIC(LD_WVC, LD_WVC, "ld.wvc"),
47.27542 ++    NORMAL_MNEMONIC(LD_WQS, LD_WQS, "ld.wqs"),
47.27543 ++    NORMAL_MNEMONIC(LD_WAL, LD_WAL, "ld.wal"),
47.27544 ++    NORMAL_MNEMONIC(LD_WHS, LD_WHS, "ld.whs"),
47.27545 ++    NORMAL_MNEMONIC(LD_WLO, LD_WLO, "ld.wlo"),
47.27546 ++    NORMAL_MNEMONIC(LD_SHEQ, LD_SHEQ, "ld.sheq"),
47.27547 ++    NORMAL_MNEMONIC(LD_SHNE, LD_SHNE, "ld.shne"),
47.27548 ++    NORMAL_MNEMONIC(LD_SHCC, LD_SHCC, "ld.shcc"),
47.27549 ++    NORMAL_MNEMONIC(LD_SHCS, LD_SHCS, "ld.shcs"),
47.27550 ++    NORMAL_MNEMONIC(LD_SHGE, LD_SHGE, "ld.shge"),
47.27551 ++    NORMAL_MNEMONIC(LD_SHLT, LD_SHLT, "ld.shlt"),
47.27552 ++    NORMAL_MNEMONIC(LD_SHMI, LD_SHMI, "ld.shmi"),
47.27553 ++    NORMAL_MNEMONIC(LD_SHPL, LD_SHPL, "ld.shpl"),
47.27554 ++    NORMAL_MNEMONIC(LD_SHLS, LD_SHLS, "ld.shls"),
47.27555 ++    NORMAL_MNEMONIC(LD_SHGT, LD_SHGT, "ld.shgt"),
47.27556 ++    NORMAL_MNEMONIC(LD_SHLE, LD_SHLE, "ld.shle"),
47.27557 ++    NORMAL_MNEMONIC(LD_SHHI, LD_SHHI, "ld.shhi"),
47.27558 ++    NORMAL_MNEMONIC(LD_SHVS, LD_SHVS, "ld.shvs"),
47.27559 ++    NORMAL_MNEMONIC(LD_SHVC, LD_SHVC, "ld.shvc"),
47.27560 ++    NORMAL_MNEMONIC(LD_SHQS, LD_SHQS, "ld.shqs"),
47.27561 ++    NORMAL_MNEMONIC(LD_SHAL, LD_SHAL, "ld.shal"),
47.27562 ++    NORMAL_MNEMONIC(LD_SHHS, LD_SHHS, "ld.shhs"),
47.27563 ++    NORMAL_MNEMONIC(LD_SHLO, LD_SHLO, "ld.shlo"),
47.27564 ++    NORMAL_MNEMONIC(LD_UHEQ, LD_UHEQ, "ld.uheq"),
47.27565 ++    NORMAL_MNEMONIC(LD_UHNE, LD_UHNE, "ld.uhne"),
47.27566 ++    NORMAL_MNEMONIC(LD_UHCC, LD_UHCC, "ld.uhcc"),
47.27567 ++    NORMAL_MNEMONIC(LD_UHCS, LD_UHCS, "ld.uhcs"),
47.27568 ++    NORMAL_MNEMONIC(LD_UHGE, LD_UHGE, "ld.uhge"),
47.27569 ++    NORMAL_MNEMONIC(LD_UHLT, LD_UHLT, "ld.uhlt"),
47.27570 ++    NORMAL_MNEMONIC(LD_UHMI, LD_UHMI, "ld.uhmi"),
47.27571 ++    NORMAL_MNEMONIC(LD_UHPL, LD_UHPL, "ld.uhpl"),
47.27572 ++    NORMAL_MNEMONIC(LD_UHLS, LD_UHLS, "ld.uhls"),
47.27573 ++    NORMAL_MNEMONIC(LD_UHGT, LD_UHGT, "ld.uhgt"),
47.27574 ++    NORMAL_MNEMONIC(LD_UHLE, LD_UHLE, "ld.uhle"),
47.27575 ++    NORMAL_MNEMONIC(LD_UHHI, LD_UHHI, "ld.uhhi"),
47.27576 ++    NORMAL_MNEMONIC(LD_UHVS, LD_UHVS, "ld.uhvs"),
47.27577 ++    NORMAL_MNEMONIC(LD_UHVC, LD_UHVC, "ld.uhvc"),
47.27578 ++    NORMAL_MNEMONIC(LD_UHQS, LD_UHQS, "ld.uhqs"),
47.27579 ++    NORMAL_MNEMONIC(LD_UHAL, LD_UHAL, "ld.uhal"),
47.27580 ++    NORMAL_MNEMONIC(LD_UHHS, LD_UHHS, "ld.uhhs"),
47.27581 ++    NORMAL_MNEMONIC(LD_UHLO, LD_UHLO, "ld.uhlo"),
47.27582 ++    NORMAL_MNEMONIC(LD_SBEQ, LD_SBEQ, "ld.sbeq"),
47.27583 ++    NORMAL_MNEMONIC(LD_SBNE, LD_SBNE, "ld.sbne"),
47.27584 ++    NORMAL_MNEMONIC(LD_SBCC, LD_SBCC, "ld.sbcc"),
47.27585 ++    NORMAL_MNEMONIC(LD_SBCS, LD_SBCS, "ld.sbcs"),
47.27586 ++    NORMAL_MNEMONIC(LD_SBGE, LD_SBGE, "ld.sbge"),
47.27587 ++    NORMAL_MNEMONIC(LD_SBLT, LD_SBLT, "ld.sblt"),
47.27588 ++    NORMAL_MNEMONIC(LD_SBMI, LD_SBMI, "ld.sbmi"),
47.27589 ++    NORMAL_MNEMONIC(LD_SBPL, LD_SBPL, "ld.sbpl"),
47.27590 ++    NORMAL_MNEMONIC(LD_SBLS, LD_SBLS, "ld.sbls"),
47.27591 ++    NORMAL_MNEMONIC(LD_SBGT, LD_SBGT, "ld.sbgt"),
47.27592 ++    NORMAL_MNEMONIC(LD_SBLE, LD_SBLE, "ld.sble"),
47.27593 ++    NORMAL_MNEMONIC(LD_SBHI, LD_SBHI, "ld.sbhi"),
47.27594 ++    NORMAL_MNEMONIC(LD_SBVS, LD_SBVS, "ld.sbvs"),
47.27595 ++    NORMAL_MNEMONIC(LD_SBVC, LD_SBVC, "ld.sbvc"),
47.27596 ++    NORMAL_MNEMONIC(LD_SBQS, LD_SBQS, "ld.sbqs"),
47.27597 ++    NORMAL_MNEMONIC(LD_SBAL, LD_SBAL, "ld.sbal"),
47.27598 ++    NORMAL_MNEMONIC(LD_SBHS, LD_SBHS, "ld.sbhs"),
47.27599 ++    NORMAL_MNEMONIC(LD_SBLO, LD_SBLO, "ld.sblo"),
47.27600 ++    NORMAL_MNEMONIC(LD_UBEQ, LD_UBEQ, "ld.ubeq"),
47.27601 ++    NORMAL_MNEMONIC(LD_UBNE, LD_UBNE, "ld.ubne"),
47.27602 ++    NORMAL_MNEMONIC(LD_UBCC, LD_UBCC, "ld.ubcc"),
47.27603 ++    NORMAL_MNEMONIC(LD_UBCS, LD_UBCS, "ld.ubcs"),
47.27604 ++    NORMAL_MNEMONIC(LD_UBGE, LD_UBGE, "ld.ubge"),
47.27605 ++    NORMAL_MNEMONIC(LD_UBLT, LD_UBLT, "ld.ublt"),
47.27606 ++    NORMAL_MNEMONIC(LD_UBMI, LD_UBMI, "ld.ubmi"),
47.27607 ++    NORMAL_MNEMONIC(LD_UBPL, LD_UBPL, "ld.ubpl"),
47.27608 ++    NORMAL_MNEMONIC(LD_UBLS, LD_UBLS, "ld.ubls"),
47.27609 ++    NORMAL_MNEMONIC(LD_UBGT, LD_UBGT, "ld.ubgt"),
47.27610 ++    NORMAL_MNEMONIC(LD_UBLE, LD_UBLE, "ld.uble"),
47.27611 ++    NORMAL_MNEMONIC(LD_UBHI, LD_UBHI, "ld.ubhi"),
47.27612 ++    NORMAL_MNEMONIC(LD_UBVS, LD_UBVS, "ld.ubvs"),
47.27613 ++    NORMAL_MNEMONIC(LD_UBVC, LD_UBVC, "ld.ubvc"),
47.27614 ++    NORMAL_MNEMONIC(LD_UBQS, LD_UBQS, "ld.ubqs"),
47.27615 ++    NORMAL_MNEMONIC(LD_UBAL, LD_UBAL, "ld.ubal"),
47.27616 ++    NORMAL_MNEMONIC(LD_UBHS, LD_UBHS, "ld.ubhs"),
47.27617 ++    NORMAL_MNEMONIC(LD_UBLO, LD_UBLO, "ld.ublo"),
47.27618 ++    NORMAL_MNEMONIC(ST_WEQ, ST_WEQ, "st.weq"),
47.27619 ++    NORMAL_MNEMONIC(ST_WNE, ST_WNE, "st.wne"),
47.27620 ++    NORMAL_MNEMONIC(ST_WCC, ST_WCC, "st.wcc"),
47.27621 ++    NORMAL_MNEMONIC(ST_WCS, ST_WCS, "st.wcs"),
47.27622 ++    NORMAL_MNEMONIC(ST_WGE, ST_WGE, "st.wge"),
47.27623 ++    NORMAL_MNEMONIC(ST_WLT, ST_WLT, "st.wlt"),
47.27624 ++    NORMAL_MNEMONIC(ST_WMI, ST_WMI, "st.wmi"),
47.27625 ++    NORMAL_MNEMONIC(ST_WPL, ST_WPL, "st.wpl"),
47.27626 ++    NORMAL_MNEMONIC(ST_WLS, ST_WLS, "st.wls"),
47.27627 ++    NORMAL_MNEMONIC(ST_WGT, ST_WGT, "st.wgt"),
47.27628 ++    NORMAL_MNEMONIC(ST_WLE, ST_WLE, "st.wle"),
47.27629 ++    NORMAL_MNEMONIC(ST_WHI, ST_WHI, "st.whi"),
47.27630 ++    NORMAL_MNEMONIC(ST_WVS, ST_WVS, "st.wvs"),
47.27631 ++    NORMAL_MNEMONIC(ST_WVC, ST_WVC, "st.wvc"),
47.27632 ++    NORMAL_MNEMONIC(ST_WQS, ST_WQS, "st.wqs"),
47.27633 ++    NORMAL_MNEMONIC(ST_WAL, ST_WAL, "st.wal"),
47.27634 ++    NORMAL_MNEMONIC(ST_WHS, ST_WHS, "st.whs"),
47.27635 ++    NORMAL_MNEMONIC(ST_WLO, ST_WLO, "st.wlo"),
47.27636 ++    NORMAL_MNEMONIC(ST_HEQ, ST_HEQ, "st.heq"),
47.27637 ++    NORMAL_MNEMONIC(ST_HNE, ST_HNE, "st.hne"),
47.27638 ++    NORMAL_MNEMONIC(ST_HCC, ST_HCC, "st.hcc"),
47.27639 ++    NORMAL_MNEMONIC(ST_HCS, ST_HCS, "st.hcs"),
47.27640 ++    NORMAL_MNEMONIC(ST_HGE, ST_HGE, "st.hge"),
47.27641 ++    NORMAL_MNEMONIC(ST_HLT, ST_HLT, "st.hlt"),
47.27642 ++    NORMAL_MNEMONIC(ST_HMI, ST_HMI, "st.hmi"),
47.27643 ++    NORMAL_MNEMONIC(ST_HPL, ST_HPL, "st.hpl"),
47.27644 ++    NORMAL_MNEMONIC(ST_HLS, ST_HLS, "st.hls"),
47.27645 ++    NORMAL_MNEMONIC(ST_HGT, ST_HGT, "st.hgt"),
47.27646 ++    NORMAL_MNEMONIC(ST_HLE, ST_HLE, "st.hle"),
47.27647 ++    NORMAL_MNEMONIC(ST_HHI, ST_HHI, "st.hhi"),
47.27648 ++    NORMAL_MNEMONIC(ST_HVS, ST_HVS, "st.hvs"),
47.27649 ++    NORMAL_MNEMONIC(ST_HVC, ST_HVC, "st.hvc"),
47.27650 ++    NORMAL_MNEMONIC(ST_HQS, ST_HQS, "st.hqs"),
47.27651 ++    NORMAL_MNEMONIC(ST_HAL, ST_HAL, "st.hal"),
47.27652 ++    NORMAL_MNEMONIC(ST_HHS, ST_HHS, "st.hhs"),
47.27653 ++    NORMAL_MNEMONIC(ST_HLO, ST_HLO, "st.hlo"),
47.27654 ++    NORMAL_MNEMONIC(ST_BEQ, ST_BEQ, "st.beq"),
47.27655 ++    NORMAL_MNEMONIC(ST_BNE, ST_BNE, "st.bne"),
47.27656 ++    NORMAL_MNEMONIC(ST_BCC, ST_BCC, "st.bcc"),
47.27657 ++    NORMAL_MNEMONIC(ST_BCS, ST_BCS, "st.bcs"),
47.27658 ++    NORMAL_MNEMONIC(ST_BGE, ST_BGE, "st.bge"),
47.27659 ++    NORMAL_MNEMONIC(ST_BLT, ST_BLT, "st.blt"),
47.27660 ++    NORMAL_MNEMONIC(ST_BMI, ST_BMI, "st.bmi"),
47.27661 ++    NORMAL_MNEMONIC(ST_BPL, ST_BPL, "st.bpl"),
47.27662 ++    NORMAL_MNEMONIC(ST_BLS, ST_BLS, "st.bls"),
47.27663 ++    NORMAL_MNEMONIC(ST_BGT, ST_BGT, "st.bgt"),
47.27664 ++    NORMAL_MNEMONIC(ST_BLE, ST_BLE, "st.ble"),
47.27665 ++    NORMAL_MNEMONIC(ST_BHI, ST_BHI, "st.bhi"),
47.27666 ++    NORMAL_MNEMONIC(ST_BVS, ST_BVS, "st.bvs"),
47.27667 ++    NORMAL_MNEMONIC(ST_BVC, ST_BVC, "st.bvc"),
47.27668 ++    NORMAL_MNEMONIC(ST_BQS, ST_BQS, "st.bqs"),
47.27669 ++    NORMAL_MNEMONIC(ST_BAL, ST_BAL, "st.bal"),
47.27670 ++    NORMAL_MNEMONIC(ST_BHS, ST_BHS, "st.bhs"),
47.27671 ++    NORMAL_MNEMONIC(ST_BLO, ST_BLO, "st.blo"),
47.27672 ++    NORMAL_MNEMONIC(MOVH, MOVH, "movh"),
47.27673 ++
47.27674 ++  };
47.27675 ++#undef NORMAL_MNEMONIC
47.27676 ++#undef ALIAS_MNEMONIC
47.27677 ++#undef FP_MNEMONIC
47.27678 +--- /dev/null
47.27679 ++++ b/opcodes/avr32-opc.h
47.27680 +@@ -0,0 +1,2370 @@
47.27681 ++/* Opcode tables for AVR32.
47.27682 ++   Copyright 2005, 2006 Atmel Corporation.
47.27683 ++
47.27684 ++   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
47.27685 ++
47.27686 ++   This file is part of libopcodes.
47.27687 ++
47.27688 ++   This program is free software; you can redistribute it and/or
47.27689 ++   modify it under the terms of the GNU General Public License as
47.27690 ++   published by the Free Software Foundation; either version 2 of the
47.27691 ++   License, or (at your option) any later version.
47.27692 ++
47.27693 ++   This program is distributed in the hope that it will be useful, but
47.27694 ++   WITHOUT ANY WARRANTY; without even the implied warranty of
47.27695 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
47.27696 ++   General Public License for more details.
47.27697 ++
47.27698 ++   You should have received a copy of the GNU General Public License
47.27699 ++   along with this program; if not, write to the Free Software
47.27700 ++   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
47.27701 ++   02111-1307, USA.  */
47.27702 ++
47.27703 ++#include "bfd.h"
47.27704 ++
47.27705 ++#define AVR32_MAX_OPERANDS	8
47.27706 ++#define AVR32_MAX_FIELDS	8
47.27707 ++
47.27708 ++#define AVR32_V1	        (1 << 1)
47.27709 ++#define AVR32_SIMD		(1 << 2)
47.27710 ++#define AVR32_DSP		(1 << 3)
47.27711 ++#define AVR32_RMW		(1 << 4)
47.27712 ++#define AVR32_V2	        (1 << 5)
47.27713 ++#define AVR32_FP		(1 << 16)
47.27714 ++#define AVR32_PICO		(1 << 17)
47.27715 ++
47.27716 ++/* Registers we commonly refer to */
47.27717 ++#define AVR32_REG_R12		12
47.27718 ++#define AVR32_REG_SP		13
47.27719 ++#define AVR32_REG_LR		14
47.27720 ++#define AVR32_REG_PC		15
47.27721 ++
47.27722 ++struct avr32_ifield
47.27723 ++{
47.27724 ++  int id;
47.27725 ++  unsigned short bitsize;
47.27726 ++  unsigned short shift;
47.27727 ++  unsigned long mask;
47.27728 ++
47.27729 ++  /* If the value doesn't fit, it will be truncated with no warning */
47.27730 ++  void (*insert)(const struct avr32_ifield *, void *, unsigned long);
47.27731 ++  void (*extract)(const struct avr32_ifield *, void *, unsigned long *);
47.27732 ++};
47.27733 ++
47.27734 ++struct avr32_opcode
47.27735 ++{
47.27736 ++  int id;
47.27737 ++  int size;
47.27738 ++  unsigned long value;
47.27739 ++  unsigned long mask;
47.27740 ++  const struct avr32_syntax *syntax;
47.27741 ++  bfd_reloc_code_real_type reloc_type;
47.27742 ++  unsigned int nr_fields;
47.27743 ++  /* if relaxable, which field is variable, otherwise -1 */
47.27744 ++  int var_field;
47.27745 ++  const struct avr32_ifield *fields[AVR32_MAX_FIELDS];
47.27746 ++};
47.27747 ++
47.27748 ++struct avr32_alias
47.27749 ++{
47.27750 ++  int id;
47.27751 ++  const struct avr32_opcode *opc;
47.27752 ++  struct {
47.27753 ++    int is_opindex;
47.27754 ++    unsigned long value;
47.27755 ++  } operand_map[AVR32_MAX_OPERANDS];
47.27756 ++};
47.27757 ++
47.27758 ++struct avr32_syntax
47.27759 ++{
47.27760 ++  int id;
47.27761 ++  unsigned long isa_flags;
47.27762 ++  const struct avr32_mnemonic *mnemonic;
47.27763 ++  int type;
47.27764 ++  union {
47.27765 ++    const struct avr32_opcode *opc;
47.27766 ++    const struct avr32_alias *alias;
47.27767 ++  } u;
47.27768 ++  const struct avr32_syntax *next;
47.27769 ++  /* negative means "vararg" */
47.27770 ++  int nr_operands;
47.27771 ++  int operand[AVR32_MAX_OPERANDS];
47.27772 ++};
47.27773 ++
47.27774 ++#if 0
47.27775 ++#define AVR32_ALIAS_MAKE_CONST(val) ((val) | 0x80000000UL)
47.27776 ++#define AVR32_ALIAS_IS_CONST(mapval) (((mapval) & 0x80000000UL) != 0)
47.27777 ++#define AVR32_ALIAS_GET_CONST(mapval) ((mapval) & ~0x80000000UL)
47.27778 ++#endif
47.27779 ++
47.27780 ++struct avr32_mnemonic
47.27781 ++{
47.27782 ++  int id;
47.27783 ++  const char *name;
47.27784 ++  const struct avr32_syntax *syntax;
47.27785 ++};
47.27786 ++
47.27787 ++extern const struct avr32_ifield avr32_ifield_table[];
47.27788 ++extern struct avr32_opcode avr32_opc_table[];
47.27789 ++extern const struct avr32_syntax avr32_syntax_table[];
47.27790 ++extern const struct avr32_alias avr32_alias_table[];
47.27791 ++extern const struct avr32_mnemonic avr32_mnemonic_table[];
47.27792 ++
47.27793 ++extern void avr32_insert_simple(const struct avr32_ifield *field,
47.27794 ++				void *buf, unsigned long value);
47.27795 ++extern void avr32_insert_bit5c(const struct avr32_ifield *field,
47.27796 ++			       void *buf, unsigned long value);
47.27797 ++extern void avr32_insert_k10(const struct avr32_ifield *field,
47.27798 ++			     void *buf, unsigned long value);
47.27799 ++extern void avr32_insert_k21(const struct avr32_ifield *field,
47.27800 ++			     void *buf, unsigned long value);
47.27801 ++extern void avr32_insert_cpop(const struct avr32_ifield *field,
47.27802 ++			      void *buf, unsigned long value);
47.27803 ++extern void avr32_insert_k12cp(const struct avr32_ifield *field,
47.27804 ++			       void *buf, unsigned long value);
47.27805 ++
47.27806 ++extern void avr32_extract_simple(const struct avr32_ifield *field,
47.27807 ++				 void *buf, unsigned long *value);
47.27808 ++extern void avr32_extract_bit5c(const struct avr32_ifield *field,
47.27809 ++				void *buf, unsigned long *value);
47.27810 ++extern void avr32_extract_k10(const struct avr32_ifield *field,
47.27811 ++			      void *buf, unsigned long *value);
47.27812 ++extern void avr32_extract_k21(const struct avr32_ifield *field,
47.27813 ++			      void *buf, unsigned long *value);
47.27814 ++extern void avr32_extract_cpop(const struct avr32_ifield *field,
47.27815 ++			       void *buf, unsigned long *value);
47.27816 ++extern void avr32_extract_k12cp(const struct avr32_ifield *field,
47.27817 ++				void *buf, unsigned long *value);
47.27818 ++
47.27819 ++enum avr32_operand_type
47.27820 ++{
47.27821 ++  AVR32_OPERAND_INTREG,		/* just a register */
47.27822 ++  AVR32_OPERAND_INTREG_PREDEC,	/* register with pre-decrement */
47.27823 ++  AVR32_OPERAND_INTREG_POSTINC,	/* register with post-increment */
47.27824 ++  AVR32_OPERAND_INTREG_LSL,	/* register with left shift */
47.27825 ++  AVR32_OPERAND_INTREG_LSR,	/* register with right shift */
47.27826 ++  AVR32_OPERAND_INTREG_BSEL,	/* register with byte selector */
47.27827 ++  AVR32_OPERAND_INTREG_HSEL,	/* register with halfword selector */
47.27828 ++  AVR32_OPERAND_INTREG_SDISP,	/* Rp[signed disp] */
47.27829 ++  AVR32_OPERAND_INTREG_SDISP_H,	/* Rp[signed hword-aligned disp] */
47.27830 ++  AVR32_OPERAND_INTREG_SDISP_W,	/* Rp[signed word-aligned disp] */
47.27831 ++  AVR32_OPERAND_INTREG_UDISP,	/* Rp[unsigned disp] */
47.27832 ++  AVR32_OPERAND_INTREG_UDISP_H,	/* Rp[unsigned hword-aligned disp] */
47.27833 ++  AVR32_OPERAND_INTREG_UDISP_W, /* Rp[unsigned word-aligned disp] */
47.27834 ++  AVR32_OPERAND_INTREG_INDEX,	/* Rp[Ri << sa] */
47.27835 ++  AVR32_OPERAND_INTREG_XINDEX,	/* Rp[Ri:bytesel << 2] */
47.27836 ++  AVR32_OPERAND_DWREG,		/* Even-numbered register */
47.27837 ++  AVR32_OPERAND_PC_UDISP_W,	/* PC[unsigned word-aligned disp] or label */
47.27838 ++  AVR32_OPERAND_SP,		/* Just SP */
47.27839 ++  AVR32_OPERAND_SP_UDISP_W,	/* SP[unsigned word-aligned disp] */
47.27840 ++  AVR32_OPERAND_CPNO,
47.27841 ++  AVR32_OPERAND_CPREG,
47.27842 ++  AVR32_OPERAND_CPREG_D,
47.27843 ++  AVR32_OPERAND_UNSIGNED_CONST,
47.27844 ++  AVR32_OPERAND_UNSIGNED_CONST_W,
47.27845 ++  AVR32_OPERAND_SIGNED_CONST,
47.27846 ++  AVR32_OPERAND_SIGNED_CONST_W,
47.27847 ++  AVR32_OPERAND_JMPLABEL,
47.27848 ++  AVR32_OPERAND_UNSIGNED_NUMBER,
47.27849 ++  AVR32_OPERAND_UNSIGNED_NUMBER_W,
47.27850 ++  AVR32_OPERAND_REGLIST8,
47.27851 ++  AVR32_OPERAND_REGLIST9,
47.27852 ++  AVR32_OPERAND_REGLIST16,
47.27853 ++  AVR32_OPERAND_REGLIST_LDM,
47.27854 ++  AVR32_OPERAND_REGLIST_CP8,
47.27855 ++  AVR32_OPERAND_REGLIST_CPD8,
47.27856 ++  AVR32_OPERAND_RETVAL,
47.27857 ++  AVR32_OPERAND_MCALL,
47.27858 ++  AVR32_OPERAND_JOSPINC,
47.27859 ++  AVR32_OPERAND_COH,
47.27860 ++  AVR32_OPERAND_FPREG_S,
47.27861 ++  AVR32_OPERAND_FPREG_D,
47.27862 ++  AVR32_OPERAND_PICO_REG_W,
47.27863 ++  AVR32_OPERAND_PICO_REG_D,
47.27864 ++  AVR32_OPERAND_PICO_REGLIST_W,
47.27865 ++  AVR32_OPERAND_PICO_REGLIST_D,
47.27866 ++  AVR32_OPERAND_PICO_IN,
47.27867 ++  AVR32_OPERAND_PICO_OUT0,
47.27868 ++  AVR32_OPERAND_PICO_OUT1,
47.27869 ++  AVR32_OPERAND_PICO_OUT2,
47.27870 ++  AVR32_OPERAND_PICO_OUT3,
47.27871 ++  AVR32_OPERAND__END_
47.27872 ++};
47.27873 ++#define AVR32_OPERAND_UNKNOWN AVR32_OPERAND__END_
47.27874 ++#define AVR32_NR_OPERANDS AVR32_OPERAND__END_
47.27875 ++
47.27876 ++enum avr32_ifield_type
47.27877 ++{
47.27878 ++  AVR32_IFIELD_RX,
47.27879 ++  AVR32_IFIELD_RY,
47.27880 ++  AVR32_IFIELD_COND4C,
47.27881 ++  AVR32_IFIELD_K8C,
47.27882 ++  AVR32_IFIELD_K7C,
47.27883 ++  AVR32_IFIELD_K5C,
47.27884 ++  AVR32_IFIELD_K3,
47.27885 ++  AVR32_IFIELD_RY_DW,
47.27886 ++  AVR32_IFIELD_COND4E,
47.27887 ++  AVR32_IFIELD_K8E,
47.27888 ++  AVR32_IFIELD_BIT5C,
47.27889 ++  AVR32_IFIELD_COND3,
47.27890 ++  AVR32_IFIELD_K10,
47.27891 ++  AVR32_IFIELD_POPM,
47.27892 ++  AVR32_IFIELD_K2,
47.27893 ++  AVR32_IFIELD_RD_E,
47.27894 ++  AVR32_IFIELD_RD_DW,
47.27895 ++  AVR32_IFIELD_X,
47.27896 ++  AVR32_IFIELD_Y,
47.27897 ++  AVR32_IFIELD_X2,
47.27898 ++  AVR32_IFIELD_Y2,
47.27899 ++  AVR32_IFIELD_K5E,
47.27900 ++  AVR32_IFIELD_PART2,
47.27901 ++  AVR32_IFIELD_PART1,
47.27902 ++  AVR32_IFIELD_K16,
47.27903 ++  AVR32_IFIELD_CACHEOP,
47.27904 ++  AVR32_IFIELD_K11,
47.27905 ++  AVR32_IFIELD_K21,
47.27906 ++  AVR32_IFIELD_CPOP,
47.27907 ++  AVR32_IFIELD_CPNO,
47.27908 ++  AVR32_IFIELD_CRD_RI,
47.27909 ++  AVR32_IFIELD_CRX,
47.27910 ++  AVR32_IFIELD_CRY,
47.27911 ++  AVR32_IFIELD_K7E,
47.27912 ++  AVR32_IFIELD_CRD_DW,
47.27913 ++  AVR32_IFIELD_PART1_K12,
47.27914 ++  AVR32_IFIELD_PART2_K12,
47.27915 ++  AVR32_IFIELD_K12,
47.27916 ++  AVR32_IFIELD_S5,
47.27917 ++  AVR32_IFIELD_K5E2,
47.27918 ++  AVR32_IFIELD_K4,
47.27919 ++  AVR32_IFIELD_COND4E2,
47.27920 ++  AVR32_IFIELD_K8E2,
47.27921 ++  AVR32_IFIELD_K6,
47.27922 ++  AVR32_IFIELD_MEM15,
47.27923 ++  AVR32_IFIELD_MEMB5,
47.27924 ++  AVR32_IFIELD_W,
47.27925 ++  AVR32_IFIELD_CM_HL,
47.27926 ++  AVR32_IFIELD_K12CP,
47.27927 ++  AVR32_IFIELD_K9E,
47.27928 ++  AVR32_IFIELD__END_,
47.27929 ++};
47.27930 ++#define AVR32_NR_IFIELDS AVR32_IFIELD__END_
47.27931 ++
47.27932 ++enum avr32_opc_type
47.27933 ++{
47.27934 ++  AVR32_OPC_ABS,
47.27935 ++  AVR32_OPC_ACALL,
47.27936 ++  AVR32_OPC_ACR,
47.27937 ++  AVR32_OPC_ADC,
47.27938 ++  AVR32_OPC_ADD1,
47.27939 ++  AVR32_OPC_ADD2,
47.27940 ++  AVR32_OPC_ADDABS,
47.27941 ++  AVR32_OPC_ADDHH_W,
47.27942 ++  AVR32_OPC_AND1,
47.27943 ++  AVR32_OPC_AND2,
47.27944 ++  AVR32_OPC_AND3,
47.27945 ++  AVR32_OPC_ANDH,
47.27946 ++  AVR32_OPC_ANDH_COH,
47.27947 ++  AVR32_OPC_ANDL,
47.27948 ++  AVR32_OPC_ANDL_COH,
47.27949 ++  AVR32_OPC_ANDN,
47.27950 ++  AVR32_OPC_ASR1,
47.27951 ++  AVR32_OPC_ASR3,
47.27952 ++  AVR32_OPC_ASR2,
47.27953 ++  AVR32_OPC_BLD,
47.27954 ++  AVR32_OPC_BREQ1,
47.27955 ++  AVR32_OPC_BRNE1,
47.27956 ++  AVR32_OPC_BRCC1,
47.27957 ++  AVR32_OPC_BRCS1,
47.27958 ++  AVR32_OPC_BRGE1,
47.27959 ++  AVR32_OPC_BRLT1,
47.27960 ++  AVR32_OPC_BRMI1,
47.27961 ++  AVR32_OPC_BRPL1,
47.27962 ++  AVR32_OPC_BREQ2,
47.27963 ++  AVR32_OPC_BRNE2,
47.27964 ++  AVR32_OPC_BRCC2,
47.27965 ++  AVR32_OPC_BRCS2,
47.27966 ++  AVR32_OPC_BRGE2,
47.27967 ++  AVR32_OPC_BRLT2,
47.27968 ++  AVR32_OPC_BRMI2,
47.27969 ++  AVR32_OPC_BRPL2,
47.27970 ++  AVR32_OPC_BRLS,
47.27971 ++  AVR32_OPC_BRGT,
47.27972 ++  AVR32_OPC_BRLE,
47.27973 ++  AVR32_OPC_BRHI,
47.27974 ++  AVR32_OPC_BRVS,
47.27975 ++  AVR32_OPC_BRVC,
47.27976 ++  AVR32_OPC_BRQS,
47.27977 ++  AVR32_OPC_BRAL,
47.27978 ++  AVR32_OPC_BREAKPOINT,
47.27979 ++  AVR32_OPC_BREV,
47.27980 ++  AVR32_OPC_BST,
47.27981 ++  AVR32_OPC_CACHE,
47.27982 ++  AVR32_OPC_CASTS_B,
47.27983 ++  AVR32_OPC_CASTS_H,
47.27984 ++  AVR32_OPC_CASTU_B,
47.27985 ++  AVR32_OPC_CASTU_H,
47.27986 ++  AVR32_OPC_CBR,
47.27987 ++  AVR32_OPC_CLZ,
47.27988 ++  AVR32_OPC_COM,
47.27989 ++  AVR32_OPC_COP,
47.27990 ++  AVR32_OPC_CP_B,
47.27991 ++  AVR32_OPC_CP_H,
47.27992 ++  AVR32_OPC_CP_W1,
47.27993 ++  AVR32_OPC_CP_W2,
47.27994 ++  AVR32_OPC_CP_W3,
47.27995 ++  AVR32_OPC_CPC1,
47.27996 ++  AVR32_OPC_CPC2,
47.27997 ++  AVR32_OPC_CSRF,
47.27998 ++  AVR32_OPC_CSRFCZ,
47.27999 ++  AVR32_OPC_DIVS,
47.28000 ++  AVR32_OPC_DIVU,
47.28001 ++  AVR32_OPC_EOR1,
47.28002 ++  AVR32_OPC_EOR2,
47.28003 ++  AVR32_OPC_EOR3,
47.28004 ++  AVR32_OPC_EORL,
47.28005 ++  AVR32_OPC_EORH,
47.28006 ++  AVR32_OPC_FRS,
47.28007 ++  AVR32_OPC_ICALL,
47.28008 ++  AVR32_OPC_INCJOSP,
47.28009 ++  AVR32_OPC_LD_D1,
47.28010 ++  AVR32_OPC_LD_D2,
47.28011 ++  AVR32_OPC_LD_D3,
47.28012 ++  AVR32_OPC_LD_D5,
47.28013 ++  AVR32_OPC_LD_D4,
47.28014 ++  AVR32_OPC_LD_SB2,
47.28015 ++  AVR32_OPC_LD_SB1,
47.28016 ++  AVR32_OPC_LD_UB1,
47.28017 ++  AVR32_OPC_LD_UB2,
47.28018 ++  AVR32_OPC_LD_UB5,
47.28019 ++  AVR32_OPC_LD_UB3,
47.28020 ++  AVR32_OPC_LD_UB4,
47.28021 ++  AVR32_OPC_LD_SH1,
47.28022 ++  AVR32_OPC_LD_SH2,
47.28023 ++  AVR32_OPC_LD_SH5,
47.28024 ++  AVR32_OPC_LD_SH3,
47.28025 ++  AVR32_OPC_LD_SH4,
47.28026 ++  AVR32_OPC_LD_UH1,
47.28027 ++  AVR32_OPC_LD_UH2,
47.28028 ++  AVR32_OPC_LD_UH5,
47.28029 ++  AVR32_OPC_LD_UH3,
47.28030 ++  AVR32_OPC_LD_UH4,
47.28031 ++  AVR32_OPC_LD_W1,
47.28032 ++  AVR32_OPC_LD_W2,
47.28033 ++  AVR32_OPC_LD_W5,
47.28034 ++  AVR32_OPC_LD_W6,
47.28035 ++  AVR32_OPC_LD_W3,
47.28036 ++  AVR32_OPC_LD_W4,
47.28037 ++  AVR32_OPC_LDC_D1,
47.28038 ++  AVR32_OPC_LDC_D2,
47.28039 ++  AVR32_OPC_LDC_D3,
47.28040 ++  AVR32_OPC_LDC_W1,
47.28041 ++  AVR32_OPC_LDC_W2,
47.28042 ++  AVR32_OPC_LDC_W3,
47.28043 ++  AVR32_OPC_LDC0_D,
47.28044 ++  AVR32_OPC_LDC0_W,
47.28045 ++  AVR32_OPC_LDCM_D,
47.28046 ++  AVR32_OPC_LDCM_D_PU,
47.28047 ++  AVR32_OPC_LDCM_W,
47.28048 ++  AVR32_OPC_LDCM_W_PU,
47.28049 ++  AVR32_OPC_LDDPC,
47.28050 ++  AVR32_OPC_LDDPC_EXT,
47.28051 ++  AVR32_OPC_LDDSP,
47.28052 ++  AVR32_OPC_LDINS_B,
47.28053 ++  AVR32_OPC_LDINS_H,
47.28054 ++  AVR32_OPC_LDM,
47.28055 ++  AVR32_OPC_LDMTS,
47.28056 ++  AVR32_OPC_LDMTS_PU,
47.28057 ++  AVR32_OPC_LDSWP_SH,
47.28058 ++  AVR32_OPC_LDSWP_UH,
47.28059 ++  AVR32_OPC_LDSWP_W,
47.28060 ++  AVR32_OPC_LSL1,
47.28061 ++  AVR32_OPC_LSL3,
47.28062 ++  AVR32_OPC_LSL2,
47.28063 ++  AVR32_OPC_LSR1,
47.28064 ++  AVR32_OPC_LSR3,
47.28065 ++  AVR32_OPC_LSR2,
47.28066 ++  AVR32_OPC_MAC,
47.28067 ++  AVR32_OPC_MACHH_D,
47.28068 ++  AVR32_OPC_MACHH_W,
47.28069 ++  AVR32_OPC_MACS_D,
47.28070 ++  AVR32_OPC_MACSATHH_W,
47.28071 ++  AVR32_OPC_MACUD,
47.28072 ++  AVR32_OPC_MACWH_D,
47.28073 ++  AVR32_OPC_MAX,
47.28074 ++  AVR32_OPC_MCALL,
47.28075 ++  AVR32_OPC_MFDR,
47.28076 ++  AVR32_OPC_MFSR,
47.28077 ++  AVR32_OPC_MIN,
47.28078 ++  AVR32_OPC_MOV3,
47.28079 ++  AVR32_OPC_MOV1,
47.28080 ++  AVR32_OPC_MOV2,
47.28081 ++  AVR32_OPC_MOVEQ1,
47.28082 ++  AVR32_OPC_MOVNE1,
47.28083 ++  AVR32_OPC_MOVCC1,
47.28084 ++  AVR32_OPC_MOVCS1,
47.28085 ++  AVR32_OPC_MOVGE1,
47.28086 ++  AVR32_OPC_MOVLT1,
47.28087 ++  AVR32_OPC_MOVMI1,
47.28088 ++  AVR32_OPC_MOVPL1,
47.28089 ++  AVR32_OPC_MOVLS1,
47.28090 ++  AVR32_OPC_MOVGT1,
47.28091 ++  AVR32_OPC_MOVLE1,
47.28092 ++  AVR32_OPC_MOVHI1,
47.28093 ++  AVR32_OPC_MOVVS1,
47.28094 ++  AVR32_OPC_MOVVC1,
47.28095 ++  AVR32_OPC_MOVQS1,
47.28096 ++  AVR32_OPC_MOVAL1,
47.28097 ++  AVR32_OPC_MOVEQ2,
47.28098 ++  AVR32_OPC_MOVNE2,
47.28099 ++  AVR32_OPC_MOVCC2,
47.28100 ++  AVR32_OPC_MOVCS2,
47.28101 ++  AVR32_OPC_MOVGE2,
47.28102 ++  AVR32_OPC_MOVLT2,
47.28103 ++  AVR32_OPC_MOVMI2,
47.28104 ++  AVR32_OPC_MOVPL2,
47.28105 ++  AVR32_OPC_MOVLS2,
47.28106 ++  AVR32_OPC_MOVGT2,
47.28107 ++  AVR32_OPC_MOVLE2,
47.28108 ++  AVR32_OPC_MOVHI2,
47.28109 ++  AVR32_OPC_MOVVS2,
47.28110 ++  AVR32_OPC_MOVVC2,
47.28111 ++  AVR32_OPC_MOVQS2,
47.28112 ++  AVR32_OPC_MOVAL2,
47.28113 ++  AVR32_OPC_MTDR,
47.28114 ++  AVR32_OPC_MTSR,
47.28115 ++  AVR32_OPC_MUL1,
47.28116 ++  AVR32_OPC_MUL2,
47.28117 ++  AVR32_OPC_MUL3,
47.28118 ++  AVR32_OPC_MULHH_W,
47.28119 ++  AVR32_OPC_MULNHH_W,
47.28120 ++  AVR32_OPC_MULNWH_D,
47.28121 ++  AVR32_OPC_MULSD,
47.28122 ++  AVR32_OPC_MULSATHH_H,
47.28123 ++  AVR32_OPC_MULSATHH_W,
47.28124 ++  AVR32_OPC_MULSATRNDHH_H,
47.28125 ++  AVR32_OPC_MULSATRNDWH_W,
47.28126 ++  AVR32_OPC_MULSATWH_W,
47.28127 ++  AVR32_OPC_MULU_D,
47.28128 ++  AVR32_OPC_MULWH_D,
47.28129 ++  AVR32_OPC_MUSFR,
47.28130 ++  AVR32_OPC_MUSTR,
47.28131 ++  AVR32_OPC_MVCR_D,
47.28132 ++  AVR32_OPC_MVCR_W,
47.28133 ++  AVR32_OPC_MVRC_D,
47.28134 ++  AVR32_OPC_MVRC_W,
47.28135 ++  AVR32_OPC_NEG,
47.28136 ++  AVR32_OPC_NOP,
47.28137 ++  AVR32_OPC_OR1,
47.28138 ++  AVR32_OPC_OR2,
47.28139 ++  AVR32_OPC_OR3,
47.28140 ++  AVR32_OPC_ORH,
47.28141 ++  AVR32_OPC_ORL,
47.28142 ++  AVR32_OPC_PABS_SB,
47.28143 ++  AVR32_OPC_PABS_SH,
47.28144 ++  AVR32_OPC_PACKSH_SB,
47.28145 ++  AVR32_OPC_PACKSH_UB,
47.28146 ++  AVR32_OPC_PACKW_SH,
47.28147 ++  AVR32_OPC_PADD_B,
47.28148 ++  AVR32_OPC_PADD_H,
47.28149 ++  AVR32_OPC_PADDH_SH,
47.28150 ++  AVR32_OPC_PADDH_UB,
47.28151 ++  AVR32_OPC_PADDS_SB,
47.28152 ++  AVR32_OPC_PADDS_SH,
47.28153 ++  AVR32_OPC_PADDS_UB,
47.28154 ++  AVR32_OPC_PADDS_UH,
47.28155 ++  AVR32_OPC_PADDSUB_H,
47.28156 ++  AVR32_OPC_PADDSUBH_SH,
47.28157 ++  AVR32_OPC_PADDSUBS_SH,
47.28158 ++  AVR32_OPC_PADDSUBS_UH,
47.28159 ++  AVR32_OPC_PADDX_H,
47.28160 ++  AVR32_OPC_PADDXH_SH,
47.28161 ++  AVR32_OPC_PADDXS_SH,
47.28162 ++  AVR32_OPC_PADDXS_UH,
47.28163 ++  AVR32_OPC_PASR_B,
47.28164 ++  AVR32_OPC_PASR_H,
47.28165 ++  AVR32_OPC_PAVG_SH,
47.28166 ++  AVR32_OPC_PAVG_UB,
47.28167 ++  AVR32_OPC_PLSL_B,
47.28168 ++  AVR32_OPC_PLSL_H,
47.28169 ++  AVR32_OPC_PLSR_B,
47.28170 ++  AVR32_OPC_PLSR_H,
47.28171 ++  AVR32_OPC_PMAX_SH,
47.28172 ++  AVR32_OPC_PMAX_UB,
47.28173 ++  AVR32_OPC_PMIN_SH,
47.28174 ++  AVR32_OPC_PMIN_UB,
47.28175 ++  AVR32_OPC_POPJC,
47.28176 ++  AVR32_OPC_POPM,
47.28177 ++  AVR32_OPC_POPM_E,
47.28178 ++  AVR32_OPC_PREF,
47.28179 ++  AVR32_OPC_PSAD,
47.28180 ++  AVR32_OPC_PSUB_B,
47.28181 ++  AVR32_OPC_PSUB_H,
47.28182 ++  AVR32_OPC_PSUBADD_H,
47.28183 ++  AVR32_OPC_PSUBADDH_SH,
47.28184 ++  AVR32_OPC_PSUBADDS_SH,
47.28185 ++  AVR32_OPC_PSUBADDS_UH,
47.28186 ++  AVR32_OPC_PSUBH_SH,
47.28187 ++  AVR32_OPC_PSUBH_UB,
47.28188 ++  AVR32_OPC_PSUBS_SB,
47.28189 ++  AVR32_OPC_PSUBS_SH,
47.28190 ++  AVR32_OPC_PSUBS_UB,
47.28191 ++  AVR32_OPC_PSUBS_UH,
47.28192 ++  AVR32_OPC_PSUBX_H,
47.28193 ++  AVR32_OPC_PSUBXH_SH,
47.28194 ++  AVR32_OPC_PSUBXS_SH,
47.28195 ++  AVR32_OPC_PSUBXS_UH,
47.28196 ++  AVR32_OPC_PUNPCKSB_H,
47.28197 ++  AVR32_OPC_PUNPCKUB_H,
47.28198 ++  AVR32_OPC_PUSHJC,
47.28199 ++  AVR32_OPC_PUSHM,
47.28200 ++  AVR32_OPC_PUSHM_E,
47.28201 ++  AVR32_OPC_RCALL1,
47.28202 ++  AVR32_OPC_RCALL2,
47.28203 ++  AVR32_OPC_RETEQ,
47.28204 ++  AVR32_OPC_RETNE,
47.28205 ++  AVR32_OPC_RETCC,
47.28206 ++  AVR32_OPC_RETCS,
47.28207 ++  AVR32_OPC_RETGE,
47.28208 ++  AVR32_OPC_RETLT,
47.28209 ++  AVR32_OPC_RETMI,
47.28210 ++  AVR32_OPC_RETPL,
47.28211 ++  AVR32_OPC_RETLS,
47.28212 ++  AVR32_OPC_RETGT,
47.28213 ++  AVR32_OPC_RETLE,
47.28214 ++  AVR32_OPC_RETHI,
47.28215 ++  AVR32_OPC_RETVS,
47.28216 ++  AVR32_OPC_RETVC,
47.28217 ++  AVR32_OPC_RETQS,
47.28218 ++  AVR32_OPC_RETAL,
47.28219 ++  AVR32_OPC_RETD,
47.28220 ++  AVR32_OPC_RETE,
47.28221 ++  AVR32_OPC_RETJ,
47.28222 ++  AVR32_OPC_RETS,
47.28223 ++  AVR32_OPC_RJMP,
47.28224 ++  AVR32_OPC_ROL,
47.28225 ++  AVR32_OPC_ROR,
47.28226 ++  AVR32_OPC_RSUB1,
47.28227 ++  AVR32_OPC_RSUB2,
47.28228 ++  AVR32_OPC_SATADD_H,
47.28229 ++  AVR32_OPC_SATADD_W,
47.28230 ++  AVR32_OPC_SATRNDS,
47.28231 ++  AVR32_OPC_SATRNDU,
47.28232 ++  AVR32_OPC_SATS,
47.28233 ++  AVR32_OPC_SATSUB_H,
47.28234 ++  AVR32_OPC_SATSUB_W1,
47.28235 ++  AVR32_OPC_SATSUB_W2,
47.28236 ++  AVR32_OPC_SATU,
47.28237 ++  AVR32_OPC_SBC,
47.28238 ++  AVR32_OPC_SBR,
47.28239 ++  AVR32_OPC_SCALL,
47.28240 ++  AVR32_OPC_SCR,
47.28241 ++  AVR32_OPC_SLEEP,
47.28242 ++  AVR32_OPC_SREQ,
47.28243 ++  AVR32_OPC_SRNE,
47.28244 ++  AVR32_OPC_SRCC,
47.28245 ++  AVR32_OPC_SRCS,
47.28246 ++  AVR32_OPC_SRGE,
47.28247 ++  AVR32_OPC_SRLT,
47.28248 ++  AVR32_OPC_SRMI,
47.28249 ++  AVR32_OPC_SRPL,
47.28250 ++  AVR32_OPC_SRLS,
47.28251 ++  AVR32_OPC_SRGT,
47.28252 ++  AVR32_OPC_SRLE,
47.28253 ++  AVR32_OPC_SRHI,
47.28254 ++  AVR32_OPC_SRVS,
47.28255 ++  AVR32_OPC_SRVC,
47.28256 ++  AVR32_OPC_SRQS,
47.28257 ++  AVR32_OPC_SRAL,
47.28258 ++  AVR32_OPC_SSRF,
47.28259 ++  AVR32_OPC_ST_B1,
47.28260 ++  AVR32_OPC_ST_B2,
47.28261 ++  AVR32_OPC_ST_B5,
47.28262 ++  AVR32_OPC_ST_B3,
47.28263 ++  AVR32_OPC_ST_B4,
47.28264 ++  AVR32_OPC_ST_D1,
47.28265 ++  AVR32_OPC_ST_D2,
47.28266 ++  AVR32_OPC_ST_D3,
47.28267 ++  AVR32_OPC_ST_D5,
47.28268 ++  AVR32_OPC_ST_D4,
47.28269 ++  AVR32_OPC_ST_H1,
47.28270 ++  AVR32_OPC_ST_H2,
47.28271 ++  AVR32_OPC_ST_H5,
47.28272 ++  AVR32_OPC_ST_H3,
47.28273 ++  AVR32_OPC_ST_H4,
47.28274 ++  AVR32_OPC_ST_W1,
47.28275 ++  AVR32_OPC_ST_W2,
47.28276 ++  AVR32_OPC_ST_W5,
47.28277 ++  AVR32_OPC_ST_W3,
47.28278 ++  AVR32_OPC_ST_W4,
47.28279 ++  AVR32_OPC_STC_D1,
47.28280 ++  AVR32_OPC_STC_D2,
47.28281 ++  AVR32_OPC_STC_D3,
47.28282 ++  AVR32_OPC_STC_W1,
47.28283 ++  AVR32_OPC_STC_W2,
47.28284 ++  AVR32_OPC_STC_W3,
47.28285 ++  AVR32_OPC_STC0_D,
47.28286 ++  AVR32_OPC_STC0_W,
47.28287 ++  AVR32_OPC_STCM_D,
47.28288 ++  AVR32_OPC_STCM_D_PU,
47.28289 ++  AVR32_OPC_STCM_W,
47.28290 ++  AVR32_OPC_STCM_W_PU,
47.28291 ++  AVR32_OPC_STCOND,
47.28292 ++  AVR32_OPC_STDSP,
47.28293 ++  AVR32_OPC_STHH_W2,
47.28294 ++  AVR32_OPC_STHH_W1,
47.28295 ++  AVR32_OPC_STM,
47.28296 ++  AVR32_OPC_STM_PU,
47.28297 ++  AVR32_OPC_STMTS,
47.28298 ++  AVR32_OPC_STMTS_PU,
47.28299 ++  AVR32_OPC_STSWP_H,
47.28300 ++  AVR32_OPC_STSWP_W,
47.28301 ++  AVR32_OPC_SUB1,
47.28302 ++  AVR32_OPC_SUB2,
47.28303 ++  AVR32_OPC_SUB5,
47.28304 ++  AVR32_OPC_SUB3_SP,
47.28305 ++  AVR32_OPC_SUB3,
47.28306 ++  AVR32_OPC_SUB4,
47.28307 ++  AVR32_OPC_SUBEQ,
47.28308 ++  AVR32_OPC_SUBNE,
47.28309 ++  AVR32_OPC_SUBCC,
47.28310 ++  AVR32_OPC_SUBCS,
47.28311 ++  AVR32_OPC_SUBGE,
47.28312 ++  AVR32_OPC_SUBLT,
47.28313 ++  AVR32_OPC_SUBMI,
47.28314 ++  AVR32_OPC_SUBPL,
47.28315 ++  AVR32_OPC_SUBLS,
47.28316 ++  AVR32_OPC_SUBGT,
47.28317 ++  AVR32_OPC_SUBLE,
47.28318 ++  AVR32_OPC_SUBHI,
47.28319 ++  AVR32_OPC_SUBVS,
47.28320 ++  AVR32_OPC_SUBVC,
47.28321 ++  AVR32_OPC_SUBQS,
47.28322 ++  AVR32_OPC_SUBAL,
47.28323 ++  AVR32_OPC_SUBFEQ,
47.28324 ++  AVR32_OPC_SUBFNE,
47.28325 ++  AVR32_OPC_SUBFCC,
47.28326 ++  AVR32_OPC_SUBFCS,
47.28327 ++  AVR32_OPC_SUBFGE,
47.28328 ++  AVR32_OPC_SUBFLT,
47.28329 ++  AVR32_OPC_SUBFMI,
47.28330 ++  AVR32_OPC_SUBFPL,
47.28331 ++  AVR32_OPC_SUBFLS,
47.28332 ++  AVR32_OPC_SUBFGT,
47.28333 ++  AVR32_OPC_SUBFLE,
47.28334 ++  AVR32_OPC_SUBFHI,
47.28335 ++  AVR32_OPC_SUBFVS,
47.28336 ++  AVR32_OPC_SUBFVC,
47.28337 ++  AVR32_OPC_SUBFQS,
47.28338 ++  AVR32_OPC_SUBFAL,
47.28339 ++  AVR32_OPC_SUBHH_W,
47.28340 ++  AVR32_OPC_SWAP_B,
47.28341 ++  AVR32_OPC_SWAP_BH,
47.28342 ++  AVR32_OPC_SWAP_H,
47.28343 ++  AVR32_OPC_SYNC,
47.28344 ++  AVR32_OPC_TLBR,
47.28345 ++  AVR32_OPC_TLBS,
47.28346 ++  AVR32_OPC_TLBW,
47.28347 ++  AVR32_OPC_TNBZ,
47.28348 ++  AVR32_OPC_TST,
47.28349 ++  AVR32_OPC_XCHG,
47.28350 ++  AVR32_OPC_MEMC,
47.28351 ++  AVR32_OPC_MEMS,
47.28352 ++  AVR32_OPC_MEMT,
47.28353 ++  AVR32_OPC_BFEXTS,
47.28354 ++  AVR32_OPC_BFEXTU,
47.28355 ++  AVR32_OPC_BFINS,
47.28356 ++  AVR32_OPC_RSUBEQ,
47.28357 ++  AVR32_OPC_RSUBNE,
47.28358 ++  AVR32_OPC_RSUBCC,
47.28359 ++  AVR32_OPC_RSUBCS,
47.28360 ++  AVR32_OPC_RSUBGE,
47.28361 ++  AVR32_OPC_RSUBLT,
47.28362 ++  AVR32_OPC_RSUBMI,
47.28363 ++  AVR32_OPC_RSUBPL,
47.28364 ++  AVR32_OPC_RSUBLS,
47.28365 ++  AVR32_OPC_RSUBGT,
47.28366 ++  AVR32_OPC_RSUBLE,
47.28367 ++  AVR32_OPC_RSUBHI,
47.28368 ++  AVR32_OPC_RSUBVS,
47.28369 ++  AVR32_OPC_RSUBVC,
47.28370 ++  AVR32_OPC_RSUBQS,
47.28371 ++  AVR32_OPC_RSUBAL,
47.28372 ++  AVR32_OPC_ADDEQ,
47.28373 ++  AVR32_OPC_ADDNE,
47.28374 ++  AVR32_OPC_ADDCC,
47.28375 ++  AVR32_OPC_ADDCS,
47.28376 ++  AVR32_OPC_ADDGE,
47.28377 ++  AVR32_OPC_ADDLT,
47.28378 ++  AVR32_OPC_ADDMI,
47.28379 ++  AVR32_OPC_ADDPL,
47.28380 ++  AVR32_OPC_ADDLS,
47.28381 ++  AVR32_OPC_ADDGT,
47.28382 ++  AVR32_OPC_ADDLE,
47.28383 ++  AVR32_OPC_ADDHI,
47.28384 ++  AVR32_OPC_ADDVS,
47.28385 ++  AVR32_OPC_ADDVC,
47.28386 ++  AVR32_OPC_ADDQS,
47.28387 ++  AVR32_OPC_ADDAL,
47.28388 ++  AVR32_OPC_SUB2EQ,
47.28389 ++  AVR32_OPC_SUB2NE,
47.28390 ++  AVR32_OPC_SUB2CC,
47.28391 ++  AVR32_OPC_SUB2CS,
47.28392 ++  AVR32_OPC_SUB2GE,
47.28393 ++  AVR32_OPC_SUB2LT,
47.28394 ++  AVR32_OPC_SUB2MI,
47.28395 ++  AVR32_OPC_SUB2PL,
47.28396 ++  AVR32_OPC_SUB2LS,
47.28397 ++  AVR32_OPC_SUB2GT,
47.28398 ++  AVR32_OPC_SUB2LE,
47.28399 ++  AVR32_OPC_SUB2HI,
47.28400 ++  AVR32_OPC_SUB2VS,
47.28401 ++  AVR32_OPC_SUB2VC,
47.28402 ++  AVR32_OPC_SUB2QS,
47.28403 ++  AVR32_OPC_SUB2AL,
47.28404 ++  AVR32_OPC_ANDEQ,
47.28405 ++  AVR32_OPC_ANDNE,
47.28406 ++  AVR32_OPC_ANDCC,
47.28407 ++  AVR32_OPC_ANDCS,
47.28408 ++  AVR32_OPC_ANDGE,
47.28409 ++  AVR32_OPC_ANDLT,
47.28410 ++  AVR32_OPC_ANDMI,
47.28411 ++  AVR32_OPC_ANDPL,
47.28412 ++  AVR32_OPC_ANDLS,
47.28413 ++  AVR32_OPC_ANDGT,
47.28414 ++  AVR32_OPC_ANDLE,
47.28415 ++  AVR32_OPC_ANDHI,
47.28416 ++  AVR32_OPC_ANDVS,
47.28417 ++  AVR32_OPC_ANDVC,
47.28418 ++  AVR32_OPC_ANDQS,
47.28419 ++  AVR32_OPC_ANDAL,
47.28420 ++  AVR32_OPC_OREQ,
47.28421 ++  AVR32_OPC_ORNE,
47.28422 ++  AVR32_OPC_ORCC,
47.28423 ++  AVR32_OPC_ORCS,
47.28424 ++  AVR32_OPC_ORGE,
47.28425 ++  AVR32_OPC_ORLT,
47.28426 ++  AVR32_OPC_ORMI,
47.28427 ++  AVR32_OPC_ORPL,
47.28428 ++  AVR32_OPC_ORLS,
47.28429 ++  AVR32_OPC_ORGT,
47.28430 ++  AVR32_OPC_ORLE,
47.28431 ++  AVR32_OPC_ORHI,
47.28432 ++  AVR32_OPC_ORVS,
47.28433 ++  AVR32_OPC_ORVC,
47.28434 ++  AVR32_OPC_ORQS,
47.28435 ++  AVR32_OPC_ORAL,
47.28436 ++  AVR32_OPC_EOREQ,
47.28437 ++  AVR32_OPC_EORNE,
47.28438 ++  AVR32_OPC_EORCC,
47.28439 ++  AVR32_OPC_EORCS,
47.28440 ++  AVR32_OPC_EORGE,
47.28441 ++  AVR32_OPC_EORLT,
47.28442 ++  AVR32_OPC_EORMI,
47.28443 ++  AVR32_OPC_EORPL,
47.28444 ++  AVR32_OPC_EORLS,
47.28445 ++  AVR32_OPC_EORGT,
47.28446 ++  AVR32_OPC_EORLE,
47.28447 ++  AVR32_OPC_EORHI,
47.28448 ++  AVR32_OPC_EORVS,
47.28449 ++  AVR32_OPC_EORVC,
47.28450 ++  AVR32_OPC_EORQS,
47.28451 ++  AVR32_OPC_EORAL,
47.28452 ++  AVR32_OPC_LD_WEQ,
47.28453 ++  AVR32_OPC_LD_WNE,
47.28454 ++  AVR32_OPC_LD_WCC,
47.28455 ++  AVR32_OPC_LD_WCS,
47.28456 ++  AVR32_OPC_LD_WGE,
47.28457 ++  AVR32_OPC_LD_WLT,
47.28458 ++  AVR32_OPC_LD_WMI,
47.28459 ++  AVR32_OPC_LD_WPL,
47.28460 ++  AVR32_OPC_LD_WLS,
47.28461 ++  AVR32_OPC_LD_WGT,
47.28462 ++  AVR32_OPC_LD_WLE,
47.28463 ++  AVR32_OPC_LD_WHI,
47.28464 ++  AVR32_OPC_LD_WVS,
47.28465 ++  AVR32_OPC_LD_WVC,
47.28466 ++  AVR32_OPC_LD_WQS,
47.28467 ++  AVR32_OPC_LD_WAL,
47.28468 ++  AVR32_OPC_LD_SHEQ,
47.28469 ++  AVR32_OPC_LD_SHNE,
47.28470 ++  AVR32_OPC_LD_SHCC,
47.28471 ++  AVR32_OPC_LD_SHCS,
47.28472 ++  AVR32_OPC_LD_SHGE,
47.28473 ++  AVR32_OPC_LD_SHLT,
47.28474 ++  AVR32_OPC_LD_SHMI,
47.28475 ++  AVR32_OPC_LD_SHPL,
47.28476 ++  AVR32_OPC_LD_SHLS,
47.28477 ++  AVR32_OPC_LD_SHGT,
47.28478 ++  AVR32_OPC_LD_SHLE,
47.28479 ++  AVR32_OPC_LD_SHHI,
47.28480 ++  AVR32_OPC_LD_SHVS,
47.28481 ++  AVR32_OPC_LD_SHVC,
47.28482 ++  AVR32_OPC_LD_SHQS,
47.28483 ++  AVR32_OPC_LD_SHAL,
47.28484 ++  AVR32_OPC_LD_UHEQ,
47.28485 ++  AVR32_OPC_LD_UHNE,
47.28486 ++  AVR32_OPC_LD_UHCC,
47.28487 ++  AVR32_OPC_LD_UHCS,
47.28488 ++  AVR32_OPC_LD_UHGE,
47.28489 ++  AVR32_OPC_LD_UHLT,
47.28490 ++  AVR32_OPC_LD_UHMI,
47.28491 ++  AVR32_OPC_LD_UHPL,
47.28492 ++  AVR32_OPC_LD_UHLS,
47.28493 ++  AVR32_OPC_LD_UHGT,
47.28494 ++  AVR32_OPC_LD_UHLE,
47.28495 ++  AVR32_OPC_LD_UHHI,
47.28496 ++  AVR32_OPC_LD_UHVS,
47.28497 ++  AVR32_OPC_LD_UHVC,
47.28498 ++  AVR32_OPC_LD_UHQS,
47.28499 ++  AVR32_OPC_LD_UHAL,
47.28500 ++  AVR32_OPC_LD_SBEQ,
47.28501 ++  AVR32_OPC_LD_SBNE,
47.28502 ++  AVR32_OPC_LD_SBCC,
47.28503 ++  AVR32_OPC_LD_SBCS,
47.28504 ++  AVR32_OPC_LD_SBGE,
47.28505 ++  AVR32_OPC_LD_SBLT,
47.28506 ++  AVR32_OPC_LD_SBMI,
47.28507 ++  AVR32_OPC_LD_SBPL,
47.28508 ++  AVR32_OPC_LD_SBLS,
47.28509 ++  AVR32_OPC_LD_SBGT,
47.28510 ++  AVR32_OPC_LD_SBLE,
47.28511 ++  AVR32_OPC_LD_SBHI,
47.28512 ++  AVR32_OPC_LD_SBVS,
47.28513 ++  AVR32_OPC_LD_SBVC,
47.28514 ++  AVR32_OPC_LD_SBQS,
47.28515 ++  AVR32_OPC_LD_SBAL,
47.28516 ++  AVR32_OPC_LD_UBEQ,
47.28517 ++  AVR32_OPC_LD_UBNE,
47.28518 ++  AVR32_OPC_LD_UBCC,
47.28519 ++  AVR32_OPC_LD_UBCS,
47.28520 ++  AVR32_OPC_LD_UBGE,
47.28521 ++  AVR32_OPC_LD_UBLT,
47.28522 ++  AVR32_OPC_LD_UBMI,
47.28523 ++  AVR32_OPC_LD_UBPL,
47.28524 ++  AVR32_OPC_LD_UBLS,
47.28525 ++  AVR32_OPC_LD_UBGT,
47.28526 ++  AVR32_OPC_LD_UBLE,
47.28527 ++  AVR32_OPC_LD_UBHI,
47.28528 ++  AVR32_OPC_LD_UBVS,
47.28529 ++  AVR32_OPC_LD_UBVC,
47.28530 ++  AVR32_OPC_LD_UBQS,
47.28531 ++  AVR32_OPC_LD_UBAL,
47.28532 ++  AVR32_OPC_ST_WEQ,
47.28533 ++  AVR32_OPC_ST_WNE,
47.28534 ++  AVR32_OPC_ST_WCC,
47.28535 ++  AVR32_OPC_ST_WCS,
47.28536 ++  AVR32_OPC_ST_WGE,
47.28537 ++  AVR32_OPC_ST_WLT,
47.28538 ++  AVR32_OPC_ST_WMI,
47.28539 ++  AVR32_OPC_ST_WPL,
47.28540 ++  AVR32_OPC_ST_WLS,
47.28541 ++  AVR32_OPC_ST_WGT,
47.28542 ++  AVR32_OPC_ST_WLE,
47.28543 ++  AVR32_OPC_ST_WHI,
47.28544 ++  AVR32_OPC_ST_WVS,
47.28545 ++  AVR32_OPC_ST_WVC,
47.28546 ++  AVR32_OPC_ST_WQS,
47.28547 ++  AVR32_OPC_ST_WAL,
47.28548 ++  AVR32_OPC_ST_HEQ,
47.28549 ++  AVR32_OPC_ST_HNE,
47.28550 ++  AVR32_OPC_ST_HCC,
47.28551 ++  AVR32_OPC_ST_HCS,
47.28552 ++  AVR32_OPC_ST_HGE,
47.28553 ++  AVR32_OPC_ST_HLT,
47.28554 ++  AVR32_OPC_ST_HMI,
47.28555 ++  AVR32_OPC_ST_HPL,
47.28556 ++  AVR32_OPC_ST_HLS,
47.28557 ++  AVR32_OPC_ST_HGT,
47.28558 ++  AVR32_OPC_ST_HLE,
47.28559 ++  AVR32_OPC_ST_HHI,
47.28560 ++  AVR32_OPC_ST_HVS,
47.28561 ++  AVR32_OPC_ST_HVC,
47.28562 ++  AVR32_OPC_ST_HQS,
47.28563 ++  AVR32_OPC_ST_HAL,
47.28564 ++  AVR32_OPC_ST_BEQ,
47.28565 ++  AVR32_OPC_ST_BNE,
47.28566 ++  AVR32_OPC_ST_BCC,
47.28567 ++  AVR32_OPC_ST_BCS,
47.28568 ++  AVR32_OPC_ST_BGE,
47.28569 ++  AVR32_OPC_ST_BLT,
47.28570 ++  AVR32_OPC_ST_BMI,
47.28571 ++  AVR32_OPC_ST_BPL,
47.28572 ++  AVR32_OPC_ST_BLS,
47.28573 ++  AVR32_OPC_ST_BGT,
47.28574 ++  AVR32_OPC_ST_BLE,
47.28575 ++  AVR32_OPC_ST_BHI,
47.28576 ++  AVR32_OPC_ST_BVS,
47.28577 ++  AVR32_OPC_ST_BVC,
47.28578 ++  AVR32_OPC_ST_BQS,
47.28579 ++  AVR32_OPC_ST_BAL,
47.28580 ++  AVR32_OPC_MOVH,
47.28581 ++  AVR32_OPC__END_
47.28582 ++};
47.28583 ++#define AVR32_NR_OPCODES AVR32_OPC__END_
47.28584 ++
47.28585 ++enum avr32_syntax_type
47.28586 ++{
47.28587 ++  AVR32_SYNTAX_ABS,
47.28588 ++  AVR32_SYNTAX_ACALL,
47.28589 ++  AVR32_SYNTAX_ACR,
47.28590 ++  AVR32_SYNTAX_ADC,
47.28591 ++  AVR32_SYNTAX_ADD1,
47.28592 ++  AVR32_SYNTAX_ADD2,
47.28593 ++  AVR32_SYNTAX_ADDABS,
47.28594 ++  AVR32_SYNTAX_ADDHH_W,
47.28595 ++  AVR32_SYNTAX_AND1,
47.28596 ++  AVR32_SYNTAX_AND2,
47.28597 ++  AVR32_SYNTAX_AND3,
47.28598 ++  AVR32_SYNTAX_ANDH,
47.28599 ++  AVR32_SYNTAX_ANDH_COH,
47.28600 ++  AVR32_SYNTAX_ANDL,
47.28601 ++  AVR32_SYNTAX_ANDL_COH,
47.28602 ++  AVR32_SYNTAX_ANDN,
47.28603 ++  AVR32_SYNTAX_ASR1,
47.28604 ++  AVR32_SYNTAX_ASR3,
47.28605 ++  AVR32_SYNTAX_ASR2,
47.28606 ++  AVR32_SYNTAX_BFEXTS,
47.28607 ++  AVR32_SYNTAX_BFEXTU,
47.28608 ++  AVR32_SYNTAX_BFINS,
47.28609 ++  AVR32_SYNTAX_BLD,
47.28610 ++  AVR32_SYNTAX_BREQ1,
47.28611 ++  AVR32_SYNTAX_BRNE1,
47.28612 ++  AVR32_SYNTAX_BRCC1,
47.28613 ++  AVR32_SYNTAX_BRCS1,
47.28614 ++  AVR32_SYNTAX_BRGE1,
47.28615 ++  AVR32_SYNTAX_BRLT1,
47.28616 ++  AVR32_SYNTAX_BRMI1,
47.28617 ++  AVR32_SYNTAX_BRPL1,
47.28618 ++  AVR32_SYNTAX_BRHS1,
47.28619 ++  AVR32_SYNTAX_BRLO1,
47.28620 ++  AVR32_SYNTAX_BREQ2,
47.28621 ++  AVR32_SYNTAX_BRNE2,
47.28622 ++  AVR32_SYNTAX_BRCC2,
47.28623 ++  AVR32_SYNTAX_BRCS2,
47.28624 ++  AVR32_SYNTAX_BRGE2,
47.28625 ++  AVR32_SYNTAX_BRLT2,
47.28626 ++  AVR32_SYNTAX_BRMI2,
47.28627 ++  AVR32_SYNTAX_BRPL2,
47.28628 ++  AVR32_SYNTAX_BRLS,
47.28629 ++  AVR32_SYNTAX_BRGT,
47.28630 ++  AVR32_SYNTAX_BRLE,
47.28631 ++  AVR32_SYNTAX_BRHI,
47.28632 ++  AVR32_SYNTAX_BRVS,
47.28633 ++  AVR32_SYNTAX_BRVC,
47.28634 ++  AVR32_SYNTAX_BRQS,
47.28635 ++  AVR32_SYNTAX_BRAL,
47.28636 ++  AVR32_SYNTAX_BRHS2,
47.28637 ++  AVR32_SYNTAX_BRLO2,
47.28638 ++  AVR32_SYNTAX_BREAKPOINT,
47.28639 ++  AVR32_SYNTAX_BREV,
47.28640 ++  AVR32_SYNTAX_BST,
47.28641 ++  AVR32_SYNTAX_CACHE,
47.28642 ++  AVR32_SYNTAX_CASTS_B,
47.28643 ++  AVR32_SYNTAX_CASTS_H,
47.28644 ++  AVR32_SYNTAX_CASTU_B,
47.28645 ++  AVR32_SYNTAX_CASTU_H,
47.28646 ++  AVR32_SYNTAX_CBR,
47.28647 ++  AVR32_SYNTAX_CLZ,
47.28648 ++  AVR32_SYNTAX_COM,
47.28649 ++  AVR32_SYNTAX_COP,
47.28650 ++  AVR32_SYNTAX_CP_B,
47.28651 ++  AVR32_SYNTAX_CP_H,
47.28652 ++  AVR32_SYNTAX_CP_W1,
47.28653 ++  AVR32_SYNTAX_CP_W2,
47.28654 ++  AVR32_SYNTAX_CP_W3,
47.28655 ++  AVR32_SYNTAX_CPC1,
47.28656 ++  AVR32_SYNTAX_CPC2,
47.28657 ++  AVR32_SYNTAX_CSRF,
47.28658 ++  AVR32_SYNTAX_CSRFCZ,
47.28659 ++  AVR32_SYNTAX_DIVS,
47.28660 ++  AVR32_SYNTAX_DIVU,
47.28661 ++  AVR32_SYNTAX_EOR1,
47.28662 ++  AVR32_SYNTAX_EOR2,
47.28663 ++  AVR32_SYNTAX_EOR3,
47.28664 ++  AVR32_SYNTAX_EORL,
47.28665 ++  AVR32_SYNTAX_EORH,
47.28666 ++  AVR32_SYNTAX_FRS,
47.28667 ++  AVR32_SYNTAX_ICALL,
47.28668 ++  AVR32_SYNTAX_INCJOSP,
47.28669 ++  AVR32_SYNTAX_LD_D1,
47.28670 ++  AVR32_SYNTAX_LD_D2,
47.28671 ++  AVR32_SYNTAX_LD_D3,
47.28672 ++  AVR32_SYNTAX_LD_D5,
47.28673 ++  AVR32_SYNTAX_LD_D4,
47.28674 ++  AVR32_SYNTAX_LD_SB2,
47.28675 ++  AVR32_SYNTAX_LD_SB1,
47.28676 ++  AVR32_SYNTAX_LD_UB1,
47.28677 ++  AVR32_SYNTAX_LD_UB2,
47.28678 ++  AVR32_SYNTAX_LD_UB5,
47.28679 ++  AVR32_SYNTAX_LD_UB3,
47.28680 ++  AVR32_SYNTAX_LD_UB4,
47.28681 ++  AVR32_SYNTAX_LD_SH1,
47.28682 ++  AVR32_SYNTAX_LD_SH2,
47.28683 ++  AVR32_SYNTAX_LD_SH5,
47.28684 ++  AVR32_SYNTAX_LD_SH3,
47.28685 ++  AVR32_SYNTAX_LD_SH4,
47.28686 ++  AVR32_SYNTAX_LD_UH1,
47.28687 ++  AVR32_SYNTAX_LD_UH2,
47.28688 ++  AVR32_SYNTAX_LD_UH5,
47.28689 ++  AVR32_SYNTAX_LD_UH3,
47.28690 ++  AVR32_SYNTAX_LD_UH4,
47.28691 ++  AVR32_SYNTAX_LD_W1,
47.28692 ++  AVR32_SYNTAX_LD_W2,
47.28693 ++  AVR32_SYNTAX_LD_W5,
47.28694 ++  AVR32_SYNTAX_LD_W6,
47.28695 ++  AVR32_SYNTAX_LD_W3,
47.28696 ++  AVR32_SYNTAX_LD_W4,
47.28697 ++  AVR32_SYNTAX_LDC_D1,
47.28698 ++  AVR32_SYNTAX_LDC_D2,
47.28699 ++  AVR32_SYNTAX_LDC_D3,
47.28700 ++  AVR32_SYNTAX_LDC_W1,
47.28701 ++  AVR32_SYNTAX_LDC_W2,
47.28702 ++  AVR32_SYNTAX_LDC_W3,
47.28703 ++  AVR32_SYNTAX_LDC0_D,
47.28704 ++  AVR32_SYNTAX_LDC0_W,
47.28705 ++  AVR32_SYNTAX_LDCM_D,
47.28706 ++  AVR32_SYNTAX_LDCM_D_PU,
47.28707 ++  AVR32_SYNTAX_LDCM_W,
47.28708 ++  AVR32_SYNTAX_LDCM_W_PU,
47.28709 ++  AVR32_SYNTAX_LDDPC,
47.28710 ++  AVR32_SYNTAX_LDDPC_EXT,
47.28711 ++  AVR32_SYNTAX_LDDSP,
47.28712 ++  AVR32_SYNTAX_LDINS_B,
47.28713 ++  AVR32_SYNTAX_LDINS_H,
47.28714 ++  AVR32_SYNTAX_LDM,
47.28715 ++  AVR32_SYNTAX_LDMTS,
47.28716 ++  AVR32_SYNTAX_LDMTS_PU,
47.28717 ++  AVR32_SYNTAX_LDSWP_SH,
47.28718 ++  AVR32_SYNTAX_LDSWP_UH,
47.28719 ++  AVR32_SYNTAX_LDSWP_W,
47.28720 ++  AVR32_SYNTAX_LSL1,
47.28721 ++  AVR32_SYNTAX_LSL3,
47.28722 ++  AVR32_SYNTAX_LSL2,
47.28723 ++  AVR32_SYNTAX_LSR1,
47.28724 ++  AVR32_SYNTAX_LSR3,
47.28725 ++  AVR32_SYNTAX_LSR2,
47.28726 ++  AVR32_SYNTAX_MAC,
47.28727 ++  AVR32_SYNTAX_MACHH_D,
47.28728 ++  AVR32_SYNTAX_MACHH_W,
47.28729 ++  AVR32_SYNTAX_MACS_D,
47.28730 ++  AVR32_SYNTAX_MACSATHH_W,
47.28731 ++  AVR32_SYNTAX_MACUD,
47.28732 ++  AVR32_SYNTAX_MACWH_D,
47.28733 ++  AVR32_SYNTAX_MAX,
47.28734 ++  AVR32_SYNTAX_MCALL,
47.28735 ++  AVR32_SYNTAX_MFDR,
47.28736 ++  AVR32_SYNTAX_MFSR,
47.28737 ++  AVR32_SYNTAX_MIN,
47.28738 ++  AVR32_SYNTAX_MOV3,
47.28739 ++  AVR32_SYNTAX_MOV1,
47.28740 ++  AVR32_SYNTAX_MOV2,
47.28741 ++  AVR32_SYNTAX_MOVEQ1,
47.28742 ++  AVR32_SYNTAX_MOVNE1,
47.28743 ++  AVR32_SYNTAX_MOVCC1,
47.28744 ++  AVR32_SYNTAX_MOVCS1,
47.28745 ++  AVR32_SYNTAX_MOVGE1,
47.28746 ++  AVR32_SYNTAX_MOVLT1,
47.28747 ++  AVR32_SYNTAX_MOVMI1,
47.28748 ++  AVR32_SYNTAX_MOVPL1,
47.28749 ++  AVR32_SYNTAX_MOVLS1,
47.28750 ++  AVR32_SYNTAX_MOVGT1,
47.28751 ++  AVR32_SYNTAX_MOVLE1,
47.28752 ++  AVR32_SYNTAX_MOVHI1,
47.28753 ++  AVR32_SYNTAX_MOVVS1,
47.28754 ++  AVR32_SYNTAX_MOVVC1,
47.28755 ++  AVR32_SYNTAX_MOVQS1,
47.28756 ++  AVR32_SYNTAX_MOVAL1,
47.28757 ++  AVR32_SYNTAX_MOVHS1,
47.28758 ++  AVR32_SYNTAX_MOVLO1,
47.28759 ++  AVR32_SYNTAX_MOVEQ2,
47.28760 ++  AVR32_SYNTAX_MOVNE2,
47.28761 ++  AVR32_SYNTAX_MOVCC2,
47.28762 ++  AVR32_SYNTAX_MOVCS2,
47.28763 ++  AVR32_SYNTAX_MOVGE2,
47.28764 ++  AVR32_SYNTAX_MOVLT2,
47.28765 ++  AVR32_SYNTAX_MOVMI2,
47.28766 ++  AVR32_SYNTAX_MOVPL2,
47.28767 ++  AVR32_SYNTAX_MOVLS2,
47.28768 ++  AVR32_SYNTAX_MOVGT2,
47.28769 ++  AVR32_SYNTAX_MOVLE2,
47.28770 ++  AVR32_SYNTAX_MOVHI2,
47.28771 ++  AVR32_SYNTAX_MOVVS2,
47.28772 ++  AVR32_SYNTAX_MOVVC2,
47.28773 ++  AVR32_SYNTAX_MOVQS2,
47.28774 ++  AVR32_SYNTAX_MOVAL2,
47.28775 ++  AVR32_SYNTAX_MOVHS2,
47.28776 ++  AVR32_SYNTAX_MOVLO2,
47.28777 ++  AVR32_SYNTAX_MTDR,
47.28778 ++  AVR32_SYNTAX_MTSR,
47.28779 ++  AVR32_SYNTAX_MUL1,
47.28780 ++  AVR32_SYNTAX_MUL2,
47.28781 ++  AVR32_SYNTAX_MUL3,
47.28782 ++  AVR32_SYNTAX_MULHH_W,
47.28783 ++  AVR32_SYNTAX_MULNHH_W,
47.28784 ++  AVR32_SYNTAX_MULNWH_D,
47.28785 ++  AVR32_SYNTAX_MULSD,
47.28786 ++  AVR32_SYNTAX_MULSATHH_H,
47.28787 ++  AVR32_SYNTAX_MULSATHH_W,
47.28788 ++  AVR32_SYNTAX_MULSATRNDHH_H,
47.28789 ++  AVR32_SYNTAX_MULSATRNDWH_W,
47.28790 ++  AVR32_SYNTAX_MULSATWH_W,
47.28791 ++  AVR32_SYNTAX_MULU_D,
47.28792 ++  AVR32_SYNTAX_MULWH_D,
47.28793 ++  AVR32_SYNTAX_MUSFR,
47.28794 ++  AVR32_SYNTAX_MUSTR,
47.28795 ++  AVR32_SYNTAX_MVCR_D,
47.28796 ++  AVR32_SYNTAX_MVCR_W,
47.28797 ++  AVR32_SYNTAX_MVRC_D,
47.28798 ++  AVR32_SYNTAX_MVRC_W,
47.28799 ++  AVR32_SYNTAX_NEG,
47.28800 ++  AVR32_SYNTAX_NOP,
47.28801 ++  AVR32_SYNTAX_OR1,
47.28802 ++  AVR32_SYNTAX_OR2,
47.28803 ++  AVR32_SYNTAX_OR3,
47.28804 ++  AVR32_SYNTAX_ORH,
47.28805 ++  AVR32_SYNTAX_ORL,
47.28806 ++  AVR32_SYNTAX_PABS_SB,
47.28807 ++  AVR32_SYNTAX_PABS_SH,
47.28808 ++  AVR32_SYNTAX_PACKSH_SB,
47.28809 ++  AVR32_SYNTAX_PACKSH_UB,
47.28810 ++  AVR32_SYNTAX_PACKW_SH,
47.28811 ++  AVR32_SYNTAX_PADD_B,
47.28812 ++  AVR32_SYNTAX_PADD_H,
47.28813 ++  AVR32_SYNTAX_PADDH_SH,
47.28814 ++  AVR32_SYNTAX_PADDH_UB,
47.28815 ++  AVR32_SYNTAX_PADDS_SB,
47.28816 ++  AVR32_SYNTAX_PADDS_SH,
47.28817 ++  AVR32_SYNTAX_PADDS_UB,
47.28818 ++  AVR32_SYNTAX_PADDS_UH,
47.28819 ++  AVR32_SYNTAX_PADDSUB_H,
47.28820 ++  AVR32_SYNTAX_PADDSUBH_SH,
47.28821 ++  AVR32_SYNTAX_PADDSUBS_SH,
47.28822 ++  AVR32_SYNTAX_PADDSUBS_UH,
47.28823 ++  AVR32_SYNTAX_PADDX_H,
47.28824 ++  AVR32_SYNTAX_PADDXH_SH,
47.28825 ++  AVR32_SYNTAX_PADDXS_SH,
47.28826 ++  AVR32_SYNTAX_PADDXS_UH,
47.28827 ++  AVR32_SYNTAX_PASR_B,
47.28828 ++  AVR32_SYNTAX_PASR_H,
47.28829 ++  AVR32_SYNTAX_PAVG_SH,
47.28830 ++  AVR32_SYNTAX_PAVG_UB,
47.28831 ++  AVR32_SYNTAX_PLSL_B,
47.28832 ++  AVR32_SYNTAX_PLSL_H,
47.28833 ++  AVR32_SYNTAX_PLSR_B,
47.28834 ++  AVR32_SYNTAX_PLSR_H,
47.28835 ++  AVR32_SYNTAX_PMAX_SH,
47.28836 ++  AVR32_SYNTAX_PMAX_UB,
47.28837 ++  AVR32_SYNTAX_PMIN_SH,
47.28838 ++  AVR32_SYNTAX_PMIN_UB,
47.28839 ++  AVR32_SYNTAX_POPJC,
47.28840 ++  AVR32_SYNTAX_POPM,
47.28841 ++  AVR32_SYNTAX_POPM_E,
47.28842 ++  AVR32_SYNTAX_PREF,
47.28843 ++  AVR32_SYNTAX_PSAD,
47.28844 ++  AVR32_SYNTAX_PSUB_B,
47.28845 ++  AVR32_SYNTAX_PSUB_H,
47.28846 ++  AVR32_SYNTAX_PSUBADD_H,
47.28847 ++  AVR32_SYNTAX_PSUBADDH_SH,
47.28848 ++  AVR32_SYNTAX_PSUBADDS_SH,
47.28849 ++  AVR32_SYNTAX_PSUBADDS_UH,
47.28850 ++  AVR32_SYNTAX_PSUBH_SH,
47.28851 ++  AVR32_SYNTAX_PSUBH_UB,
47.28852 ++  AVR32_SYNTAX_PSUBS_SB,
47.28853 ++  AVR32_SYNTAX_PSUBS_SH,
47.28854 ++  AVR32_SYNTAX_PSUBS_UB,
47.28855 ++  AVR32_SYNTAX_PSUBS_UH,
47.28856 ++  AVR32_SYNTAX_PSUBX_H,
47.28857 ++  AVR32_SYNTAX_PSUBXH_SH,
47.28858 ++  AVR32_SYNTAX_PSUBXS_SH,
47.28859 ++  AVR32_SYNTAX_PSUBXS_UH,
47.28860 ++  AVR32_SYNTAX_PUNPCKSB_H,
47.28861 ++  AVR32_SYNTAX_PUNPCKUB_H,
47.28862 ++  AVR32_SYNTAX_PUSHJC,
47.28863 ++  AVR32_SYNTAX_PUSHM,
47.28864 ++  AVR32_SYNTAX_PUSHM_E,
47.28865 ++  AVR32_SYNTAX_RCALL1,
47.28866 ++  AVR32_SYNTAX_RCALL2,
47.28867 ++  AVR32_SYNTAX_RETEQ,
47.28868 ++  AVR32_SYNTAX_RETNE,
47.28869 ++  AVR32_SYNTAX_RETCC,
47.28870 ++  AVR32_SYNTAX_RETCS,
47.28871 ++  AVR32_SYNTAX_RETGE,
47.28872 ++  AVR32_SYNTAX_RETLT,
47.28873 ++  AVR32_SYNTAX_RETMI,
47.28874 ++  AVR32_SYNTAX_RETPL,
47.28875 ++  AVR32_SYNTAX_RETLS,
47.28876 ++  AVR32_SYNTAX_RETGT,
47.28877 ++  AVR32_SYNTAX_RETLE,
47.28878 ++  AVR32_SYNTAX_RETHI,
47.28879 ++  AVR32_SYNTAX_RETVS,
47.28880 ++  AVR32_SYNTAX_RETVC,
47.28881 ++  AVR32_SYNTAX_RETQS,
47.28882 ++  AVR32_SYNTAX_RETAL,
47.28883 ++  AVR32_SYNTAX_RETHS,
47.28884 ++  AVR32_SYNTAX_RETLO,
47.28885 ++  AVR32_SYNTAX_RETD,
47.28886 ++  AVR32_SYNTAX_RETE,
47.28887 ++  AVR32_SYNTAX_RETJ,
47.28888 ++  AVR32_SYNTAX_RETS,
47.28889 ++  AVR32_SYNTAX_RJMP,
47.28890 ++  AVR32_SYNTAX_ROL,
47.28891 ++  AVR32_SYNTAX_ROR,
47.28892 ++  AVR32_SYNTAX_RSUB1,
47.28893 ++  AVR32_SYNTAX_RSUB2,
47.28894 ++  AVR32_SYNTAX_SATADD_H,
47.28895 ++  AVR32_SYNTAX_SATADD_W,
47.28896 ++  AVR32_SYNTAX_SATRNDS,
47.28897 ++  AVR32_SYNTAX_SATRNDU,
47.28898 ++  AVR32_SYNTAX_SATS,
47.28899 ++  AVR32_SYNTAX_SATSUB_H,
47.28900 ++  AVR32_SYNTAX_SATSUB_W1,
47.28901 ++  AVR32_SYNTAX_SATSUB_W2,
47.28902 ++  AVR32_SYNTAX_SATU,
47.28903 ++  AVR32_SYNTAX_SBC,
47.28904 ++  AVR32_SYNTAX_SBR,
47.28905 ++  AVR32_SYNTAX_SCALL,
47.28906 ++  AVR32_SYNTAX_SCR,
47.28907 ++  AVR32_SYNTAX_SLEEP,
47.28908 ++  AVR32_SYNTAX_SREQ,
47.28909 ++  AVR32_SYNTAX_SRNE,
47.28910 ++  AVR32_SYNTAX_SRCC,
47.28911 ++  AVR32_SYNTAX_SRCS,
47.28912 ++  AVR32_SYNTAX_SRGE,
47.28913 ++  AVR32_SYNTAX_SRLT,
47.28914 ++  AVR32_SYNTAX_SRMI,
47.28915 ++  AVR32_SYNTAX_SRPL,
47.28916 ++  AVR32_SYNTAX_SRLS,
47.28917 ++  AVR32_SYNTAX_SRGT,
47.28918 ++  AVR32_SYNTAX_SRLE,
47.28919 ++  AVR32_SYNTAX_SRHI,
47.28920 ++  AVR32_SYNTAX_SRVS,
47.28921 ++  AVR32_SYNTAX_SRVC,
47.28922 ++  AVR32_SYNTAX_SRQS,
47.28923 ++  AVR32_SYNTAX_SRAL,
47.28924 ++  AVR32_SYNTAX_SRHS,
47.28925 ++  AVR32_SYNTAX_SRLO,
47.28926 ++  AVR32_SYNTAX_SSRF,
47.28927 ++  AVR32_SYNTAX_ST_B1,
47.28928 ++  AVR32_SYNTAX_ST_B2,
47.28929 ++  AVR32_SYNTAX_ST_B5,
47.28930 ++  AVR32_SYNTAX_ST_B3,
47.28931 ++  AVR32_SYNTAX_ST_B4,
47.28932 ++  AVR32_SYNTAX_ST_D1,
47.28933 ++  AVR32_SYNTAX_ST_D2,
47.28934 ++  AVR32_SYNTAX_ST_D3,
47.28935 ++  AVR32_SYNTAX_ST_D5,
47.28936 ++  AVR32_SYNTAX_ST_D4,
47.28937 ++  AVR32_SYNTAX_ST_H1,
47.28938 ++  AVR32_SYNTAX_ST_H2,
47.28939 ++  AVR32_SYNTAX_ST_H5,
47.28940 ++  AVR32_SYNTAX_ST_H3,
47.28941 ++  AVR32_SYNTAX_ST_H4,
47.28942 ++  AVR32_SYNTAX_ST_W1,
47.28943 ++  AVR32_SYNTAX_ST_W2,
47.28944 ++  AVR32_SYNTAX_ST_W5,
47.28945 ++  AVR32_SYNTAX_ST_W3,
47.28946 ++  AVR32_SYNTAX_ST_W4,
47.28947 ++  AVR32_SYNTAX_STC_D1,
47.28948 ++  AVR32_SYNTAX_STC_D2,
47.28949 ++  AVR32_SYNTAX_STC_D3,
47.28950 ++  AVR32_SYNTAX_STC_W1,
47.28951 ++  AVR32_SYNTAX_STC_W2,
47.28952 ++  AVR32_SYNTAX_STC_W3,
47.28953 ++  AVR32_SYNTAX_STC0_D,
47.28954 ++  AVR32_SYNTAX_STC0_W,
47.28955 ++  AVR32_SYNTAX_STCM_D,
47.28956 ++  AVR32_SYNTAX_STCM_D_PU,
47.28957 ++  AVR32_SYNTAX_STCM_W,
47.28958 ++  AVR32_SYNTAX_STCM_W_PU,
47.28959 ++  AVR32_SYNTAX_STCOND,
47.28960 ++  AVR32_SYNTAX_STDSP,
47.28961 ++  AVR32_SYNTAX_STHH_W2,
47.28962 ++  AVR32_SYNTAX_STHH_W1,
47.28963 ++  AVR32_SYNTAX_STM,
47.28964 ++  AVR32_SYNTAX_STM_PU,
47.28965 ++  AVR32_SYNTAX_STMTS,
47.28966 ++  AVR32_SYNTAX_STMTS_PU,
47.28967 ++  AVR32_SYNTAX_STSWP_H,
47.28968 ++  AVR32_SYNTAX_STSWP_W,
47.28969 ++  AVR32_SYNTAX_SUB1,
47.28970 ++  AVR32_SYNTAX_SUB2,
47.28971 ++  AVR32_SYNTAX_SUB5,
47.28972 ++  AVR32_SYNTAX_SUB3_SP,
47.28973 ++  AVR32_SYNTAX_SUB3,
47.28974 ++  AVR32_SYNTAX_SUB4,
47.28975 ++  AVR32_SYNTAX_SUBEQ,
47.28976 ++  AVR32_SYNTAX_SUBNE,
47.28977 ++  AVR32_SYNTAX_SUBCC,
47.28978 ++  AVR32_SYNTAX_SUBCS,
47.28979 ++  AVR32_SYNTAX_SUBGE,
47.28980 ++  AVR32_SYNTAX_SUBLT,
47.28981 ++  AVR32_SYNTAX_SUBMI,
47.28982 ++  AVR32_SYNTAX_SUBPL,
47.28983 ++  AVR32_SYNTAX_SUBLS,
47.28984 ++  AVR32_SYNTAX_SUBGT,
47.28985 ++  AVR32_SYNTAX_SUBLE,
47.28986 ++  AVR32_SYNTAX_SUBHI,
47.28987 ++  AVR32_SYNTAX_SUBVS,
47.28988 ++  AVR32_SYNTAX_SUBVC,
47.28989 ++  AVR32_SYNTAX_SUBQS,
47.28990 ++  AVR32_SYNTAX_SUBAL,
47.28991 ++  AVR32_SYNTAX_SUBHS,
47.28992 ++  AVR32_SYNTAX_SUBLO,
47.28993 ++  AVR32_SYNTAX_SUBFEQ,
47.28994 ++  AVR32_SYNTAX_SUBFNE,
47.28995 ++  AVR32_SYNTAX_SUBFCC,
47.28996 ++  AVR32_SYNTAX_SUBFCS,
47.28997 ++  AVR32_SYNTAX_SUBFGE,
47.28998 ++  AVR32_SYNTAX_SUBFLT,
47.28999 ++  AVR32_SYNTAX_SUBFMI,
47.29000 ++  AVR32_SYNTAX_SUBFPL,
47.29001 ++  AVR32_SYNTAX_SUBFLS,
47.29002 ++  AVR32_SYNTAX_SUBFGT,
47.29003 ++  AVR32_SYNTAX_SUBFLE,
47.29004 ++  AVR32_SYNTAX_SUBFHI,
47.29005 ++  AVR32_SYNTAX_SUBFVS,
47.29006 ++  AVR32_SYNTAX_SUBFVC,
47.29007 ++  AVR32_SYNTAX_SUBFQS,
47.29008 ++  AVR32_SYNTAX_SUBFAL,
47.29009 ++  AVR32_SYNTAX_SUBFHS,
47.29010 ++  AVR32_SYNTAX_SUBFLO,
47.29011 ++  AVR32_SYNTAX_SUBHH_W,
47.29012 ++  AVR32_SYNTAX_SWAP_B,
47.29013 ++  AVR32_SYNTAX_SWAP_BH,
47.29014 ++  AVR32_SYNTAX_SWAP_H,
47.29015 ++  AVR32_SYNTAX_SYNC,
47.29016 ++  AVR32_SYNTAX_TLBR,
47.29017 ++  AVR32_SYNTAX_TLBS,
47.29018 ++  AVR32_SYNTAX_TLBW,
47.29019 ++  AVR32_SYNTAX_TNBZ,
47.29020 ++  AVR32_SYNTAX_TST,
47.29021 ++  AVR32_SYNTAX_XCHG,
47.29022 ++  AVR32_SYNTAX_MEMC,
47.29023 ++  AVR32_SYNTAX_MEMS,
47.29024 ++  AVR32_SYNTAX_MEMT,
47.29025 ++  AVR32_SYNTAX_FADD_S,
47.29026 ++  AVR32_SYNTAX_FADD_D,
47.29027 ++  AVR32_SYNTAX_FSUB_S,
47.29028 ++  AVR32_SYNTAX_FSUB_D,
47.29029 ++  AVR32_SYNTAX_FMAC_S,
47.29030 ++  AVR32_SYNTAX_FMAC_D,
47.29031 ++  AVR32_SYNTAX_FNMAC_S,
47.29032 ++  AVR32_SYNTAX_FNMAC_D,
47.29033 ++  AVR32_SYNTAX_FMSC_S,
47.29034 ++  AVR32_SYNTAX_FMSC_D,
47.29035 ++  AVR32_SYNTAX_FNMSC_S,
47.29036 ++  AVR32_SYNTAX_FNMSC_D,
47.29037 ++  AVR32_SYNTAX_FMUL_S,
47.29038 ++  AVR32_SYNTAX_FMUL_D,
47.29039 ++  AVR32_SYNTAX_FNMUL_S,
47.29040 ++  AVR32_SYNTAX_FNMUL_D,
47.29041 ++  AVR32_SYNTAX_FNEG_S,
47.29042 ++  AVR32_SYNTAX_FNEG_D,
47.29043 ++  AVR32_SYNTAX_FABS_S,
47.29044 ++  AVR32_SYNTAX_FABS_D,
47.29045 ++  AVR32_SYNTAX_FCMP_S,
47.29046 ++  AVR32_SYNTAX_FCMP_D,
47.29047 ++  AVR32_SYNTAX_FMOV1_S,
47.29048 ++  AVR32_SYNTAX_FMOV1_D,
47.29049 ++  AVR32_SYNTAX_FMOV2_S,
47.29050 ++  AVR32_SYNTAX_FMOV2_D,
47.29051 ++  AVR32_SYNTAX_FMOV3_S,
47.29052 ++  AVR32_SYNTAX_FMOV3_D,
47.29053 ++  AVR32_SYNTAX_FCASTS_D,
47.29054 ++  AVR32_SYNTAX_FCASTD_S,
47.29055 ++  AVR32_SYNTAX_LDA_W,
47.29056 ++  AVR32_SYNTAX_CALL,
47.29057 ++  AVR32_SYNTAX_PICOSVMAC0,
47.29058 ++  AVR32_SYNTAX_PICOSVMAC1,
47.29059 ++  AVR32_SYNTAX_PICOSVMAC2,
47.29060 ++  AVR32_SYNTAX_PICOSVMAC3,
47.29061 ++  AVR32_SYNTAX_PICOSVMUL0,
47.29062 ++  AVR32_SYNTAX_PICOSVMUL1,
47.29063 ++  AVR32_SYNTAX_PICOSVMUL2,
47.29064 ++  AVR32_SYNTAX_PICOSVMUL3,
47.29065 ++  AVR32_SYNTAX_PICOVMAC0,
47.29066 ++  AVR32_SYNTAX_PICOVMAC1,
47.29067 ++  AVR32_SYNTAX_PICOVMAC2,
47.29068 ++  AVR32_SYNTAX_PICOVMAC3,
47.29069 ++  AVR32_SYNTAX_PICOVMUL0,
47.29070 ++  AVR32_SYNTAX_PICOVMUL1,
47.29071 ++  AVR32_SYNTAX_PICOVMUL2,
47.29072 ++  AVR32_SYNTAX_PICOVMUL3,
47.29073 ++  AVR32_SYNTAX_PICOLD_D2,
47.29074 ++  AVR32_SYNTAX_PICOLD_D3,
47.29075 ++  AVR32_SYNTAX_PICOLD_D1,
47.29076 ++  AVR32_SYNTAX_PICOLD_W2,
47.29077 ++  AVR32_SYNTAX_PICOLD_W3,
47.29078 ++  AVR32_SYNTAX_PICOLD_W1,
47.29079 ++  AVR32_SYNTAX_PICOLDM_D,
47.29080 ++  AVR32_SYNTAX_PICOLDM_D_PU,
47.29081 ++  AVR32_SYNTAX_PICOLDM_W,
47.29082 ++  AVR32_SYNTAX_PICOLDM_W_PU,
47.29083 ++  AVR32_SYNTAX_PICOMV_D1,
47.29084 ++  AVR32_SYNTAX_PICOMV_D2,
47.29085 ++  AVR32_SYNTAX_PICOMV_W1,
47.29086 ++  AVR32_SYNTAX_PICOMV_W2,
47.29087 ++  AVR32_SYNTAX_PICOST_D2,
47.29088 ++  AVR32_SYNTAX_PICOST_D3,
47.29089 ++  AVR32_SYNTAX_PICOST_D1,
47.29090 ++  AVR32_SYNTAX_PICOST_W2,
47.29091 ++  AVR32_SYNTAX_PICOST_W3,
47.29092 ++  AVR32_SYNTAX_PICOST_W1,
47.29093 ++  AVR32_SYNTAX_PICOSTM_D,
47.29094 ++  AVR32_SYNTAX_PICOSTM_D_PU,
47.29095 ++  AVR32_SYNTAX_PICOSTM_W,
47.29096 ++  AVR32_SYNTAX_PICOSTM_W_PU,
47.29097 ++  AVR32_SYNTAX_RSUBEQ,
47.29098 ++  AVR32_SYNTAX_RSUBNE,
47.29099 ++  AVR32_SYNTAX_RSUBCC,
47.29100 ++  AVR32_SYNTAX_RSUBCS,
47.29101 ++  AVR32_SYNTAX_RSUBGE,
47.29102 ++  AVR32_SYNTAX_RSUBLT,
47.29103 ++  AVR32_SYNTAX_RSUBMI,
47.29104 ++  AVR32_SYNTAX_RSUBPL,
47.29105 ++  AVR32_SYNTAX_RSUBLS,
47.29106 ++  AVR32_SYNTAX_RSUBGT,
47.29107 ++  AVR32_SYNTAX_RSUBLE,
47.29108 ++  AVR32_SYNTAX_RSUBHI,
47.29109 ++  AVR32_SYNTAX_RSUBVS,
47.29110 ++  AVR32_SYNTAX_RSUBVC,
47.29111 ++  AVR32_SYNTAX_RSUBQS,
47.29112 ++  AVR32_SYNTAX_RSUBAL,
47.29113 ++  AVR32_SYNTAX_RSUBHS,
47.29114 ++  AVR32_SYNTAX_RSUBLO,
47.29115 ++  AVR32_SYNTAX_ADDEQ,
47.29116 ++  AVR32_SYNTAX_ADDNE,
47.29117 ++  AVR32_SYNTAX_ADDCC,
47.29118 ++  AVR32_SYNTAX_ADDCS,
47.29119 ++  AVR32_SYNTAX_ADDGE,
47.29120 ++  AVR32_SYNTAX_ADDLT,
47.29121 ++  AVR32_SYNTAX_ADDMI,
47.29122 ++  AVR32_SYNTAX_ADDPL,
47.29123 ++  AVR32_SYNTAX_ADDLS,
47.29124 ++  AVR32_SYNTAX_ADDGT,
47.29125 ++  AVR32_SYNTAX_ADDLE,
47.29126 ++  AVR32_SYNTAX_ADDHI,
47.29127 ++  AVR32_SYNTAX_ADDVS,
47.29128 ++  AVR32_SYNTAX_ADDVC,
47.29129 ++  AVR32_SYNTAX_ADDQS,
47.29130 ++  AVR32_SYNTAX_ADDAL,
47.29131 ++  AVR32_SYNTAX_ADDHS,
47.29132 ++  AVR32_SYNTAX_ADDLO,
47.29133 ++  AVR32_SYNTAX_SUB2EQ,
47.29134 ++  AVR32_SYNTAX_SUB2NE,
47.29135 ++  AVR32_SYNTAX_SUB2CC,
47.29136 ++  AVR32_SYNTAX_SUB2CS,
47.29137 ++  AVR32_SYNTAX_SUB2GE,
47.29138 ++  AVR32_SYNTAX_SUB2LT,
47.29139 ++  AVR32_SYNTAX_SUB2MI,
47.29140 ++  AVR32_SYNTAX_SUB2PL,
47.29141 ++  AVR32_SYNTAX_SUB2LS,
47.29142 ++  AVR32_SYNTAX_SUB2GT,
47.29143 ++  AVR32_SYNTAX_SUB2LE,
47.29144 ++  AVR32_SYNTAX_SUB2HI,
47.29145 ++  AVR32_SYNTAX_SUB2VS,
47.29146 ++  AVR32_SYNTAX_SUB2VC,
47.29147 ++  AVR32_SYNTAX_SUB2QS,
47.29148 ++  AVR32_SYNTAX_SUB2AL,
47.29149 ++  AVR32_SYNTAX_SUB2HS,
47.29150 ++  AVR32_SYNTAX_SUB2LO,
47.29151 ++  AVR32_SYNTAX_ANDEQ,
47.29152 ++  AVR32_SYNTAX_ANDNE,
47.29153 ++  AVR32_SYNTAX_ANDCC,
47.29154 ++  AVR32_SYNTAX_ANDCS,
47.29155 ++  AVR32_SYNTAX_ANDGE,
47.29156 ++  AVR32_SYNTAX_ANDLT,
47.29157 ++  AVR32_SYNTAX_ANDMI,
47.29158 ++  AVR32_SYNTAX_ANDPL,
47.29159 ++  AVR32_SYNTAX_ANDLS,
47.29160 ++  AVR32_SYNTAX_ANDGT,
47.29161 ++  AVR32_SYNTAX_ANDLE,
47.29162 ++  AVR32_SYNTAX_ANDHI,
47.29163 ++  AVR32_SYNTAX_ANDVS,
47.29164 ++  AVR32_SYNTAX_ANDVC,
47.29165 ++  AVR32_SYNTAX_ANDQS,
47.29166 ++  AVR32_SYNTAX_ANDAL,
47.29167 ++  AVR32_SYNTAX_ANDHS,
47.29168 ++  AVR32_SYNTAX_ANDLO,
47.29169 ++  AVR32_SYNTAX_OREQ,
47.29170 ++  AVR32_SYNTAX_ORNE,
47.29171 ++  AVR32_SYNTAX_ORCC,
47.29172 ++  AVR32_SYNTAX_ORCS,
47.29173 ++  AVR32_SYNTAX_ORGE,
47.29174 ++  AVR32_SYNTAX_ORLT,
47.29175 ++  AVR32_SYNTAX_ORMI,
47.29176 ++  AVR32_SYNTAX_ORPL,
47.29177 ++  AVR32_SYNTAX_ORLS,
47.29178 ++  AVR32_SYNTAX_ORGT,
47.29179 ++  AVR32_SYNTAX_ORLE,
47.29180 ++  AVR32_SYNTAX_ORHI,
47.29181 ++  AVR32_SYNTAX_ORVS,
47.29182 ++  AVR32_SYNTAX_ORVC,
47.29183 ++  AVR32_SYNTAX_ORQS,
47.29184 ++  AVR32_SYNTAX_ORAL,
47.29185 ++  AVR32_SYNTAX_ORHS,
47.29186 ++  AVR32_SYNTAX_ORLO,
47.29187 ++  AVR32_SYNTAX_EOREQ,
47.29188 ++  AVR32_SYNTAX_EORNE,
47.29189 ++  AVR32_SYNTAX_EORCC,
47.29190 ++  AVR32_SYNTAX_EORCS,
47.29191 ++  AVR32_SYNTAX_EORGE,
47.29192 ++  AVR32_SYNTAX_EORLT,
47.29193 ++  AVR32_SYNTAX_EORMI,
47.29194 ++  AVR32_SYNTAX_EORPL,
47.29195 ++  AVR32_SYNTAX_EORLS,
47.29196 ++  AVR32_SYNTAX_EORGT,
47.29197 ++  AVR32_SYNTAX_EORLE,
47.29198 ++  AVR32_SYNTAX_EORHI,
47.29199 ++  AVR32_SYNTAX_EORVS,
47.29200 ++  AVR32_SYNTAX_EORVC,
47.29201 ++  AVR32_SYNTAX_EORQS,
47.29202 ++  AVR32_SYNTAX_EORAL,
47.29203 ++  AVR32_SYNTAX_EORHS,
47.29204 ++  AVR32_SYNTAX_EORLO,
47.29205 ++  AVR32_SYNTAX_LD_WEQ,
47.29206 ++  AVR32_SYNTAX_LD_WNE,
47.29207 ++  AVR32_SYNTAX_LD_WCC,
47.29208 ++  AVR32_SYNTAX_LD_WCS,
47.29209 ++  AVR32_SYNTAX_LD_WGE,
47.29210 ++  AVR32_SYNTAX_LD_WLT,
47.29211 ++  AVR32_SYNTAX_LD_WMI,
47.29212 ++  AVR32_SYNTAX_LD_WPL,
47.29213 ++  AVR32_SYNTAX_LD_WLS,
47.29214 ++  AVR32_SYNTAX_LD_WGT,
47.29215 ++  AVR32_SYNTAX_LD_WLE,
47.29216 ++  AVR32_SYNTAX_LD_WHI,
47.29217 ++  AVR32_SYNTAX_LD_WVS,
47.29218 ++  AVR32_SYNTAX_LD_WVC,
47.29219 ++  AVR32_SYNTAX_LD_WQS,
47.29220 ++  AVR32_SYNTAX_LD_WAL,
47.29221 ++  AVR32_SYNTAX_LD_WHS,
47.29222 ++  AVR32_SYNTAX_LD_WLO,
47.29223 ++  AVR32_SYNTAX_LD_SHEQ,
47.29224 ++  AVR32_SYNTAX_LD_SHNE,
47.29225 ++  AVR32_SYNTAX_LD_SHCC,
47.29226 ++  AVR32_SYNTAX_LD_SHCS,
47.29227 ++  AVR32_SYNTAX_LD_SHGE,
47.29228 ++  AVR32_SYNTAX_LD_SHLT,
47.29229 ++  AVR32_SYNTAX_LD_SHMI,
47.29230 ++  AVR32_SYNTAX_LD_SHPL,
47.29231 ++  AVR32_SYNTAX_LD_SHLS,
47.29232 ++  AVR32_SYNTAX_LD_SHGT,
47.29233 ++  AVR32_SYNTAX_LD_SHLE,
47.29234 ++  AVR32_SYNTAX_LD_SHHI,
47.29235 ++  AVR32_SYNTAX_LD_SHVS,
47.29236 ++  AVR32_SYNTAX_LD_SHVC,
47.29237 ++  AVR32_SYNTAX_LD_SHQS,
47.29238 ++  AVR32_SYNTAX_LD_SHAL,
47.29239 ++  AVR32_SYNTAX_LD_SHHS,
47.29240 ++  AVR32_SYNTAX_LD_SHLO,
47.29241 ++  AVR32_SYNTAX_LD_UHEQ,
47.29242 ++  AVR32_SYNTAX_LD_UHNE,
47.29243 ++  AVR32_SYNTAX_LD_UHCC,
47.29244 ++  AVR32_SYNTAX_LD_UHCS,
47.29245 ++  AVR32_SYNTAX_LD_UHGE,
47.29246 ++  AVR32_SYNTAX_LD_UHLT,
47.29247 ++  AVR32_SYNTAX_LD_UHMI,
47.29248 ++  AVR32_SYNTAX_LD_UHPL,
47.29249 ++  AVR32_SYNTAX_LD_UHLS,
47.29250 ++  AVR32_SYNTAX_LD_UHGT,
47.29251 ++  AVR32_SYNTAX_LD_UHLE,
47.29252 ++  AVR32_SYNTAX_LD_UHHI,
47.29253 ++  AVR32_SYNTAX_LD_UHVS,
47.29254 ++  AVR32_SYNTAX_LD_UHVC,
47.29255 ++  AVR32_SYNTAX_LD_UHQS,
47.29256 ++  AVR32_SYNTAX_LD_UHAL,
47.29257 ++  AVR32_SYNTAX_LD_UHHS,
47.29258 ++  AVR32_SYNTAX_LD_UHLO,
47.29259 ++  AVR32_SYNTAX_LD_SBEQ,
47.29260 ++  AVR32_SYNTAX_LD_SBNE,
47.29261 ++  AVR32_SYNTAX_LD_SBCC,
47.29262 ++  AVR32_SYNTAX_LD_SBCS,
47.29263 ++  AVR32_SYNTAX_LD_SBGE,
47.29264 ++  AVR32_SYNTAX_LD_SBLT,
47.29265 ++  AVR32_SYNTAX_LD_SBMI,
47.29266 ++  AVR32_SYNTAX_LD_SBPL,
47.29267 ++  AVR32_SYNTAX_LD_SBLS,
47.29268 ++  AVR32_SYNTAX_LD_SBGT,
47.29269 ++  AVR32_SYNTAX_LD_SBLE,
47.29270 ++  AVR32_SYNTAX_LD_SBHI,
47.29271 ++  AVR32_SYNTAX_LD_SBVS,
47.29272 ++  AVR32_SYNTAX_LD_SBVC,
47.29273 ++  AVR32_SYNTAX_LD_SBQS,
47.29274 ++  AVR32_SYNTAX_LD_SBAL,
47.29275 ++  AVR32_SYNTAX_LD_SBHS,
47.29276 ++  AVR32_SYNTAX_LD_SBLO,
47.29277 ++  AVR32_SYNTAX_LD_UBEQ,
47.29278 ++  AVR32_SYNTAX_LD_UBNE,
47.29279 ++  AVR32_SYNTAX_LD_UBCC,
47.29280 ++  AVR32_SYNTAX_LD_UBCS,
47.29281 ++  AVR32_SYNTAX_LD_UBGE,
47.29282 ++  AVR32_SYNTAX_LD_UBLT,
47.29283 ++  AVR32_SYNTAX_LD_UBMI,
47.29284 ++  AVR32_SYNTAX_LD_UBPL,
47.29285 ++  AVR32_SYNTAX_LD_UBLS,
47.29286 ++  AVR32_SYNTAX_LD_UBGT,
47.29287 ++  AVR32_SYNTAX_LD_UBLE,
47.29288 ++  AVR32_SYNTAX_LD_UBHI,
47.29289 ++  AVR32_SYNTAX_LD_UBVS,
47.29290 ++  AVR32_SYNTAX_LD_UBVC,
47.29291 ++  AVR32_SYNTAX_LD_UBQS,
47.29292 ++  AVR32_SYNTAX_LD_UBAL,
47.29293 ++  AVR32_SYNTAX_LD_UBHS,
47.29294 ++  AVR32_SYNTAX_LD_UBLO,
47.29295 ++  AVR32_SYNTAX_ST_WEQ,
47.29296 ++  AVR32_SYNTAX_ST_WNE,
47.29297 ++  AVR32_SYNTAX_ST_WCC,
47.29298 ++  AVR32_SYNTAX_ST_WCS,
47.29299 ++  AVR32_SYNTAX_ST_WGE,
47.29300 ++  AVR32_SYNTAX_ST_WLT,
47.29301 ++  AVR32_SYNTAX_ST_WMI,
47.29302 ++  AVR32_SYNTAX_ST_WPL,
47.29303 ++  AVR32_SYNTAX_ST_WLS,
47.29304 ++  AVR32_SYNTAX_ST_WGT,
47.29305 ++  AVR32_SYNTAX_ST_WLE,
47.29306 ++  AVR32_SYNTAX_ST_WHI,
47.29307 ++  AVR32_SYNTAX_ST_WVS,
47.29308 ++  AVR32_SYNTAX_ST_WVC,
47.29309 ++  AVR32_SYNTAX_ST_WQS,
47.29310 ++  AVR32_SYNTAX_ST_WAL,
47.29311 ++  AVR32_SYNTAX_ST_WHS,
47.29312 ++  AVR32_SYNTAX_ST_WLO,
47.29313 ++  AVR32_SYNTAX_ST_HEQ,
47.29314 ++  AVR32_SYNTAX_ST_HNE,
47.29315 ++  AVR32_SYNTAX_ST_HCC,
47.29316 ++  AVR32_SYNTAX_ST_HCS,
47.29317 ++  AVR32_SYNTAX_ST_HGE,
47.29318 ++  AVR32_SYNTAX_ST_HLT,
47.29319 ++  AVR32_SYNTAX_ST_HMI,
47.29320 ++  AVR32_SYNTAX_ST_HPL,
47.29321 ++  AVR32_SYNTAX_ST_HLS,
47.29322 ++  AVR32_SYNTAX_ST_HGT,
47.29323 ++  AVR32_SYNTAX_ST_HLE,
47.29324 ++  AVR32_SYNTAX_ST_HHI,
47.29325 ++  AVR32_SYNTAX_ST_HVS,
47.29326 ++  AVR32_SYNTAX_ST_HVC,
47.29327 ++  AVR32_SYNTAX_ST_HQS,
47.29328 ++  AVR32_SYNTAX_ST_HAL,
47.29329 ++  AVR32_SYNTAX_ST_HHS,
47.29330 ++  AVR32_SYNTAX_ST_HLO,
47.29331 ++  AVR32_SYNTAX_ST_BEQ,
47.29332 ++  AVR32_SYNTAX_ST_BNE,
47.29333 ++  AVR32_SYNTAX_ST_BCC,
47.29334 ++  AVR32_SYNTAX_ST_BCS,
47.29335 ++  AVR32_SYNTAX_ST_BGE,
47.29336 ++  AVR32_SYNTAX_ST_BLT,
47.29337 ++  AVR32_SYNTAX_ST_BMI,
47.29338 ++  AVR32_SYNTAX_ST_BPL,
47.29339 ++  AVR32_SYNTAX_ST_BLS,
47.29340 ++  AVR32_SYNTAX_ST_BGT,
47.29341 ++  AVR32_SYNTAX_ST_BLE,
47.29342 ++  AVR32_SYNTAX_ST_BHI,
47.29343 ++  AVR32_SYNTAX_ST_BVS,
47.29344 ++  AVR32_SYNTAX_ST_BVC,
47.29345 ++  AVR32_SYNTAX_ST_BQS,
47.29346 ++  AVR32_SYNTAX_ST_BAL,
47.29347 ++  AVR32_SYNTAX_ST_BHS,
47.29348 ++  AVR32_SYNTAX_ST_BLO,
47.29349 ++  AVR32_SYNTAX_MOVH,
47.29350 ++  AVR32_SYNTAX__END_
47.29351 ++};
47.29352 ++#define AVR32_NR_SYNTAX AVR32_SYNTAX__END_
47.29353 ++
47.29354 ++enum avr32_alias_type
47.29355 ++  {
47.29356 ++    AVR32_ALIAS_FMAC_S,
47.29357 ++    AVR32_ALIAS_FMAC_D,
47.29358 ++    AVR32_ALIAS_FNMAC_S,
47.29359 ++    AVR32_ALIAS_FNMAC_D,
47.29360 ++    AVR32_ALIAS_FMSC_S,
47.29361 ++    AVR32_ALIAS_FMSC_D,
47.29362 ++    AVR32_ALIAS_FNMSC_S,
47.29363 ++    AVR32_ALIAS_FNMSC_D,
47.29364 ++    AVR32_ALIAS_FADD_S,
47.29365 ++    AVR32_ALIAS_FADD_D,
47.29366 ++    AVR32_ALIAS_FSUB_S,
47.29367 ++    AVR32_ALIAS_FSUB_D,
47.29368 ++    AVR32_ALIAS_FMUL_S,
47.29369 ++    AVR32_ALIAS_FMUL_D,
47.29370 ++    AVR32_ALIAS_FNMUL_S,
47.29371 ++    AVR32_ALIAS_FNMUL_D,
47.29372 ++    AVR32_ALIAS_FNEG_S,
47.29373 ++    AVR32_ALIAS_FNEG_D,
47.29374 ++    AVR32_ALIAS_FABS_S,
47.29375 ++    AVR32_ALIAS_FABS_D,
47.29376 ++    AVR32_ALIAS_FCMP_S,
47.29377 ++    AVR32_ALIAS_FCMP_D,
47.29378 ++    AVR32_ALIAS_FMOV1_S,
47.29379 ++    AVR32_ALIAS_FMOV1_D,
47.29380 ++    AVR32_ALIAS_FMOV2_S,
47.29381 ++    AVR32_ALIAS_FMOV2_D,
47.29382 ++    AVR32_ALIAS_FMOV3_S,
47.29383 ++    AVR32_ALIAS_FMOV3_D,
47.29384 ++    AVR32_ALIAS_FCASTS_D,
47.29385 ++    AVR32_ALIAS_FCASTD_S,
47.29386 ++    AVR32_ALIAS_PICOSVMAC0,
47.29387 ++    AVR32_ALIAS_PICOSVMAC1,
47.29388 ++    AVR32_ALIAS_PICOSVMAC2,
47.29389 ++    AVR32_ALIAS_PICOSVMAC3,
47.29390 ++    AVR32_ALIAS_PICOSVMUL0,
47.29391 ++    AVR32_ALIAS_PICOSVMUL1,
47.29392 ++    AVR32_ALIAS_PICOSVMUL2,
47.29393 ++    AVR32_ALIAS_PICOSVMUL3,
47.29394 ++    AVR32_ALIAS_PICOVMAC0,
47.29395 ++    AVR32_ALIAS_PICOVMAC1,
47.29396 ++    AVR32_ALIAS_PICOVMAC2,
47.29397 ++    AVR32_ALIAS_PICOVMAC3,
47.29398 ++    AVR32_ALIAS_PICOVMUL0,
47.29399 ++    AVR32_ALIAS_PICOVMUL1,
47.29400 ++    AVR32_ALIAS_PICOVMUL2,
47.29401 ++    AVR32_ALIAS_PICOVMUL3,
47.29402 ++    AVR32_ALIAS_PICOLD_D1,
47.29403 ++    AVR32_ALIAS_PICOLD_D2,
47.29404 ++    AVR32_ALIAS_PICOLD_D3,
47.29405 ++    AVR32_ALIAS_PICOLD_W1,
47.29406 ++    AVR32_ALIAS_PICOLD_W2,
47.29407 ++    AVR32_ALIAS_PICOLD_W3,
47.29408 ++    AVR32_ALIAS_PICOLDM_D,
47.29409 ++    AVR32_ALIAS_PICOLDM_D_PU,
47.29410 ++    AVR32_ALIAS_PICOLDM_W,
47.29411 ++    AVR32_ALIAS_PICOLDM_W_PU,
47.29412 ++    AVR32_ALIAS_PICOMV_D1,
47.29413 ++    AVR32_ALIAS_PICOMV_D2,
47.29414 ++    AVR32_ALIAS_PICOMV_W1,
47.29415 ++    AVR32_ALIAS_PICOMV_W2,
47.29416 ++    AVR32_ALIAS_PICOST_D1,
47.29417 ++    AVR32_ALIAS_PICOST_D2,
47.29418 ++    AVR32_ALIAS_PICOST_D3,
47.29419 ++    AVR32_ALIAS_PICOST_W1,
47.29420 ++    AVR32_ALIAS_PICOST_W2,
47.29421 ++    AVR32_ALIAS_PICOST_W3,
47.29422 ++    AVR32_ALIAS_PICOSTM_D,
47.29423 ++    AVR32_ALIAS_PICOSTM_D_PU,
47.29424 ++    AVR32_ALIAS_PICOSTM_W,
47.29425 ++    AVR32_ALIAS_PICOSTM_W_PU,
47.29426 ++    AVR32_ALIAS__END_
47.29427 ++  };
47.29428 ++#define AVR32_NR_ALIAS AVR32_ALIAS__END_
47.29429 ++
47.29430 ++enum avr32_mnemonic_type
47.29431 ++{
47.29432 ++  AVR32_MNEMONIC_ABS,
47.29433 ++  AVR32_MNEMONIC_ACALL,
47.29434 ++  AVR32_MNEMONIC_ACR,
47.29435 ++  AVR32_MNEMONIC_ADC,
47.29436 ++  AVR32_MNEMONIC_ADD,
47.29437 ++  AVR32_MNEMONIC_ADDABS,
47.29438 ++  AVR32_MNEMONIC_ADDHH_W,
47.29439 ++  AVR32_MNEMONIC_AND,
47.29440 ++  AVR32_MNEMONIC_ANDH,
47.29441 ++  AVR32_MNEMONIC_ANDL,
47.29442 ++  AVR32_MNEMONIC_ANDN,
47.29443 ++  AVR32_MNEMONIC_ASR,
47.29444 ++  AVR32_MNEMONIC_BFEXTS,
47.29445 ++  AVR32_MNEMONIC_BFEXTU,
47.29446 ++  AVR32_MNEMONIC_BFINS,
47.29447 ++  AVR32_MNEMONIC_BLD,
47.29448 ++  AVR32_MNEMONIC_BREQ,
47.29449 ++  AVR32_MNEMONIC_BRNE,
47.29450 ++  AVR32_MNEMONIC_BRCC,
47.29451 ++  AVR32_MNEMONIC_BRCS,
47.29452 ++  AVR32_MNEMONIC_BRGE,
47.29453 ++  AVR32_MNEMONIC_BRLT,
47.29454 ++  AVR32_MNEMONIC_BRMI,
47.29455 ++  AVR32_MNEMONIC_BRPL,
47.29456 ++  AVR32_MNEMONIC_BRHS,
47.29457 ++  AVR32_MNEMONIC_BRLO,
47.29458 ++  AVR32_MNEMONIC_BRLS,
47.29459 ++  AVR32_MNEMONIC_BRGT,
47.29460 ++  AVR32_MNEMONIC_BRLE,
47.29461 ++  AVR32_MNEMONIC_BRHI,
47.29462 ++  AVR32_MNEMONIC_BRVS,
47.29463 ++  AVR32_MNEMONIC_BRVC,
47.29464 ++  AVR32_MNEMONIC_BRQS,
47.29465 ++  AVR32_MNEMONIC_BRAL,
47.29466 ++  AVR32_MNEMONIC_BREAKPOINT,
47.29467 ++  AVR32_MNEMONIC_BREV,
47.29468 ++  AVR32_MNEMONIC_BST,
47.29469 ++  AVR32_MNEMONIC_CACHE,
47.29470 ++  AVR32_MNEMONIC_CASTS_B,
47.29471 ++  AVR32_MNEMONIC_CASTS_H,
47.29472 ++  AVR32_MNEMONIC_CASTU_B,
47.29473 ++  AVR32_MNEMONIC_CASTU_H,
47.29474 ++  AVR32_MNEMONIC_CBR,
47.29475 ++  AVR32_MNEMONIC_CLZ,
47.29476 ++  AVR32_MNEMONIC_COM,
47.29477 ++  AVR32_MNEMONIC_COP,
47.29478 ++  AVR32_MNEMONIC_CP_B,
47.29479 ++  AVR32_MNEMONIC_CP_H,
47.29480 ++  AVR32_MNEMONIC_CP_W,
47.29481 ++  AVR32_MNEMONIC_CP,
47.29482 ++  AVR32_MNEMONIC_CPC,
47.29483 ++  AVR32_MNEMONIC_CSRF,
47.29484 ++  AVR32_MNEMONIC_CSRFCZ,
47.29485 ++  AVR32_MNEMONIC_DIVS,
47.29486 ++  AVR32_MNEMONIC_DIVU,
47.29487 ++  AVR32_MNEMONIC_EOR,
47.29488 ++  AVR32_MNEMONIC_EORL,
47.29489 ++  AVR32_MNEMONIC_EORH,
47.29490 ++  AVR32_MNEMONIC_FRS,
47.29491 ++  AVR32_MNEMONIC_ICALL,
47.29492 ++  AVR32_MNEMONIC_INCJOSP,
47.29493 ++  AVR32_MNEMONIC_LD_D,
47.29494 ++  AVR32_MNEMONIC_LD_SB,
47.29495 ++  AVR32_MNEMONIC_LD_UB,
47.29496 ++  AVR32_MNEMONIC_LD_SH,
47.29497 ++  AVR32_MNEMONIC_LD_UH,
47.29498 ++  AVR32_MNEMONIC_LD_W,
47.29499 ++  AVR32_MNEMONIC_LDC_D,
47.29500 ++  AVR32_MNEMONIC_LDC_W,
47.29501 ++  AVR32_MNEMONIC_LDC0_D,
47.29502 ++  AVR32_MNEMONIC_LDC0_W,
47.29503 ++  AVR32_MNEMONIC_LDCM_D,
47.29504 ++  AVR32_MNEMONIC_LDCM_W,
47.29505 ++  AVR32_MNEMONIC_LDDPC,
47.29506 ++  AVR32_MNEMONIC_LDDSP,
47.29507 ++  AVR32_MNEMONIC_LDINS_B,
47.29508 ++  AVR32_MNEMONIC_LDINS_H,
47.29509 ++  AVR32_MNEMONIC_LDM,
47.29510 ++  AVR32_MNEMONIC_LDMTS,
47.29511 ++  AVR32_MNEMONIC_LDSWP_SH,
47.29512 ++  AVR32_MNEMONIC_LDSWP_UH,
47.29513 ++  AVR32_MNEMONIC_LDSWP_W,
47.29514 ++  AVR32_MNEMONIC_LSL,
47.29515 ++  AVR32_MNEMONIC_LSR,
47.29516 ++  AVR32_MNEMONIC_MAC,
47.29517 ++  AVR32_MNEMONIC_MACHH_D,
47.29518 ++  AVR32_MNEMONIC_MACHH_W,
47.29519 ++  AVR32_MNEMONIC_MACS_D,
47.29520 ++  AVR32_MNEMONIC_MACSATHH_W,
47.29521 ++  AVR32_MNEMONIC_MACU_D,
47.29522 ++  AVR32_MNEMONIC_MACWH_D,
47.29523 ++  AVR32_MNEMONIC_MAX,
47.29524 ++  AVR32_MNEMONIC_MCALL,
47.29525 ++  AVR32_MNEMONIC_MFDR,
47.29526 ++  AVR32_MNEMONIC_MFSR,
47.29527 ++  AVR32_MNEMONIC_MIN,
47.29528 ++  AVR32_MNEMONIC_MOV,
47.29529 ++  AVR32_MNEMONIC_MOVEQ,
47.29530 ++  AVR32_MNEMONIC_MOVNE,
47.29531 ++  AVR32_MNEMONIC_MOVCC,
47.29532 ++  AVR32_MNEMONIC_MOVCS,
47.29533 ++  AVR32_MNEMONIC_MOVGE,
47.29534 ++  AVR32_MNEMONIC_MOVLT,
47.29535 ++  AVR32_MNEMONIC_MOVMI,
47.29536 ++  AVR32_MNEMONIC_MOVPL,
47.29537 ++  AVR32_MNEMONIC_MOVLS,
47.29538 ++  AVR32_MNEMONIC_MOVGT,
47.29539 ++  AVR32_MNEMONIC_MOVLE,
47.29540 ++  AVR32_MNEMONIC_MOVHI,
47.29541 ++  AVR32_MNEMONIC_MOVVS,
47.29542 ++  AVR32_MNEMONIC_MOVVC,
47.29543 ++  AVR32_MNEMONIC_MOVQS,
47.29544 ++  AVR32_MNEMONIC_MOVAL,
47.29545 ++  AVR32_MNEMONIC_MOVHS,
47.29546 ++  AVR32_MNEMONIC_MOVLO,
47.29547 ++  AVR32_MNEMONIC_MTDR,
47.29548 ++  AVR32_MNEMONIC_MTSR,
47.29549 ++  AVR32_MNEMONIC_MUL,
47.29550 ++  AVR32_MNEMONIC_MULHH_W,
47.29551 ++  AVR32_MNEMONIC_MULNHH_W,
47.29552 ++  AVR32_MNEMONIC_MULNWH_D,
47.29553 ++  AVR32_MNEMONIC_MULS_D,
47.29554 ++  AVR32_MNEMONIC_MULSATHH_H,
47.29555 ++  AVR32_MNEMONIC_MULSATHH_W,
47.29556 ++  AVR32_MNEMONIC_MULSATRNDHH_H,
47.29557 ++  AVR32_MNEMONIC_MULSATRNDWH_W,
47.29558 ++  AVR32_MNEMONIC_MULSATWH_W,
47.29559 ++  AVR32_MNEMONIC_MULU_D,
47.29560 ++  AVR32_MNEMONIC_MULWH_D,
47.29561 ++  AVR32_MNEMONIC_MUSFR,
47.29562 ++  AVR32_MNEMONIC_MUSTR,
47.29563 ++  AVR32_MNEMONIC_MVCR_D,
47.29564 ++  AVR32_MNEMONIC_MVCR_W,
47.29565 ++  AVR32_MNEMONIC_MVRC_D,
47.29566 ++  AVR32_MNEMONIC_MVRC_W,
47.29567 ++  AVR32_MNEMONIC_NEG,
47.29568 ++  AVR32_MNEMONIC_NOP,
47.29569 ++  AVR32_MNEMONIC_OR,
47.29570 ++  AVR32_MNEMONIC_ORH,
47.29571 ++  AVR32_MNEMONIC_ORL,
47.29572 ++  AVR32_MNEMONIC_PABS_SB,
47.29573 ++  AVR32_MNEMONIC_PABS_SH,
47.29574 ++  AVR32_MNEMONIC_PACKSH_SB,
47.29575 ++  AVR32_MNEMONIC_PACKSH_UB,
47.29576 ++  AVR32_MNEMONIC_PACKW_SH,
47.29577 ++  AVR32_MNEMONIC_PADD_B,
47.29578 ++  AVR32_MNEMONIC_PADD_H,
47.29579 ++  AVR32_MNEMONIC_PADDH_SH,
47.29580 ++  AVR32_MNEMONIC_PADDH_UB,
47.29581 ++  AVR32_MNEMONIC_PADDS_SB,
47.29582 ++  AVR32_MNEMONIC_PADDS_SH,
47.29583 ++  AVR32_MNEMONIC_PADDS_UB,
47.29584 ++  AVR32_MNEMONIC_PADDS_UH,
47.29585 ++  AVR32_MNEMONIC_PADDSUB_H,
47.29586 ++  AVR32_MNEMONIC_PADDSUBH_SH,
47.29587 ++  AVR32_MNEMONIC_PADDSUBS_SH,
47.29588 ++  AVR32_MNEMONIC_PADDSUBS_UH,
47.29589 ++  AVR32_MNEMONIC_PADDX_H,
47.29590 ++  AVR32_MNEMONIC_PADDXH_SH,
47.29591 ++  AVR32_MNEMONIC_PADDXS_SH,
47.29592 ++  AVR32_MNEMONIC_PADDXS_UH,
47.29593 ++  AVR32_MNEMONIC_PASR_B,
47.29594 ++  AVR32_MNEMONIC_PASR_H,
47.29595 ++  AVR32_MNEMONIC_PAVG_SH,
47.29596 ++  AVR32_MNEMONIC_PAVG_UB,
47.29597 ++  AVR32_MNEMONIC_PLSL_B,
47.29598 ++  AVR32_MNEMONIC_PLSL_H,
47.29599 ++  AVR32_MNEMONIC_PLSR_B,
47.29600 ++  AVR32_MNEMONIC_PLSR_H,
47.29601 ++  AVR32_MNEMONIC_PMAX_SH,
47.29602 ++  AVR32_MNEMONIC_PMAX_UB,
47.29603 ++  AVR32_MNEMONIC_PMIN_SH,
47.29604 ++  AVR32_MNEMONIC_PMIN_UB,
47.29605 ++  AVR32_MNEMONIC_POPJC,
47.29606 ++  AVR32_MNEMONIC_POPM,
47.29607 ++  AVR32_MNEMONIC_PREF,
47.29608 ++  AVR32_MNEMONIC_PSAD,
47.29609 ++  AVR32_MNEMONIC_PSUB_B,
47.29610 ++  AVR32_MNEMONIC_PSUB_H,
47.29611 ++  AVR32_MNEMONIC_PSUBADD_H,
47.29612 ++  AVR32_MNEMONIC_PSUBADDH_SH,
47.29613 ++  AVR32_MNEMONIC_PSUBADDS_SH,
47.29614 ++  AVR32_MNEMONIC_PSUBADDS_UH,
47.29615 ++  AVR32_MNEMONIC_PSUBH_SH,
47.29616 ++  AVR32_MNEMONIC_PSUBH_UB,
47.29617 ++  AVR32_MNEMONIC_PSUBS_SB,
47.29618 ++  AVR32_MNEMONIC_PSUBS_SH,
47.29619 ++  AVR32_MNEMONIC_PSUBS_UB,
47.29620 ++  AVR32_MNEMONIC_PSUBS_UH,
47.29621 ++  AVR32_MNEMONIC_PSUBX_H,
47.29622 ++  AVR32_MNEMONIC_PSUBXH_SH,
47.29623 ++  AVR32_MNEMONIC_PSUBXS_SH,
47.29624 ++  AVR32_MNEMONIC_PSUBXS_UH,
47.29625 ++  AVR32_MNEMONIC_PUNPCKSB_H,
47.29626 ++  AVR32_MNEMONIC_PUNPCKUB_H,
47.29627 ++  AVR32_MNEMONIC_PUSHJC,
47.29628 ++  AVR32_MNEMONIC_PUSHM,
47.29629 ++  AVR32_MNEMONIC_RCALL,
47.29630 ++  AVR32_MNEMONIC_RETEQ,
47.29631 ++  AVR32_MNEMONIC_RETNE,
47.29632 ++  AVR32_MNEMONIC_RETCC,
47.29633 ++  AVR32_MNEMONIC_RETCS,
47.29634 ++  AVR32_MNEMONIC_RETGE,
47.29635 ++  AVR32_MNEMONIC_RETLT,
47.29636 ++  AVR32_MNEMONIC_RETMI,
47.29637 ++  AVR32_MNEMONIC_RETPL,
47.29638 ++  AVR32_MNEMONIC_RETLS,
47.29639 ++  AVR32_MNEMONIC_RETGT,
47.29640 ++  AVR32_MNEMONIC_RETLE,
47.29641 ++  AVR32_MNEMONIC_RETHI,
47.29642 ++  AVR32_MNEMONIC_RETVS,
47.29643 ++  AVR32_MNEMONIC_RETVC,
47.29644 ++  AVR32_MNEMONIC_RETQS,
47.29645 ++  AVR32_MNEMONIC_RETAL,
47.29646 ++  AVR32_MNEMONIC_RETHS,
47.29647 ++  AVR32_MNEMONIC_RETLO,
47.29648 ++  AVR32_MNEMONIC_RET,
47.29649 ++  AVR32_MNEMONIC_RETD,
47.29650 ++  AVR32_MNEMONIC_RETE,
47.29651 ++  AVR32_MNEMONIC_RETJ,
47.29652 ++  AVR32_MNEMONIC_RETS,
47.29653 ++  AVR32_MNEMONIC_RJMP,
47.29654 ++  AVR32_MNEMONIC_ROL,
47.29655 ++  AVR32_MNEMONIC_ROR,
47.29656 ++  AVR32_MNEMONIC_RSUB,
47.29657 ++  AVR32_MNEMONIC_SATADD_H,
47.29658 ++  AVR32_MNEMONIC_SATADD_W,
47.29659 ++  AVR32_MNEMONIC_SATRNDS,
47.29660 ++  AVR32_MNEMONIC_SATRNDU,
47.29661 ++  AVR32_MNEMONIC_SATS,
47.29662 ++  AVR32_MNEMONIC_SATSUB_H,
47.29663 ++  AVR32_MNEMONIC_SATSUB_W,
47.29664 ++  AVR32_MNEMONIC_SATU,
47.29665 ++  AVR32_MNEMONIC_SBC,
47.29666 ++  AVR32_MNEMONIC_SBR,
47.29667 ++  AVR32_MNEMONIC_SCALL,
47.29668 ++  AVR32_MNEMONIC_SCR,
47.29669 ++  AVR32_MNEMONIC_SLEEP,
47.29670 ++  AVR32_MNEMONIC_SREQ,
47.29671 ++  AVR32_MNEMONIC_SRNE,
47.29672 ++  AVR32_MNEMONIC_SRCC,
47.29673 ++  AVR32_MNEMONIC_SRCS,
47.29674 ++  AVR32_MNEMONIC_SRGE,
47.29675 ++  AVR32_MNEMONIC_SRLT,
47.29676 ++  AVR32_MNEMONIC_SRMI,
47.29677 ++  AVR32_MNEMONIC_SRPL,
47.29678 ++  AVR32_MNEMONIC_SRLS,
47.29679 ++  AVR32_MNEMONIC_SRGT,
47.29680 ++  AVR32_MNEMONIC_SRLE,
47.29681 ++  AVR32_MNEMONIC_SRHI,
47.29682 ++  AVR32_MNEMONIC_SRVS,
47.29683 ++  AVR32_MNEMONIC_SRVC,
47.29684 ++  AVR32_MNEMONIC_SRQS,
47.29685 ++  AVR32_MNEMONIC_SRAL,
47.29686 ++  AVR32_MNEMONIC_SRHS,
47.29687 ++  AVR32_MNEMONIC_SRLO,
47.29688 ++  AVR32_MNEMONIC_SSRF,
47.29689 ++  AVR32_MNEMONIC_ST_B,
47.29690 ++  AVR32_MNEMONIC_ST_D,
47.29691 ++  AVR32_MNEMONIC_ST_H,
47.29692 ++  AVR32_MNEMONIC_ST_W,
47.29693 ++  AVR32_MNEMONIC_STC_D,
47.29694 ++  AVR32_MNEMONIC_STC_W,
47.29695 ++  AVR32_MNEMONIC_STC0_D,
47.29696 ++  AVR32_MNEMONIC_STC0_W,
47.29697 ++  AVR32_MNEMONIC_STCM_D,
47.29698 ++  AVR32_MNEMONIC_STCM_W,
47.29699 ++  AVR32_MNEMONIC_STCOND,
47.29700 ++  AVR32_MNEMONIC_STDSP,
47.29701 ++  AVR32_MNEMONIC_STHH_W,
47.29702 ++  AVR32_MNEMONIC_STM,
47.29703 ++  AVR32_MNEMONIC_STMTS,
47.29704 ++  AVR32_MNEMONIC_STSWP_H,
47.29705 ++  AVR32_MNEMONIC_STSWP_W,
47.29706 ++  AVR32_MNEMONIC_SUB,
47.29707 ++  AVR32_MNEMONIC_SUBEQ,
47.29708 ++  AVR32_MNEMONIC_SUBNE,
47.29709 ++  AVR32_MNEMONIC_SUBCC,
47.29710 ++  AVR32_MNEMONIC_SUBCS,
47.29711 ++  AVR32_MNEMONIC_SUBGE,
47.29712 ++  AVR32_MNEMONIC_SUBLT,
47.29713 ++  AVR32_MNEMONIC_SUBMI,
47.29714 ++  AVR32_MNEMONIC_SUBPL,
47.29715 ++  AVR32_MNEMONIC_SUBLS,
47.29716 ++  AVR32_MNEMONIC_SUBGT,
47.29717 ++  AVR32_MNEMONIC_SUBLE,
47.29718 ++  AVR32_MNEMONIC_SUBHI,
47.29719 ++  AVR32_MNEMONIC_SUBVS,
47.29720 ++  AVR32_MNEMONIC_SUBVC,
47.29721 ++  AVR32_MNEMONIC_SUBQS,
47.29722 ++  AVR32_MNEMONIC_SUBAL,
47.29723 ++  AVR32_MNEMONIC_SUBHS,
47.29724 ++  AVR32_MNEMONIC_SUBLO,
47.29725 ++  AVR32_MNEMONIC_SUBFEQ,
47.29726 ++  AVR32_MNEMONIC_SUBFNE,
47.29727 ++  AVR32_MNEMONIC_SUBFCC,
47.29728 ++  AVR32_MNEMONIC_SUBFCS,
47.29729 ++  AVR32_MNEMONIC_SUBFGE,
47.29730 ++  AVR32_MNEMONIC_SUBFLT,
47.29731 ++  AVR32_MNEMONIC_SUBFMI,
47.29732 ++  AVR32_MNEMONIC_SUBFPL,
47.29733 ++  AVR32_MNEMONIC_SUBFLS,
47.29734 ++  AVR32_MNEMONIC_SUBFGT,
47.29735 ++  AVR32_MNEMONIC_SUBFLE,
47.29736 ++  AVR32_MNEMONIC_SUBFHI,
47.29737 ++  AVR32_MNEMONIC_SUBFVS,
47.29738 ++  AVR32_MNEMONIC_SUBFVC,
47.29739 ++  AVR32_MNEMONIC_SUBFQS,
47.29740 ++  AVR32_MNEMONIC_SUBFAL,
47.29741 ++  AVR32_MNEMONIC_SUBFHS,
47.29742 ++  AVR32_MNEMONIC_SUBFLO,
47.29743 ++  AVR32_MNEMONIC_SUBHH_W,
47.29744 ++  AVR32_MNEMONIC_SWAP_B,
47.29745 ++  AVR32_MNEMONIC_SWAP_BH,
47.29746 ++  AVR32_MNEMONIC_SWAP_H,
47.29747 ++  AVR32_MNEMONIC_SYNC,
47.29748 ++  AVR32_MNEMONIC_TLBR,
47.29749 ++  AVR32_MNEMONIC_TLBS,
47.29750 ++  AVR32_MNEMONIC_TLBW,
47.29751 ++  AVR32_MNEMONIC_TNBZ,
47.29752 ++  AVR32_MNEMONIC_TST,
47.29753 ++  AVR32_MNEMONIC_XCHG,
47.29754 ++  AVR32_MNEMONIC_MEMC,
47.29755 ++  AVR32_MNEMONIC_MEMS,
47.29756 ++  AVR32_MNEMONIC_MEMT,
47.29757 ++  AVR32_MNEMONIC_FADD_S,
47.29758 ++  AVR32_MNEMONIC_FADD_D,
47.29759 ++  AVR32_MNEMONIC_FSUB_S,
47.29760 ++  AVR32_MNEMONIC_FSUB_D,
47.29761 ++  AVR32_MNEMONIC_FMAC_S,
47.29762 ++  AVR32_MNEMONIC_FMAC_D,
47.29763 ++  AVR32_MNEMONIC_FNMAC_S,
47.29764 ++  AVR32_MNEMONIC_FNMAC_D,
47.29765 ++  AVR32_MNEMONIC_FMSC_S,
47.29766 ++  AVR32_MNEMONIC_FMSC_D,
47.29767 ++  AVR32_MNEMONIC_FNMSC_S,
47.29768 ++  AVR32_MNEMONIC_FNMSC_D,
47.29769 ++  AVR32_MNEMONIC_FMUL_S,
47.29770 ++  AVR32_MNEMONIC_FMUL_D,
47.29771 ++  AVR32_MNEMONIC_FNMUL_S,
47.29772 ++  AVR32_MNEMONIC_FNMUL_D,
47.29773 ++  AVR32_MNEMONIC_FNEG_S,
47.29774 ++  AVR32_MNEMONIC_FNEG_D,
47.29775 ++  AVR32_MNEMONIC_FABS_S,
47.29776 ++  AVR32_MNEMONIC_FABS_D,
47.29777 ++  AVR32_MNEMONIC_FCMP_S,
47.29778 ++  AVR32_MNEMONIC_FCMP_D,
47.29779 ++  AVR32_MNEMONIC_FMOV_S,
47.29780 ++  AVR32_MNEMONIC_FMOV_D,
47.29781 ++  AVR32_MNEMONIC_FCASTS_D,
47.29782 ++  AVR32_MNEMONIC_FCASTD_S,
47.29783 ++  /* AVR32_MNEMONIC_FLD_S,
47.29784 ++     AVR32_MNEMONIC_FLD_D,
47.29785 ++     AVR32_MNEMONIC_FST_S,
47.29786 ++     AVR32_MNEMONIC_FST_D, */
47.29787 ++  AVR32_MNEMONIC_LDA_W,
47.29788 ++  AVR32_MNEMONIC_CALL,
47.29789 ++  AVR32_MNEMONIC_PICOSVMAC,
47.29790 ++  AVR32_MNEMONIC_PICOSVMUL,
47.29791 ++  AVR32_MNEMONIC_PICOVMAC,
47.29792 ++  AVR32_MNEMONIC_PICOVMUL,
47.29793 ++  AVR32_MNEMONIC_PICOLD_D,
47.29794 ++  AVR32_MNEMONIC_PICOLD_W,
47.29795 ++  AVR32_MNEMONIC_PICOLDM_D,
47.29796 ++  AVR32_MNEMONIC_PICOLDM_W,
47.29797 ++  AVR32_MNEMONIC_PICOMV_D,
47.29798 ++  AVR32_MNEMONIC_PICOMV_W,
47.29799 ++  AVR32_MNEMONIC_PICOST_D,
47.29800 ++  AVR32_MNEMONIC_PICOST_W,
47.29801 ++  AVR32_MNEMONIC_PICOSTM_D,
47.29802 ++  AVR32_MNEMONIC_PICOSTM_W,
47.29803 ++  AVR32_MNEMONIC_RSUBEQ,
47.29804 ++  AVR32_MNEMONIC_RSUBNE,
47.29805 ++  AVR32_MNEMONIC_RSUBCC,
47.29806 ++  AVR32_MNEMONIC_RSUBCS,
47.29807 ++  AVR32_MNEMONIC_RSUBGE,
47.29808 ++  AVR32_MNEMONIC_RSUBLT,
47.29809 ++  AVR32_MNEMONIC_RSUBMI,
47.29810 ++  AVR32_MNEMONIC_RSUBPL,
47.29811 ++  AVR32_MNEMONIC_RSUBLS,
47.29812 ++  AVR32_MNEMONIC_RSUBGT,
47.29813 ++  AVR32_MNEMONIC_RSUBLE,
47.29814 ++  AVR32_MNEMONIC_RSUBHI,
47.29815 ++  AVR32_MNEMONIC_RSUBVS,
47.29816 ++  AVR32_MNEMONIC_RSUBVC,
47.29817 ++  AVR32_MNEMONIC_RSUBQS,
47.29818 ++  AVR32_MNEMONIC_RSUBAL,
47.29819 ++  AVR32_MNEMONIC_RSUBHS,
47.29820 ++  AVR32_MNEMONIC_RSUBLO,
47.29821 ++  AVR32_MNEMONIC_ADDEQ,
47.29822 ++  AVR32_MNEMONIC_ADDNE,
47.29823 ++  AVR32_MNEMONIC_ADDCC,
47.29824 ++  AVR32_MNEMONIC_ADDCS,
47.29825 ++  AVR32_MNEMONIC_ADDGE,
47.29826 ++  AVR32_MNEMONIC_ADDLT,
47.29827 ++  AVR32_MNEMONIC_ADDMI,
47.29828 ++  AVR32_MNEMONIC_ADDPL,
47.29829 ++  AVR32_MNEMONIC_ADDLS,
47.29830 ++  AVR32_MNEMONIC_ADDGT,
47.29831 ++  AVR32_MNEMONIC_ADDLE,
47.29832 ++  AVR32_MNEMONIC_ADDHI,
47.29833 ++  AVR32_MNEMONIC_ADDVS,
47.29834 ++  AVR32_MNEMONIC_ADDVC,
47.29835 ++  AVR32_MNEMONIC_ADDQS,
47.29836 ++  AVR32_MNEMONIC_ADDAL,
47.29837 ++  AVR32_MNEMONIC_ADDHS,
47.29838 ++  AVR32_MNEMONIC_ADDLO,
47.29839 ++  AVR32_MNEMONIC_ANDEQ,
47.29840 ++  AVR32_MNEMONIC_ANDNE,
47.29841 ++  AVR32_MNEMONIC_ANDCC,
47.29842 ++  AVR32_MNEMONIC_ANDCS,
47.29843 ++  AVR32_MNEMONIC_ANDGE,
47.29844 ++  AVR32_MNEMONIC_ANDLT,
47.29845 ++  AVR32_MNEMONIC_ANDMI,
47.29846 ++  AVR32_MNEMONIC_ANDPL,
47.29847 ++  AVR32_MNEMONIC_ANDLS,
47.29848 ++  AVR32_MNEMONIC_ANDGT,
47.29849 ++  AVR32_MNEMONIC_ANDLE,
47.29850 ++  AVR32_MNEMONIC_ANDHI,
47.29851 ++  AVR32_MNEMONIC_ANDVS,
47.29852 ++  AVR32_MNEMONIC_ANDVC,
47.29853 ++  AVR32_MNEMONIC_ANDQS,
47.29854 ++  AVR32_MNEMONIC_ANDAL,
47.29855 ++  AVR32_MNEMONIC_ANDHS,
47.29856 ++  AVR32_MNEMONIC_ANDLO,
47.29857 ++  AVR32_MNEMONIC_OREQ,
47.29858 ++  AVR32_MNEMONIC_ORNE,
47.29859 ++  AVR32_MNEMONIC_ORCC,
47.29860 ++  AVR32_MNEMONIC_ORCS,
47.29861 ++  AVR32_MNEMONIC_ORGE,
47.29862 ++  AVR32_MNEMONIC_ORLT,
47.29863 ++  AVR32_MNEMONIC_ORMI,
47.29864 ++  AVR32_MNEMONIC_ORPL,
47.29865 ++  AVR32_MNEMONIC_ORLS,
47.29866 ++  AVR32_MNEMONIC_ORGT,
47.29867 ++  AVR32_MNEMONIC_ORLE,
47.29868 ++  AVR32_MNEMONIC_ORHI,
47.29869 ++  AVR32_MNEMONIC_ORVS,
47.29870 ++  AVR32_MNEMONIC_ORVC,
47.29871 ++  AVR32_MNEMONIC_ORQS,
47.29872 ++  AVR32_MNEMONIC_ORAL,
47.29873 ++  AVR32_MNEMONIC_ORHS,
47.29874 ++  AVR32_MNEMONIC_ORLO,
47.29875 ++  AVR32_MNEMONIC_EOREQ,
47.29876 ++  AVR32_MNEMONIC_EORNE,
47.29877 ++  AVR32_MNEMONIC_EORCC,
47.29878 ++  AVR32_MNEMONIC_EORCS,
47.29879 ++  AVR32_MNEMONIC_EORGE,
47.29880 ++  AVR32_MNEMONIC_EORLT,
47.29881 ++  AVR32_MNEMONIC_EORMI,
47.29882 ++  AVR32_MNEMONIC_EORPL,
47.29883 ++  AVR32_MNEMONIC_EORLS,
47.29884 ++  AVR32_MNEMONIC_EORGT,
47.29885 ++  AVR32_MNEMONIC_EORLE,
47.29886 ++  AVR32_MNEMONIC_EORHI,
47.29887 ++  AVR32_MNEMONIC_EORVS,
47.29888 ++  AVR32_MNEMONIC_EORVC,
47.29889 ++  AVR32_MNEMONIC_EORQS,
47.29890 ++  AVR32_MNEMONIC_EORAL,
47.29891 ++  AVR32_MNEMONIC_EORHS,
47.29892 ++  AVR32_MNEMONIC_EORLO,
47.29893 ++  AVR32_MNEMONIC_LD_WEQ,
47.29894 ++  AVR32_MNEMONIC_LD_WNE,
47.29895 ++  AVR32_MNEMONIC_LD_WCC,
47.29896 ++  AVR32_MNEMONIC_LD_WCS,
47.29897 ++  AVR32_MNEMONIC_LD_WGE,
47.29898 ++  AVR32_MNEMONIC_LD_WLT,
47.29899 ++  AVR32_MNEMONIC_LD_WMI,
47.29900 ++  AVR32_MNEMONIC_LD_WPL,
47.29901 ++  AVR32_MNEMONIC_LD_WLS,
47.29902 ++  AVR32_MNEMONIC_LD_WGT,
47.29903 ++  AVR32_MNEMONIC_LD_WLE,
47.29904 ++  AVR32_MNEMONIC_LD_WHI,
47.29905 ++  AVR32_MNEMONIC_LD_WVS,
47.29906 ++  AVR32_MNEMONIC_LD_WVC,
47.29907 ++  AVR32_MNEMONIC_LD_WQS,
47.29908 ++  AVR32_MNEMONIC_LD_WAL,
47.29909 ++  AVR32_MNEMONIC_LD_WHS,
47.29910 ++  AVR32_MNEMONIC_LD_WLO,
47.29911 ++  AVR32_MNEMONIC_LD_SHEQ,
47.29912 ++  AVR32_MNEMONIC_LD_SHNE,
47.29913 ++  AVR32_MNEMONIC_LD_SHCC,
47.29914 ++  AVR32_MNEMONIC_LD_SHCS,
47.29915 ++  AVR32_MNEMONIC_LD_SHGE,
47.29916 ++  AVR32_MNEMONIC_LD_SHLT,
47.29917 ++  AVR32_MNEMONIC_LD_SHMI,
47.29918 ++  AVR32_MNEMONIC_LD_SHPL,
47.29919 ++  AVR32_MNEMONIC_LD_SHLS,
47.29920 ++  AVR32_MNEMONIC_LD_SHGT,
47.29921 ++  AVR32_MNEMONIC_LD_SHLE,
47.29922 ++  AVR32_MNEMONIC_LD_SHHI,
47.29923 ++  AVR32_MNEMONIC_LD_SHVS,
47.29924 ++  AVR32_MNEMONIC_LD_SHVC,
47.29925 ++  AVR32_MNEMONIC_LD_SHQS,
47.29926 ++  AVR32_MNEMONIC_LD_SHAL,
47.29927 ++  AVR32_MNEMONIC_LD_SHHS,
47.29928 ++  AVR32_MNEMONIC_LD_SHLO,
47.29929 ++  AVR32_MNEMONIC_LD_UHEQ,
47.29930 ++  AVR32_MNEMONIC_LD_UHNE,
47.29931 ++  AVR32_MNEMONIC_LD_UHCC,
47.29932 ++  AVR32_MNEMONIC_LD_UHCS,
47.29933 ++  AVR32_MNEMONIC_LD_UHGE,
47.29934 ++  AVR32_MNEMONIC_LD_UHLT,
47.29935 ++  AVR32_MNEMONIC_LD_UHMI,
47.29936 ++  AVR32_MNEMONIC_LD_UHPL,
47.29937 ++  AVR32_MNEMONIC_LD_UHLS,
47.29938 ++  AVR32_MNEMONIC_LD_UHGT,
47.29939 ++  AVR32_MNEMONIC_LD_UHLE,
47.29940 ++  AVR32_MNEMONIC_LD_UHHI,
47.29941 ++  AVR32_MNEMONIC_LD_UHVS,
47.29942 ++  AVR32_MNEMONIC_LD_UHVC,
47.29943 ++  AVR32_MNEMONIC_LD_UHQS,
47.29944 ++  AVR32_MNEMONIC_LD_UHAL,
47.29945 ++  AVR32_MNEMONIC_LD_UHHS,
47.29946 ++  AVR32_MNEMONIC_LD_UHLO,
47.29947 ++  AVR32_MNEMONIC_LD_SBEQ,
47.29948 ++  AVR32_MNEMONIC_LD_SBNE,
47.29949 ++  AVR32_MNEMONIC_LD_SBCC,
47.29950 ++  AVR32_MNEMONIC_LD_SBCS,
47.29951 ++  AVR32_MNEMONIC_LD_SBGE,
47.29952 ++  AVR32_MNEMONIC_LD_SBLT,
47.29953 ++  AVR32_MNEMONIC_LD_SBMI,
47.29954 ++  AVR32_MNEMONIC_LD_SBPL,
47.29955 ++  AVR32_MNEMONIC_LD_SBLS,
47.29956 ++  AVR32_MNEMONIC_LD_SBGT,
47.29957 ++  AVR32_MNEMONIC_LD_SBLE,
47.29958 ++  AVR32_MNEMONIC_LD_SBHI,
47.29959 ++  AVR32_MNEMONIC_LD_SBVS,
47.29960 ++  AVR32_MNEMONIC_LD_SBVC,
47.29961 ++  AVR32_MNEMONIC_LD_SBQS,
47.29962 ++  AVR32_MNEMONIC_LD_SBAL,
47.29963 ++  AVR32_MNEMONIC_LD_SBHS,
47.29964 ++  AVR32_MNEMONIC_LD_SBLO,
47.29965 ++  AVR32_MNEMONIC_LD_UBEQ,
47.29966 ++  AVR32_MNEMONIC_LD_UBNE,
47.29967 ++  AVR32_MNEMONIC_LD_UBCC,
47.29968 ++  AVR32_MNEMONIC_LD_UBCS,
47.29969 ++  AVR32_MNEMONIC_LD_UBGE,
47.29970 ++  AVR32_MNEMONIC_LD_UBLT,
47.29971 ++  AVR32_MNEMONIC_LD_UBMI,
47.29972 ++  AVR32_MNEMONIC_LD_UBPL,
47.29973 ++  AVR32_MNEMONIC_LD_UBLS,
47.29974 ++  AVR32_MNEMONIC_LD_UBGT,
47.29975 ++  AVR32_MNEMONIC_LD_UBLE,
47.29976 ++  AVR32_MNEMONIC_LD_UBHI,
47.29977 ++  AVR32_MNEMONIC_LD_UBVS,
47.29978 ++  AVR32_MNEMONIC_LD_UBVC,
47.29979 ++  AVR32_MNEMONIC_LD_UBQS,
47.29980 ++  AVR32_MNEMONIC_LD_UBAL,
47.29981 ++  AVR32_MNEMONIC_LD_UBHS,
47.29982 ++  AVR32_MNEMONIC_LD_UBLO,
47.29983 ++  AVR32_MNEMONIC_ST_WEQ,
47.29984 ++  AVR32_MNEMONIC_ST_WNE,
47.29985 ++  AVR32_MNEMONIC_ST_WCC,
47.29986 ++  AVR32_MNEMONIC_ST_WCS,
47.29987 ++  AVR32_MNEMONIC_ST_WGE,
47.29988 ++  AVR32_MNEMONIC_ST_WLT,
47.29989 ++  AVR32_MNEMONIC_ST_WMI,
47.29990 ++  AVR32_MNEMONIC_ST_WPL,
47.29991 ++  AVR32_MNEMONIC_ST_WLS,
47.29992 ++  AVR32_MNEMONIC_ST_WGT,
47.29993 ++  AVR32_MNEMONIC_ST_WLE,
47.29994 ++  AVR32_MNEMONIC_ST_WHI,
47.29995 ++  AVR32_MNEMONIC_ST_WVS,
47.29996 ++  AVR32_MNEMONIC_ST_WVC,
47.29997 ++  AVR32_MNEMONIC_ST_WQS,
47.29998 ++  AVR32_MNEMONIC_ST_WAL,
47.29999 ++  AVR32_MNEMONIC_ST_WHS,
47.30000 ++  AVR32_MNEMONIC_ST_WLO,
47.30001 ++  AVR32_MNEMONIC_ST_HEQ,
47.30002 ++  AVR32_MNEMONIC_ST_HNE,
47.30003 ++  AVR32_MNEMONIC_ST_HCC,
47.30004 ++  AVR32_MNEMONIC_ST_HCS,
47.30005 ++  AVR32_MNEMONIC_ST_HGE,
47.30006 ++  AVR32_MNEMONIC_ST_HLT,
47.30007 ++  AVR32_MNEMONIC_ST_HMI,
47.30008 ++  AVR32_MNEMONIC_ST_HPL,
47.30009 ++  AVR32_MNEMONIC_ST_HLS,
47.30010 ++  AVR32_MNEMONIC_ST_HGT,
47.30011 ++  AVR32_MNEMONIC_ST_HLE,
47.30012 ++  AVR32_MNEMONIC_ST_HHI,
47.30013 ++  AVR32_MNEMONIC_ST_HVS,
47.30014 ++  AVR32_MNEMONIC_ST_HVC,
47.30015 ++  AVR32_MNEMONIC_ST_HQS,
47.30016 ++  AVR32_MNEMONIC_ST_HAL,
47.30017 ++  AVR32_MNEMONIC_ST_HHS,
47.30018 ++  AVR32_MNEMONIC_ST_HLO,
47.30019 ++  AVR32_MNEMONIC_ST_BEQ,
47.30020 ++  AVR32_MNEMONIC_ST_BNE,
47.30021 ++  AVR32_MNEMONIC_ST_BCC,
47.30022 ++  AVR32_MNEMONIC_ST_BCS,
47.30023 ++  AVR32_MNEMONIC_ST_BGE,
47.30024 ++  AVR32_MNEMONIC_ST_BLT,
47.30025 ++  AVR32_MNEMONIC_ST_BMI,
47.30026 ++  AVR32_MNEMONIC_ST_BPL,
47.30027 ++  AVR32_MNEMONIC_ST_BLS,
47.30028 ++  AVR32_MNEMONIC_ST_BGT,
47.30029 ++  AVR32_MNEMONIC_ST_BLE,
47.30030 ++  AVR32_MNEMONIC_ST_BHI,
47.30031 ++  AVR32_MNEMONIC_ST_BVS,
47.30032 ++  AVR32_MNEMONIC_ST_BVC,
47.30033 ++  AVR32_MNEMONIC_ST_BQS,
47.30034 ++  AVR32_MNEMONIC_ST_BAL,
47.30035 ++  AVR32_MNEMONIC_ST_BHS,
47.30036 ++  AVR32_MNEMONIC_ST_BLO,
47.30037 ++  AVR32_MNEMONIC_MOVH,
47.30038 ++  AVR32_MNEMONIC__END_
47.30039 ++};
47.30040 ++#define AVR32_NR_MNEMONICS AVR32_MNEMONIC__END_
47.30041 ++
47.30042 ++enum avr32_syntax_parser
47.30043 ++  {
47.30044 ++    AVR32_PARSER_NORMAL,
47.30045 ++    AVR32_PARSER_ALIAS,
47.30046 ++    AVR32_PARSER_LDA,
47.30047 ++    AVR32_PARSER_CALL,
47.30048 ++    AVR32_PARSER__END_
47.30049 ++  };
47.30050 ++#define AVR32_NR_PARSERS AVR32_PARSER__END_
47.30051 +--- a/opcodes/configure.in
47.30052 ++++ b/opcodes/configure.in
47.30053 +@@ -158,6 +158,7 @@ if test x${all_targets} = xfalse ; then
47.30054 + 	bfd_arc_arch)		ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
47.30055 + 	bfd_arm_arch)		ta="$ta arm-dis.lo" ;;
47.30056 + 	bfd_avr_arch)		ta="$ta avr-dis.lo" ;;
47.30057 ++	bfd_avr32_arch)		ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
47.30058 + 	bfd_bfin_arch)		ta="$ta bfin-dis.lo" ;;
47.30059 + 	bfd_cr16_arch)    	ta="$ta cr16-dis.lo cr16-opc.lo" ;;
47.30060 + 	bfd_cris_arch)		ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
47.30061 +@@ -216,7 +217,7 @@ if test x${all_targets} = xfalse ; then
47.30062 + 				ta="$ta sh64-dis.lo sh64-opc.lo"
47.30063 + 				archdefs="$archdefs -DINCLUDE_SHMEDIA"
47.30064 + 				break;;
47.30065 +-	    esac;
47.30066 ++	    esac
47.30067 + 	  done
47.30068 + 				ta="$ta sh-dis.lo cgen-bitset.lo" ;;
47.30069 + 	bfd_sparc_arch)		ta="$ta sparc-dis.lo sparc-opc.lo" ;;
47.30070 +--- a/opcodes/disassemble.c
47.30071 ++++ b/opcodes/disassemble.c
47.30072 +@@ -27,6 +27,7 @@
47.30073 + #define ARCH_arc
47.30074 + #define ARCH_arm
47.30075 + #define ARCH_avr
47.30076 ++#define ARCH_avr32
47.30077 + #define ARCH_bfin
47.30078 + #define ARCH_cr16
47.30079 + #define ARCH_cris
47.30080 +@@ -128,6 +129,11 @@ disassembler (abfd)
47.30081 +       disassemble = print_insn_avr;
47.30082 +       break;
47.30083 + #endif
47.30084 ++#ifdef ARCH_avr32
47.30085 ++    case bfd_arch_avr32:
47.30086 ++      disassemble = print_insn_avr32;
47.30087 ++      break;
47.30088 ++#endif
47.30089 + #ifdef ARCH_bfin
47.30090 +     case bfd_arch_bfin:
47.30091 +       disassemble = print_insn_bfin;
47.30092 +@@ -346,9 +352,9 @@ disassembler (abfd)
47.30093 + #ifdef ARCH_score
47.30094 +     case bfd_arch_score:
47.30095 +       if (bfd_big_endian (abfd))
47.30096 +-        disassemble = print_insn_big_score;      
47.30097 ++        disassemble = print_insn_big_score;
47.30098 +       else
47.30099 +-        disassemble = print_insn_little_score; 
47.30100 ++        disassemble = print_insn_little_score;
47.30101 +      break;
47.30102 + #endif
47.30103 + #ifdef ARCH_sh
47.30104 +@@ -466,6 +472,9 @@ disassembler_usage (stream)
47.30105 + #ifdef ARCH_i386
47.30106 +   print_i386_disassembler_options (stream);
47.30107 + #endif
47.30108 ++#ifdef ARCH_avr32
47.30109 ++  print_avr32_disassembler_options (stream);
47.30110 ++#endif
47.30111 + 
47.30112 +   return;
47.30113 + }
47.30114 +--- a/opcodes/Makefile.am
47.30115 ++++ b/opcodes/Makefile.am
47.30116 +@@ -30,6 +30,7 @@ LIBIBERTY = ../libiberty/libiberty.a
47.30117 + # Header files.
47.30118 + HFILES = \
47.30119 + 	cgen-ops.h cgen-types.h \
47.30120 ++	avr32-asm.h avr32-opc.h \
47.30121 + 	fr30-desc.h fr30-opc.h \
47.30122 + 	frv-desc.h frv-opc.h \
47.30123 + 	h8500-opc.h \
47.30124 +@@ -63,6 +64,9 @@ CFILES = \
47.30125 + 	arc-ext.c \
47.30126 + 	arm-dis.c \
47.30127 + 	avr-dis.c \
47.30128 ++	avr32-asm.c \
47.30129 ++	avr32-dis.c \
47.30130 ++	avr32-opc.c \
47.30131 + 	bfin-dis.c \
47.30132 + 	cgen-asm.c \
47.30133 + 	cgen-bitset.c \
47.30134 +@@ -217,6 +221,9 @@ ALL_MACHINES = \
47.30135 + 	arc-ext.lo \
47.30136 + 	arm-dis.lo \
47.30137 + 	avr-dis.lo \
47.30138 ++	avr32-asm.lo \
47.30139 ++	avr32-dis.lo \
47.30140 ++	avr32-opc.lo \
47.30141 + 	bfin-dis.lo \
47.30142 + 	cgen-asm.lo \
47.30143 + 	cgen-bitset.lo \
47.30144 +@@ -674,6 +681,15 @@ avr-dis.lo: avr-dis.c sysdep.h config.h 
47.30145 +   $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
47.30146 +   opintl.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \
47.30147 +   $(INCDIR)/opcode/avr.h
47.30148 ++avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
47.30149 ++  $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
47.30150 ++  $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
47.30151 ++  $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
47.30152 ++avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
47.30153 ++  $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
47.30154 ++  avr32-opc.h opintl.h
47.30155 ++avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
47.30156 ++  $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
47.30157 + bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
47.30158 +   $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
47.30159 + cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
47.30160 +--- a/bfd/bfd-in2.h
47.30161 ++++ b/bfd/bfd-in2.h
47.30162 +@@ -2017,6 +2017,11 @@ enum bfd_architecture
47.30163 + #define bfd_mach_avr4          4
47.30164 + #define bfd_mach_avr5          5
47.30165 + #define bfd_mach_avr6          6
47.30166 ++  bfd_arch_avr32,     /* Atmel AVR32 */
47.30167 ++#define bfd_mach_avr32_ap      7000
47.30168 ++#define bfd_mach_avr32_uc      3000
47.30169 ++#define bfd_mach_avr32_ucr1    3001
47.30170 ++#define bfd_mach_avr32_ucr2    3002
47.30171 +   bfd_arch_bfin,        /* ADI Blackfin */
47.30172 + #define bfd_mach_bfin          1
47.30173 +   bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */
47.30174 +@@ -3758,6 +3763,88 @@ instructions  */
47.30175 + instructions  */
47.30176 +   BFD_RELOC_AVR_6_ADIW,
47.30177 + 
47.30178 ++/* Difference between two labels: L2 - L1. The value of L1 is encoded
47.30179 ++as sym + addend, while the initial difference after assembly is
47.30180 ++inserted into the object file by the assembler.  */
47.30181 ++  BFD_RELOC_AVR32_DIFF32,
47.30182 ++  BFD_RELOC_AVR32_DIFF16,
47.30183 ++  BFD_RELOC_AVR32_DIFF8,
47.30184 ++
47.30185 ++/* Reference to a symbol through the Global Offset Table. The linker
47.30186 ++will allocate an entry for symbol in the GOT and insert the offset
47.30187 ++of this entry as the relocation value.  */
47.30188 ++  BFD_RELOC_AVR32_GOT32,
47.30189 ++  BFD_RELOC_AVR32_GOT16,
47.30190 ++  BFD_RELOC_AVR32_GOT8,
47.30191 ++
47.30192 ++/* Normal (non-pc-relative) code relocations. Alignment and signedness
47.30193 ++is indicated by the suffixes. S means signed, U means unsigned. W
47.30194 ++means word-aligned, H means halfword-aligned, neither means
47.30195 ++byte-aligned (no alignment.) SUB5 is the same relocation as 16S.  */
47.30196 ++  BFD_RELOC_AVR32_21S,
47.30197 ++  BFD_RELOC_AVR32_16U,
47.30198 ++  BFD_RELOC_AVR32_16S,
47.30199 ++  BFD_RELOC_AVR32_SUB5,
47.30200 ++  BFD_RELOC_AVR32_8S_EXT,
47.30201 ++  BFD_RELOC_AVR32_8S,
47.30202 ++  BFD_RELOC_AVR32_15S,
47.30203 ++
47.30204 ++/* PC-relative relocations are signed if neither 'U' nor 'S' is
47.30205 ++specified. However, we explicitly tack on a 'B' to indicate no
47.30206 ++alignment, to avoid confusion with data relocs. All of these resolve
47.30207 ++to sym + addend - offset, except the one with 'N' (negated) suffix.
47.30208 ++This particular one resolves to offset - sym - addend.  */
47.30209 ++  BFD_RELOC_AVR32_22H_PCREL,
47.30210 ++  BFD_RELOC_AVR32_18W_PCREL,
47.30211 ++  BFD_RELOC_AVR32_16B_PCREL,
47.30212 ++  BFD_RELOC_AVR32_16N_PCREL,
47.30213 ++  BFD_RELOC_AVR32_14UW_PCREL,
47.30214 ++  BFD_RELOC_AVR32_11H_PCREL,
47.30215 ++  BFD_RELOC_AVR32_10UW_PCREL,
47.30216 ++  BFD_RELOC_AVR32_9H_PCREL,
47.30217 ++  BFD_RELOC_AVR32_9UW_PCREL,
47.30218 ++
47.30219 ++/* Subtract the link-time address of the GOT from (symbol + addend)
47.30220 ++and insert the result.  */
47.30221 ++  BFD_RELOC_AVR32_GOTPC,
47.30222 ++
47.30223 ++/* Reference to a symbol through the GOT. The linker will allocate an
47.30224 ++entry for symbol in the GOT and insert the offset of this entry as
47.30225 ++the relocation value. addend must be zero. As usual, 'S' means
47.30226 ++signed, 'W' means word-aligned, etc.  */
47.30227 ++  BFD_RELOC_AVR32_GOTCALL,
47.30228 ++  BFD_RELOC_AVR32_LDA_GOT,
47.30229 ++  BFD_RELOC_AVR32_GOT21S,
47.30230 ++  BFD_RELOC_AVR32_GOT18SW,
47.30231 ++  BFD_RELOC_AVR32_GOT16S,
47.30232 ++
47.30233 ++/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make
47.30234 ++a whole lot of sense.  */
47.30235 ++  BFD_RELOC_AVR32_32_CPENT,
47.30236 ++
47.30237 ++/* Constant pool references. Some of these relocations are signed,
47.30238 ++others are unsigned. It doesn't really matter, since the constant
47.30239 ++pool always comes after the code that references it.  */
47.30240 ++  BFD_RELOC_AVR32_CPCALL,
47.30241 ++  BFD_RELOC_AVR32_16_CP,
47.30242 ++  BFD_RELOC_AVR32_9W_CP,
47.30243 ++
47.30244 ++/* sym must be the absolute symbol. The addend specifies the alignment
47.30245 ++order, e.g. if addend is 2, the linker must add padding so that the
47.30246 ++next address is aligned to a 4-byte boundary.  */
47.30247 ++  BFD_RELOC_AVR32_ALIGN,
47.30248 ++
47.30249 ++/* Code relocations that will never make it to the output file.  */
47.30250 ++  BFD_RELOC_AVR32_14UW,
47.30251 ++  BFD_RELOC_AVR32_10UW,
47.30252 ++  BFD_RELOC_AVR32_10SW,
47.30253 ++  BFD_RELOC_AVR32_STHH_W,
47.30254 ++  BFD_RELOC_AVR32_7UW,
47.30255 ++  BFD_RELOC_AVR32_6S,
47.30256 ++  BFD_RELOC_AVR32_6UW,
47.30257 ++  BFD_RELOC_AVR32_4UH,
47.30258 ++  BFD_RELOC_AVR32_3U,
47.30259 ++
47.30260 + /* Direct 12 bit.  */
47.30261 +   BFD_RELOC_390_12,
47.30262 + 
47.30263 +--- /dev/null
47.30264 ++++ b/bfd/bfd-in3.h
47.30265 +@@ -0,0 +1,5406 @@
47.30266 ++/* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically 
47.30267 ++   generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c", 
47.30268 ++   "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c", 
47.30269 ++   "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c", 
47.30270 ++   "linker.c" and "simple.c".
47.30271 ++   Run "make headers" in your build bfd/ to regenerate.  */
47.30272 ++
47.30273 ++/* Main header file for the bfd library -- portable access to object files.
47.30274 ++
47.30275 ++   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
47.30276 ++   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
47.30277 ++   Free Software Foundation, Inc.
47.30278 ++
47.30279 ++   Contributed by Cygnus Support.
47.30280 ++
47.30281 ++   This file is part of BFD, the Binary File Descriptor library.
47.30282 ++
47.30283 ++   This program is free software; you can redistribute it and/or modify
47.30284 ++   it under the terms of the GNU General Public License as published by
47.30285 ++   the Free Software Foundation; either version 3 of the License, or
47.30286 ++   (at your option) any later version.
47.30287 ++
47.30288 ++   This program is distributed in the hope that it will be useful,
47.30289 ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
47.30290 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
47.30291 ++   GNU General Public License for more details.
47.30292 ++
47.30293 ++   You should have received a copy of the GNU General Public License
47.30294 ++   along with this program; if not, write to the Free Software
47.30295 ++   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
47.30296 ++
47.30297 ++#ifndef __BFD_H_SEEN__
47.30298 ++#define __BFD_H_SEEN__
47.30299 ++
47.30300 ++#ifdef __cplusplus
47.30301 ++extern "C" {
47.30302 ++#endif
47.30303 ++
47.30304 ++#include "ansidecl.h"
47.30305 ++#include "symcat.h"
47.30306 ++#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
47.30307 ++#ifndef SABER
47.30308 ++/* This hack is to avoid a problem with some strict ANSI C preprocessors.
47.30309 ++   The problem is, "32_" is not a valid preprocessing token, and we don't
47.30310 ++   want extra underscores (e.g., "nlm_32_").  The XCONCAT2 macro will
47.30311 ++   cause the inner CONCAT2 macros to be evaluated first, producing
47.30312 ++   still-valid pp-tokens.  Then the final concatenation can be done.  */
47.30313 ++#undef CONCAT4
47.30314 ++#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
47.30315 ++#endif
47.30316 ++#endif
47.30317 ++
47.30318 ++/* This is a utility macro to handle the situation where the code
47.30319 ++   wants to place a constant string into the code, followed by a
47.30320 ++   comma and then the length of the string.  Doing this by hand
47.30321 ++   is error prone, so using this macro is safer.  The macro will
47.30322 ++   also safely handle the case where a NULL is passed as the arg.  */
47.30323 ++#define STRING_COMMA_LEN(STR) (STR), ((STR) ? sizeof (STR) - 1 : 0)
47.30324 ++/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
47.30325 ++   to create the arguments to another macro, since the preprocessor
47.30326 ++   will mis-count the number of arguments to the outer macro (by not
47.30327 ++   evaluating STRING_COMMA_LEN and so missing the comma).  This is a
47.30328 ++   problem for example when trying to use STRING_COMMA_LEN to build
47.30329 ++   the arguments to the strncmp() macro.  Hence this alternative
47.30330 ++   definition of strncmp is provided here.
47.30331 ++   
47.30332 ++   Note - these macros do NOT work if STR2 is not a constant string.  */
47.30333 ++#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
47.30334 ++  /* strcpy() can have a similar problem, but since we know we are
47.30335 ++     copying a constant string, we can use memcpy which will be faster
47.30336 ++     since there is no need to check for a NUL byte inside STR.  We
47.30337 ++     can also save time if we do not need to copy the terminating NUL.  */
47.30338 ++#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
47.30339 ++#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
47.30340 ++
47.30341 ++
47.30342 ++/* The word size used by BFD on the host.  This may be 64 with a 32
47.30343 ++   bit target if the host is 64 bit, or if other 64 bit targets have
47.30344 ++   been selected with --enable-targets, or if --enable-64-bit-bfd.  */
47.30345 ++#define BFD_ARCH_SIZE 32
47.30346 ++
47.30347 ++/* The word size of the default bfd target.  */
47.30348 ++#define BFD_DEFAULT_TARGET_SIZE 32
47.30349 ++
47.30350 ++#define BFD_HOST_64BIT_LONG 0
47.30351 ++#define BFD_HOST_64BIT_LONG_LONG 0
47.30352 ++#define BFD_HOST_LONG_LONG 1
47.30353 ++#if 1
47.30354 ++#define BFD_HOST_64_BIT long long
47.30355 ++#define BFD_HOST_U_64_BIT unsigned long long
47.30356 ++typedef BFD_HOST_64_BIT bfd_int64_t;
47.30357 ++typedef BFD_HOST_U_64_BIT bfd_uint64_t;
47.30358 ++#endif
47.30359 ++
47.30360 ++#if BFD_ARCH_SIZE >= 64
47.30361 ++#define BFD64
47.30362 ++#endif
47.30363 ++
47.30364 ++#ifndef INLINE
47.30365 ++#if __GNUC__ >= 2
47.30366 ++#define INLINE __inline__
47.30367 ++#else
47.30368 ++#define INLINE
47.30369 ++#endif
47.30370 ++#endif
47.30371 ++
47.30372 ++/* Declaring a type wide enough to hold a host long and a host pointer.  */
47.30373 ++#define BFD_HOSTPTR_T	unsigned long
47.30374 ++typedef BFD_HOSTPTR_T bfd_hostptr_t;
47.30375 ++
47.30376 ++/* Forward declaration.  */
47.30377 ++typedef struct bfd bfd;
47.30378 ++
47.30379 ++/* Boolean type used in bfd.  Too many systems define their own
47.30380 ++   versions of "boolean" for us to safely typedef a "boolean" of
47.30381 ++   our own.  Using an enum for "bfd_boolean" has its own set of
47.30382 ++   problems, with strange looking casts required to avoid warnings
47.30383 ++   on some older compilers.  Thus we just use an int.
47.30384 ++
47.30385 ++   General rule: Functions which are bfd_boolean return TRUE on
47.30386 ++   success and FALSE on failure (unless they're a predicate).  */
47.30387 ++
47.30388 ++typedef int bfd_boolean;
47.30389 ++#undef FALSE
47.30390 ++#undef TRUE
47.30391 ++#define FALSE 0
47.30392 ++#define TRUE 1
47.30393 ++
47.30394 ++#ifdef BFD64
47.30395 ++
47.30396 ++#ifndef BFD_HOST_64_BIT
47.30397 ++ #error No 64 bit integer type available
47.30398 ++#endif /* ! defined (BFD_HOST_64_BIT) */
47.30399 ++
47.30400 ++typedef BFD_HOST_U_64_BIT bfd_vma;
47.30401 ++typedef BFD_HOST_64_BIT bfd_signed_vma;
47.30402 ++typedef BFD_HOST_U_64_BIT bfd_size_type;
47.30403 ++typedef BFD_HOST_U_64_BIT symvalue;
47.30404 ++
47.30405 ++#ifndef fprintf_vma
47.30406 ++#if BFD_HOST_64BIT_LONG
47.30407 ++#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
47.30408 ++#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
47.30409 ++#elif BFD_HOST_64BIT_LONG_LONG
47.30410 ++#define sprintf_vma(s,x) sprintf (s, "%016llx", x)
47.30411 ++#define fprintf_vma(f,x) fprintf (f, "%016llx", x)
47.30412 ++#else
47.30413 ++#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
47.30414 ++#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
47.30415 ++#define fprintf_vma(s,x) \
47.30416 ++  fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
47.30417 ++#define sprintf_vma(s,x) \
47.30418 ++  sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
47.30419 ++#endif
47.30420 ++#endif
47.30421 ++
47.30422 ++#else /* not BFD64  */
47.30423 ++
47.30424 ++/* Represent a target address.  Also used as a generic unsigned type
47.30425 ++   which is guaranteed to be big enough to hold any arithmetic types
47.30426 ++   we need to deal with.  */
47.30427 ++typedef unsigned long bfd_vma;
47.30428 ++
47.30429 ++/* A generic signed type which is guaranteed to be big enough to hold any
47.30430 ++   arithmetic types we need to deal with.  Can be assumed to be compatible
47.30431 ++   with bfd_vma in the same way that signed and unsigned ints are compatible
47.30432 ++   (as parameters, in assignment, etc).  */
47.30433 ++typedef long bfd_signed_vma;
47.30434 ++
47.30435 ++typedef unsigned long symvalue;
47.30436 ++typedef unsigned long bfd_size_type;
47.30437 ++
47.30438 ++/* Print a bfd_vma x on stream s.  */
47.30439 ++#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
47.30440 ++#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
47.30441 ++
47.30442 ++#endif /* not BFD64  */
47.30443 ++
47.30444 ++#define HALF_BFD_SIZE_TYPE \
47.30445 ++  (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
47.30446 ++
47.30447 ++#ifndef BFD_HOST_64_BIT
47.30448 ++/* Fall back on a 32 bit type.  The idea is to make these types always
47.30449 ++   available for function return types, but in the case that
47.30450 ++   BFD_HOST_64_BIT is undefined such a function should abort or
47.30451 ++   otherwise signal an error.  */
47.30452 ++typedef bfd_signed_vma bfd_int64_t;
47.30453 ++typedef bfd_vma bfd_uint64_t;
47.30454 ++#endif
47.30455 ++
47.30456 ++/* An offset into a file.  BFD always uses the largest possible offset
47.30457 ++   based on the build time availability of fseek, fseeko, or fseeko64.  */
47.30458 ++typedef BFD_HOST_64_BIT file_ptr;
47.30459 ++typedef unsigned BFD_HOST_64_BIT ufile_ptr;
47.30460 ++
47.30461 ++extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
47.30462 ++extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
47.30463 ++
47.30464 ++#define printf_vma(x) fprintf_vma(stdout,x)
47.30465 ++#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
47.30466 ++
47.30467 ++typedef unsigned int flagword;	/* 32 bits of flags */
47.30468 ++typedef unsigned char bfd_byte;
47.30469 ++
47.30470 ++/* File formats.  */
47.30471 ++
47.30472 ++typedef enum bfd_format
47.30473 ++{
47.30474 ++  bfd_unknown = 0,	/* File format is unknown.  */
47.30475 ++  bfd_object,		/* Linker/assembler/compiler output.  */
47.30476 ++  bfd_archive,		/* Object archive file.  */
47.30477 ++  bfd_core,		/* Core dump.  */
47.30478 ++  bfd_type_end		/* Marks the end; don't use it!  */
47.30479 ++}
47.30480 ++bfd_format;
47.30481 ++
47.30482 ++/* Values that may appear in the flags field of a BFD.  These also
47.30483 ++   appear in the object_flags field of the bfd_target structure, where
47.30484 ++   they indicate the set of flags used by that backend (not all flags
47.30485 ++   are meaningful for all object file formats) (FIXME: at the moment,
47.30486 ++   the object_flags values have mostly just been copied from backend
47.30487 ++   to another, and are not necessarily correct).  */
47.30488 ++
47.30489 ++/* No flags.  */
47.30490 ++#define BFD_NO_FLAGS   	0x00
47.30491 ++
47.30492 ++/* BFD contains relocation entries.  */
47.30493 ++#define HAS_RELOC   	0x01
47.30494 ++
47.30495 ++/* BFD is directly executable.  */
47.30496 ++#define EXEC_P      	0x02
47.30497 ++
47.30498 ++/* BFD has line number information (basically used for F_LNNO in a
47.30499 ++   COFF header).  */
47.30500 ++#define HAS_LINENO  	0x04
47.30501 ++
47.30502 ++/* BFD has debugging information.  */
47.30503 ++#define HAS_DEBUG   	0x08
47.30504 ++
47.30505 ++/* BFD has symbols.  */
47.30506 ++#define HAS_SYMS    	0x10
47.30507 ++
47.30508 ++/* BFD has local symbols (basically used for F_LSYMS in a COFF
47.30509 ++   header).  */
47.30510 ++#define HAS_LOCALS  	0x20
47.30511 ++
47.30512 ++/* BFD is a dynamic object.  */
47.30513 ++#define DYNAMIC     	0x40
47.30514 ++
47.30515 ++/* Text section is write protected (if D_PAGED is not set, this is
47.30516 ++   like an a.out NMAGIC file) (the linker sets this by default, but
47.30517 ++   clears it for -r or -N).  */
47.30518 ++#define WP_TEXT     	0x80
47.30519 ++
47.30520 ++/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
47.30521 ++   linker sets this by default, but clears it for -r or -n or -N).  */
47.30522 ++#define D_PAGED     	0x100
47.30523 ++
47.30524 ++/* BFD is relaxable (this means that bfd_relax_section may be able to
47.30525 ++   do something) (sometimes bfd_relax_section can do something even if
47.30526 ++   this is not set).  */
47.30527 ++#define BFD_IS_RELAXABLE 0x200
47.30528 ++
47.30529 ++/* This may be set before writing out a BFD to request using a
47.30530 ++   traditional format.  For example, this is used to request that when
47.30531 ++   writing out an a.out object the symbols not be hashed to eliminate
47.30532 ++   duplicates.  */
47.30533 ++#define BFD_TRADITIONAL_FORMAT 0x400
47.30534 ++
47.30535 ++/* This flag indicates that the BFD contents are actually cached in
47.30536 ++   memory.  If this is set, iostream points to a bfd_in_memory struct.  */
47.30537 ++#define BFD_IN_MEMORY 0x800
47.30538 ++
47.30539 ++/* The sections in this BFD specify a memory page.  */
47.30540 ++#define HAS_LOAD_PAGE 0x1000
47.30541 ++
47.30542 ++/* This BFD has been created by the linker and doesn't correspond
47.30543 ++   to any input file.  */
47.30544 ++#define BFD_LINKER_CREATED 0x2000
47.30545 ++
47.30546 ++/* Symbols and relocation.  */
47.30547 ++
47.30548 ++/* A count of carsyms (canonical archive symbols).  */
47.30549 ++typedef unsigned long symindex;
47.30550 ++
47.30551 ++/* How to perform a relocation.  */
47.30552 ++typedef const struct reloc_howto_struct reloc_howto_type;
47.30553 ++
47.30554 ++#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
47.30555 ++
47.30556 ++/* General purpose part of a symbol X;
47.30557 ++   target specific parts are in libcoff.h, libaout.h, etc.  */
47.30558 ++
47.30559 ++#define bfd_get_section(x) ((x)->section)
47.30560 ++#define bfd_get_output_section(x) ((x)->section->output_section)
47.30561 ++#define bfd_set_section(x,y) ((x)->section) = (y)
47.30562 ++#define bfd_asymbol_base(x) ((x)->section->vma)
47.30563 ++#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
47.30564 ++#define bfd_asymbol_name(x) ((x)->name)
47.30565 ++/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
47.30566 ++#define bfd_asymbol_bfd(x) ((x)->the_bfd)
47.30567 ++#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
47.30568 ++
47.30569 ++/* A canonical archive symbol.  */
47.30570 ++/* This is a type pun with struct ranlib on purpose!  */
47.30571 ++typedef struct carsym
47.30572 ++{
47.30573 ++  char *name;
47.30574 ++  file_ptr file_offset;	/* Look here to find the file.  */
47.30575 ++}
47.30576 ++carsym;			/* To make these you call a carsymogen.  */
47.30577 ++
47.30578 ++/* Used in generating armaps (archive tables of contents).
47.30579 ++   Perhaps just a forward definition would do?  */
47.30580 ++struct orl 			/* Output ranlib.  */
47.30581 ++{
47.30582 ++  char **name;		/* Symbol name.  */
47.30583 ++  union
47.30584 ++  {
47.30585 ++    file_ptr pos;
47.30586 ++    bfd *abfd;
47.30587 ++  } u;			/* bfd* or file position.  */
47.30588 ++  int namidx;		/* Index into string table.  */
47.30589 ++};
47.30590 ++
47.30591 ++/* Linenumber stuff.  */
47.30592 ++typedef struct lineno_cache_entry
47.30593 ++{
47.30594 ++  unsigned int line_number;	/* Linenumber from start of function.  */
47.30595 ++  union
47.30596 ++  {
47.30597 ++    struct bfd_symbol *sym;	/* Function name.  */
47.30598 ++    bfd_vma offset;	    		/* Offset into section.  */
47.30599 ++  } u;
47.30600 ++}
47.30601 ++alent;
47.30602 ++
47.30603 ++/* Object and core file sections.  */
47.30604 ++
47.30605 ++#define	align_power(addr, align)	\
47.30606 ++  (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
47.30607 ++
47.30608 ++typedef struct bfd_section *sec_ptr;
47.30609 ++
47.30610 ++#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
47.30611 ++#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
47.30612 ++#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
47.30613 ++#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
47.30614 ++#define bfd_section_name(bfd, ptr) ((ptr)->name)
47.30615 ++#define bfd_section_size(bfd, ptr) ((ptr)->size)
47.30616 ++#define bfd_get_section_size(ptr) ((ptr)->size)
47.30617 ++#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
47.30618 ++#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
47.30619 ++#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
47.30620 ++#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
47.30621 ++#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
47.30622 ++
47.30623 ++#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
47.30624 ++
47.30625 ++#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
47.30626 ++#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
47.30627 ++#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
47.30628 ++/* Find the address one past the end of SEC.  */
47.30629 ++#define bfd_get_section_limit(bfd, sec) \
47.30630 ++  (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
47.30631 ++   / bfd_octets_per_byte (bfd))
47.30632 ++
47.30633 ++/* Return TRUE if section has been discarded.  */
47.30634 ++#define elf_discarded_section(sec)				\
47.30635 ++  (!bfd_is_abs_section (sec)					\
47.30636 ++   && bfd_is_abs_section ((sec)->output_section)		\
47.30637 ++   && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE		\
47.30638 ++   && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
47.30639 ++
47.30640 ++/* Forward define.  */
47.30641 ++struct stat;
47.30642 ++
47.30643 ++typedef enum bfd_print_symbol
47.30644 ++{
47.30645 ++  bfd_print_symbol_name,
47.30646 ++  bfd_print_symbol_more,
47.30647 ++  bfd_print_symbol_all
47.30648 ++} bfd_print_symbol_type;
47.30649 ++
47.30650 ++/* Information about a symbol that nm needs.  */
47.30651 ++
47.30652 ++typedef struct _symbol_info
47.30653 ++{
47.30654 ++  symvalue value;
47.30655 ++  char type;
47.30656 ++  const char *name;            /* Symbol name.  */
47.30657 ++  unsigned char stab_type;     /* Stab type.  */
47.30658 ++  char stab_other;             /* Stab other.  */
47.30659 ++  short stab_desc;             /* Stab desc.  */
47.30660 ++  const char *stab_name;       /* String for stab type.  */
47.30661 ++} symbol_info;
47.30662 ++
47.30663 ++/* Get the name of a stabs type code.  */
47.30664 ++
47.30665 ++extern const char *bfd_get_stab_name (int);
47.30666 ++
47.30667 ++/* Hash table routines.  There is no way to free up a hash table.  */
47.30668 ++
47.30669 ++/* An element in the hash table.  Most uses will actually use a larger
47.30670 ++   structure, and an instance of this will be the first field.  */
47.30671 ++
47.30672 ++struct bfd_hash_entry
47.30673 ++{
47.30674 ++  /* Next entry for this hash code.  */
47.30675 ++  struct bfd_hash_entry *next;
47.30676 ++  /* String being hashed.  */
47.30677 ++  const char *string;
47.30678 ++  /* Hash code.  This is the full hash code, not the index into the
47.30679 ++     table.  */
47.30680 ++  unsigned long hash;
47.30681 ++};
47.30682 ++
47.30683 ++/* A hash table.  */
47.30684 ++
47.30685 ++struct bfd_hash_table
47.30686 ++{
47.30687 ++  /* The hash array.  */
47.30688 ++  struct bfd_hash_entry **table;
47.30689 ++  /* A function used to create new elements in the hash table.  The
47.30690 ++     first entry is itself a pointer to an element.  When this
47.30691 ++     function is first invoked, this pointer will be NULL.  However,
47.30692 ++     having the pointer permits a hierarchy of method functions to be
47.30693 ++     built each of which calls the function in the superclass.  Thus
47.30694 ++     each function should be written to allocate a new block of memory
47.30695 ++     only if the argument is NULL.  */
47.30696 ++  struct bfd_hash_entry *(*newfunc)
47.30697 ++    (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
47.30698 ++   /* An objalloc for this hash table.  This is a struct objalloc *,
47.30699 ++     but we use void * to avoid requiring the inclusion of objalloc.h.  */
47.30700 ++  void *memory;
47.30701 ++  /* The number of slots in the hash table.  */
47.30702 ++  unsigned int size;
47.30703 ++  /* The number of entries in the hash table.  */
47.30704 ++  unsigned int count;
47.30705 ++  /* The size of elements.  */
47.30706 ++  unsigned int entsize;
47.30707 ++  /* If non-zero, don't grow the hash table.  */
47.30708 ++  unsigned int frozen:1;
47.30709 ++};
47.30710 ++
47.30711 ++/* Initialize a hash table.  */
47.30712 ++extern bfd_boolean bfd_hash_table_init
47.30713 ++  (struct bfd_hash_table *,
47.30714 ++   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
47.30715 ++			       struct bfd_hash_table *,
47.30716 ++			       const char *),
47.30717 ++   unsigned int);
47.30718 ++
47.30719 ++/* Initialize a hash table specifying a size.  */
47.30720 ++extern bfd_boolean bfd_hash_table_init_n
47.30721 ++  (struct bfd_hash_table *,
47.30722 ++   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
47.30723 ++			       struct bfd_hash_table *,
47.30724 ++			       const char *),
47.30725 ++   unsigned int, unsigned int);
47.30726 ++
47.30727 ++/* Free up a hash table.  */
47.30728 ++extern void bfd_hash_table_free
47.30729 ++  (struct bfd_hash_table *);
47.30730 ++
47.30731 ++/* Look up a string in a hash table.  If CREATE is TRUE, a new entry
47.30732 ++   will be created for this string if one does not already exist.  The
47.30733 ++   COPY argument must be TRUE if this routine should copy the string
47.30734 ++   into newly allocated memory when adding an entry.  */
47.30735 ++extern struct bfd_hash_entry *bfd_hash_lookup
47.30736 ++  (struct bfd_hash_table *, const char *, bfd_boolean create,
47.30737 ++   bfd_boolean copy);
47.30738 ++
47.30739 ++/* Replace an entry in a hash table.  */
47.30740 ++extern void bfd_hash_replace
47.30741 ++  (struct bfd_hash_table *, struct bfd_hash_entry *old,
47.30742 ++   struct bfd_hash_entry *nw);
47.30743 ++
47.30744 ++/* Base method for creating a hash table entry.  */
47.30745 ++extern struct bfd_hash_entry *bfd_hash_newfunc
47.30746 ++  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
47.30747 ++
47.30748 ++/* Grab some space for a hash table entry.  */
47.30749 ++extern void *bfd_hash_allocate
47.30750 ++  (struct bfd_hash_table *, unsigned int);
47.30751 ++
47.30752 ++/* Traverse a hash table in a random order, calling a function on each
47.30753 ++   element.  If the function returns FALSE, the traversal stops.  The
47.30754 ++   INFO argument is passed to the function.  */
47.30755 ++extern void bfd_hash_traverse
47.30756 ++  (struct bfd_hash_table *,
47.30757 ++   bfd_boolean (*) (struct bfd_hash_entry *, void *),
47.30758 ++   void *info);
47.30759 ++
47.30760 ++/* Allows the default size of a hash table to be configured. New hash
47.30761 ++   tables allocated using bfd_hash_table_init will be created with
47.30762 ++   this size.  */
47.30763 ++extern void bfd_hash_set_default_size (bfd_size_type);
47.30764 ++
47.30765 ++/* This structure is used to keep track of stabs in sections
47.30766 ++   information while linking.  */
47.30767 ++
47.30768 ++struct stab_info
47.30769 ++{
47.30770 ++  /* A hash table used to hold stabs strings.  */
47.30771 ++  struct bfd_strtab_hash *strings;
47.30772 ++  /* The header file hash table.  */
47.30773 ++  struct bfd_hash_table includes;
47.30774 ++  /* The first .stabstr section.  */
47.30775 ++  struct bfd_section *stabstr;
47.30776 ++};
47.30777 ++
47.30778 ++#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
47.30779 ++
47.30780 ++/* User program access to BFD facilities.  */
47.30781 ++
47.30782 ++/* Direct I/O routines, for programs which know more about the object
47.30783 ++   file than BFD does.  Use higher level routines if possible.  */
47.30784 ++
47.30785 ++extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
47.30786 ++extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
47.30787 ++extern int bfd_seek (bfd *, file_ptr, int);
47.30788 ++extern file_ptr bfd_tell (bfd *);
47.30789 ++extern int bfd_flush (bfd *);
47.30790 ++extern int bfd_stat (bfd *, struct stat *);
47.30791 ++
47.30792 ++/* Deprecated old routines.  */
47.30793 ++#if __GNUC__
47.30794 ++#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
47.30795 ++  (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__),	\
47.30796 ++   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
47.30797 ++#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
47.30798 ++  (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__),	\
47.30799 ++   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
47.30800 ++#else
47.30801 ++#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
47.30802 ++  (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
47.30803 ++   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
47.30804 ++#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
47.30805 ++  (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
47.30806 ++   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
47.30807 ++#endif
47.30808 ++extern void warn_deprecated (const char *, const char *, int, const char *);
47.30809 ++
47.30810 ++/* Cast from const char * to char * so that caller can assign to
47.30811 ++   a char * without a warning.  */
47.30812 ++#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
47.30813 ++#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
47.30814 ++#define bfd_get_format(abfd) ((abfd)->format)
47.30815 ++#define bfd_get_target(abfd) ((abfd)->xvec->name)
47.30816 ++#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
47.30817 ++#define bfd_family_coff(abfd) \
47.30818 ++  (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
47.30819 ++   bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
47.30820 ++#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
47.30821 ++#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
47.30822 ++#define bfd_header_big_endian(abfd) \
47.30823 ++  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
47.30824 ++#define bfd_header_little_endian(abfd) \
47.30825 ++  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
47.30826 ++#define bfd_get_file_flags(abfd) ((abfd)->flags)
47.30827 ++#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
47.30828 ++#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
47.30829 ++#define bfd_my_archive(abfd) ((abfd)->my_archive)
47.30830 ++#define bfd_has_map(abfd) ((abfd)->has_armap)
47.30831 ++
47.30832 ++#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
47.30833 ++#define bfd_usrdata(abfd) ((abfd)->usrdata)
47.30834 ++
47.30835 ++#define bfd_get_start_address(abfd) ((abfd)->start_address)
47.30836 ++#define bfd_get_symcount(abfd) ((abfd)->symcount)
47.30837 ++#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
47.30838 ++#define bfd_count_sections(abfd) ((abfd)->section_count)
47.30839 ++
47.30840 ++#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
47.30841 ++
47.30842 ++#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
47.30843 ++
47.30844 ++#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
47.30845 ++
47.30846 ++extern bfd_boolean bfd_cache_close
47.30847 ++  (bfd *abfd);
47.30848 ++/* NB: This declaration should match the autogenerated one in libbfd.h.  */
47.30849 ++
47.30850 ++extern bfd_boolean bfd_cache_close_all (void);
47.30851 ++
47.30852 ++extern bfd_boolean bfd_record_phdr
47.30853 ++  (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
47.30854 ++   bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
47.30855 ++
47.30856 ++/* Byte swapping routines.  */
47.30857 ++
47.30858 ++bfd_uint64_t bfd_getb64 (const void *);
47.30859 ++bfd_uint64_t bfd_getl64 (const void *);
47.30860 ++bfd_int64_t bfd_getb_signed_64 (const void *);
47.30861 ++bfd_int64_t bfd_getl_signed_64 (const void *);
47.30862 ++bfd_vma bfd_getb32 (const void *);
47.30863 ++bfd_vma bfd_getl32 (const void *);
47.30864 ++bfd_signed_vma bfd_getb_signed_32 (const void *);
47.30865 ++bfd_signed_vma bfd_getl_signed_32 (const void *);
47.30866 ++bfd_vma bfd_getb16 (const void *);
47.30867 ++bfd_vma bfd_getl16 (const void *);
47.30868 ++bfd_signed_vma bfd_getb_signed_16 (const void *);
47.30869 ++bfd_signed_vma bfd_getl_signed_16 (const void *);
47.30870 ++void bfd_putb64 (bfd_uint64_t, void *);
47.30871 ++void bfd_putl64 (bfd_uint64_t, void *);
47.30872 ++void bfd_putb32 (bfd_vma, void *);
47.30873 ++void bfd_putl32 (bfd_vma, void *);
47.30874 ++void bfd_putb16 (bfd_vma, void *);
47.30875 ++void bfd_putl16 (bfd_vma, void *);
47.30876 ++
47.30877 ++/* Byte swapping routines which take size and endiannes as arguments.  */
47.30878 ++
47.30879 ++bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
47.30880 ++void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
47.30881 ++
47.30882 ++extern bfd_boolean bfd_section_already_linked_table_init (void);
47.30883 ++extern void bfd_section_already_linked_table_free (void);
47.30884 ++
47.30885 ++/* Externally visible ECOFF routines.  */
47.30886 ++
47.30887 ++#if defined(__STDC__) || defined(ALMOST_STDC)
47.30888 ++struct ecoff_debug_info;
47.30889 ++struct ecoff_debug_swap;
47.30890 ++struct ecoff_extr;
47.30891 ++struct bfd_symbol;
47.30892 ++struct bfd_link_info;
47.30893 ++struct bfd_link_hash_entry;
47.30894 ++struct bfd_elf_version_tree;
47.30895 ++#endif
47.30896 ++extern bfd_vma bfd_ecoff_get_gp_value
47.30897 ++  (bfd * abfd);
47.30898 ++extern bfd_boolean bfd_ecoff_set_gp_value
47.30899 ++  (bfd *abfd, bfd_vma gp_value);
47.30900 ++extern bfd_boolean bfd_ecoff_set_regmasks
47.30901 ++  (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
47.30902 ++   unsigned long *cprmask);
47.30903 ++extern void *bfd_ecoff_debug_init
47.30904 ++  (bfd *output_bfd, struct ecoff_debug_info *output_debug,
47.30905 ++   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
47.30906 ++extern void bfd_ecoff_debug_free
47.30907 ++  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
47.30908 ++   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
47.30909 ++extern bfd_boolean bfd_ecoff_debug_accumulate
47.30910 ++  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
47.30911 ++   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
47.30912 ++   struct ecoff_debug_info *input_debug,
47.30913 ++   const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
47.30914 ++extern bfd_boolean bfd_ecoff_debug_accumulate_other
47.30915 ++  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
47.30916 ++   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
47.30917 ++   struct bfd_link_info *);
47.30918 ++extern bfd_boolean bfd_ecoff_debug_externals
47.30919 ++  (bfd *abfd, struct ecoff_debug_info *debug,
47.30920 ++   const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
47.30921 ++   bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
47.30922 ++   void (*set_index) (struct bfd_symbol *, bfd_size_type));
47.30923 ++extern bfd_boolean bfd_ecoff_debug_one_external
47.30924 ++  (bfd *abfd, struct ecoff_debug_info *debug,
47.30925 ++   const struct ecoff_debug_swap *swap, const char *name,
47.30926 ++   struct ecoff_extr *esym);
47.30927 ++extern bfd_size_type bfd_ecoff_debug_size
47.30928 ++  (bfd *abfd, struct ecoff_debug_info *debug,
47.30929 ++   const struct ecoff_debug_swap *swap);
47.30930 ++extern bfd_boolean bfd_ecoff_write_debug
47.30931 ++  (bfd *abfd, struct ecoff_debug_info *debug,
47.30932 ++   const struct ecoff_debug_swap *swap, file_ptr where);
47.30933 ++extern bfd_boolean bfd_ecoff_write_accumulated_debug
47.30934 ++  (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
47.30935 ++   const struct ecoff_debug_swap *swap,
47.30936 ++   struct bfd_link_info *info, file_ptr where);
47.30937 ++
47.30938 ++/* Externally visible ELF routines.  */
47.30939 ++
47.30940 ++struct bfd_link_needed_list
47.30941 ++{
47.30942 ++  struct bfd_link_needed_list *next;
47.30943 ++  bfd *by;
47.30944 ++  const char *name;
47.30945 ++};
47.30946 ++
47.30947 ++enum dynamic_lib_link_class {
47.30948 ++  DYN_NORMAL = 0,
47.30949 ++  DYN_AS_NEEDED = 1,
47.30950 ++  DYN_DT_NEEDED = 2,
47.30951 ++  DYN_NO_ADD_NEEDED = 4,
47.30952 ++  DYN_NO_NEEDED = 8
47.30953 ++};
47.30954 ++
47.30955 ++enum notice_asneeded_action {
47.30956 ++  notice_as_needed,
47.30957 ++  notice_not_needed,
47.30958 ++  notice_needed
47.30959 ++};
47.30960 ++
47.30961 ++extern bfd_boolean bfd_elf_record_link_assignment
47.30962 ++  (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
47.30963 ++   bfd_boolean);
47.30964 ++extern struct bfd_link_needed_list *bfd_elf_get_needed_list
47.30965 ++  (bfd *, struct bfd_link_info *);
47.30966 ++extern bfd_boolean bfd_elf_get_bfd_needed_list
47.30967 ++  (bfd *, struct bfd_link_needed_list **);
47.30968 ++extern bfd_boolean bfd_elf_size_dynamic_sections
47.30969 ++  (bfd *, const char *, const char *, const char *, const char * const *,
47.30970 ++   struct bfd_link_info *, struct bfd_section **,
47.30971 ++   struct bfd_elf_version_tree *);
47.30972 ++extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
47.30973 ++  (bfd *, struct bfd_link_info *);
47.30974 ++extern void bfd_elf_set_dt_needed_name
47.30975 ++  (bfd *, const char *);
47.30976 ++extern const char *bfd_elf_get_dt_soname
47.30977 ++  (bfd *);
47.30978 ++extern void bfd_elf_set_dyn_lib_class
47.30979 ++  (bfd *, enum dynamic_lib_link_class);
47.30980 ++extern int bfd_elf_get_dyn_lib_class
47.30981 ++  (bfd *);
47.30982 ++extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
47.30983 ++  (bfd *, struct bfd_link_info *);
47.30984 ++extern bfd_boolean bfd_elf_discard_info
47.30985 ++  (bfd *, struct bfd_link_info *);
47.30986 ++extern unsigned int _bfd_elf_default_action_discarded
47.30987 ++  (struct bfd_section *);
47.30988 ++
47.30989 ++/* Return an upper bound on the number of bytes required to store a
47.30990 ++   copy of ABFD's program header table entries.  Return -1 if an error
47.30991 ++   occurs; bfd_get_error will return an appropriate code.  */
47.30992 ++extern long bfd_get_elf_phdr_upper_bound
47.30993 ++  (bfd *abfd);
47.30994 ++
47.30995 ++/* Copy ABFD's program header table entries to *PHDRS.  The entries
47.30996 ++   will be stored as an array of Elf_Internal_Phdr structures, as
47.30997 ++   defined in include/elf/internal.h.  To find out how large the
47.30998 ++   buffer needs to be, call bfd_get_elf_phdr_upper_bound.
47.30999 ++
47.31000 ++   Return the number of program header table entries read, or -1 if an
47.31001 ++   error occurs; bfd_get_error will return an appropriate code.  */
47.31002 ++extern int bfd_get_elf_phdrs
47.31003 ++  (bfd *abfd, void *phdrs);
47.31004 ++
47.31005 ++/* Create a new BFD as if by bfd_openr.  Rather than opening a file,
47.31006 ++   reconstruct an ELF file by reading the segments out of remote memory
47.31007 ++   based on the ELF file header at EHDR_VMA and the ELF program headers it
47.31008 ++   points to.  If not null, *LOADBASEP is filled in with the difference
47.31009 ++   between the VMAs from which the segments were read, and the VMAs the
47.31010 ++   file headers (and hence BFD's idea of each section's VMA) put them at.
47.31011 ++
47.31012 ++   The function TARGET_READ_MEMORY is called to copy LEN bytes from the
47.31013 ++   remote memory at target address VMA into the local buffer at MYADDR; it
47.31014 ++   should return zero on success or an `errno' code on failure.  TEMPL must
47.31015 ++   be a BFD for an ELF target with the word size and byte order found in
47.31016 ++   the remote memory.  */
47.31017 ++extern bfd *bfd_elf_bfd_from_remote_memory
47.31018 ++  (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
47.31019 ++   int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
47.31020 ++
47.31021 ++/* Return the arch_size field of an elf bfd, or -1 if not elf.  */
47.31022 ++extern int bfd_get_arch_size
47.31023 ++  (bfd *);
47.31024 ++
47.31025 ++/* Return TRUE if address "naturally" sign extends, or -1 if not elf.  */
47.31026 ++extern int bfd_get_sign_extend_vma
47.31027 ++  (bfd *);
47.31028 ++
47.31029 ++extern struct bfd_section *_bfd_elf_tls_setup
47.31030 ++  (bfd *, struct bfd_link_info *);
47.31031 ++
47.31032 ++extern void _bfd_fix_excluded_sec_syms
47.31033 ++  (bfd *, struct bfd_link_info *);
47.31034 ++
47.31035 ++extern unsigned bfd_m68k_mach_to_features (int);
47.31036 ++
47.31037 ++extern int bfd_m68k_features_to_mach (unsigned);
47.31038 ++
47.31039 ++extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
47.31040 ++  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
47.31041 ++   char **);
47.31042 ++
47.31043 ++extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
47.31044 ++  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
47.31045 ++   char **);
47.31046 ++
47.31047 ++/* SunOS shared library support routines for the linker.  */
47.31048 ++
47.31049 ++extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
47.31050 ++  (bfd *, struct bfd_link_info *);
47.31051 ++extern bfd_boolean bfd_sunos_record_link_assignment
47.31052 ++  (bfd *, struct bfd_link_info *, const char *);
47.31053 ++extern bfd_boolean bfd_sunos_size_dynamic_sections
47.31054 ++  (bfd *, struct bfd_link_info *, struct bfd_section **,
47.31055 ++   struct bfd_section **, struct bfd_section **);
47.31056 ++
47.31057 ++/* Linux shared library support routines for the linker.  */
47.31058 ++
47.31059 ++extern bfd_boolean bfd_i386linux_size_dynamic_sections
47.31060 ++  (bfd *, struct bfd_link_info *);
47.31061 ++extern bfd_boolean bfd_m68klinux_size_dynamic_sections
47.31062 ++  (bfd *, struct bfd_link_info *);
47.31063 ++extern bfd_boolean bfd_sparclinux_size_dynamic_sections
47.31064 ++  (bfd *, struct bfd_link_info *);
47.31065 ++
47.31066 ++/* mmap hacks */
47.31067 ++
47.31068 ++struct _bfd_window_internal;
47.31069 ++typedef struct _bfd_window_internal bfd_window_internal;
47.31070 ++
47.31071 ++typedef struct _bfd_window
47.31072 ++{
47.31073 ++  /* What the user asked for.  */
47.31074 ++  void *data;
47.31075 ++  bfd_size_type size;
47.31076 ++  /* The actual window used by BFD.  Small user-requested read-only
47.31077 ++     regions sharing a page may share a single window into the object
47.31078 ++     file.  Read-write versions shouldn't until I've fixed things to
47.31079 ++     keep track of which portions have been claimed by the
47.31080 ++     application; don't want to give the same region back when the
47.31081 ++     application wants two writable copies!  */
47.31082 ++  struct _bfd_window_internal *i;
47.31083 ++}
47.31084 ++bfd_window;
47.31085 ++
47.31086 ++extern void bfd_init_window
47.31087 ++  (bfd_window *);
47.31088 ++extern void bfd_free_window
47.31089 ++  (bfd_window *);
47.31090 ++extern bfd_boolean bfd_get_file_window
47.31091 ++  (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
47.31092 ++
47.31093 ++/* XCOFF support routines for the linker.  */
47.31094 ++
47.31095 ++extern bfd_boolean bfd_xcoff_link_record_set
47.31096 ++  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
47.31097 ++extern bfd_boolean bfd_xcoff_import_symbol
47.31098 ++  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
47.31099 ++   const char *, const char *, const char *, unsigned int);
47.31100 ++extern bfd_boolean bfd_xcoff_export_symbol
47.31101 ++  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
47.31102 ++extern bfd_boolean bfd_xcoff_link_count_reloc
47.31103 ++  (bfd *, struct bfd_link_info *, const char *);
47.31104 ++extern bfd_boolean bfd_xcoff_record_link_assignment
47.31105 ++  (bfd *, struct bfd_link_info *, const char *);
47.31106 ++extern bfd_boolean bfd_xcoff_size_dynamic_sections
47.31107 ++  (bfd *, struct bfd_link_info *, const char *, const char *,
47.31108 ++   unsigned long, unsigned long, unsigned long, bfd_boolean,
47.31109 ++   int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
47.31110 ++extern bfd_boolean bfd_xcoff_link_generate_rtinit
47.31111 ++  (bfd *, const char *, const char *, bfd_boolean);
47.31112 ++
47.31113 ++/* XCOFF support routines for ar.  */
47.31114 ++extern bfd_boolean bfd_xcoff_ar_archive_set_magic
47.31115 ++  (bfd *, char *);
47.31116 ++
47.31117 ++/* Externally visible COFF routines.  */
47.31118 ++
47.31119 ++#if defined(__STDC__) || defined(ALMOST_STDC)
47.31120 ++struct internal_syment;
47.31121 ++union internal_auxent;
47.31122 ++#endif
47.31123 ++
47.31124 ++extern bfd_boolean bfd_coff_get_syment
47.31125 ++  (bfd *, struct bfd_symbol *, struct internal_syment *);
47.31126 ++
47.31127 ++extern bfd_boolean bfd_coff_get_auxent
47.31128 ++  (bfd *, struct bfd_symbol *, int, union internal_auxent *);
47.31129 ++
47.31130 ++extern bfd_boolean bfd_coff_set_symbol_class
47.31131 ++  (bfd *, struct bfd_symbol *, unsigned int);
47.31132 ++
47.31133 ++extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
47.31134 ++  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
47.31135 ++
47.31136 ++/* ARM VFP11 erratum workaround support.  */
47.31137 ++typedef enum
47.31138 ++{
47.31139 ++  BFD_ARM_VFP11_FIX_DEFAULT,
47.31140 ++  BFD_ARM_VFP11_FIX_NONE,
47.31141 ++  BFD_ARM_VFP11_FIX_SCALAR,
47.31142 ++  BFD_ARM_VFP11_FIX_VECTOR
47.31143 ++} bfd_arm_vfp11_fix;
47.31144 ++
47.31145 ++extern void bfd_elf32_arm_init_maps
47.31146 ++  (bfd *);
47.31147 ++
47.31148 ++extern void bfd_elf32_arm_set_vfp11_fix
47.31149 ++  (bfd *, struct bfd_link_info *);
47.31150 ++
47.31151 ++extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
47.31152 ++  (bfd *, struct bfd_link_info *);
47.31153 ++
47.31154 ++extern void bfd_elf32_arm_vfp11_fix_veneer_locations
47.31155 ++  (bfd *, struct bfd_link_info *);
47.31156 ++
47.31157 ++/* ARM Interworking support.  Called from linker.  */
47.31158 ++extern bfd_boolean bfd_arm_allocate_interworking_sections
47.31159 ++  (struct bfd_link_info *);
47.31160 ++
47.31161 ++extern bfd_boolean bfd_arm_process_before_allocation
47.31162 ++  (bfd *, struct bfd_link_info *, int);
47.31163 ++
47.31164 ++extern bfd_boolean bfd_arm_get_bfd_for_interworking
47.31165 ++  (bfd *, struct bfd_link_info *);
47.31166 ++
47.31167 ++/* PE ARM Interworking support.  Called from linker.  */
47.31168 ++extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
47.31169 ++  (struct bfd_link_info *);
47.31170 ++
47.31171 ++extern bfd_boolean bfd_arm_pe_process_before_allocation
47.31172 ++  (bfd *, struct bfd_link_info *, int);
47.31173 ++
47.31174 ++extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
47.31175 ++  (bfd *, struct bfd_link_info *);
47.31176 ++
47.31177 ++/* ELF ARM Interworking support.  Called from linker.  */
47.31178 ++extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
47.31179 ++  (struct bfd_link_info *);
47.31180 ++
47.31181 ++extern bfd_boolean bfd_elf32_arm_process_before_allocation
47.31182 ++  (bfd *, struct bfd_link_info *);
47.31183 ++
47.31184 ++void bfd_elf32_arm_set_target_relocs
47.31185 ++  (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
47.31186 ++   int, int);
47.31187 ++
47.31188 ++extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
47.31189 ++  (bfd *, struct bfd_link_info *);
47.31190 ++
47.31191 ++extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
47.31192 ++  (bfd *, struct bfd_link_info *);
47.31193 ++
47.31194 ++/* ELF ARM mapping symbol support */
47.31195 ++#define BFD_ARM_SPECIAL_SYM_TYPE_MAP	(1 << 0)
47.31196 ++#define BFD_ARM_SPECIAL_SYM_TYPE_TAG	(1 << 1)
47.31197 ++#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER  (1 << 2)
47.31198 ++#define BFD_ARM_SPECIAL_SYM_TYPE_ANY	(~0)
47.31199 ++extern bfd_boolean bfd_is_arm_special_symbol_name
47.31200 ++  (const char * name, int type);
47.31201 ++
47.31202 ++extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
47.31203 ++
47.31204 ++/* ARM Note section processing.  */
47.31205 ++extern bfd_boolean bfd_arm_merge_machines
47.31206 ++  (bfd *, bfd *);
47.31207 ++
47.31208 ++extern bfd_boolean bfd_arm_update_notes
47.31209 ++  (bfd *, const char *);
47.31210 ++
47.31211 ++extern unsigned int bfd_arm_get_mach_from_notes
47.31212 ++  (bfd *, const char *);
47.31213 ++
47.31214 ++/* TI COFF load page support.  */
47.31215 ++extern void bfd_ticoff_set_section_load_page
47.31216 ++  (struct bfd_section *, int);
47.31217 ++
47.31218 ++extern int bfd_ticoff_get_section_load_page
47.31219 ++  (struct bfd_section *);
47.31220 ++
47.31221 ++/* H8/300 functions.  */
47.31222 ++extern bfd_vma bfd_h8300_pad_address
47.31223 ++  (bfd *, bfd_vma);
47.31224 ++
47.31225 ++/* IA64 Itanium code generation.  Called from linker.  */
47.31226 ++extern void bfd_elf32_ia64_after_parse
47.31227 ++  (int);
47.31228 ++
47.31229 ++extern void bfd_elf64_ia64_after_parse
47.31230 ++  (int);
47.31231 ++
47.31232 ++/* This structure is used for a comdat section, as in PE.  A comdat
47.31233 ++   section is associated with a particular symbol.  When the linker
47.31234 ++   sees a comdat section, it keeps only one of the sections with a
47.31235 ++   given name and associated with a given symbol.  */
47.31236 ++
47.31237 ++struct coff_comdat_info
47.31238 ++{
47.31239 ++  /* The name of the symbol associated with a comdat section.  */
47.31240 ++  const char *name;
47.31241 ++
47.31242 ++  /* The local symbol table index of the symbol associated with a
47.31243 ++     comdat section.  This is only meaningful to the object file format
47.31244 ++     specific code; it is not an index into the list returned by
47.31245 ++     bfd_canonicalize_symtab.  */
47.31246 ++  long symbol;
47.31247 ++};
47.31248 ++
47.31249 ++extern struct coff_comdat_info *bfd_coff_get_comdat_section
47.31250 ++  (bfd *, struct bfd_section *);
47.31251 ++
47.31252 ++/* Extracted from init.c.  */
47.31253 ++void bfd_init (void);
47.31254 ++
47.31255 ++/* Extracted from opncls.c.  */
47.31256 ++bfd *bfd_fopen (const char *filename, const char *target,
47.31257 ++    const char *mode, int fd);
47.31258 ++
47.31259 ++bfd *bfd_openr (const char *filename, const char *target);
47.31260 ++
47.31261 ++bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
47.31262 ++
47.31263 ++bfd *bfd_openstreamr (const char *, const char *, void *);
47.31264 ++
47.31265 ++bfd *bfd_openr_iovec (const char *filename, const char *target,
47.31266 ++    void *(*open) (struct bfd *nbfd,
47.31267 ++    void *open_closure),
47.31268 ++    void *open_closure,
47.31269 ++    file_ptr (*pread) (struct bfd *nbfd,
47.31270 ++    void *stream,
47.31271 ++    void *buf,
47.31272 ++    file_ptr nbytes,
47.31273 ++    file_ptr offset),
47.31274 ++    int (*close) (struct bfd *nbfd,
47.31275 ++    void *stream),
47.31276 ++    int (*stat) (struct bfd *abfd,
47.31277 ++    void *stream,
47.31278 ++    struct stat *sb));
47.31279 ++
47.31280 ++bfd *bfd_openw (const char *filename, const char *target);
47.31281 ++
47.31282 ++bfd_boolean bfd_close (bfd *abfd);
47.31283 ++
47.31284 ++bfd_boolean bfd_close_all_done (bfd *);
47.31285 ++
47.31286 ++bfd *bfd_create (const char *filename, bfd *templ);
47.31287 ++
47.31288 ++bfd_boolean bfd_make_writable (bfd *abfd);
47.31289 ++
47.31290 ++bfd_boolean bfd_make_readable (bfd *abfd);
47.31291 ++
47.31292 ++unsigned long bfd_calc_gnu_debuglink_crc32
47.31293 ++   (unsigned long crc, const unsigned char *buf, bfd_size_type len);
47.31294 ++
47.31295 ++char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
47.31296 ++
47.31297 ++struct bfd_section *bfd_create_gnu_debuglink_section
47.31298 ++   (bfd *abfd, const char *filename);
47.31299 ++
47.31300 ++bfd_boolean bfd_fill_in_gnu_debuglink_section
47.31301 ++   (bfd *abfd, struct bfd_section *sect, const char *filename);
47.31302 ++
47.31303 ++/* Extracted from libbfd.c.  */
47.31304 ++
47.31305 ++/* Byte swapping macros for user section data.  */
47.31306 ++
47.31307 ++#define bfd_put_8(abfd, val, ptr) \
47.31308 ++  ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
47.31309 ++#define bfd_put_signed_8 \
47.31310 ++  bfd_put_8
47.31311 ++#define bfd_get_8(abfd, ptr) \
47.31312 ++  (*(unsigned char *) (ptr) & 0xff)
47.31313 ++#define bfd_get_signed_8(abfd, ptr) \
47.31314 ++  (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
47.31315 ++
47.31316 ++#define bfd_put_16(abfd, val, ptr) \
47.31317 ++  BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
47.31318 ++#define bfd_put_signed_16 \
47.31319 ++  bfd_put_16
47.31320 ++#define bfd_get_16(abfd, ptr) \
47.31321 ++  BFD_SEND (abfd, bfd_getx16, (ptr))
47.31322 ++#define bfd_get_signed_16(abfd, ptr) \
47.31323 ++  BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
47.31324 ++
47.31325 ++#define bfd_put_32(abfd, val, ptr) \
47.31326 ++  BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
47.31327 ++#define bfd_put_signed_32 \
47.31328 ++  bfd_put_32
47.31329 ++#define bfd_get_32(abfd, ptr) \
47.31330 ++  BFD_SEND (abfd, bfd_getx32, (ptr))
47.31331 ++#define bfd_get_signed_32(abfd, ptr) \
47.31332 ++  BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
47.31333 ++
47.31334 ++#define bfd_put_64(abfd, val, ptr) \
47.31335 ++  BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
47.31336 ++#define bfd_put_signed_64 \
47.31337 ++  bfd_put_64
47.31338 ++#define bfd_get_64(abfd, ptr) \
47.31339 ++  BFD_SEND (abfd, bfd_getx64, (ptr))
47.31340 ++#define bfd_get_signed_64(abfd, ptr) \
47.31341 ++  BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
47.31342 ++
47.31343 ++#define bfd_get(bits, abfd, ptr)                       \
47.31344 ++  ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
47.31345 ++   : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
47.31346 ++   : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
47.31347 ++   : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
47.31348 ++   : (abort (), (bfd_vma) - 1))
47.31349 ++
47.31350 ++#define bfd_put(bits, abfd, val, ptr)                  \
47.31351 ++  ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \
47.31352 ++   : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)                \
47.31353 ++   : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)                \
47.31354 ++   : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)                \
47.31355 ++   : (abort (), (void) 0))
47.31356 ++
47.31357 ++
47.31358 ++/* Byte swapping macros for file header data.  */
47.31359 ++
47.31360 ++#define bfd_h_put_8(abfd, val, ptr) \
47.31361 ++  bfd_put_8 (abfd, val, ptr)
47.31362 ++#define bfd_h_put_signed_8(abfd, val, ptr) \
47.31363 ++  bfd_put_8 (abfd, val, ptr)
47.31364 ++#define bfd_h_get_8(abfd, ptr) \
47.31365 ++  bfd_get_8 (abfd, ptr)
47.31366 ++#define bfd_h_get_signed_8(abfd, ptr) \
47.31367 ++  bfd_get_signed_8 (abfd, ptr)
47.31368 ++
47.31369 ++#define bfd_h_put_16(abfd, val, ptr) \
47.31370 ++  BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
47.31371 ++#define bfd_h_put_signed_16 \
47.31372 ++  bfd_h_put_16
47.31373 ++#define bfd_h_get_16(abfd, ptr) \
47.31374 ++  BFD_SEND (abfd, bfd_h_getx16, (ptr))
47.31375 ++#define bfd_h_get_signed_16(abfd, ptr) \
47.31376 ++  BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
47.31377 ++
47.31378 ++#define bfd_h_put_32(abfd, val, ptr) \
47.31379 ++  BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
47.31380 ++#define bfd_h_put_signed_32 \
47.31381 ++  bfd_h_put_32
47.31382 ++#define bfd_h_get_32(abfd, ptr) \
47.31383 ++  BFD_SEND (abfd, bfd_h_getx32, (ptr))
47.31384 ++#define bfd_h_get_signed_32(abfd, ptr) \
47.31385 ++  BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
47.31386 ++
47.31387 ++#define bfd_h_put_64(abfd, val, ptr) \
47.31388 ++  BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
47.31389 ++#define bfd_h_put_signed_64 \
47.31390 ++  bfd_h_put_64
47.31391 ++#define bfd_h_get_64(abfd, ptr) \
47.31392 ++  BFD_SEND (abfd, bfd_h_getx64, (ptr))
47.31393 ++#define bfd_h_get_signed_64(abfd, ptr) \
47.31394 ++  BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
47.31395 ++
47.31396 ++/* Aliases for the above, which should eventually go away.  */
47.31397 ++
47.31398 ++#define H_PUT_64  bfd_h_put_64
47.31399 ++#define H_PUT_32  bfd_h_put_32
47.31400 ++#define H_PUT_16  bfd_h_put_16
47.31401 ++#define H_PUT_8   bfd_h_put_8
47.31402 ++#define H_PUT_S64 bfd_h_put_signed_64
47.31403 ++#define H_PUT_S32 bfd_h_put_signed_32
47.31404 ++#define H_PUT_S16 bfd_h_put_signed_16
47.31405 ++#define H_PUT_S8  bfd_h_put_signed_8
47.31406 ++#define H_GET_64  bfd_h_get_64
47.31407 ++#define H_GET_32  bfd_h_get_32
47.31408 ++#define H_GET_16  bfd_h_get_16
47.31409 ++#define H_GET_8   bfd_h_get_8
47.31410 ++#define H_GET_S64 bfd_h_get_signed_64
47.31411 ++#define H_GET_S32 bfd_h_get_signed_32
47.31412 ++#define H_GET_S16 bfd_h_get_signed_16
47.31413 ++#define H_GET_S8  bfd_h_get_signed_8
47.31414 ++
47.31415 ++
47.31416 ++/* Extracted from bfdio.c.  */
47.31417 ++long bfd_get_mtime (bfd *abfd);
47.31418 ++
47.31419 ++file_ptr bfd_get_size (bfd *abfd);
47.31420 ++
47.31421 ++/* Extracted from bfdwin.c.  */
47.31422 ++/* Extracted from section.c.  */
47.31423 ++typedef struct bfd_section
47.31424 ++{
47.31425 ++  /* The name of the section; the name isn't a copy, the pointer is
47.31426 ++     the same as that passed to bfd_make_section.  */
47.31427 ++  const char *name;
47.31428 ++
47.31429 ++  /* A unique sequence number.  */
47.31430 ++  int id;
47.31431 ++
47.31432 ++  /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
47.31433 ++  int index;
47.31434 ++
47.31435 ++  /* The next section in the list belonging to the BFD, or NULL.  */
47.31436 ++  struct bfd_section *next;
47.31437 ++
47.31438 ++  /* The previous section in the list belonging to the BFD, or NULL.  */
47.31439 ++  struct bfd_section *prev;
47.31440 ++
47.31441 ++  /* The field flags contains attributes of the section. Some
47.31442 ++     flags are read in from the object file, and some are
47.31443 ++     synthesized from other information.  */
47.31444 ++  flagword flags;
47.31445 ++
47.31446 ++#define SEC_NO_FLAGS   0x000
47.31447 ++
47.31448 ++  /* Tells the OS to allocate space for this section when loading.
47.31449 ++     This is clear for a section containing debug information only.  */
47.31450 ++#define SEC_ALLOC      0x001
47.31451 ++
47.31452 ++  /* Tells the OS to load the section from the file when loading.
47.31453 ++     This is clear for a .bss section.  */
47.31454 ++#define SEC_LOAD       0x002
47.31455 ++
47.31456 ++  /* The section contains data still to be relocated, so there is
47.31457 ++     some relocation information too.  */
47.31458 ++#define SEC_RELOC      0x004
47.31459 ++
47.31460 ++  /* A signal to the OS that the section contains read only data.  */
47.31461 ++#define SEC_READONLY   0x008
47.31462 ++
47.31463 ++  /* The section contains code only.  */
47.31464 ++#define SEC_CODE       0x010
47.31465 ++
47.31466 ++  /* The section contains data only.  */
47.31467 ++#define SEC_DATA       0x020
47.31468 ++
47.31469 ++  /* The section will reside in ROM.  */
47.31470 ++#define SEC_ROM        0x040
47.31471 ++
47.31472 ++  /* The section contains constructor information. This section
47.31473 ++     type is used by the linker to create lists of constructors and
47.31474 ++     destructors used by <<g++>>. When a back end sees a symbol
47.31475 ++     which should be used in a constructor list, it creates a new
47.31476 ++     section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
47.31477 ++     the symbol to it, and builds a relocation. To build the lists
47.31478 ++     of constructors, all the linker has to do is catenate all the
47.31479 ++     sections called <<__CTOR_LIST__>> and relocate the data
47.31480 ++     contained within - exactly the operations it would peform on
47.31481 ++     standard data.  */
47.31482 ++#define SEC_CONSTRUCTOR 0x080
47.31483 ++
47.31484 ++  /* The section has contents - a data section could be
47.31485 ++     <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
47.31486 ++     <<SEC_HAS_CONTENTS>>  */
47.31487 ++#define SEC_HAS_CONTENTS 0x100
47.31488 ++
47.31489 ++  /* An instruction to the linker to not output the section
47.31490 ++     even if it has information which would normally be written.  */
47.31491 ++#define SEC_NEVER_LOAD 0x200
47.31492 ++
47.31493 ++  /* The section contains thread local data.  */
47.31494 ++#define SEC_THREAD_LOCAL 0x400
47.31495 ++
47.31496 ++  /* The section has GOT references.  This flag is only for the
47.31497 ++     linker, and is currently only used by the elf32-hppa back end.
47.31498 ++     It will be set if global offset table references were detected
47.31499 ++     in this section, which indicate to the linker that the section
47.31500 ++     contains PIC code, and must be handled specially when doing a
47.31501 ++     static link.  */
47.31502 ++#define SEC_HAS_GOT_REF 0x800
47.31503 ++
47.31504 ++  /* The section contains common symbols (symbols may be defined
47.31505 ++     multiple times, the value of a symbol is the amount of
47.31506 ++     space it requires, and the largest symbol value is the one
47.31507 ++     used).  Most targets have exactly one of these (which we
47.31508 ++     translate to bfd_com_section_ptr), but ECOFF has two.  */
47.31509 ++#define SEC_IS_COMMON 0x1000
47.31510 ++
47.31511 ++  /* The section contains only debugging information.  For
47.31512 ++     example, this is set for ELF .debug and .stab sections.
47.31513 ++     strip tests this flag to see if a section can be
47.31514 ++     discarded.  */
47.31515 ++#define SEC_DEBUGGING 0x2000
47.31516 ++
47.31517 ++  /* The contents of this section are held in memory pointed to
47.31518 ++     by the contents field.  This is checked by bfd_get_section_contents,
47.31519 ++     and the data is retrieved from memory if appropriate.  */
47.31520 ++#define SEC_IN_MEMORY 0x4000
47.31521 ++
47.31522 ++  /* The contents of this section are to be excluded by the
47.31523 ++     linker for executable and shared objects unless those
47.31524 ++     objects are to be further relocated.  */
47.31525 ++#define SEC_EXCLUDE 0x8000
47.31526 ++
47.31527 ++  /* The contents of this section are to be sorted based on the sum of
47.31528 ++     the symbol and addend values specified by the associated relocation
47.31529 ++     entries.  Entries without associated relocation entries will be
47.31530 ++     appended to the end of the section in an unspecified order.  */
47.31531 ++#define SEC_SORT_ENTRIES 0x10000
47.31532 ++
47.31533 ++  /* When linking, duplicate sections of the same name should be
47.31534 ++     discarded, rather than being combined into a single section as
47.31535 ++     is usually done.  This is similar to how common symbols are
47.31536 ++     handled.  See SEC_LINK_DUPLICATES below.  */
47.31537 ++#define SEC_LINK_ONCE 0x20000
47.31538 ++
47.31539 ++  /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
47.31540 ++     should handle duplicate sections.  */
47.31541 ++#define SEC_LINK_DUPLICATES 0x40000
47.31542 ++
47.31543 ++  /* This value for SEC_LINK_DUPLICATES means that duplicate
47.31544 ++     sections with the same name should simply be discarded.  */
47.31545 ++#define SEC_LINK_DUPLICATES_DISCARD 0x0
47.31546 ++
47.31547 ++  /* This value for SEC_LINK_DUPLICATES means that the linker
47.31548 ++     should warn if there are any duplicate sections, although
47.31549 ++     it should still only link one copy.  */
47.31550 ++#define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
47.31551 ++
47.31552 ++  /* This value for SEC_LINK_DUPLICATES means that the linker
47.31553 ++     should warn if any duplicate sections are a different size.  */
47.31554 ++#define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
47.31555 ++
47.31556 ++  /* This value for SEC_LINK_DUPLICATES means that the linker
47.31557 ++     should warn if any duplicate sections contain different
47.31558 ++     contents.  */
47.31559 ++#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
47.31560 ++  (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
47.31561 ++
47.31562 ++  /* This section was created by the linker as part of dynamic
47.31563 ++     relocation or other arcane processing.  It is skipped when
47.31564 ++     going through the first-pass output, trusting that someone
47.31565 ++     else up the line will take care of it later.  */
47.31566 ++#define SEC_LINKER_CREATED 0x200000
47.31567 ++
47.31568 ++  /* This section should not be subject to garbage collection.
47.31569 ++     Also set to inform the linker that this section should not be
47.31570 ++     listed in the link map as discarded.  */
47.31571 ++#define SEC_KEEP 0x400000
47.31572 ++
47.31573 ++  /* This section contains "short" data, and should be placed
47.31574 ++     "near" the GP.  */
47.31575 ++#define SEC_SMALL_DATA 0x800000
47.31576 ++
47.31577 ++  /* Attempt to merge identical entities in the section.
47.31578 ++     Entity size is given in the entsize field.  */
47.31579 ++#define SEC_MERGE 0x1000000
47.31580 ++
47.31581 ++  /* If given with SEC_MERGE, entities to merge are zero terminated
47.31582 ++     strings where entsize specifies character size instead of fixed
47.31583 ++     size entries.  */
47.31584 ++#define SEC_STRINGS 0x2000000
47.31585 ++
47.31586 ++  /* This section contains data about section groups.  */
47.31587 ++#define SEC_GROUP 0x4000000
47.31588 ++
47.31589 ++  /* The section is a COFF shared library section.  This flag is
47.31590 ++     only for the linker.  If this type of section appears in
47.31591 ++     the input file, the linker must copy it to the output file
47.31592 ++     without changing the vma or size.  FIXME: Although this
47.31593 ++     was originally intended to be general, it really is COFF
47.31594 ++     specific (and the flag was renamed to indicate this).  It
47.31595 ++     might be cleaner to have some more general mechanism to
47.31596 ++     allow the back end to control what the linker does with
47.31597 ++     sections.  */
47.31598 ++#define SEC_COFF_SHARED_LIBRARY 0x10000000
47.31599 ++
47.31600 ++  /* This section contains data which may be shared with other
47.31601 ++     executables or shared objects. This is for COFF only.  */
47.31602 ++#define SEC_COFF_SHARED 0x20000000
47.31603 ++
47.31604 ++  /* When a section with this flag is being linked, then if the size of
47.31605 ++     the input section is less than a page, it should not cross a page
47.31606 ++     boundary.  If the size of the input section is one page or more,
47.31607 ++     it should be aligned on a page boundary.  This is for TI
47.31608 ++     TMS320C54X only.  */
47.31609 ++#define SEC_TIC54X_BLOCK 0x40000000
47.31610 ++
47.31611 ++  /* Conditionally link this section; do not link if there are no
47.31612 ++     references found to any symbol in the section.  This is for TI
47.31613 ++     TMS320C54X only.  */
47.31614 ++#define SEC_TIC54X_CLINK 0x80000000
47.31615 ++
47.31616 ++  /*  End of section flags.  */
47.31617 ++
47.31618 ++  /* Some internal packed boolean fields.  */
47.31619 ++
47.31620 ++  /* See the vma field.  */
47.31621 ++  unsigned int user_set_vma : 1;
47.31622 ++
47.31623 ++  /* A mark flag used by some of the linker backends.  */
47.31624 ++  unsigned int linker_mark : 1;
47.31625 ++
47.31626 ++  /* Another mark flag used by some of the linker backends.  Set for
47.31627 ++     output sections that have an input section.  */
47.31628 ++  unsigned int linker_has_input : 1;
47.31629 ++
47.31630 ++  /* Mark flags used by some linker backends for garbage collection.  */
47.31631 ++  unsigned int gc_mark : 1;
47.31632 ++  unsigned int gc_mark_from_eh : 1;
47.31633 ++
47.31634 ++  /* The following flags are used by the ELF linker. */
47.31635 ++
47.31636 ++  /* Mark sections which have been allocated to segments.  */
47.31637 ++  unsigned int segment_mark : 1;
47.31638 ++
47.31639 ++  /* Type of sec_info information.  */
47.31640 ++  unsigned int sec_info_type:3;
47.31641 ++#define ELF_INFO_TYPE_NONE      0
47.31642 ++#define ELF_INFO_TYPE_STABS     1
47.31643 ++#define ELF_INFO_TYPE_MERGE     2
47.31644 ++#define ELF_INFO_TYPE_EH_FRAME  3
47.31645 ++#define ELF_INFO_TYPE_JUST_SYMS 4
47.31646 ++
47.31647 ++  /* Nonzero if this section uses RELA relocations, rather than REL.  */
47.31648 ++  unsigned int use_rela_p:1;
47.31649 ++
47.31650 ++  /* Bits used by various backends.  The generic code doesn't touch
47.31651 ++     these fields.  */
47.31652 ++
47.31653 ++  /* Nonzero if this section has TLS related relocations.  */
47.31654 ++  unsigned int has_tls_reloc:1;
47.31655 ++
47.31656 ++  /* Nonzero if this section has a gp reloc.  */
47.31657 ++  unsigned int has_gp_reloc:1;
47.31658 ++
47.31659 ++  /* Nonzero if this section needs the relax finalize pass.  */
47.31660 ++  unsigned int need_finalize_relax:1;
47.31661 ++
47.31662 ++  /* Whether relocations have been processed.  */
47.31663 ++  unsigned int reloc_done : 1;
47.31664 ++
47.31665 ++  /* End of internal packed boolean fields.  */
47.31666 ++
47.31667 ++  /*  The virtual memory address of the section - where it will be
47.31668 ++      at run time.  The symbols are relocated against this.  The
47.31669 ++      user_set_vma flag is maintained by bfd; if it's not set, the
47.31670 ++      backend can assign addresses (for example, in <<a.out>>, where
47.31671 ++      the default address for <<.data>> is dependent on the specific
47.31672 ++      target and various flags).  */
47.31673 ++  bfd_vma vma;
47.31674 ++
47.31675 ++  /*  The load address of the section - where it would be in a
47.31676 ++      rom image; really only used for writing section header
47.31677 ++      information.  */
47.31678 ++  bfd_vma lma;
47.31679 ++
47.31680 ++  /* The size of the section in octets, as it will be output.
47.31681 ++     Contains a value even if the section has no contents (e.g., the
47.31682 ++     size of <<.bss>>).  */
47.31683 ++  bfd_size_type size;
47.31684 ++
47.31685 ++  /* For input sections, the original size on disk of the section, in
47.31686 ++     octets.  This field is used by the linker relaxation code.  It is
47.31687 ++     currently only set for sections where the linker relaxation scheme
47.31688 ++     doesn't cache altered section and reloc contents (stabs, eh_frame,
47.31689 ++     SEC_MERGE, some coff relaxing targets), and thus the original size
47.31690 ++     needs to be kept to read the section multiple times.
47.31691 ++     For output sections, rawsize holds the section size calculated on
47.31692 ++     a previous linker relaxation pass.  */
47.31693 ++  bfd_size_type rawsize;
47.31694 ++
47.31695 ++  /* If this section is going to be output, then this value is the
47.31696 ++     offset in *bytes* into the output section of the first byte in the
47.31697 ++     input section (byte ==> smallest addressable unit on the
47.31698 ++     target).  In most cases, if this was going to start at the
47.31699 ++     100th octet (8-bit quantity) in the output section, this value
47.31700 ++     would be 100.  However, if the target byte size is 16 bits
47.31701 ++     (bfd_octets_per_byte is "2"), this value would be 50.  */
47.31702 ++  bfd_vma output_offset;
47.31703 ++
47.31704 ++  /* The output section through which to map on output.  */
47.31705 ++  struct bfd_section *output_section;
47.31706 ++
47.31707 ++  /* The alignment requirement of the section, as an exponent of 2 -
47.31708 ++     e.g., 3 aligns to 2^3 (or 8).  */
47.31709 ++  unsigned int alignment_power;
47.31710 ++
47.31711 ++  /* If an input section, a pointer to a vector of relocation
47.31712 ++     records for the data in this section.  */
47.31713 ++  struct reloc_cache_entry *relocation;
47.31714 ++
47.31715 ++  /* If an output section, a pointer to a vector of pointers to
47.31716 ++     relocation records for the data in this section.  */
47.31717 ++  struct reloc_cache_entry **orelocation;
47.31718 ++
47.31719 ++  /* The number of relocation records in one of the above.  */
47.31720 ++  unsigned reloc_count;
47.31721 ++
47.31722 ++  /* Information below is back end specific - and not always used
47.31723 ++     or updated.  */
47.31724 ++
47.31725 ++  /* File position of section data.  */
47.31726 ++  file_ptr filepos;
47.31727 ++
47.31728 ++  /* File position of relocation info.  */
47.31729 ++  file_ptr rel_filepos;
47.31730 ++
47.31731 ++  /* File position of line data.  */
47.31732 ++  file_ptr line_filepos;
47.31733 ++
47.31734 ++  /* Pointer to data for applications.  */
47.31735 ++  void *userdata;
47.31736 ++
47.31737 ++  /* If the SEC_IN_MEMORY flag is set, this points to the actual
47.31738 ++     contents.  */
47.31739 ++  unsigned char *contents;
47.31740 ++
47.31741 ++  /* Attached line number information.  */
47.31742 ++  alent *lineno;
47.31743 ++
47.31744 ++  /* Number of line number records.  */
47.31745 ++  unsigned int lineno_count;
47.31746 ++
47.31747 ++  /* Entity size for merging purposes.  */
47.31748 ++  unsigned int entsize;
47.31749 ++
47.31750 ++  /* Points to the kept section if this section is a link-once section,
47.31751 ++     and is discarded.  */
47.31752 ++  struct bfd_section *kept_section;
47.31753 ++
47.31754 ++  /* When a section is being output, this value changes as more
47.31755 ++     linenumbers are written out.  */
47.31756 ++  file_ptr moving_line_filepos;
47.31757 ++
47.31758 ++  /* What the section number is in the target world.  */
47.31759 ++  int target_index;
47.31760 ++
47.31761 ++  void *used_by_bfd;
47.31762 ++
47.31763 ++  /* If this is a constructor section then here is a list of the
47.31764 ++     relocations created to relocate items within it.  */
47.31765 ++  struct relent_chain *constructor_chain;
47.31766 ++
47.31767 ++  /* The BFD which owns the section.  */
47.31768 ++  bfd *owner;
47.31769 ++
47.31770 ++  /* A symbol which points at this section only.  */
47.31771 ++  struct bfd_symbol *symbol;
47.31772 ++  struct bfd_symbol **symbol_ptr_ptr;
47.31773 ++
47.31774 ++  /* Early in the link process, map_head and map_tail are used to build
47.31775 ++     a list of input sections attached to an output section.  Later,
47.31776 ++     output sections use these fields for a list of bfd_link_order
47.31777 ++     structs.  */
47.31778 ++  union {
47.31779 ++    struct bfd_link_order *link_order;
47.31780 ++    struct bfd_section *s;
47.31781 ++  } map_head, map_tail;
47.31782 ++} asection;
47.31783 ++
47.31784 ++/* These sections are global, and are managed by BFD.  The application
47.31785 ++   and target back end are not permitted to change the values in
47.31786 ++   these sections.  New code should use the section_ptr macros rather
47.31787 ++   than referring directly to the const sections.  The const sections
47.31788 ++   may eventually vanish.  */
47.31789 ++#define BFD_ABS_SECTION_NAME "*ABS*"
47.31790 ++#define BFD_UND_SECTION_NAME "*UND*"
47.31791 ++#define BFD_COM_SECTION_NAME "*COM*"
47.31792 ++#define BFD_IND_SECTION_NAME "*IND*"
47.31793 ++
47.31794 ++/* The absolute section.  */
47.31795 ++extern asection bfd_abs_section;
47.31796 ++#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
47.31797 ++#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
47.31798 ++/* Pointer to the undefined section.  */
47.31799 ++extern asection bfd_und_section;
47.31800 ++#define bfd_und_section_ptr ((asection *) &bfd_und_section)
47.31801 ++#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
47.31802 ++/* Pointer to the common section.  */
47.31803 ++extern asection bfd_com_section;
47.31804 ++#define bfd_com_section_ptr ((asection *) &bfd_com_section)
47.31805 ++/* Pointer to the indirect section.  */
47.31806 ++extern asection bfd_ind_section;
47.31807 ++#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
47.31808 ++#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
47.31809 ++
47.31810 ++#define bfd_is_const_section(SEC)              \
47.31811 ++ (   ((SEC) == bfd_abs_section_ptr)            \
47.31812 ++  || ((SEC) == bfd_und_section_ptr)            \
47.31813 ++  || ((SEC) == bfd_com_section_ptr)            \
47.31814 ++  || ((SEC) == bfd_ind_section_ptr))
47.31815 ++
47.31816 ++/* Macros to handle insertion and deletion of a bfd's sections.  These
47.31817 ++   only handle the list pointers, ie. do not adjust section_count,
47.31818 ++   target_index etc.  */
47.31819 ++#define bfd_section_list_remove(ABFD, S) \
47.31820 ++  do                                                   \
47.31821 ++    {                                                  \
47.31822 ++      asection *_s = S;                                \
47.31823 ++      asection *_next = _s->next;                      \
47.31824 ++      asection *_prev = _s->prev;                      \
47.31825 ++      if (_prev)                                       \
47.31826 ++        _prev->next = _next;                           \
47.31827 ++      else                                             \
47.31828 ++        (ABFD)->sections = _next;                      \
47.31829 ++      if (_next)                                       \
47.31830 ++        _next->prev = _prev;                           \
47.31831 ++      else                                             \
47.31832 ++        (ABFD)->section_last = _prev;                  \
47.31833 ++    }                                                  \
47.31834 ++  while (0)
47.31835 ++#define bfd_section_list_append(ABFD, S) \
47.31836 ++  do                                                   \
47.31837 ++    {                                                  \
47.31838 ++      asection *_s = S;                                \
47.31839 ++      bfd *_abfd = ABFD;                               \
47.31840 ++      _s->next = NULL;                                 \
47.31841 ++      if (_abfd->section_last)                         \
47.31842 ++        {                                              \
47.31843 ++          _s->prev = _abfd->section_last;              \
47.31844 ++          _abfd->section_last->next = _s;              \
47.31845 ++        }                                              \
47.31846 ++      else                                             \
47.31847 ++        {                                              \
47.31848 ++          _s->prev = NULL;                             \
47.31849 ++          _abfd->sections = _s;                        \
47.31850 ++        }                                              \
47.31851 ++      _abfd->section_last = _s;                        \
47.31852 ++    }                                                  \
47.31853 ++  while (0)
47.31854 ++#define bfd_section_list_prepend(ABFD, S) \
47.31855 ++  do                                                   \
47.31856 ++    {                                                  \
47.31857 ++      asection *_s = S;                                \
47.31858 ++      bfd *_abfd = ABFD;                               \
47.31859 ++      _s->prev = NULL;                                 \
47.31860 ++      if (_abfd->sections)                             \
47.31861 ++        {                                              \
47.31862 ++          _s->next = _abfd->sections;                  \
47.31863 ++          _abfd->sections->prev = _s;                  \
47.31864 ++        }                                              \
47.31865 ++      else                                             \
47.31866 ++        {                                              \
47.31867 ++          _s->next = NULL;                             \
47.31868 ++          _abfd->section_last = _s;                    \
47.31869 ++        }                                              \
47.31870 ++      _abfd->sections = _s;                            \
47.31871 ++    }                                                  \
47.31872 ++  while (0)
47.31873 ++#define bfd_section_list_insert_after(ABFD, A, S) \
47.31874 ++  do                                                   \
47.31875 ++    {                                                  \
47.31876 ++      asection *_a = A;                                \
47.31877 ++      asection *_s = S;                                \
47.31878 ++      asection *_next = _a->next;                      \
47.31879 ++      _s->next = _next;                                \
47.31880 ++      _s->prev = _a;                                   \
47.31881 ++      _a->next = _s;                                   \
47.31882 ++      if (_next)                                       \
47.31883 ++        _next->prev = _s;                              \
47.31884 ++      else                                             \
47.31885 ++        (ABFD)->section_last = _s;                     \
47.31886 ++    }                                                  \
47.31887 ++  while (0)
47.31888 ++#define bfd_section_list_insert_before(ABFD, B, S) \
47.31889 ++  do                                                   \
47.31890 ++    {                                                  \
47.31891 ++      asection *_b = B;                                \
47.31892 ++      asection *_s = S;                                \
47.31893 ++      asection *_prev = _b->prev;                      \
47.31894 ++      _s->prev = _prev;                                \
47.31895 ++      _s->next = _b;                                   \
47.31896 ++      _b->prev = _s;                                   \
47.31897 ++      if (_prev)                                       \
47.31898 ++        _prev->next = _s;                              \
47.31899 ++      else                                             \
47.31900 ++        (ABFD)->sections = _s;                         \
47.31901 ++    }                                                  \
47.31902 ++  while (0)
47.31903 ++#define bfd_section_removed_from_list(ABFD, S) \
47.31904 ++  ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
47.31905 ++
47.31906 ++#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX)                   \
47.31907 ++  /* name, id,  index, next, prev, flags, user_set_vma,            */  \
47.31908 ++  { NAME,  IDX, 0,     NULL, NULL, FLAGS, 0,                           \
47.31909 ++                                                                       \
47.31910 ++  /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh,      */  \
47.31911 ++     0,           0,                1,       0,                        \
47.31912 ++                                                                       \
47.31913 ++  /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc,       */  \
47.31914 ++     0,            0,             0,          0,                       \
47.31915 ++                                                                       \
47.31916 ++  /* has_gp_reloc, need_finalize_relax, reloc_done,                */  \
47.31917 ++     0,            0,                   0,                             \
47.31918 ++                                                                       \
47.31919 ++  /* vma, lma, size, rawsize                                       */  \
47.31920 ++     0,   0,   0,    0,                                                \
47.31921 ++                                                                       \
47.31922 ++  /* output_offset, output_section,              alignment_power,  */  \
47.31923 ++     0,             (struct bfd_section *) &SEC, 0,                    \
47.31924 ++                                                                       \
47.31925 ++  /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
47.31926 ++     NULL,       NULL,        0,           0,       0,                 \
47.31927 ++                                                                       \
47.31928 ++  /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
47.31929 ++     0,            NULL,     NULL,     NULL,   0,                      \
47.31930 ++                                                                       \
47.31931 ++  /* entsize, kept_section, moving_line_filepos,                    */ \
47.31932 ++     0,       NULL,          0,                                        \
47.31933 ++                                                                       \
47.31934 ++  /* target_index, used_by_bfd, constructor_chain, owner,          */  \
47.31935 ++     0,            NULL,        NULL,              NULL,               \
47.31936 ++                                                                       \
47.31937 ++  /* symbol,                    symbol_ptr_ptr,                    */  \
47.31938 ++     (struct bfd_symbol *) SYM, &SEC.symbol,                           \
47.31939 ++                                                                       \
47.31940 ++  /* map_head, map_tail                                            */  \
47.31941 ++     { NULL }, { NULL }                                                \
47.31942 ++    }
47.31943 ++
47.31944 ++void bfd_section_list_clear (bfd *);
47.31945 ++
47.31946 ++asection *bfd_get_section_by_name (bfd *abfd, const char *name);
47.31947 ++
47.31948 ++asection *bfd_get_section_by_name_if
47.31949 ++   (bfd *abfd,
47.31950 ++    const char *name,
47.31951 ++    bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
47.31952 ++    void *obj);
47.31953 ++
47.31954 ++char *bfd_get_unique_section_name
47.31955 ++   (bfd *abfd, const char *templat, int *count);
47.31956 ++
47.31957 ++asection *bfd_make_section_old_way (bfd *abfd, const char *name);
47.31958 ++
47.31959 ++asection *bfd_make_section_anyway_with_flags
47.31960 ++   (bfd *abfd, const char *name, flagword flags);
47.31961 ++
47.31962 ++asection *bfd_make_section_anyway (bfd *abfd, const char *name);
47.31963 ++
47.31964 ++asection *bfd_make_section_with_flags
47.31965 ++   (bfd *, const char *name, flagword flags);
47.31966 ++
47.31967 ++asection *bfd_make_section (bfd *, const char *name);
47.31968 ++
47.31969 ++bfd_boolean bfd_set_section_flags
47.31970 ++   (bfd *abfd, asection *sec, flagword flags);
47.31971 ++
47.31972 ++void bfd_map_over_sections
47.31973 ++   (bfd *abfd,
47.31974 ++    void (*func) (bfd *abfd, asection *sect, void *obj),
47.31975 ++    void *obj);
47.31976 ++
47.31977 ++asection *bfd_sections_find_if
47.31978 ++   (bfd *abfd,
47.31979 ++    bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
47.31980 ++    void *obj);
47.31981 ++
47.31982 ++bfd_boolean bfd_set_section_size
47.31983 ++   (bfd *abfd, asection *sec, bfd_size_type val);
47.31984 ++
47.31985 ++bfd_boolean bfd_set_section_contents
47.31986 ++   (bfd *abfd, asection *section, const void *data,
47.31987 ++    file_ptr offset, bfd_size_type count);
47.31988 ++
47.31989 ++bfd_boolean bfd_get_section_contents
47.31990 ++   (bfd *abfd, asection *section, void *location, file_ptr offset,
47.31991 ++    bfd_size_type count);
47.31992 ++
47.31993 ++bfd_boolean bfd_malloc_and_get_section
47.31994 ++   (bfd *abfd, asection *section, bfd_byte **buf);
47.31995 ++
47.31996 ++bfd_boolean bfd_copy_private_section_data
47.31997 ++   (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
47.31998 ++
47.31999 ++#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
47.32000 ++     BFD_SEND (obfd, _bfd_copy_private_section_data, \
47.32001 ++               (ibfd, isection, obfd, osection))
47.32002 ++bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
47.32003 ++
47.32004 ++bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
47.32005 ++
47.32006 ++/* Extracted from archures.c.  */
47.32007 ++enum bfd_architecture
47.32008 ++{
47.32009 ++  bfd_arch_unknown,   /* File arch not known.  */
47.32010 ++  bfd_arch_obscure,   /* Arch known, not one of these.  */
47.32011 ++  bfd_arch_m68k,      /* Motorola 68xxx */
47.32012 ++#define bfd_mach_m68000 1
47.32013 ++#define bfd_mach_m68008 2
47.32014 ++#define bfd_mach_m68010 3
47.32015 ++#define bfd_mach_m68020 4
47.32016 ++#define bfd_mach_m68030 5
47.32017 ++#define bfd_mach_m68040 6
47.32018 ++#define bfd_mach_m68060 7
47.32019 ++#define bfd_mach_cpu32  8
47.32020 ++#define bfd_mach_fido   9
47.32021 ++#define bfd_mach_mcf_isa_a_nodiv 10
47.32022 ++#define bfd_mach_mcf_isa_a 11
47.32023 ++#define bfd_mach_mcf_isa_a_mac 12
47.32024 ++#define bfd_mach_mcf_isa_a_emac 13
47.32025 ++#define bfd_mach_mcf_isa_aplus 14
47.32026 ++#define bfd_mach_mcf_isa_aplus_mac 15
47.32027 ++#define bfd_mach_mcf_isa_aplus_emac 16
47.32028 ++#define bfd_mach_mcf_isa_b_nousp 17
47.32029 ++#define bfd_mach_mcf_isa_b_nousp_mac 18
47.32030 ++#define bfd_mach_mcf_isa_b_nousp_emac 19
47.32031 ++#define bfd_mach_mcf_isa_b 20
47.32032 ++#define bfd_mach_mcf_isa_b_mac 21
47.32033 ++#define bfd_mach_mcf_isa_b_emac 22
47.32034 ++#define bfd_mach_mcf_isa_b_float 23
47.32035 ++#define bfd_mach_mcf_isa_b_float_mac 24
47.32036 ++#define bfd_mach_mcf_isa_b_float_emac 25
47.32037 ++#define bfd_mach_mcf_isa_c 26
47.32038 ++#define bfd_mach_mcf_isa_c_mac 27
47.32039 ++#define bfd_mach_mcf_isa_c_emac 28
47.32040 ++  bfd_arch_vax,       /* DEC Vax */
47.32041 ++  bfd_arch_i960,      /* Intel 960 */
47.32042 ++    /* The order of the following is important.
47.32043 ++       lower number indicates a machine type that
47.32044 ++       only accepts a subset of the instructions
47.32045 ++       available to machines with higher numbers.
47.32046 ++       The exception is the "ca", which is
47.32047 ++       incompatible with all other machines except
47.32048 ++       "core".  */
47.32049 ++
47.32050 ++#define bfd_mach_i960_core      1
47.32051 ++#define bfd_mach_i960_ka_sa     2
47.32052 ++#define bfd_mach_i960_kb_sb     3
47.32053 ++#define bfd_mach_i960_mc        4
47.32054 ++#define bfd_mach_i960_xa        5
47.32055 ++#define bfd_mach_i960_ca        6
47.32056 ++#define bfd_mach_i960_jx        7
47.32057 ++#define bfd_mach_i960_hx        8
47.32058 ++
47.32059 ++  bfd_arch_or32,      /* OpenRISC 32 */
47.32060 ++
47.32061 ++  bfd_arch_sparc,     /* SPARC */
47.32062 ++#define bfd_mach_sparc                 1
47.32063 ++/* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
47.32064 ++#define bfd_mach_sparc_sparclet        2
47.32065 ++#define bfd_mach_sparc_sparclite       3
47.32066 ++#define bfd_mach_sparc_v8plus          4
47.32067 ++#define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */
47.32068 ++#define bfd_mach_sparc_sparclite_le    6
47.32069 ++#define bfd_mach_sparc_v9              7
47.32070 ++#define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
47.32071 ++#define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
47.32072 ++#define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
47.32073 ++/* Nonzero if MACH has the v9 instruction set.  */
47.32074 ++#define bfd_mach_sparc_v9_p(mach) \
47.32075 ++  ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
47.32076 ++   && (mach) != bfd_mach_sparc_sparclite_le)
47.32077 ++/* Nonzero if MACH is a 64 bit sparc architecture.  */
47.32078 ++#define bfd_mach_sparc_64bit_p(mach) \
47.32079 ++  ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
47.32080 ++  bfd_arch_spu,       /* PowerPC SPU */
47.32081 ++#define bfd_mach_spu           256 
47.32082 ++  bfd_arch_mips,      /* MIPS Rxxxx */
47.32083 ++#define bfd_mach_mips3000              3000
47.32084 ++#define bfd_mach_mips3900              3900
47.32085 ++#define bfd_mach_mips4000              4000
47.32086 ++#define bfd_mach_mips4010              4010
47.32087 ++#define bfd_mach_mips4100              4100
47.32088 ++#define bfd_mach_mips4111              4111
47.32089 ++#define bfd_mach_mips4120              4120
47.32090 ++#define bfd_mach_mips4300              4300
47.32091 ++#define bfd_mach_mips4400              4400
47.32092 ++#define bfd_mach_mips4600              4600
47.32093 ++#define bfd_mach_mips4650              4650
47.32094 ++#define bfd_mach_mips5000              5000
47.32095 ++#define bfd_mach_mips5400              5400
47.32096 ++#define bfd_mach_mips5500              5500
47.32097 ++#define bfd_mach_mips6000              6000
47.32098 ++#define bfd_mach_mips7000              7000
47.32099 ++#define bfd_mach_mips8000              8000
47.32100 ++#define bfd_mach_mips9000              9000
47.32101 ++#define bfd_mach_mips10000             10000
47.32102 ++#define bfd_mach_mips12000             12000
47.32103 ++#define bfd_mach_mips16                16
47.32104 ++#define bfd_mach_mips5                 5
47.32105 ++#define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */
47.32106 ++#define bfd_mach_mipsisa32             32
47.32107 ++#define bfd_mach_mipsisa32r2           33
47.32108 ++#define bfd_mach_mipsisa64             64
47.32109 ++#define bfd_mach_mipsisa64r2           65
47.32110 ++  bfd_arch_i386,      /* Intel 386 */
47.32111 ++#define bfd_mach_i386_i386 1
47.32112 ++#define bfd_mach_i386_i8086 2
47.32113 ++#define bfd_mach_i386_i386_intel_syntax 3
47.32114 ++#define bfd_mach_x86_64 64
47.32115 ++#define bfd_mach_x86_64_intel_syntax 65
47.32116 ++  bfd_arch_we32k,     /* AT&T WE32xxx */
47.32117 ++  bfd_arch_tahoe,     /* CCI/Harris Tahoe */
47.32118 ++  bfd_arch_i860,      /* Intel 860 */
47.32119 ++  bfd_arch_i370,      /* IBM 360/370 Mainframes */
47.32120 ++  bfd_arch_romp,      /* IBM ROMP PC/RT */
47.32121 ++  bfd_arch_convex,    /* Convex */
47.32122 ++  bfd_arch_m88k,      /* Motorola 88xxx */
47.32123 ++  bfd_arch_m98k,      /* Motorola 98xxx */
47.32124 ++  bfd_arch_pyramid,   /* Pyramid Technology */
47.32125 ++  bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */
47.32126 ++#define bfd_mach_h8300    1
47.32127 ++#define bfd_mach_h8300h   2
47.32128 ++#define bfd_mach_h8300s   3
47.32129 ++#define bfd_mach_h8300hn  4
47.32130 ++#define bfd_mach_h8300sn  5
47.32131 ++#define bfd_mach_h8300sx  6
47.32132 ++#define bfd_mach_h8300sxn 7
47.32133 ++  bfd_arch_pdp11,     /* DEC PDP-11 */
47.32134 ++  bfd_arch_powerpc,   /* PowerPC */
47.32135 ++#define bfd_mach_ppc           32
47.32136 ++#define bfd_mach_ppc64         64
47.32137 ++#define bfd_mach_ppc_403       403
47.32138 ++#define bfd_mach_ppc_403gc     4030
47.32139 ++#define bfd_mach_ppc_505       505
47.32140 ++#define bfd_mach_ppc_601       601
47.32141 ++#define bfd_mach_ppc_602       602
47.32142 ++#define bfd_mach_ppc_603       603
47.32143 ++#define bfd_mach_ppc_ec603e    6031
47.32144 ++#define bfd_mach_ppc_604       604
47.32145 ++#define bfd_mach_ppc_620       620
47.32146 ++#define bfd_mach_ppc_630       630
47.32147 ++#define bfd_mach_ppc_750       750
47.32148 ++#define bfd_mach_ppc_860       860
47.32149 ++#define bfd_mach_ppc_a35       35
47.32150 ++#define bfd_mach_ppc_rs64ii    642
47.32151 ++#define bfd_mach_ppc_rs64iii   643
47.32152 ++#define bfd_mach_ppc_7400      7400
47.32153 ++#define bfd_mach_ppc_e500      500
47.32154 ++  bfd_arch_rs6000,    /* IBM RS/6000 */
47.32155 ++#define bfd_mach_rs6k          6000
47.32156 ++#define bfd_mach_rs6k_rs1      6001
47.32157 ++#define bfd_mach_rs6k_rsc      6003
47.32158 ++#define bfd_mach_rs6k_rs2      6002
47.32159 ++  bfd_arch_hppa,      /* HP PA RISC */
47.32160 ++#define bfd_mach_hppa10        10
47.32161 ++#define bfd_mach_hppa11        11
47.32162 ++#define bfd_mach_hppa20        20
47.32163 ++#define bfd_mach_hppa20w       25
47.32164 ++  bfd_arch_d10v,      /* Mitsubishi D10V */
47.32165 ++#define bfd_mach_d10v          1
47.32166 ++#define bfd_mach_d10v_ts2      2
47.32167 ++#define bfd_mach_d10v_ts3      3
47.32168 ++  bfd_arch_d30v,      /* Mitsubishi D30V */
47.32169 ++  bfd_arch_dlx,       /* DLX */
47.32170 ++  bfd_arch_m68hc11,   /* Motorola 68HC11 */
47.32171 ++  bfd_arch_m68hc12,   /* Motorola 68HC12 */
47.32172 ++#define bfd_mach_m6812_default 0
47.32173 ++#define bfd_mach_m6812         1
47.32174 ++#define bfd_mach_m6812s        2
47.32175 ++  bfd_arch_z8k,       /* Zilog Z8000 */
47.32176 ++#define bfd_mach_z8001         1
47.32177 ++#define bfd_mach_z8002         2
47.32178 ++  bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */
47.32179 ++  bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */
47.32180 ++#define bfd_mach_sh            1
47.32181 ++#define bfd_mach_sh2        0x20
47.32182 ++#define bfd_mach_sh_dsp     0x2d
47.32183 ++#define bfd_mach_sh2a       0x2a
47.32184 ++#define bfd_mach_sh2a_nofpu 0x2b
47.32185 ++#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
47.32186 ++#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
47.32187 ++#define bfd_mach_sh2a_or_sh4  0x2a3
47.32188 ++#define bfd_mach_sh2a_or_sh3e 0x2a4
47.32189 ++#define bfd_mach_sh2e       0x2e
47.32190 ++#define bfd_mach_sh3        0x30
47.32191 ++#define bfd_mach_sh3_nommu  0x31
47.32192 ++#define bfd_mach_sh3_dsp    0x3d
47.32193 ++#define bfd_mach_sh3e       0x3e
47.32194 ++#define bfd_mach_sh4        0x40
47.32195 ++#define bfd_mach_sh4_nofpu  0x41
47.32196 ++#define bfd_mach_sh4_nommu_nofpu  0x42
47.32197 ++#define bfd_mach_sh4a       0x4a
47.32198 ++#define bfd_mach_sh4a_nofpu 0x4b
47.32199 ++#define bfd_mach_sh4al_dsp  0x4d
47.32200 ++#define bfd_mach_sh5        0x50
47.32201 ++  bfd_arch_alpha,     /* Dec Alpha */
47.32202 ++#define bfd_mach_alpha_ev4  0x10
47.32203 ++#define bfd_mach_alpha_ev5  0x20
47.32204 ++#define bfd_mach_alpha_ev6  0x30
47.32205 ++  bfd_arch_arm,       /* Advanced Risc Machines ARM.  */
47.32206 ++#define bfd_mach_arm_unknown   0
47.32207 ++#define bfd_mach_arm_2         1
47.32208 ++#define bfd_mach_arm_2a        2
47.32209 ++#define bfd_mach_arm_3         3
47.32210 ++#define bfd_mach_arm_3M        4
47.32211 ++#define bfd_mach_arm_4         5
47.32212 ++#define bfd_mach_arm_4T        6
47.32213 ++#define bfd_mach_arm_5         7
47.32214 ++#define bfd_mach_arm_5T        8
47.32215 ++#define bfd_mach_arm_5TE       9
47.32216 ++#define bfd_mach_arm_XScale    10
47.32217 ++#define bfd_mach_arm_ep9312    11
47.32218 ++#define bfd_mach_arm_iWMMXt    12
47.32219 ++#define bfd_mach_arm_iWMMXt2   13
47.32220 ++  bfd_arch_ns32k,     /* National Semiconductors ns32000 */
47.32221 ++  bfd_arch_w65,       /* WDC 65816 */
47.32222 ++  bfd_arch_tic30,     /* Texas Instruments TMS320C30 */
47.32223 ++  bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */
47.32224 ++#define bfd_mach_tic3x         30
47.32225 ++#define bfd_mach_tic4x         40
47.32226 ++  bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */
47.32227 ++  bfd_arch_tic80,     /* TI TMS320c80 (MVP) */
47.32228 ++  bfd_arch_v850,      /* NEC V850 */
47.32229 ++#define bfd_mach_v850          1
47.32230 ++#define bfd_mach_v850e         'E'
47.32231 ++#define bfd_mach_v850e1        '1'
47.32232 ++  bfd_arch_arc,       /* ARC Cores */
47.32233 ++#define bfd_mach_arc_5         5
47.32234 ++#define bfd_mach_arc_6         6
47.32235 ++#define bfd_mach_arc_7         7
47.32236 ++#define bfd_mach_arc_8         8
47.32237 ++ bfd_arch_m32c,     /* Renesas M16C/M32C.  */
47.32238 ++#define bfd_mach_m16c        0x75
47.32239 ++#define bfd_mach_m32c        0x78
47.32240 ++  bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */
47.32241 ++#define bfd_mach_m32r          1 /* For backwards compatibility.  */
47.32242 ++#define bfd_mach_m32rx         'x'
47.32243 ++#define bfd_mach_m32r2         '2'
47.32244 ++  bfd_arch_mn10200,   /* Matsushita MN10200 */
47.32245 ++  bfd_arch_mn10300,   /* Matsushita MN10300 */
47.32246 ++#define bfd_mach_mn10300               300
47.32247 ++#define bfd_mach_am33          330
47.32248 ++#define bfd_mach_am33_2        332
47.32249 ++  bfd_arch_fr30,
47.32250 ++#define bfd_mach_fr30          0x46523330
47.32251 ++  bfd_arch_frv,
47.32252 ++#define bfd_mach_frv           1
47.32253 ++#define bfd_mach_frvsimple     2
47.32254 ++#define bfd_mach_fr300         300
47.32255 ++#define bfd_mach_fr400         400
47.32256 ++#define bfd_mach_fr450         450
47.32257 ++#define bfd_mach_frvtomcat     499     /* fr500 prototype */
47.32258 ++#define bfd_mach_fr500         500
47.32259 ++#define bfd_mach_fr550         550
47.32260 ++  bfd_arch_mcore,
47.32261 ++  bfd_arch_mep,
47.32262 ++#define bfd_mach_mep           1
47.32263 ++#define bfd_mach_mep_h1        0x6831
47.32264 ++  bfd_arch_ia64,      /* HP/Intel ia64 */
47.32265 ++#define bfd_mach_ia64_elf64    64
47.32266 ++#define bfd_mach_ia64_elf32    32
47.32267 ++  bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */
47.32268 ++#define bfd_mach_ip2022        1
47.32269 ++#define bfd_mach_ip2022ext     2
47.32270 ++ bfd_arch_iq2000,     /* Vitesse IQ2000.  */
47.32271 ++#define bfd_mach_iq2000        1
47.32272 ++#define bfd_mach_iq10          2
47.32273 ++  bfd_arch_mt,
47.32274 ++#define bfd_mach_ms1           1
47.32275 ++#define bfd_mach_mrisc2        2
47.32276 ++#define bfd_mach_ms2           3
47.32277 ++  bfd_arch_pj,
47.32278 ++  bfd_arch_avr,       /* Atmel AVR microcontrollers.  */
47.32279 ++#define bfd_mach_avr1          1
47.32280 ++#define bfd_mach_avr2          2
47.32281 ++#define bfd_mach_avr3          3
47.32282 ++#define bfd_mach_avr4          4
47.32283 ++#define bfd_mach_avr5          5
47.32284 ++#define bfd_mach_avr6          6
47.32285 ++  bfd_arch_bfin,        /* ADI Blackfin */
47.32286 ++#define bfd_mach_bfin          1
47.32287 ++  bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */
47.32288 ++#define bfd_mach_cr16          1
47.32289 ++  bfd_arch_cr16c,       /* National Semiconductor CompactRISC. */
47.32290 ++#define bfd_mach_cr16c         1
47.32291 ++  bfd_arch_crx,       /*  National Semiconductor CRX.  */
47.32292 ++#define bfd_mach_crx           1
47.32293 ++  bfd_arch_cris,      /* Axis CRIS */
47.32294 ++#define bfd_mach_cris_v0_v10   255
47.32295 ++#define bfd_mach_cris_v32      32
47.32296 ++#define bfd_mach_cris_v10_v32  1032
47.32297 ++  bfd_arch_s390,      /* IBM s390 */
47.32298 ++#define bfd_mach_s390_31       31
47.32299 ++#define bfd_mach_s390_64       64
47.32300 ++  bfd_arch_score,     /* Sunplus score */ 
47.32301 ++  bfd_arch_openrisc,  /* OpenRISC */
47.32302 ++  bfd_arch_mmix,      /* Donald Knuth's educational processor.  */
47.32303 ++  bfd_arch_xstormy16,
47.32304 ++#define bfd_mach_xstormy16     1
47.32305 ++  bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
47.32306 ++#define bfd_mach_msp11          11
47.32307 ++#define bfd_mach_msp110         110
47.32308 ++#define bfd_mach_msp12          12
47.32309 ++#define bfd_mach_msp13          13
47.32310 ++#define bfd_mach_msp14          14
47.32311 ++#define bfd_mach_msp15          15
47.32312 ++#define bfd_mach_msp16          16
47.32313 ++#define bfd_mach_msp21          21
47.32314 ++#define bfd_mach_msp31          31
47.32315 ++#define bfd_mach_msp32          32
47.32316 ++#define bfd_mach_msp33          33
47.32317 ++#define bfd_mach_msp41          41
47.32318 ++#define bfd_mach_msp42          42
47.32319 ++#define bfd_mach_msp43          43
47.32320 ++#define bfd_mach_msp44          44
47.32321 ++  bfd_arch_xc16x,     /* Infineon's XC16X Series.               */
47.32322 ++#define bfd_mach_xc16x         1
47.32323 ++#define bfd_mach_xc16xl        2
47.32324 ++#define bfd_mach_xc16xs         3
47.32325 ++  bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
47.32326 ++#define bfd_mach_xtensa        1
47.32327 ++   bfd_arch_maxq,     /* Dallas MAXQ 10/20 */
47.32328 ++#define bfd_mach_maxq10    10
47.32329 ++#define bfd_mach_maxq20    20
47.32330 ++  bfd_arch_z80,
47.32331 ++#define bfd_mach_z80strict      1 /* No undocumented opcodes.  */
47.32332 ++#define bfd_mach_z80            3 /* With ixl, ixh, iyl, and iyh.  */
47.32333 ++#define bfd_mach_z80full        7 /* All undocumented instructions.  */
47.32334 ++#define bfd_mach_r800           11 /* R800: successor with multiplication.  */
47.32335 ++  bfd_arch_last
47.32336 ++  };
47.32337 ++
47.32338 ++typedef struct bfd_arch_info
47.32339 ++{
47.32340 ++  int bits_per_word;
47.32341 ++  int bits_per_address;
47.32342 ++  int bits_per_byte;
47.32343 ++  enum bfd_architecture arch;
47.32344 ++  unsigned long mach;
47.32345 ++  const char *arch_name;
47.32346 ++  const char *printable_name;
47.32347 ++  unsigned int section_align_power;
47.32348 ++  /* TRUE if this is the default machine for the architecture.
47.32349 ++     The default arch should be the first entry for an arch so that
47.32350 ++     all the entries for that arch can be accessed via <<next>>.  */
47.32351 ++  bfd_boolean the_default;
47.32352 ++  const struct bfd_arch_info * (*compatible)
47.32353 ++    (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
47.32354 ++
47.32355 ++  bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
47.32356 ++
47.32357 ++  const struct bfd_arch_info *next;
47.32358 ++}
47.32359 ++bfd_arch_info_type;
47.32360 ++
47.32361 ++const char *bfd_printable_name (bfd *abfd);
47.32362 ++
47.32363 ++const bfd_arch_info_type *bfd_scan_arch (const char *string);
47.32364 ++
47.32365 ++const char **bfd_arch_list (void);
47.32366 ++
47.32367 ++const bfd_arch_info_type *bfd_arch_get_compatible
47.32368 ++   (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
47.32369 ++
47.32370 ++void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
47.32371 ++
47.32372 ++enum bfd_architecture bfd_get_arch (bfd *abfd);
47.32373 ++
47.32374 ++unsigned long bfd_get_mach (bfd *abfd);
47.32375 ++
47.32376 ++unsigned int bfd_arch_bits_per_byte (bfd *abfd);
47.32377 ++
47.32378 ++unsigned int bfd_arch_bits_per_address (bfd *abfd);
47.32379 ++
47.32380 ++const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
47.32381 ++
47.32382 ++const bfd_arch_info_type *bfd_lookup_arch
47.32383 ++   (enum bfd_architecture arch, unsigned long machine);
47.32384 ++
47.32385 ++const char *bfd_printable_arch_mach
47.32386 ++   (enum bfd_architecture arch, unsigned long machine);
47.32387 ++
47.32388 ++unsigned int bfd_octets_per_byte (bfd *abfd);
47.32389 ++
47.32390 ++unsigned int bfd_arch_mach_octets_per_byte
47.32391 ++   (enum bfd_architecture arch, unsigned long machine);
47.32392 ++
47.32393 ++/* Extracted from reloc.c.  */
47.32394 ++typedef enum bfd_reloc_status
47.32395 ++{
47.32396 ++  /* No errors detected.  */
47.32397 ++  bfd_reloc_ok,
47.32398 ++
47.32399 ++  /* The relocation was performed, but there was an overflow.  */
47.32400 ++  bfd_reloc_overflow,
47.32401 ++
47.32402 ++  /* The address to relocate was not within the section supplied.  */
47.32403 ++  bfd_reloc_outofrange,
47.32404 ++
47.32405 ++  /* Used by special functions.  */
47.32406 ++  bfd_reloc_continue,
47.32407 ++
47.32408 ++  /* Unsupported relocation size requested.  */
47.32409 ++  bfd_reloc_notsupported,
47.32410 ++
47.32411 ++  /* Unused.  */
47.32412 ++  bfd_reloc_other,
47.32413 ++
47.32414 ++  /* The symbol to relocate against was undefined.  */
47.32415 ++  bfd_reloc_undefined,
47.32416 ++
47.32417 ++  /* The relocation was performed, but may not be ok - presently
47.32418 ++     generated only when linking i960 coff files with i960 b.out
47.32419 ++     symbols.  If this type is returned, the error_message argument
47.32420 ++     to bfd_perform_relocation will be set.  */
47.32421 ++  bfd_reloc_dangerous
47.32422 ++ }
47.32423 ++ bfd_reloc_status_type;
47.32424 ++
47.32425 ++
47.32426 ++typedef struct reloc_cache_entry
47.32427 ++{
47.32428 ++  /* A pointer into the canonical table of pointers.  */
47.32429 ++  struct bfd_symbol **sym_ptr_ptr;
47.32430 ++
47.32431 ++  /* offset in section.  */
47.32432 ++  bfd_size_type address;
47.32433 ++
47.32434 ++  /* addend for relocation value.  */
47.32435 ++  bfd_vma addend;
47.32436 ++
47.32437 ++  /* Pointer to how to perform the required relocation.  */
47.32438 ++  reloc_howto_type *howto;
47.32439 ++
47.32440 ++}
47.32441 ++arelent;
47.32442 ++
47.32443 ++enum complain_overflow
47.32444 ++{
47.32445 ++  /* Do not complain on overflow.  */
47.32446 ++  complain_overflow_dont,
47.32447 ++
47.32448 ++  /* Complain if the value overflows when considered as a signed
47.32449 ++     number one bit larger than the field.  ie. A bitfield of N bits
47.32450 ++     is allowed to represent -2**n to 2**n-1.  */
47.32451 ++  complain_overflow_bitfield,
47.32452 ++
47.32453 ++  /* Complain if the value overflows when considered as a signed
47.32454 ++     number.  */
47.32455 ++  complain_overflow_signed,
47.32456 ++
47.32457 ++  /* Complain if the value overflows when considered as an
47.32458 ++     unsigned number.  */
47.32459 ++  complain_overflow_unsigned
47.32460 ++};
47.32461 ++
47.32462 ++struct reloc_howto_struct
47.32463 ++{
47.32464 ++  /*  The type field has mainly a documentary use - the back end can
47.32465 ++      do what it wants with it, though normally the back end's
47.32466 ++      external idea of what a reloc number is stored
47.32467 ++      in this field.  For example, a PC relative word relocation
47.32468 ++      in a coff environment has the type 023 - because that's
47.32469 ++      what the outside world calls a R_PCRWORD reloc.  */
47.32470 ++  unsigned int type;
47.32471 ++
47.32472 ++  /*  The value the final relocation is shifted right by.  This drops
47.32473 ++      unwanted data from the relocation.  */
47.32474 ++  unsigned int rightshift;
47.32475 ++
47.32476 ++  /*  The size of the item to be relocated.  This is *not* a
47.32477 ++      power-of-two measure.  To get the number of bytes operated
47.32478 ++      on by a type of relocation, use bfd_get_reloc_size.  */
47.32479 ++  int size;
47.32480 ++
47.32481 ++  /*  The number of bits in the item to be relocated.  This is used
47.32482 ++      when doing overflow checking.  */
47.32483 ++  unsigned int bitsize;
47.32484 ++
47.32485 ++  /*  Notes that the relocation is relative to the location in the
47.32486 ++      data section of the addend.  The relocation function will
47.32487 ++      subtract from the relocation value the address of the location
47.32488 ++      being relocated.  */
47.32489 ++  bfd_boolean pc_relative;
47.32490 ++
47.32491 ++  /*  The bit position of the reloc value in the destination.
47.32492 ++      The relocated value is left shifted by this amount.  */
47.32493 ++  unsigned int bitpos;
47.32494 ++
47.32495 ++  /* What type of overflow error should be checked for when
47.32496 ++     relocating.  */
47.32497 ++  enum complain_overflow complain_on_overflow;
47.32498 ++
47.32499 ++  /* If this field is non null, then the supplied function is
47.32500 ++     called rather than the normal function.  This allows really
47.32501 ++     strange relocation methods to be accommodated (e.g., i960 callj
47.32502 ++     instructions).  */
47.32503 ++  bfd_reloc_status_type (*special_function)
47.32504 ++    (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
47.32505 ++     bfd *, char **);
47.32506 ++
47.32507 ++  /* The textual name of the relocation type.  */
47.32508 ++  char *name;
47.32509 ++
47.32510 ++  /* Some formats record a relocation addend in the section contents
47.32511 ++     rather than with the relocation.  For ELF formats this is the
47.32512 ++     distinction between USE_REL and USE_RELA (though the code checks
47.32513 ++     for USE_REL == 1/0).  The value of this field is TRUE if the
47.32514 ++     addend is recorded with the section contents; when performing a
47.32515 ++     partial link (ld -r) the section contents (the data) will be
47.32516 ++     modified.  The value of this field is FALSE if addends are
47.32517 ++     recorded with the relocation (in arelent.addend); when performing
47.32518 ++     a partial link the relocation will be modified.
47.32519 ++     All relocations for all ELF USE_RELA targets should set this field
47.32520 ++     to FALSE (values of TRUE should be looked on with suspicion).
47.32521 ++     However, the converse is not true: not all relocations of all ELF
47.32522 ++     USE_REL targets set this field to TRUE.  Why this is so is peculiar
47.32523 ++     to each particular target.  For relocs that aren't used in partial
47.32524 ++     links (e.g. GOT stuff) it doesn't matter what this is set to.  */
47.32525 ++  bfd_boolean partial_inplace;
47.32526 ++
47.32527 ++  /* src_mask selects the part of the instruction (or data) to be used
47.32528 ++     in the relocation sum.  If the target relocations don't have an
47.32529 ++     addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
47.32530 ++     dst_mask to extract the addend from the section contents.  If
47.32531 ++     relocations do have an addend in the reloc, eg. ELF USE_RELA, this
47.32532 ++     field should be zero.  Non-zero values for ELF USE_RELA targets are
47.32533 ++     bogus as in those cases the value in the dst_mask part of the
47.32534 ++     section contents should be treated as garbage.  */
47.32535 ++  bfd_vma src_mask;
47.32536 ++
47.32537 ++  /* dst_mask selects which parts of the instruction (or data) are
47.32538 ++     replaced with a relocated value.  */
47.32539 ++  bfd_vma dst_mask;
47.32540 ++
47.32541 ++  /* When some formats create PC relative instructions, they leave
47.32542 ++     the value of the pc of the place being relocated in the offset
47.32543 ++     slot of the instruction, so that a PC relative relocation can
47.32544 ++     be made just by adding in an ordinary offset (e.g., sun3 a.out).
47.32545 ++     Some formats leave the displacement part of an instruction
47.32546 ++     empty (e.g., m88k bcs); this flag signals the fact.  */
47.32547 ++  bfd_boolean pcrel_offset;
47.32548 ++};
47.32549 ++
47.32550 ++#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
47.32551 ++  { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
47.32552 ++#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
47.32553 ++  HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
47.32554 ++         NAME, FALSE, 0, 0, IN)
47.32555 ++
47.32556 ++#define EMPTY_HOWTO(C) \
47.32557 ++  HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
47.32558 ++         NULL, FALSE, 0, 0, FALSE)
47.32559 ++
47.32560 ++#define HOWTO_PREPARE(relocation, symbol)               \
47.32561 ++  {                                                     \
47.32562 ++    if (symbol != NULL)                                 \
47.32563 ++      {                                                 \
47.32564 ++        if (bfd_is_com_section (symbol->section))       \
47.32565 ++          {                                             \
47.32566 ++            relocation = 0;                             \
47.32567 ++          }                                             \
47.32568 ++        else                                            \
47.32569 ++          {                                             \
47.32570 ++            relocation = symbol->value;                 \
47.32571 ++          }                                             \
47.32572 ++      }                                                 \
47.32573 ++  }
47.32574 ++
47.32575 ++unsigned int bfd_get_reloc_size (reloc_howto_type *);
47.32576 ++
47.32577 ++typedef struct relent_chain
47.32578 ++{
47.32579 ++  arelent relent;
47.32580 ++  struct relent_chain *next;
47.32581 ++}
47.32582 ++arelent_chain;
47.32583 ++
47.32584 ++bfd_reloc_status_type bfd_check_overflow
47.32585 ++   (enum complain_overflow how,
47.32586 ++    unsigned int bitsize,
47.32587 ++    unsigned int rightshift,
47.32588 ++    unsigned int addrsize,
47.32589 ++    bfd_vma relocation);
47.32590 ++
47.32591 ++bfd_reloc_status_type bfd_perform_relocation
47.32592 ++   (bfd *abfd,
47.32593 ++    arelent *reloc_entry,
47.32594 ++    void *data,
47.32595 ++    asection *input_section,
47.32596 ++    bfd *output_bfd,
47.32597 ++    char **error_message);
47.32598 ++
47.32599 ++bfd_reloc_status_type bfd_install_relocation
47.32600 ++   (bfd *abfd,
47.32601 ++    arelent *reloc_entry,
47.32602 ++    void *data, bfd_vma data_start,
47.32603 ++    asection *input_section,
47.32604 ++    char **error_message);
47.32605 ++
47.32606 ++enum bfd_reloc_code_real {
47.32607 ++  _dummy_first_bfd_reloc_code_real,
47.32608 ++
47.32609 ++
47.32610 ++/* Basic absolute relocations of N bits.  */
47.32611 ++  BFD_RELOC_64,
47.32612 ++  BFD_RELOC_32,
47.32613 ++  BFD_RELOC_26,
47.32614 ++  BFD_RELOC_24,
47.32615 ++  BFD_RELOC_16,
47.32616 ++  BFD_RELOC_14,
47.32617 ++  BFD_RELOC_8,
47.32618 ++
47.32619 ++/* PC-relative relocations.  Sometimes these are relative to the address
47.32620 ++of the relocation itself; sometimes they are relative to the start of
47.32621 ++the section containing the relocation.  It depends on the specific target.
47.32622 ++
47.32623 ++The 24-bit relocation is used in some Intel 960 configurations.  */
47.32624 ++  BFD_RELOC_64_PCREL,
47.32625 ++  BFD_RELOC_32_PCREL,
47.32626 ++  BFD_RELOC_24_PCREL,
47.32627 ++  BFD_RELOC_16_PCREL,
47.32628 ++  BFD_RELOC_12_PCREL,
47.32629 ++  BFD_RELOC_8_PCREL,
47.32630 ++
47.32631 ++/* Section relative relocations.  Some targets need this for DWARF2.  */
47.32632 ++  BFD_RELOC_32_SECREL,
47.32633 ++
47.32634 ++/* For ELF.  */
47.32635 ++  BFD_RELOC_32_GOT_PCREL,
47.32636 ++  BFD_RELOC_16_GOT_PCREL,
47.32637 ++  BFD_RELOC_8_GOT_PCREL,
47.32638 ++  BFD_RELOC_32_GOTOFF,
47.32639 ++  BFD_RELOC_16_GOTOFF,
47.32640 ++  BFD_RELOC_LO16_GOTOFF,
47.32641 ++  BFD_RELOC_HI16_GOTOFF,
47.32642 ++  BFD_RELOC_HI16_S_GOTOFF,
47.32643 ++  BFD_RELOC_8_GOTOFF,
47.32644 ++  BFD_RELOC_64_PLT_PCREL,
47.32645 ++  BFD_RELOC_32_PLT_PCREL,
47.32646 ++  BFD_RELOC_24_PLT_PCREL,
47.32647 ++  BFD_RELOC_16_PLT_PCREL,
47.32648 ++  BFD_RELOC_8_PLT_PCREL,
47.32649 ++  BFD_RELOC_64_PLTOFF,
47.32650 ++  BFD_RELOC_32_PLTOFF,
47.32651 ++  BFD_RELOC_16_PLTOFF,
47.32652 ++  BFD_RELOC_LO16_PLTOFF,
47.32653 ++  BFD_RELOC_HI16_PLTOFF,
47.32654 ++  BFD_RELOC_HI16_S_PLTOFF,
47.32655 ++  BFD_RELOC_8_PLTOFF,
47.32656 ++
47.32657 ++/* Relocations used by 68K ELF.  */
47.32658 ++  BFD_RELOC_68K_GLOB_DAT,
47.32659 ++  BFD_RELOC_68K_JMP_SLOT,
47.32660 ++  BFD_RELOC_68K_RELATIVE,
47.32661 ++
47.32662 ++/* Linkage-table relative.  */
47.32663 ++  BFD_RELOC_32_BASEREL,
47.32664 ++  BFD_RELOC_16_BASEREL,
47.32665 ++  BFD_RELOC_LO16_BASEREL,
47.32666 ++  BFD_RELOC_HI16_BASEREL,
47.32667 ++  BFD_RELOC_HI16_S_BASEREL,
47.32668 ++  BFD_RELOC_8_BASEREL,
47.32669 ++  BFD_RELOC_RVA,
47.32670 ++
47.32671 ++/* Absolute 8-bit relocation, but used to form an address like 0xFFnn.  */
47.32672 ++  BFD_RELOC_8_FFnn,
47.32673 ++
47.32674 ++/* These PC-relative relocations are stored as word displacements --
47.32675 ++i.e., byte displacements shifted right two bits.  The 30-bit word
47.32676 ++displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
47.32677 ++SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
47.32678 ++signed 16-bit displacement is used on the MIPS, and the 23-bit
47.32679 ++displacement is used on the Alpha.  */
47.32680 ++  BFD_RELOC_32_PCREL_S2,
47.32681 ++  BFD_RELOC_16_PCREL_S2,
47.32682 ++  BFD_RELOC_23_PCREL_S2,
47.32683 ++
47.32684 ++/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
47.32685 ++the target word.  These are used on the SPARC.  */
47.32686 ++  BFD_RELOC_HI22,
47.32687 ++  BFD_RELOC_LO10,
47.32688 ++
47.32689 ++/* For systems that allocate a Global Pointer register, these are
47.32690 ++displacements off that register.  These relocation types are
47.32691 ++handled specially, because the value the register will have is
47.32692 ++decided relatively late.  */
47.32693 ++  BFD_RELOC_GPREL16,
47.32694 ++  BFD_RELOC_GPREL32,
47.32695 ++
47.32696 ++/* Reloc types used for i960/b.out.  */
47.32697 ++  BFD_RELOC_I960_CALLJ,
47.32698 ++
47.32699 ++/* SPARC ELF relocations.  There is probably some overlap with other
47.32700 ++relocation types already defined.  */
47.32701 ++  BFD_RELOC_NONE,
47.32702 ++  BFD_RELOC_SPARC_WDISP22,
47.32703 ++  BFD_RELOC_SPARC22,
47.32704 ++  BFD_RELOC_SPARC13,
47.32705 ++  BFD_RELOC_SPARC_GOT10,
47.32706 ++  BFD_RELOC_SPARC_GOT13,
47.32707 ++  BFD_RELOC_SPARC_GOT22,
47.32708 ++  BFD_RELOC_SPARC_PC10,
47.32709 ++  BFD_RELOC_SPARC_PC22,
47.32710 ++  BFD_RELOC_SPARC_WPLT30,
47.32711 ++  BFD_RELOC_SPARC_COPY,
47.32712 ++  BFD_RELOC_SPARC_GLOB_DAT,
47.32713 ++  BFD_RELOC_SPARC_JMP_SLOT,
47.32714 ++  BFD_RELOC_SPARC_RELATIVE,
47.32715 ++  BFD_RELOC_SPARC_UA16,
47.32716 ++  BFD_RELOC_SPARC_UA32,
47.32717 ++  BFD_RELOC_SPARC_UA64,
47.32718 ++
47.32719 ++/* I think these are specific to SPARC a.out (e.g., Sun 4).  */
47.32720 ++  BFD_RELOC_SPARC_BASE13,
47.32721 ++  BFD_RELOC_SPARC_BASE22,
47.32722 ++
47.32723 ++/* SPARC64 relocations  */
47.32724 ++#define BFD_RELOC_SPARC_64 BFD_RELOC_64
47.32725 ++  BFD_RELOC_SPARC_10,
47.32726 ++  BFD_RELOC_SPARC_11,
47.32727 ++  BFD_RELOC_SPARC_OLO10,
47.32728 ++  BFD_RELOC_SPARC_HH22,
47.32729 ++  BFD_RELOC_SPARC_HM10,
47.32730 ++  BFD_RELOC_SPARC_LM22,
47.32731 ++  BFD_RELOC_SPARC_PC_HH22,
47.32732 ++  BFD_RELOC_SPARC_PC_HM10,
47.32733 ++  BFD_RELOC_SPARC_PC_LM22,
47.32734 ++  BFD_RELOC_SPARC_WDISP16,
47.32735 ++  BFD_RELOC_SPARC_WDISP19,
47.32736 ++  BFD_RELOC_SPARC_7,
47.32737 ++  BFD_RELOC_SPARC_6,
47.32738 ++  BFD_RELOC_SPARC_5,
47.32739 ++#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
47.32740 ++  BFD_RELOC_SPARC_PLT32,
47.32741 ++  BFD_RELOC_SPARC_PLT64,
47.32742 ++  BFD_RELOC_SPARC_HIX22,
47.32743 ++  BFD_RELOC_SPARC_LOX10,
47.32744 ++  BFD_RELOC_SPARC_H44,
47.32745 ++  BFD_RELOC_SPARC_M44,
47.32746 ++  BFD_RELOC_SPARC_L44,
47.32747 ++  BFD_RELOC_SPARC_REGISTER,
47.32748 ++
47.32749 ++/* SPARC little endian relocation  */
47.32750 ++  BFD_RELOC_SPARC_REV32,
47.32751 ++
47.32752 ++/* SPARC TLS relocations  */
47.32753 ++  BFD_RELOC_SPARC_TLS_GD_HI22,
47.32754 ++  BFD_RELOC_SPARC_TLS_GD_LO10,
47.32755 ++  BFD_RELOC_SPARC_TLS_GD_ADD,
47.32756 ++  BFD_RELOC_SPARC_TLS_GD_CALL,
47.32757 ++  BFD_RELOC_SPARC_TLS_LDM_HI22,
47.32758 ++  BFD_RELOC_SPARC_TLS_LDM_LO10,
47.32759 ++  BFD_RELOC_SPARC_TLS_LDM_ADD,
47.32760 ++  BFD_RELOC_SPARC_TLS_LDM_CALL,
47.32761 ++  BFD_RELOC_SPARC_TLS_LDO_HIX22,
47.32762 ++  BFD_RELOC_SPARC_TLS_LDO_LOX10,
47.32763 ++  BFD_RELOC_SPARC_TLS_LDO_ADD,
47.32764 ++  BFD_RELOC_SPARC_TLS_IE_HI22,
47.32765 ++  BFD_RELOC_SPARC_TLS_IE_LO10,
47.32766 ++  BFD_RELOC_SPARC_TLS_IE_LD,
47.32767 ++  BFD_RELOC_SPARC_TLS_IE_LDX,
47.32768 ++  BFD_RELOC_SPARC_TLS_IE_ADD,
47.32769 ++  BFD_RELOC_SPARC_TLS_LE_HIX22,
47.32770 ++  BFD_RELOC_SPARC_TLS_LE_LOX10,
47.32771 ++  BFD_RELOC_SPARC_TLS_DTPMOD32,
47.32772 ++  BFD_RELOC_SPARC_TLS_DTPMOD64,
47.32773 ++  BFD_RELOC_SPARC_TLS_DTPOFF32,
47.32774 ++  BFD_RELOC_SPARC_TLS_DTPOFF64,
47.32775 ++  BFD_RELOC_SPARC_TLS_TPOFF32,
47.32776 ++  BFD_RELOC_SPARC_TLS_TPOFF64,
47.32777 ++
47.32778 ++/* SPU Relocations.  */
47.32779 ++  BFD_RELOC_SPU_IMM7,
47.32780 ++  BFD_RELOC_SPU_IMM8,
47.32781 ++  BFD_RELOC_SPU_IMM10,
47.32782 ++  BFD_RELOC_SPU_IMM10W,
47.32783 ++  BFD_RELOC_SPU_IMM16,
47.32784 ++  BFD_RELOC_SPU_IMM16W,
47.32785 ++  BFD_RELOC_SPU_IMM18,
47.32786 ++  BFD_RELOC_SPU_PCREL9a,
47.32787 ++  BFD_RELOC_SPU_PCREL9b,
47.32788 ++  BFD_RELOC_SPU_PCREL16,
47.32789 ++  BFD_RELOC_SPU_LO16,
47.32790 ++  BFD_RELOC_SPU_HI16,
47.32791 ++  BFD_RELOC_SPU_PPU32,
47.32792 ++  BFD_RELOC_SPU_PPU64,
47.32793 ++
47.32794 ++/* Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
47.32795 ++"addend" in some special way.
47.32796 ++For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
47.32797 ++writing; when reading, it will be the absolute section symbol.  The
47.32798 ++addend is the displacement in bytes of the "lda" instruction from
47.32799 ++the "ldah" instruction (which is at the address of this reloc).  */
47.32800 ++  BFD_RELOC_ALPHA_GPDISP_HI16,
47.32801 ++
47.32802 ++/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
47.32803 ++with GPDISP_HI16 relocs.  The addend is ignored when writing the
47.32804 ++relocations out, and is filled in with the file's GP value on
47.32805 ++reading, for convenience.  */
47.32806 ++  BFD_RELOC_ALPHA_GPDISP_LO16,
47.32807 ++
47.32808 ++/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
47.32809 ++relocation except that there is no accompanying GPDISP_LO16
47.32810 ++relocation.  */
47.32811 ++  BFD_RELOC_ALPHA_GPDISP,
47.32812 ++
47.32813 ++/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
47.32814 ++the assembler turns it into a LDQ instruction to load the address of
47.32815 ++the symbol, and then fills in a register in the real instruction.
47.32816 ++
47.32817 ++The LITERAL reloc, at the LDQ instruction, refers to the .lita
47.32818 ++section symbol.  The addend is ignored when writing, but is filled
47.32819 ++in with the file's GP value on reading, for convenience, as with the
47.32820 ++GPDISP_LO16 reloc.
47.32821 ++
47.32822 ++The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
47.32823 ++It should refer to the symbol to be referenced, as with 16_GOTOFF,
47.32824 ++but it generates output not based on the position within the .got
47.32825 ++section, but relative to the GP value chosen for the file during the
47.32826 ++final link stage.
47.32827 ++
47.32828 ++The LITUSE reloc, on the instruction using the loaded address, gives
47.32829 ++information to the linker that it might be able to use to optimize
47.32830 ++away some literal section references.  The symbol is ignored (read
47.32831 ++as the absolute section symbol), and the "addend" indicates the type
47.32832 ++of instruction using the register:
47.32833 ++1 - "memory" fmt insn
47.32834 ++2 - byte-manipulation (byte offset reg)
47.32835 ++3 - jsr (target of branch)  */
47.32836 ++  BFD_RELOC_ALPHA_LITERAL,
47.32837 ++  BFD_RELOC_ALPHA_ELF_LITERAL,
47.32838 ++  BFD_RELOC_ALPHA_LITUSE,
47.32839 ++
47.32840 ++/* The HINT relocation indicates a value that should be filled into the
47.32841 ++"hint" field of a jmp/jsr/ret instruction, for possible branch-
47.32842 ++prediction logic which may be provided on some processors.  */
47.32843 ++  BFD_RELOC_ALPHA_HINT,
47.32844 ++
47.32845 ++/* The LINKAGE relocation outputs a linkage pair in the object file,
47.32846 ++which is filled by the linker.  */
47.32847 ++  BFD_RELOC_ALPHA_LINKAGE,
47.32848 ++
47.32849 ++/* The CODEADDR relocation outputs a STO_CA in the object file,
47.32850 ++which is filled by the linker.  */
47.32851 ++  BFD_RELOC_ALPHA_CODEADDR,
47.32852 ++
47.32853 ++/* The GPREL_HI/LO relocations together form a 32-bit offset from the
47.32854 ++GP register.  */
47.32855 ++  BFD_RELOC_ALPHA_GPREL_HI16,
47.32856 ++  BFD_RELOC_ALPHA_GPREL_LO16,
47.32857 ++
47.32858 ++/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
47.32859 ++share a common GP, and the target address is adjusted for
47.32860 ++STO_ALPHA_STD_GPLOAD.  */
47.32861 ++  BFD_RELOC_ALPHA_BRSGP,
47.32862 ++
47.32863 ++/* Alpha thread-local storage relocations.  */
47.32864 ++  BFD_RELOC_ALPHA_TLSGD,
47.32865 ++  BFD_RELOC_ALPHA_TLSLDM,
47.32866 ++  BFD_RELOC_ALPHA_DTPMOD64,
47.32867 ++  BFD_RELOC_ALPHA_GOTDTPREL16,
47.32868 ++  BFD_RELOC_ALPHA_DTPREL64,
47.32869 ++  BFD_RELOC_ALPHA_DTPREL_HI16,
47.32870 ++  BFD_RELOC_ALPHA_DTPREL_LO16,
47.32871 ++  BFD_RELOC_ALPHA_DTPREL16,
47.32872 ++  BFD_RELOC_ALPHA_GOTTPREL16,
47.32873 ++  BFD_RELOC_ALPHA_TPREL64,
47.32874 ++  BFD_RELOC_ALPHA_TPREL_HI16,
47.32875 ++  BFD_RELOC_ALPHA_TPREL_LO16,
47.32876 ++  BFD_RELOC_ALPHA_TPREL16,
47.32877 ++
47.32878 ++/* Bits 27..2 of the relocation address shifted right 2 bits;
47.32879 ++simple reloc otherwise.  */
47.32880 ++  BFD_RELOC_MIPS_JMP,
47.32881 ++
47.32882 ++/* The MIPS16 jump instruction.  */
47.32883 ++  BFD_RELOC_MIPS16_JMP,
47.32884 ++
47.32885 ++/* MIPS16 GP relative reloc.  */
47.32886 ++  BFD_RELOC_MIPS16_GPREL,
47.32887 ++
47.32888 ++/* High 16 bits of 32-bit value; simple reloc.  */
47.32889 ++  BFD_RELOC_HI16,
47.32890 ++
47.32891 ++/* High 16 bits of 32-bit value but the low 16 bits will be sign
47.32892 ++extended and added to form the final result.  If the low 16
47.32893 ++bits form a negative number, we need to add one to the high value
47.32894 ++to compensate for the borrow when the low bits are added.  */
47.32895 ++  BFD_RELOC_HI16_S,
47.32896 ++
47.32897 ++/* Low 16 bits.  */
47.32898 ++  BFD_RELOC_LO16,
47.32899 ++
47.32900 ++/* High 16 bits of 32-bit pc-relative value  */
47.32901 ++  BFD_RELOC_HI16_PCREL,
47.32902 ++
47.32903 ++/* High 16 bits of 32-bit pc-relative value, adjusted  */
47.32904 ++  BFD_RELOC_HI16_S_PCREL,
47.32905 ++
47.32906 ++/* Low 16 bits of pc-relative value  */
47.32907 ++  BFD_RELOC_LO16_PCREL,
47.32908 ++
47.32909 ++/* MIPS16 high 16 bits of 32-bit value.  */
47.32910 ++  BFD_RELOC_MIPS16_HI16,
47.32911 ++
47.32912 ++/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
47.32913 ++extended and added to form the final result.  If the low 16
47.32914 ++bits form a negative number, we need to add one to the high value
47.32915 ++to compensate for the borrow when the low bits are added.  */
47.32916 ++  BFD_RELOC_MIPS16_HI16_S,
47.32917 ++
47.32918 ++/* MIPS16 low 16 bits.  */
47.32919 ++  BFD_RELOC_MIPS16_LO16,
47.32920 ++
47.32921 ++/* Relocation against a MIPS literal section.  */
47.32922 ++  BFD_RELOC_MIPS_LITERAL,
47.32923 ++
47.32924 ++/* MIPS ELF relocations.  */
47.32925 ++  BFD_RELOC_MIPS_GOT16,
47.32926 ++  BFD_RELOC_MIPS_CALL16,
47.32927 ++  BFD_RELOC_MIPS_GOT_HI16,
47.32928 ++  BFD_RELOC_MIPS_GOT_LO16,
47.32929 ++  BFD_RELOC_MIPS_CALL_HI16,
47.32930 ++  BFD_RELOC_MIPS_CALL_LO16,
47.32931 ++  BFD_RELOC_MIPS_SUB,
47.32932 ++  BFD_RELOC_MIPS_GOT_PAGE,
47.32933 ++  BFD_RELOC_MIPS_GOT_OFST,
47.32934 ++  BFD_RELOC_MIPS_GOT_DISP,
47.32935 ++  BFD_RELOC_MIPS_SHIFT5,
47.32936 ++  BFD_RELOC_MIPS_SHIFT6,
47.32937 ++  BFD_RELOC_MIPS_INSERT_A,
47.32938 ++  BFD_RELOC_MIPS_INSERT_B,
47.32939 ++  BFD_RELOC_MIPS_DELETE,
47.32940 ++  BFD_RELOC_MIPS_HIGHEST,
47.32941 ++  BFD_RELOC_MIPS_HIGHER,
47.32942 ++  BFD_RELOC_MIPS_SCN_DISP,
47.32943 ++  BFD_RELOC_MIPS_REL16,
47.32944 ++  BFD_RELOC_MIPS_RELGOT,
47.32945 ++  BFD_RELOC_MIPS_JALR,
47.32946 ++  BFD_RELOC_MIPS_TLS_DTPMOD32,
47.32947 ++  BFD_RELOC_MIPS_TLS_DTPREL32,
47.32948 ++  BFD_RELOC_MIPS_TLS_DTPMOD64,
47.32949 ++  BFD_RELOC_MIPS_TLS_DTPREL64,
47.32950 ++  BFD_RELOC_MIPS_TLS_GD,
47.32951 ++  BFD_RELOC_MIPS_TLS_LDM,
47.32952 ++  BFD_RELOC_MIPS_TLS_DTPREL_HI16,
47.32953 ++  BFD_RELOC_MIPS_TLS_DTPREL_LO16,
47.32954 ++  BFD_RELOC_MIPS_TLS_GOTTPREL,
47.32955 ++  BFD_RELOC_MIPS_TLS_TPREL32,
47.32956 ++  BFD_RELOC_MIPS_TLS_TPREL64,
47.32957 ++  BFD_RELOC_MIPS_TLS_TPREL_HI16,
47.32958 ++  BFD_RELOC_MIPS_TLS_TPREL_LO16,
47.32959 ++
47.32960 ++
47.32961 ++/* MIPS ELF relocations (VxWorks extensions).  */
47.32962 ++  BFD_RELOC_MIPS_COPY,
47.32963 ++  BFD_RELOC_MIPS_JUMP_SLOT,
47.32964 ++
47.32965 ++
47.32966 ++/* Fujitsu Frv Relocations.  */
47.32967 ++  BFD_RELOC_FRV_LABEL16,
47.32968 ++  BFD_RELOC_FRV_LABEL24,
47.32969 ++  BFD_RELOC_FRV_LO16,
47.32970 ++  BFD_RELOC_FRV_HI16,
47.32971 ++  BFD_RELOC_FRV_GPREL12,
47.32972 ++  BFD_RELOC_FRV_GPRELU12,
47.32973 ++  BFD_RELOC_FRV_GPREL32,
47.32974 ++  BFD_RELOC_FRV_GPRELHI,
47.32975 ++  BFD_RELOC_FRV_GPRELLO,
47.32976 ++  BFD_RELOC_FRV_GOT12,
47.32977 ++  BFD_RELOC_FRV_GOTHI,
47.32978 ++  BFD_RELOC_FRV_GOTLO,
47.32979 ++  BFD_RELOC_FRV_FUNCDESC,
47.32980 ++  BFD_RELOC_FRV_FUNCDESC_GOT12,
47.32981 ++  BFD_RELOC_FRV_FUNCDESC_GOTHI,
47.32982 ++  BFD_RELOC_FRV_FUNCDESC_GOTLO,
47.32983 ++  BFD_RELOC_FRV_FUNCDESC_VALUE,
47.32984 ++  BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
47.32985 ++  BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
47.32986 ++  BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
47.32987 ++  BFD_RELOC_FRV_GOTOFF12,
47.32988 ++  BFD_RELOC_FRV_GOTOFFHI,
47.32989 ++  BFD_RELOC_FRV_GOTOFFLO,
47.32990 ++  BFD_RELOC_FRV_GETTLSOFF,
47.32991 ++  BFD_RELOC_FRV_TLSDESC_VALUE,
47.32992 ++  BFD_RELOC_FRV_GOTTLSDESC12,
47.32993 ++  BFD_RELOC_FRV_GOTTLSDESCHI,
47.32994 ++  BFD_RELOC_FRV_GOTTLSDESCLO,
47.32995 ++  BFD_RELOC_FRV_TLSMOFF12,
47.32996 ++  BFD_RELOC_FRV_TLSMOFFHI,
47.32997 ++  BFD_RELOC_FRV_TLSMOFFLO,
47.32998 ++  BFD_RELOC_FRV_GOTTLSOFF12,
47.32999 ++  BFD_RELOC_FRV_GOTTLSOFFHI,
47.33000 ++  BFD_RELOC_FRV_GOTTLSOFFLO,
47.33001 ++  BFD_RELOC_FRV_TLSOFF,
47.33002 ++  BFD_RELOC_FRV_TLSDESC_RELAX,
47.33003 ++  BFD_RELOC_FRV_GETTLSOFF_RELAX,
47.33004 ++  BFD_RELOC_FRV_TLSOFF_RELAX,
47.33005 ++  BFD_RELOC_FRV_TLSMOFF,
47.33006 ++
47.33007 ++
47.33008 ++/* This is a 24bit GOT-relative reloc for the mn10300.  */
47.33009 ++  BFD_RELOC_MN10300_GOTOFF24,
47.33010 ++
47.33011 ++/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
47.33012 ++in the instruction.  */
47.33013 ++  BFD_RELOC_MN10300_GOT32,
47.33014 ++
47.33015 ++/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
47.33016 ++in the instruction.  */
47.33017 ++  BFD_RELOC_MN10300_GOT24,
47.33018 ++
47.33019 ++/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
47.33020 ++in the instruction.  */
47.33021 ++  BFD_RELOC_MN10300_GOT16,
47.33022 ++
47.33023 ++/* Copy symbol at runtime.  */
47.33024 ++  BFD_RELOC_MN10300_COPY,
47.33025 ++
47.33026 ++/* Create GOT entry.  */
47.33027 ++  BFD_RELOC_MN10300_GLOB_DAT,
47.33028 ++
47.33029 ++/* Create PLT entry.  */
47.33030 ++  BFD_RELOC_MN10300_JMP_SLOT,
47.33031 ++
47.33032 ++/* Adjust by program base.  */
47.33033 ++  BFD_RELOC_MN10300_RELATIVE,
47.33034 ++
47.33035 ++
47.33036 ++/* i386/elf relocations  */
47.33037 ++  BFD_RELOC_386_GOT32,
47.33038 ++  BFD_RELOC_386_PLT32,
47.33039 ++  BFD_RELOC_386_COPY,
47.33040 ++  BFD_RELOC_386_GLOB_DAT,
47.33041 ++  BFD_RELOC_386_JUMP_SLOT,
47.33042 ++  BFD_RELOC_386_RELATIVE,
47.33043 ++  BFD_RELOC_386_GOTOFF,
47.33044 ++  BFD_RELOC_386_GOTPC,
47.33045 ++  BFD_RELOC_386_TLS_TPOFF,
47.33046 ++  BFD_RELOC_386_TLS_IE,
47.33047 ++  BFD_RELOC_386_TLS_GOTIE,
47.33048 ++  BFD_RELOC_386_TLS_LE,
47.33049 ++  BFD_RELOC_386_TLS_GD,
47.33050 ++  BFD_RELOC_386_TLS_LDM,
47.33051 ++  BFD_RELOC_386_TLS_LDO_32,
47.33052 ++  BFD_RELOC_386_TLS_IE_32,
47.33053 ++  BFD_RELOC_386_TLS_LE_32,
47.33054 ++  BFD_RELOC_386_TLS_DTPMOD32,
47.33055 ++  BFD_RELOC_386_TLS_DTPOFF32,
47.33056 ++  BFD_RELOC_386_TLS_TPOFF32,
47.33057 ++  BFD_RELOC_386_TLS_GOTDESC,
47.33058 ++  BFD_RELOC_386_TLS_DESC_CALL,
47.33059 ++  BFD_RELOC_386_TLS_DESC,
47.33060 ++
47.33061 ++/* x86-64/elf relocations  */
47.33062 ++  BFD_RELOC_X86_64_GOT32,
47.33063 ++  BFD_RELOC_X86_64_PLT32,
47.33064 ++  BFD_RELOC_X86_64_COPY,
47.33065 ++  BFD_RELOC_X86_64_GLOB_DAT,
47.33066 ++  BFD_RELOC_X86_64_JUMP_SLOT,
47.33067 ++  BFD_RELOC_X86_64_RELATIVE,
47.33068 ++  BFD_RELOC_X86_64_GOTPCREL,
47.33069 ++  BFD_RELOC_X86_64_32S,
47.33070 ++  BFD_RELOC_X86_64_DTPMOD64,
47.33071 ++  BFD_RELOC_X86_64_DTPOFF64,
47.33072 ++  BFD_RELOC_X86_64_TPOFF64,
47.33073 ++  BFD_RELOC_X86_64_TLSGD,
47.33074 ++  BFD_RELOC_X86_64_TLSLD,
47.33075 ++  BFD_RELOC_X86_64_DTPOFF32,
47.33076 ++  BFD_RELOC_X86_64_GOTTPOFF,
47.33077 ++  BFD_RELOC_X86_64_TPOFF32,
47.33078 ++  BFD_RELOC_X86_64_GOTOFF64,
47.33079 ++  BFD_RELOC_X86_64_GOTPC32,
47.33080 ++  BFD_RELOC_X86_64_GOT64,
47.33081 ++  BFD_RELOC_X86_64_GOTPCREL64,
47.33082 ++  BFD_RELOC_X86_64_GOTPC64,
47.33083 ++  BFD_RELOC_X86_64_GOTPLT64,
47.33084 ++  BFD_RELOC_X86_64_PLTOFF64,
47.33085 ++  BFD_RELOC_X86_64_GOTPC32_TLSDESC,
47.33086 ++  BFD_RELOC_X86_64_TLSDESC_CALL,
47.33087 ++  BFD_RELOC_X86_64_TLSDESC,
47.33088 ++
47.33089 ++/* ns32k relocations  */
47.33090 ++  BFD_RELOC_NS32K_IMM_8,
47.33091 ++  BFD_RELOC_NS32K_IMM_16,
47.33092 ++  BFD_RELOC_NS32K_IMM_32,
47.33093 ++  BFD_RELOC_NS32K_IMM_8_PCREL,
47.33094 ++  BFD_RELOC_NS32K_IMM_16_PCREL,
47.33095 ++  BFD_RELOC_NS32K_IMM_32_PCREL,
47.33096 ++  BFD_RELOC_NS32K_DISP_8,
47.33097 ++  BFD_RELOC_NS32K_DISP_16,
47.33098 ++  BFD_RELOC_NS32K_DISP_32,
47.33099 ++  BFD_RELOC_NS32K_DISP_8_PCREL,
47.33100 ++  BFD_RELOC_NS32K_DISP_16_PCREL,
47.33101 ++  BFD_RELOC_NS32K_DISP_32_PCREL,
47.33102 ++
47.33103 ++/* PDP11 relocations  */
47.33104 ++  BFD_RELOC_PDP11_DISP_8_PCREL,
47.33105 ++  BFD_RELOC_PDP11_DISP_6_PCREL,
47.33106 ++
47.33107 ++/* Picojava relocs.  Not all of these appear in object files.  */
47.33108 ++  BFD_RELOC_PJ_CODE_HI16,
47.33109 ++  BFD_RELOC_PJ_CODE_LO16,
47.33110 ++  BFD_RELOC_PJ_CODE_DIR16,
47.33111 ++  BFD_RELOC_PJ_CODE_DIR32,
47.33112 ++  BFD_RELOC_PJ_CODE_REL16,
47.33113 ++  BFD_RELOC_PJ_CODE_REL32,
47.33114 ++
47.33115 ++/* Power(rs6000) and PowerPC relocations.  */
47.33116 ++  BFD_RELOC_PPC_B26,
47.33117 ++  BFD_RELOC_PPC_BA26,
47.33118 ++  BFD_RELOC_PPC_TOC16,
47.33119 ++  BFD_RELOC_PPC_B16,
47.33120 ++  BFD_RELOC_PPC_B16_BRTAKEN,
47.33121 ++  BFD_RELOC_PPC_B16_BRNTAKEN,
47.33122 ++  BFD_RELOC_PPC_BA16,
47.33123 ++  BFD_RELOC_PPC_BA16_BRTAKEN,
47.33124 ++  BFD_RELOC_PPC_BA16_BRNTAKEN,
47.33125 ++  BFD_RELOC_PPC_COPY,
47.33126 ++  BFD_RELOC_PPC_GLOB_DAT,
47.33127 ++  BFD_RELOC_PPC_JMP_SLOT,
47.33128 ++  BFD_RELOC_PPC_RELATIVE,
47.33129 ++  BFD_RELOC_PPC_LOCAL24PC,
47.33130 ++  BFD_RELOC_PPC_EMB_NADDR32,
47.33131 ++  BFD_RELOC_PPC_EMB_NADDR16,
47.33132 ++  BFD_RELOC_PPC_EMB_NADDR16_LO,
47.33133 ++  BFD_RELOC_PPC_EMB_NADDR16_HI,
47.33134 ++  BFD_RELOC_PPC_EMB_NADDR16_HA,
47.33135 ++  BFD_RELOC_PPC_EMB_SDAI16,
47.33136 ++  BFD_RELOC_PPC_EMB_SDA2I16,
47.33137 ++  BFD_RELOC_PPC_EMB_SDA2REL,
47.33138 ++  BFD_RELOC_PPC_EMB_SDA21,
47.33139 ++  BFD_RELOC_PPC_EMB_MRKREF,
47.33140 ++  BFD_RELOC_PPC_EMB_RELSEC16,
47.33141 ++  BFD_RELOC_PPC_EMB_RELST_LO,
47.33142 ++  BFD_RELOC_PPC_EMB_RELST_HI,
47.33143 ++  BFD_RELOC_PPC_EMB_RELST_HA,
47.33144 ++  BFD_RELOC_PPC_EMB_BIT_FLD,
47.33145 ++  BFD_RELOC_PPC_EMB_RELSDA,
47.33146 ++  BFD_RELOC_PPC64_HIGHER,
47.33147 ++  BFD_RELOC_PPC64_HIGHER_S,
47.33148 ++  BFD_RELOC_PPC64_HIGHEST,
47.33149 ++  BFD_RELOC_PPC64_HIGHEST_S,
47.33150 ++  BFD_RELOC_PPC64_TOC16_LO,
47.33151 ++  BFD_RELOC_PPC64_TOC16_HI,
47.33152 ++  BFD_RELOC_PPC64_TOC16_HA,
47.33153 ++  BFD_RELOC_PPC64_TOC,
47.33154 ++  BFD_RELOC_PPC64_PLTGOT16,
47.33155 ++  BFD_RELOC_PPC64_PLTGOT16_LO,
47.33156 ++  BFD_RELOC_PPC64_PLTGOT16_HI,
47.33157 ++  BFD_RELOC_PPC64_PLTGOT16_HA,
47.33158 ++  BFD_RELOC_PPC64_ADDR16_DS,
47.33159 ++  BFD_RELOC_PPC64_ADDR16_LO_DS,
47.33160 ++  BFD_RELOC_PPC64_GOT16_DS,
47.33161 ++  BFD_RELOC_PPC64_GOT16_LO_DS,
47.33162 ++  BFD_RELOC_PPC64_PLT16_LO_DS,
47.33163 ++  BFD_RELOC_PPC64_SECTOFF_DS,
47.33164 ++  BFD_RELOC_PPC64_SECTOFF_LO_DS,
47.33165 ++  BFD_RELOC_PPC64_TOC16_DS,
47.33166 ++  BFD_RELOC_PPC64_TOC16_LO_DS,
47.33167 ++  BFD_RELOC_PPC64_PLTGOT16_DS,
47.33168 ++  BFD_RELOC_PPC64_PLTGOT16_LO_DS,
47.33169 ++
47.33170 ++/* PowerPC and PowerPC64 thread-local storage relocations.  */
47.33171 ++  BFD_RELOC_PPC_TLS,
47.33172 ++  BFD_RELOC_PPC_DTPMOD,
47.33173 ++  BFD_RELOC_PPC_TPREL16,
47.33174 ++  BFD_RELOC_PPC_TPREL16_LO,
47.33175 ++  BFD_RELOC_PPC_TPREL16_HI,
47.33176 ++  BFD_RELOC_PPC_TPREL16_HA,
47.33177 ++  BFD_RELOC_PPC_TPREL,
47.33178 ++  BFD_RELOC_PPC_DTPREL16,
47.33179 ++  BFD_RELOC_PPC_DTPREL16_LO,
47.33180 ++  BFD_RELOC_PPC_DTPREL16_HI,
47.33181 ++  BFD_RELOC_PPC_DTPREL16_HA,
47.33182 ++  BFD_RELOC_PPC_DTPREL,
47.33183 ++  BFD_RELOC_PPC_GOT_TLSGD16,
47.33184 ++  BFD_RELOC_PPC_GOT_TLSGD16_LO,
47.33185 ++  BFD_RELOC_PPC_GOT_TLSGD16_HI,
47.33186 ++  BFD_RELOC_PPC_GOT_TLSGD16_HA,
47.33187 ++  BFD_RELOC_PPC_GOT_TLSLD16,
47.33188 ++  BFD_RELOC_PPC_GOT_TLSLD16_LO,
47.33189 ++  BFD_RELOC_PPC_GOT_TLSLD16_HI,
47.33190 ++  BFD_RELOC_PPC_GOT_TLSLD16_HA,
47.33191 ++  BFD_RELOC_PPC_GOT_TPREL16,
47.33192 ++  BFD_RELOC_PPC_GOT_TPREL16_LO,
47.33193 ++  BFD_RELOC_PPC_GOT_TPREL16_HI,
47.33194 ++  BFD_RELOC_PPC_GOT_TPREL16_HA,
47.33195 ++  BFD_RELOC_PPC_GOT_DTPREL16,
47.33196 ++  BFD_RELOC_PPC_GOT_DTPREL16_LO,
47.33197 ++  BFD_RELOC_PPC_GOT_DTPREL16_HI,
47.33198 ++  BFD_RELOC_PPC_GOT_DTPREL16_HA,
47.33199 ++  BFD_RELOC_PPC64_TPREL16_DS,
47.33200 ++  BFD_RELOC_PPC64_TPREL16_LO_DS,
47.33201 ++  BFD_RELOC_PPC64_TPREL16_HIGHER,
47.33202 ++  BFD_RELOC_PPC64_TPREL16_HIGHERA,
47.33203 ++  BFD_RELOC_PPC64_TPREL16_HIGHEST,
47.33204 ++  BFD_RELOC_PPC64_TPREL16_HIGHESTA,
47.33205 ++  BFD_RELOC_PPC64_DTPREL16_DS,
47.33206 ++  BFD_RELOC_PPC64_DTPREL16_LO_DS,
47.33207 ++  BFD_RELOC_PPC64_DTPREL16_HIGHER,
47.33208 ++  BFD_RELOC_PPC64_DTPREL16_HIGHERA,
47.33209 ++  BFD_RELOC_PPC64_DTPREL16_HIGHEST,
47.33210 ++  BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
47.33211 ++
47.33212 ++/* IBM 370/390 relocations  */
47.33213 ++  BFD_RELOC_I370_D12,
47.33214 ++
47.33215 ++/* The type of reloc used to build a constructor table - at the moment
47.33216 ++probably a 32 bit wide absolute relocation, but the target can choose.
47.33217 ++It generally does map to one of the other relocation types.  */
47.33218 ++  BFD_RELOC_CTOR,
47.33219 ++
47.33220 ++/* ARM 26 bit pc-relative branch.  The lowest two bits must be zero and are
47.33221 ++not stored in the instruction.  */
47.33222 ++  BFD_RELOC_ARM_PCREL_BRANCH,
47.33223 ++
47.33224 ++/* ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
47.33225 ++not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
47.33226 ++field in the instruction.  */
47.33227 ++  BFD_RELOC_ARM_PCREL_BLX,
47.33228 ++
47.33229 ++/* Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
47.33230 ++not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
47.33231 ++field in the instruction.  */
47.33232 ++  BFD_RELOC_THUMB_PCREL_BLX,
47.33233 ++
47.33234 ++/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.  */
47.33235 ++  BFD_RELOC_ARM_PCREL_CALL,
47.33236 ++
47.33237 ++/* ARM 26-bit pc-relative branch for B or conditional BL instruction.  */
47.33238 ++  BFD_RELOC_ARM_PCREL_JUMP,
47.33239 ++
47.33240 ++/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
47.33241 ++The lowest bit must be zero and is not stored in the instruction.
47.33242 ++Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
47.33243 ++"nn" one smaller in all cases.  Note further that BRANCH23
47.33244 ++corresponds to R_ARM_THM_CALL.  */
47.33245 ++  BFD_RELOC_THUMB_PCREL_BRANCH7,
47.33246 ++  BFD_RELOC_THUMB_PCREL_BRANCH9,
47.33247 ++  BFD_RELOC_THUMB_PCREL_BRANCH12,
47.33248 ++  BFD_RELOC_THUMB_PCREL_BRANCH20,
47.33249 ++  BFD_RELOC_THUMB_PCREL_BRANCH23,
47.33250 ++  BFD_RELOC_THUMB_PCREL_BRANCH25,
47.33251 ++
47.33252 ++/* 12-bit immediate offset, used in ARM-format ldr and str instructions.  */
47.33253 ++  BFD_RELOC_ARM_OFFSET_IMM,
47.33254 ++
47.33255 ++/* 5-bit immediate offset, used in Thumb-format ldr and str instructions.  */
47.33256 ++  BFD_RELOC_ARM_THUMB_OFFSET,
47.33257 ++
47.33258 ++/* Pc-relative or absolute relocation depending on target.  Used for
47.33259 ++entries in .init_array sections.  */
47.33260 ++  BFD_RELOC_ARM_TARGET1,
47.33261 ++
47.33262 ++/* Read-only segment base relative address.  */
47.33263 ++  BFD_RELOC_ARM_ROSEGREL32,
47.33264 ++
47.33265 ++/* Data segment base relative address.  */
47.33266 ++  BFD_RELOC_ARM_SBREL32,
47.33267 ++
47.33268 ++/* This reloc is used for references to RTTI data from exception handling
47.33269 ++tables.  The actual definition depends on the target.  It may be a
47.33270 ++pc-relative or some form of GOT-indirect relocation.  */
47.33271 ++  BFD_RELOC_ARM_TARGET2,
47.33272 ++
47.33273 ++/* 31-bit PC relative address.  */
47.33274 ++  BFD_RELOC_ARM_PREL31,
47.33275 ++
47.33276 ++/* Low and High halfword relocations for MOVW and MOVT instructions.  */
47.33277 ++  BFD_RELOC_ARM_MOVW,
47.33278 ++  BFD_RELOC_ARM_MOVT,
47.33279 ++  BFD_RELOC_ARM_MOVW_PCREL,
47.33280 ++  BFD_RELOC_ARM_MOVT_PCREL,
47.33281 ++  BFD_RELOC_ARM_THUMB_MOVW,
47.33282 ++  BFD_RELOC_ARM_THUMB_MOVT,
47.33283 ++  BFD_RELOC_ARM_THUMB_MOVW_PCREL,
47.33284 ++  BFD_RELOC_ARM_THUMB_MOVT_PCREL,
47.33285 ++
47.33286 ++/* Relocations for setting up GOTs and PLTs for shared libraries.  */
47.33287 ++  BFD_RELOC_ARM_JUMP_SLOT,
47.33288 ++  BFD_RELOC_ARM_GLOB_DAT,
47.33289 ++  BFD_RELOC_ARM_GOT32,
47.33290 ++  BFD_RELOC_ARM_PLT32,
47.33291 ++  BFD_RELOC_ARM_RELATIVE,
47.33292 ++  BFD_RELOC_ARM_GOTOFF,
47.33293 ++  BFD_RELOC_ARM_GOTPC,
47.33294 ++
47.33295 ++/* ARM thread-local storage relocations.  */
47.33296 ++  BFD_RELOC_ARM_TLS_GD32,
47.33297 ++  BFD_RELOC_ARM_TLS_LDO32,
47.33298 ++  BFD_RELOC_ARM_TLS_LDM32,
47.33299 ++  BFD_RELOC_ARM_TLS_DTPOFF32,
47.33300 ++  BFD_RELOC_ARM_TLS_DTPMOD32,
47.33301 ++  BFD_RELOC_ARM_TLS_TPOFF32,
47.33302 ++  BFD_RELOC_ARM_TLS_IE32,
47.33303 ++  BFD_RELOC_ARM_TLS_LE32,
47.33304 ++
47.33305 ++/* ARM group relocations.  */
47.33306 ++  BFD_RELOC_ARM_ALU_PC_G0_NC,
47.33307 ++  BFD_RELOC_ARM_ALU_PC_G0,
47.33308 ++  BFD_RELOC_ARM_ALU_PC_G1_NC,
47.33309 ++  BFD_RELOC_ARM_ALU_PC_G1,
47.33310 ++  BFD_RELOC_ARM_ALU_PC_G2,
47.33311 ++  BFD_RELOC_ARM_LDR_PC_G0,
47.33312 ++  BFD_RELOC_ARM_LDR_PC_G1,
47.33313 ++  BFD_RELOC_ARM_LDR_PC_G2,
47.33314 ++  BFD_RELOC_ARM_LDRS_PC_G0,
47.33315 ++  BFD_RELOC_ARM_LDRS_PC_G1,
47.33316 ++  BFD_RELOC_ARM_LDRS_PC_G2,
47.33317 ++  BFD_RELOC_ARM_LDC_PC_G0,
47.33318 ++  BFD_RELOC_ARM_LDC_PC_G1,
47.33319 ++  BFD_RELOC_ARM_LDC_PC_G2,
47.33320 ++  BFD_RELOC_ARM_ALU_SB_G0_NC,
47.33321 ++  BFD_RELOC_ARM_ALU_SB_G0,
47.33322 ++  BFD_RELOC_ARM_ALU_SB_G1_NC,
47.33323 ++  BFD_RELOC_ARM_ALU_SB_G1,
47.33324 ++  BFD_RELOC_ARM_ALU_SB_G2,
47.33325 ++  BFD_RELOC_ARM_LDR_SB_G0,
47.33326 ++  BFD_RELOC_ARM_LDR_SB_G1,
47.33327 ++  BFD_RELOC_ARM_LDR_SB_G2,
47.33328 ++  BFD_RELOC_ARM_LDRS_SB_G0,
47.33329 ++  BFD_RELOC_ARM_LDRS_SB_G1,
47.33330 ++  BFD_RELOC_ARM_LDRS_SB_G2,
47.33331 ++  BFD_RELOC_ARM_LDC_SB_G0,
47.33332 ++  BFD_RELOC_ARM_LDC_SB_G1,
47.33333 ++  BFD_RELOC_ARM_LDC_SB_G2,
47.33334 ++
47.33335 ++/* These relocs are only used within the ARM assembler.  They are not
47.33336 ++(at present) written to any object files.  */
47.33337 ++  BFD_RELOC_ARM_IMMEDIATE,
47.33338 ++  BFD_RELOC_ARM_ADRL_IMMEDIATE,
47.33339 ++  BFD_RELOC_ARM_T32_IMMEDIATE,
47.33340 ++  BFD_RELOC_ARM_T32_ADD_IMM,
47.33341 ++  BFD_RELOC_ARM_T32_IMM12,
47.33342 ++  BFD_RELOC_ARM_T32_ADD_PC12,
47.33343 ++  BFD_RELOC_ARM_SHIFT_IMM,
47.33344 ++  BFD_RELOC_ARM_SMC,
47.33345 ++  BFD_RELOC_ARM_SWI,
47.33346 ++  BFD_RELOC_ARM_MULTI,
47.33347 ++  BFD_RELOC_ARM_CP_OFF_IMM,
47.33348 ++  BFD_RELOC_ARM_CP_OFF_IMM_S2,
47.33349 ++  BFD_RELOC_ARM_T32_CP_OFF_IMM,
47.33350 ++  BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
47.33351 ++  BFD_RELOC_ARM_ADR_IMM,
47.33352 ++  BFD_RELOC_ARM_LDR_IMM,
47.33353 ++  BFD_RELOC_ARM_LITERAL,
47.33354 ++  BFD_RELOC_ARM_IN_POOL,
47.33355 ++  BFD_RELOC_ARM_OFFSET_IMM8,
47.33356 ++  BFD_RELOC_ARM_T32_OFFSET_U8,
47.33357 ++  BFD_RELOC_ARM_T32_OFFSET_IMM,
47.33358 ++  BFD_RELOC_ARM_HWLITERAL,
47.33359 ++  BFD_RELOC_ARM_THUMB_ADD,
47.33360 ++  BFD_RELOC_ARM_THUMB_IMM,
47.33361 ++  BFD_RELOC_ARM_THUMB_SHIFT,
47.33362 ++
47.33363 ++/* Renesas / SuperH SH relocs.  Not all of these appear in object files.  */
47.33364 ++  BFD_RELOC_SH_PCDISP8BY2,
47.33365 ++  BFD_RELOC_SH_PCDISP12BY2,
47.33366 ++  BFD_RELOC_SH_IMM3,
47.33367 ++  BFD_RELOC_SH_IMM3U,
47.33368 ++  BFD_RELOC_SH_DISP12,
47.33369 ++  BFD_RELOC_SH_DISP12BY2,
47.33370 ++  BFD_RELOC_SH_DISP12BY4,
47.33371 ++  BFD_RELOC_SH_DISP12BY8,
47.33372 ++  BFD_RELOC_SH_DISP20,
47.33373 ++  BFD_RELOC_SH_DISP20BY8,
47.33374 ++  BFD_RELOC_SH_IMM4,
47.33375 ++  BFD_RELOC_SH_IMM4BY2,
47.33376 ++  BFD_RELOC_SH_IMM4BY4,
47.33377 ++  BFD_RELOC_SH_IMM8,
47.33378 ++  BFD_RELOC_SH_IMM8BY2,
47.33379 ++  BFD_RELOC_SH_IMM8BY4,
47.33380 ++  BFD_RELOC_SH_PCRELIMM8BY2,
47.33381 ++  BFD_RELOC_SH_PCRELIMM8BY4,
47.33382 ++  BFD_RELOC_SH_SWITCH16,
47.33383 ++  BFD_RELOC_SH_SWITCH32,
47.33384 ++  BFD_RELOC_SH_USES,
47.33385 ++  BFD_RELOC_SH_COUNT,
47.33386 ++  BFD_RELOC_SH_ALIGN,
47.33387 ++  BFD_RELOC_SH_CODE,
47.33388 ++  BFD_RELOC_SH_DATA,
47.33389 ++  BFD_RELOC_SH_LABEL,
47.33390 ++  BFD_RELOC_SH_LOOP_START,
47.33391 ++  BFD_RELOC_SH_LOOP_END,
47.33392 ++  BFD_RELOC_SH_COPY,
47.33393 ++  BFD_RELOC_SH_GLOB_DAT,
47.33394 ++  BFD_RELOC_SH_JMP_SLOT,
47.33395 ++  BFD_RELOC_SH_RELATIVE,
47.33396 ++  BFD_RELOC_SH_GOTPC,
47.33397 ++  BFD_RELOC_SH_GOT_LOW16,
47.33398 ++  BFD_RELOC_SH_GOT_MEDLOW16,
47.33399 ++  BFD_RELOC_SH_GOT_MEDHI16,
47.33400 ++  BFD_RELOC_SH_GOT_HI16,
47.33401 ++  BFD_RELOC_SH_GOTPLT_LOW16,
47.33402 ++  BFD_RELOC_SH_GOTPLT_MEDLOW16,
47.33403 ++  BFD_RELOC_SH_GOTPLT_MEDHI16,
47.33404 ++  BFD_RELOC_SH_GOTPLT_HI16,
47.33405 ++  BFD_RELOC_SH_PLT_LOW16,
47.33406 ++  BFD_RELOC_SH_PLT_MEDLOW16,
47.33407 ++  BFD_RELOC_SH_PLT_MEDHI16,
47.33408 ++  BFD_RELOC_SH_PLT_HI16,
47.33409 ++  BFD_RELOC_SH_GOTOFF_LOW16,
47.33410 ++  BFD_RELOC_SH_GOTOFF_MEDLOW16,
47.33411 ++  BFD_RELOC_SH_GOTOFF_MEDHI16,
47.33412 ++  BFD_RELOC_SH_GOTOFF_HI16,
47.33413 ++  BFD_RELOC_SH_GOTPC_LOW16,
47.33414 ++  BFD_RELOC_SH_GOTPC_MEDLOW16,
47.33415 ++  BFD_RELOC_SH_GOTPC_MEDHI16,
47.33416 ++  BFD_RELOC_SH_GOTPC_HI16,
47.33417 ++  BFD_RELOC_SH_COPY64,
47.33418 ++  BFD_RELOC_SH_GLOB_DAT64,
47.33419 ++  BFD_RELOC_SH_JMP_SLOT64,
47.33420 ++  BFD_RELOC_SH_RELATIVE64,
47.33421 ++  BFD_RELOC_SH_GOT10BY4,
47.33422 ++  BFD_RELOC_SH_GOT10BY8,
47.33423 ++  BFD_RELOC_SH_GOTPLT10BY4,
47.33424 ++  BFD_RELOC_SH_GOTPLT10BY8,
47.33425 ++  BFD_RELOC_SH_GOTPLT32,
47.33426 ++  BFD_RELOC_SH_SHMEDIA_CODE,
47.33427 ++  BFD_RELOC_SH_IMMU5,
47.33428 ++  BFD_RELOC_SH_IMMS6,
47.33429 ++  BFD_RELOC_SH_IMMS6BY32,
47.33430 ++  BFD_RELOC_SH_IMMU6,
47.33431 ++  BFD_RELOC_SH_IMMS10,
47.33432 ++  BFD_RELOC_SH_IMMS10BY2,
47.33433 ++  BFD_RELOC_SH_IMMS10BY4,
47.33434 ++  BFD_RELOC_SH_IMMS10BY8,
47.33435 ++  BFD_RELOC_SH_IMMS16,
47.33436 ++  BFD_RELOC_SH_IMMU16,
47.33437 ++  BFD_RELOC_SH_IMM_LOW16,
47.33438 ++  BFD_RELOC_SH_IMM_LOW16_PCREL,
47.33439 ++  BFD_RELOC_SH_IMM_MEDLOW16,
47.33440 ++  BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
47.33441 ++  BFD_RELOC_SH_IMM_MEDHI16,
47.33442 ++  BFD_RELOC_SH_IMM_MEDHI16_PCREL,
47.33443 ++  BFD_RELOC_SH_IMM_HI16,
47.33444 ++  BFD_RELOC_SH_IMM_HI16_PCREL,
47.33445 ++  BFD_RELOC_SH_PT_16,
47.33446 ++  BFD_RELOC_SH_TLS_GD_32,
47.33447 ++  BFD_RELOC_SH_TLS_LD_32,
47.33448 ++  BFD_RELOC_SH_TLS_LDO_32,
47.33449 ++  BFD_RELOC_SH_TLS_IE_32,
47.33450 ++  BFD_RELOC_SH_TLS_LE_32,
47.33451 ++  BFD_RELOC_SH_TLS_DTPMOD32,
47.33452 ++  BFD_RELOC_SH_TLS_DTPOFF32,
47.33453 ++  BFD_RELOC_SH_TLS_TPOFF32,
47.33454 ++
47.33455 ++/* ARC Cores relocs.
47.33456 ++ARC 22 bit pc-relative branch.  The lowest two bits must be zero and are
47.33457 ++not stored in the instruction.  The high 20 bits are installed in bits 26
47.33458 ++through 7 of the instruction.  */
47.33459 ++  BFD_RELOC_ARC_B22_PCREL,
47.33460 ++
47.33461 ++/* ARC 26 bit absolute branch.  The lowest two bits must be zero and are not
47.33462 ++stored in the instruction.  The high 24 bits are installed in bits 23
47.33463 ++through 0.  */
47.33464 ++  BFD_RELOC_ARC_B26,
47.33465 ++
47.33466 ++/* ADI Blackfin 16 bit immediate absolute reloc.  */
47.33467 ++  BFD_RELOC_BFIN_16_IMM,
47.33468 ++
47.33469 ++/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.  */
47.33470 ++  BFD_RELOC_BFIN_16_HIGH,
47.33471 ++
47.33472 ++/* ADI Blackfin 'a' part of LSETUP.  */
47.33473 ++  BFD_RELOC_BFIN_4_PCREL,
47.33474 ++
47.33475 ++/* ADI Blackfin.  */
47.33476 ++  BFD_RELOC_BFIN_5_PCREL,
47.33477 ++
47.33478 ++/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.  */
47.33479 ++  BFD_RELOC_BFIN_16_LOW,
47.33480 ++
47.33481 ++/* ADI Blackfin.  */
47.33482 ++  BFD_RELOC_BFIN_10_PCREL,
47.33483 ++
47.33484 ++/* ADI Blackfin 'b' part of LSETUP.  */
47.33485 ++  BFD_RELOC_BFIN_11_PCREL,
47.33486 ++
47.33487 ++/* ADI Blackfin.  */
47.33488 ++  BFD_RELOC_BFIN_12_PCREL_JUMP,
47.33489 ++
47.33490 ++/* ADI Blackfin Short jump, pcrel.  */
47.33491 ++  BFD_RELOC_BFIN_12_PCREL_JUMP_S,
47.33492 ++
47.33493 ++/* ADI Blackfin Call.x not implemented.  */
47.33494 ++  BFD_RELOC_BFIN_24_PCREL_CALL_X,
47.33495 ++
47.33496 ++/* ADI Blackfin Long Jump pcrel.  */
47.33497 ++  BFD_RELOC_BFIN_24_PCREL_JUMP_L,
47.33498 ++
47.33499 ++/* ADI Blackfin FD-PIC relocations.  */
47.33500 ++  BFD_RELOC_BFIN_GOT17M4,
47.33501 ++  BFD_RELOC_BFIN_GOTHI,
47.33502 ++  BFD_RELOC_BFIN_GOTLO,
47.33503 ++  BFD_RELOC_BFIN_FUNCDESC,
47.33504 ++  BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
47.33505 ++  BFD_RELOC_BFIN_FUNCDESC_GOTHI,
47.33506 ++  BFD_RELOC_BFIN_FUNCDESC_GOTLO,
47.33507 ++  BFD_RELOC_BFIN_FUNCDESC_VALUE,
47.33508 ++  BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
47.33509 ++  BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
47.33510 ++  BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
47.33511 ++  BFD_RELOC_BFIN_GOTOFF17M4,
47.33512 ++  BFD_RELOC_BFIN_GOTOFFHI,
47.33513 ++  BFD_RELOC_BFIN_GOTOFFLO,
47.33514 ++
47.33515 ++/* ADI Blackfin GOT relocation.  */
47.33516 ++  BFD_RELOC_BFIN_GOT,
47.33517 ++
47.33518 ++/* ADI Blackfin PLTPC relocation.  */
47.33519 ++  BFD_RELOC_BFIN_PLTPC,
47.33520 ++
47.33521 ++/* ADI Blackfin arithmetic relocation.  */
47.33522 ++  BFD_ARELOC_BFIN_PUSH,
47.33523 ++
47.33524 ++/* ADI Blackfin arithmetic relocation.  */
47.33525 ++  BFD_ARELOC_BFIN_CONST,
47.33526 ++
47.33527 ++/* ADI Blackfin arithmetic relocation.  */
47.33528 ++  BFD_ARELOC_BFIN_ADD,
47.33529 ++
47.33530 ++/* ADI Blackfin arithmetic relocation.  */
47.33531 ++  BFD_ARELOC_BFIN_SUB,
47.33532 ++
47.33533 ++/* ADI Blackfin arithmetic relocation.  */
47.33534 ++  BFD_ARELOC_BFIN_MULT,
47.33535 ++
47.33536 ++/* ADI Blackfin arithmetic relocation.  */
47.33537 ++  BFD_ARELOC_BFIN_DIV,
47.33538 ++
47.33539 ++/* ADI Blackfin arithmetic relocation.  */
47.33540 ++  BFD_ARELOC_BFIN_MOD,
47.33541 ++
47.33542 ++/* ADI Blackfin arithmetic relocation.  */
47.33543 ++  BFD_ARELOC_BFIN_LSHIFT,
47.33544 ++
47.33545 ++/* ADI Blackfin arithmetic relocation.  */
47.33546 ++  BFD_ARELOC_BFIN_RSHIFT,
47.33547 ++
47.33548 ++/* ADI Blackfin arithmetic relocation.  */
47.33549 ++  BFD_ARELOC_BFIN_AND,
47.33550 ++
47.33551 ++/* ADI Blackfin arithmetic relocation.  */
47.33552 ++  BFD_ARELOC_BFIN_OR,
47.33553 ++
47.33554 ++/* ADI Blackfin arithmetic relocation.  */
47.33555 ++  BFD_ARELOC_BFIN_XOR,
47.33556 ++
47.33557 ++/* ADI Blackfin arithmetic relocation.  */
47.33558 ++  BFD_ARELOC_BFIN_LAND,
47.33559 ++
47.33560 ++/* ADI Blackfin arithmetic relocation.  */
47.33561 ++  BFD_ARELOC_BFIN_LOR,
47.33562 ++
47.33563 ++/* ADI Blackfin arithmetic relocation.  */
47.33564 ++  BFD_ARELOC_BFIN_LEN,
47.33565 ++
47.33566 ++/* ADI Blackfin arithmetic relocation.  */
47.33567 ++  BFD_ARELOC_BFIN_NEG,
47.33568 ++
47.33569 ++/* ADI Blackfin arithmetic relocation.  */
47.33570 ++  BFD_ARELOC_BFIN_COMP,
47.33571 ++
47.33572 ++/* ADI Blackfin arithmetic relocation.  */
47.33573 ++  BFD_ARELOC_BFIN_PAGE,
47.33574 ++
47.33575 ++/* ADI Blackfin arithmetic relocation.  */
47.33576 ++  BFD_ARELOC_BFIN_HWPAGE,
47.33577 ++
47.33578 ++/* ADI Blackfin arithmetic relocation.  */
47.33579 ++  BFD_ARELOC_BFIN_ADDR,
47.33580 ++
47.33581 ++/* Mitsubishi D10V relocs.
47.33582 ++This is a 10-bit reloc with the right 2 bits
47.33583 ++assumed to be 0.  */
47.33584 ++  BFD_RELOC_D10V_10_PCREL_R,
47.33585 ++
47.33586 ++/* Mitsubishi D10V relocs.
47.33587 ++This is a 10-bit reloc with the right 2 bits
47.33588 ++assumed to be 0.  This is the same as the previous reloc
47.33589 ++except it is in the left container, i.e.,
47.33590 ++shifted left 15 bits.  */
47.33591 ++  BFD_RELOC_D10V_10_PCREL_L,
47.33592 ++
47.33593 ++/* This is an 18-bit reloc with the right 2 bits
47.33594 ++assumed to be 0.  */
47.33595 ++  BFD_RELOC_D10V_18,
47.33596 ++
47.33597 ++/* This is an 18-bit reloc with the right 2 bits
47.33598 ++assumed to be 0.  */
47.33599 ++  BFD_RELOC_D10V_18_PCREL,
47.33600 ++
47.33601 ++/* Mitsubishi D30V relocs.
47.33602 ++This is a 6-bit absolute reloc.  */
47.33603 ++  BFD_RELOC_D30V_6,
47.33604 ++
47.33605 ++/* This is a 6-bit pc-relative reloc with
47.33606 ++the right 3 bits assumed to be 0.  */
47.33607 ++  BFD_RELOC_D30V_9_PCREL,
47.33608 ++
47.33609 ++/* This is a 6-bit pc-relative reloc with
47.33610 ++the right 3 bits assumed to be 0. Same
47.33611 ++as the previous reloc but on the right side
47.33612 ++of the container.  */
47.33613 ++  BFD_RELOC_D30V_9_PCREL_R,
47.33614 ++
47.33615 ++/* This is a 12-bit absolute reloc with the
47.33616 ++right 3 bitsassumed to be 0.  */
47.33617 ++  BFD_RELOC_D30V_15,
47.33618 ++
47.33619 ++/* This is a 12-bit pc-relative reloc with
47.33620 ++the right 3 bits assumed to be 0.  */
47.33621 ++  BFD_RELOC_D30V_15_PCREL,
47.33622 ++
47.33623 ++/* This is a 12-bit pc-relative reloc with
47.33624 ++the right 3 bits assumed to be 0. Same
47.33625 ++as the previous reloc but on the right side
47.33626 ++of the container.  */
47.33627 ++  BFD_RELOC_D30V_15_PCREL_R,
47.33628 ++
47.33629 ++/* This is an 18-bit absolute reloc with
47.33630 ++the right 3 bits assumed to be 0.  */
47.33631 ++  BFD_RELOC_D30V_21,
47.33632 ++
47.33633 ++/* This is an 18-bit pc-relative reloc with
47.33634 ++the right 3 bits assumed to be 0.  */
47.33635 ++  BFD_RELOC_D30V_21_PCREL,
47.33636 ++
47.33637 ++/* This is an 18-bit pc-relative reloc with
47.33638 ++the right 3 bits assumed to be 0. Same
47.33639 ++as the previous reloc but on the right side
47.33640 ++of the container.  */
47.33641 ++  BFD_RELOC_D30V_21_PCREL_R,
47.33642 ++
47.33643 ++/* This is a 32-bit absolute reloc.  */
47.33644 ++  BFD_RELOC_D30V_32,
47.33645 ++
47.33646 ++/* This is a 32-bit pc-relative reloc.  */
47.33647 ++  BFD_RELOC_D30V_32_PCREL,
47.33648 ++
47.33649 ++/* DLX relocs  */
47.33650 ++  BFD_RELOC_DLX_HI16_S,
47.33651 ++
47.33652 ++/* DLX relocs  */
47.33653 ++  BFD_RELOC_DLX_LO16,
47.33654 ++
47.33655 ++/* DLX relocs  */
47.33656 ++  BFD_RELOC_DLX_JMP26,
47.33657 ++
47.33658 ++/* Renesas M16C/M32C Relocations.  */
47.33659 ++  BFD_RELOC_M32C_HI8,
47.33660 ++  BFD_RELOC_M32C_RL_JUMP,
47.33661 ++  BFD_RELOC_M32C_RL_1ADDR,
47.33662 ++  BFD_RELOC_M32C_RL_2ADDR,
47.33663 ++
47.33664 ++/* Renesas M32R (formerly Mitsubishi M32R) relocs.
47.33665 ++This is a 24 bit absolute address.  */
47.33666 ++  BFD_RELOC_M32R_24,
47.33667 ++
47.33668 ++/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.  */
47.33669 ++  BFD_RELOC_M32R_10_PCREL,
47.33670 ++
47.33671 ++/* This is an 18-bit reloc with the right 2 bits assumed to be 0.  */
47.33672 ++  BFD_RELOC_M32R_18_PCREL,
47.33673 ++
47.33674 ++/* This is a 26-bit reloc with the right 2 bits assumed to be 0.  */
47.33675 ++  BFD_RELOC_M32R_26_PCREL,
47.33676 ++
47.33677 ++/* This is a 16-bit reloc containing the high 16 bits of an address
47.33678 ++used when the lower 16 bits are treated as unsigned.  */
47.33679 ++  BFD_RELOC_M32R_HI16_ULO,
47.33680 ++
47.33681 ++/* This is a 16-bit reloc containing the high 16 bits of an address
47.33682 ++used when the lower 16 bits are treated as signed.  */
47.33683 ++  BFD_RELOC_M32R_HI16_SLO,
47.33684 ++
47.33685 ++/* This is a 16-bit reloc containing the lower 16 bits of an address.  */
47.33686 ++  BFD_RELOC_M32R_LO16,
47.33687 ++
47.33688 ++/* This is a 16-bit reloc containing the small data area offset for use in
47.33689 ++add3, load, and store instructions.  */
47.33690 ++  BFD_RELOC_M32R_SDA16,
47.33691 ++
47.33692 ++/* For PIC.  */
47.33693 ++  BFD_RELOC_M32R_GOT24,
47.33694 ++  BFD_RELOC_M32R_26_PLTREL,
47.33695 ++  BFD_RELOC_M32R_COPY,
47.33696 ++  BFD_RELOC_M32R_GLOB_DAT,
47.33697 ++  BFD_RELOC_M32R_JMP_SLOT,
47.33698 ++  BFD_RELOC_M32R_RELATIVE,
47.33699 ++  BFD_RELOC_M32R_GOTOFF,
47.33700 ++  BFD_RELOC_M32R_GOTOFF_HI_ULO,
47.33701 ++  BFD_RELOC_M32R_GOTOFF_HI_SLO,
47.33702 ++  BFD_RELOC_M32R_GOTOFF_LO,
47.33703 ++  BFD_RELOC_M32R_GOTPC24,
47.33704 ++  BFD_RELOC_M32R_GOT16_HI_ULO,
47.33705 ++  BFD_RELOC_M32R_GOT16_HI_SLO,
47.33706 ++  BFD_RELOC_M32R_GOT16_LO,
47.33707 ++  BFD_RELOC_M32R_GOTPC_HI_ULO,
47.33708 ++  BFD_RELOC_M32R_GOTPC_HI_SLO,
47.33709 ++  BFD_RELOC_M32R_GOTPC_LO,
47.33710 ++
47.33711 ++/* This is a 9-bit reloc  */
47.33712 ++  BFD_RELOC_V850_9_PCREL,
47.33713 ++
47.33714 ++/* This is a 22-bit reloc  */
47.33715 ++  BFD_RELOC_V850_22_PCREL,
47.33716 ++
47.33717 ++/* This is a 16 bit offset from the short data area pointer.  */
47.33718 ++  BFD_RELOC_V850_SDA_16_16_OFFSET,
47.33719 ++
47.33720 ++/* This is a 16 bit offset (of which only 15 bits are used) from the
47.33721 ++short data area pointer.  */
47.33722 ++  BFD_RELOC_V850_SDA_15_16_OFFSET,
47.33723 ++
47.33724 ++/* This is a 16 bit offset from the zero data area pointer.  */
47.33725 ++  BFD_RELOC_V850_ZDA_16_16_OFFSET,
47.33726 ++
47.33727 ++/* This is a 16 bit offset (of which only 15 bits are used) from the
47.33728 ++zero data area pointer.  */
47.33729 ++  BFD_RELOC_V850_ZDA_15_16_OFFSET,
47.33730 ++
47.33731 ++/* This is an 8 bit offset (of which only 6 bits are used) from the
47.33732 ++tiny data area pointer.  */
47.33733 ++  BFD_RELOC_V850_TDA_6_8_OFFSET,
47.33734 ++
47.33735 ++/* This is an 8bit offset (of which only 7 bits are used) from the tiny
47.33736 ++data area pointer.  */
47.33737 ++  BFD_RELOC_V850_TDA_7_8_OFFSET,
47.33738 ++
47.33739 ++/* This is a 7 bit offset from the tiny data area pointer.  */
47.33740 ++  BFD_RELOC_V850_TDA_7_7_OFFSET,
47.33741 ++
47.33742 ++/* This is a 16 bit offset from the tiny data area pointer.  */
47.33743 ++  BFD_RELOC_V850_TDA_16_16_OFFSET,
47.33744 ++
47.33745 ++/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
47.33746 ++data area pointer.  */
47.33747 ++  BFD_RELOC_V850_TDA_4_5_OFFSET,
47.33748 ++
47.33749 ++/* This is a 4 bit offset from the tiny data area pointer.  */
47.33750 ++  BFD_RELOC_V850_TDA_4_4_OFFSET,
47.33751 ++
47.33752 ++/* This is a 16 bit offset from the short data area pointer, with the
47.33753 ++bits placed non-contiguously in the instruction.  */
47.33754 ++  BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
47.33755 ++
47.33756 ++/* This is a 16 bit offset from the zero data area pointer, with the
47.33757 ++bits placed non-contiguously in the instruction.  */
47.33758 ++  BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
47.33759 ++
47.33760 ++/* This is a 6 bit offset from the call table base pointer.  */
47.33761 ++  BFD_RELOC_V850_CALLT_6_7_OFFSET,
47.33762 ++
47.33763 ++/* This is a 16 bit offset from the call table base pointer.  */
47.33764 ++  BFD_RELOC_V850_CALLT_16_16_OFFSET,
47.33765 ++
47.33766 ++/* Used for relaxing indirect function calls.  */
47.33767 ++  BFD_RELOC_V850_LONGCALL,
47.33768 ++
47.33769 ++/* Used for relaxing indirect jumps.  */
47.33770 ++  BFD_RELOC_V850_LONGJUMP,
47.33771 ++
47.33772 ++/* Used to maintain alignment whilst relaxing.  */
47.33773 ++  BFD_RELOC_V850_ALIGN,
47.33774 ++
47.33775 ++/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
47.33776 ++instructions.  */
47.33777 ++  BFD_RELOC_V850_LO16_SPLIT_OFFSET,
47.33778 ++
47.33779 ++/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
47.33780 ++instruction.  */
47.33781 ++  BFD_RELOC_MN10300_32_PCREL,
47.33782 ++
47.33783 ++/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
47.33784 ++instruction.  */
47.33785 ++  BFD_RELOC_MN10300_16_PCREL,
47.33786 ++
47.33787 ++/* This is a 8bit DP reloc for the tms320c30, where the most
47.33788 ++significant 8 bits of a 24 bit word are placed into the least
47.33789 ++significant 8 bits of the opcode.  */
47.33790 ++  BFD_RELOC_TIC30_LDP,
47.33791 ++
47.33792 ++/* This is a 7bit reloc for the tms320c54x, where the least
47.33793 ++significant 7 bits of a 16 bit word are placed into the least
47.33794 ++significant 7 bits of the opcode.  */
47.33795 ++  BFD_RELOC_TIC54X_PARTLS7,
47.33796 ++
47.33797 ++/* This is a 9bit DP reloc for the tms320c54x, where the most
47.33798 ++significant 9 bits of a 16 bit word are placed into the least
47.33799 ++significant 9 bits of the opcode.  */
47.33800 ++  BFD_RELOC_TIC54X_PARTMS9,
47.33801 ++
47.33802 ++/* This is an extended address 23-bit reloc for the tms320c54x.  */
47.33803 ++  BFD_RELOC_TIC54X_23,
47.33804 ++
47.33805 ++/* This is a 16-bit reloc for the tms320c54x, where the least
47.33806 ++significant 16 bits of a 23-bit extended address are placed into
47.33807 ++the opcode.  */
47.33808 ++  BFD_RELOC_TIC54X_16_OF_23,
47.33809 ++
47.33810 ++/* This is a reloc for the tms320c54x, where the most
47.33811 ++significant 7 bits of a 23-bit extended address are placed into
47.33812 ++the opcode.  */
47.33813 ++  BFD_RELOC_TIC54X_MS7_OF_23,
47.33814 ++
47.33815 ++/* This is a 48 bit reloc for the FR30 that stores 32 bits.  */
47.33816 ++  BFD_RELOC_FR30_48,
47.33817 ++
47.33818 ++/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
47.33819 ++two sections.  */
47.33820 ++  BFD_RELOC_FR30_20,
47.33821 ++
47.33822 ++/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
47.33823 ++4 bits.  */
47.33824 ++  BFD_RELOC_FR30_6_IN_4,
47.33825 ++
47.33826 ++/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
47.33827 ++into 8 bits.  */
47.33828 ++  BFD_RELOC_FR30_8_IN_8,
47.33829 ++
47.33830 ++/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
47.33831 ++into 8 bits.  */
47.33832 ++  BFD_RELOC_FR30_9_IN_8,
47.33833 ++
47.33834 ++/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
47.33835 ++into 8 bits.  */
47.33836 ++  BFD_RELOC_FR30_10_IN_8,
47.33837 ++
47.33838 ++/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
47.33839 ++short offset into 8 bits.  */
47.33840 ++  BFD_RELOC_FR30_9_PCREL,
47.33841 ++
47.33842 ++/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
47.33843 ++short offset into 11 bits.  */
47.33844 ++  BFD_RELOC_FR30_12_PCREL,
47.33845 ++
47.33846 ++/* Motorola Mcore relocations.  */
47.33847 ++  BFD_RELOC_MCORE_PCREL_IMM8BY4,
47.33848 ++  BFD_RELOC_MCORE_PCREL_IMM11BY2,
47.33849 ++  BFD_RELOC_MCORE_PCREL_IMM4BY2,
47.33850 ++  BFD_RELOC_MCORE_PCREL_32,
47.33851 ++  BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
47.33852 ++  BFD_RELOC_MCORE_RVA,
47.33853 ++
47.33854 ++/* Toshiba Media Processor Relocations.  */
47.33855 ++  BFD_RELOC_MEP_8,
47.33856 ++  BFD_RELOC_MEP_16,
47.33857 ++  BFD_RELOC_MEP_32,
47.33858 ++  BFD_RELOC_MEP_PCREL8A2,
47.33859 ++  BFD_RELOC_MEP_PCREL12A2,
47.33860 ++  BFD_RELOC_MEP_PCREL17A2,
47.33861 ++  BFD_RELOC_MEP_PCREL24A2,
47.33862 ++  BFD_RELOC_MEP_PCABS24A2,
47.33863 ++  BFD_RELOC_MEP_LOW16,
47.33864 ++  BFD_RELOC_MEP_HI16U,
47.33865 ++  BFD_RELOC_MEP_HI16S,
47.33866 ++  BFD_RELOC_MEP_GPREL,
47.33867 ++  BFD_RELOC_MEP_TPREL,
47.33868 ++  BFD_RELOC_MEP_TPREL7,
47.33869 ++  BFD_RELOC_MEP_TPREL7A2,
47.33870 ++  BFD_RELOC_MEP_TPREL7A4,
47.33871 ++  BFD_RELOC_MEP_UIMM24,
47.33872 ++  BFD_RELOC_MEP_ADDR24A4,
47.33873 ++  BFD_RELOC_MEP_GNU_VTINHERIT,
47.33874 ++  BFD_RELOC_MEP_GNU_VTENTRY,
47.33875 ++
47.33876 ++
47.33877 ++/* These are relocations for the GETA instruction.  */
47.33878 ++  BFD_RELOC_MMIX_GETA,
47.33879 ++  BFD_RELOC_MMIX_GETA_1,
47.33880 ++  BFD_RELOC_MMIX_GETA_2,
47.33881 ++  BFD_RELOC_MMIX_GETA_3,
47.33882 ++
47.33883 ++/* These are relocations for a conditional branch instruction.  */
47.33884 ++  BFD_RELOC_MMIX_CBRANCH,
47.33885 ++  BFD_RELOC_MMIX_CBRANCH_J,
47.33886 ++  BFD_RELOC_MMIX_CBRANCH_1,
47.33887 ++  BFD_RELOC_MMIX_CBRANCH_2,
47.33888 ++  BFD_RELOC_MMIX_CBRANCH_3,
47.33889 ++
47.33890 ++/* These are relocations for the PUSHJ instruction.  */
47.33891 ++  BFD_RELOC_MMIX_PUSHJ,
47.33892 ++  BFD_RELOC_MMIX_PUSHJ_1,
47.33893 ++  BFD_RELOC_MMIX_PUSHJ_2,
47.33894 ++  BFD_RELOC_MMIX_PUSHJ_3,
47.33895 ++  BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
47.33896 ++
47.33897 ++/* These are relocations for the JMP instruction.  */
47.33898 ++  BFD_RELOC_MMIX_JMP,
47.33899 ++  BFD_RELOC_MMIX_JMP_1,
47.33900 ++  BFD_RELOC_MMIX_JMP_2,
47.33901 ++  BFD_RELOC_MMIX_JMP_3,
47.33902 ++
47.33903 ++/* This is a relocation for a relative address as in a GETA instruction or
47.33904 ++a branch.  */
47.33905 ++  BFD_RELOC_MMIX_ADDR19,
47.33906 ++
47.33907 ++/* This is a relocation for a relative address as in a JMP instruction.  */
47.33908 ++  BFD_RELOC_MMIX_ADDR27,
47.33909 ++
47.33910 ++/* This is a relocation for an instruction field that may be a general
47.33911 ++register or a value 0..255.  */
47.33912 ++  BFD_RELOC_MMIX_REG_OR_BYTE,
47.33913 ++
47.33914 ++/* This is a relocation for an instruction field that may be a general
47.33915 ++register.  */
47.33916 ++  BFD_RELOC_MMIX_REG,
47.33917 ++
47.33918 ++/* This is a relocation for two instruction fields holding a register and
47.33919 ++an offset, the equivalent of the relocation.  */
47.33920 ++  BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
47.33921 ++
47.33922 ++/* This relocation is an assertion that the expression is not allocated as
47.33923 ++a global register.  It does not modify contents.  */
47.33924 ++  BFD_RELOC_MMIX_LOCAL,
47.33925 ++
47.33926 ++/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
47.33927 ++short offset into 7 bits.  */
47.33928 ++  BFD_RELOC_AVR_7_PCREL,
47.33929 ++
47.33930 ++/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
47.33931 ++short offset into 12 bits.  */
47.33932 ++  BFD_RELOC_AVR_13_PCREL,
47.33933 ++
47.33934 ++/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
47.33935 ++program memory address) into 16 bits.  */
47.33936 ++  BFD_RELOC_AVR_16_PM,
47.33937 ++
47.33938 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
47.33939 ++data memory address) into 8 bit immediate value of LDI insn.  */
47.33940 ++  BFD_RELOC_AVR_LO8_LDI,
47.33941 ++
47.33942 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
47.33943 ++of data memory address) into 8 bit immediate value of LDI insn.  */
47.33944 ++  BFD_RELOC_AVR_HI8_LDI,
47.33945 ++
47.33946 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
47.33947 ++of program memory address) into 8 bit immediate value of LDI insn.  */
47.33948 ++  BFD_RELOC_AVR_HH8_LDI,
47.33949 ++
47.33950 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
47.33951 ++of 32 bit value) into 8 bit immediate value of LDI insn.  */
47.33952 ++  BFD_RELOC_AVR_MS8_LDI,
47.33953 ++
47.33954 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
47.33955 ++(usually data memory address) into 8 bit immediate value of SUBI insn.  */
47.33956 ++  BFD_RELOC_AVR_LO8_LDI_NEG,
47.33957 ++
47.33958 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
47.33959 ++(high 8 bit of data memory address) into 8 bit immediate value of
47.33960 ++SUBI insn.  */
47.33961 ++  BFD_RELOC_AVR_HI8_LDI_NEG,
47.33962 ++
47.33963 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
47.33964 ++(most high 8 bit of program memory address) into 8 bit immediate value
47.33965 ++of LDI or SUBI insn.  */
47.33966 ++  BFD_RELOC_AVR_HH8_LDI_NEG,
47.33967 ++
47.33968 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
47.33969 ++of 32 bit value) into 8 bit immediate value of LDI insn.  */
47.33970 ++  BFD_RELOC_AVR_MS8_LDI_NEG,
47.33971 ++
47.33972 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
47.33973 ++command address) into 8 bit immediate value of LDI insn.  */
47.33974 ++  BFD_RELOC_AVR_LO8_LDI_PM,
47.33975 ++
47.33976 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value 
47.33977 ++(command address) into 8 bit immediate value of LDI insn. If the address
47.33978 ++is beyond the 128k boundary, the linker inserts a jump stub for this reloc
47.33979 ++in the lower 128k.  */
47.33980 ++  BFD_RELOC_AVR_LO8_LDI_GS,
47.33981 ++
47.33982 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
47.33983 ++of command address) into 8 bit immediate value of LDI insn.  */
47.33984 ++  BFD_RELOC_AVR_HI8_LDI_PM,
47.33985 ++
47.33986 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
47.33987 ++of command address) into 8 bit immediate value of LDI insn.  If the address
47.33988 ++is beyond the 128k boundary, the linker inserts a jump stub for this reloc
47.33989 ++below 128k.  */
47.33990 ++  BFD_RELOC_AVR_HI8_LDI_GS,
47.33991 ++
47.33992 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
47.33993 ++of command address) into 8 bit immediate value of LDI insn.  */
47.33994 ++  BFD_RELOC_AVR_HH8_LDI_PM,
47.33995 ++
47.33996 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
47.33997 ++(usually command address) into 8 bit immediate value of SUBI insn.  */
47.33998 ++  BFD_RELOC_AVR_LO8_LDI_PM_NEG,
47.33999 ++
47.34000 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
47.34001 ++(high 8 bit of 16 bit command address) into 8 bit immediate value
47.34002 ++of SUBI insn.  */
47.34003 ++  BFD_RELOC_AVR_HI8_LDI_PM_NEG,
47.34004 ++
47.34005 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
47.34006 ++(high 6 bit of 22 bit command address) into 8 bit immediate
47.34007 ++value of SUBI insn.  */
47.34008 ++  BFD_RELOC_AVR_HH8_LDI_PM_NEG,
47.34009 ++
47.34010 ++/* This is a 32 bit reloc for the AVR that stores 23 bit value
47.34011 ++into 22 bits.  */
47.34012 ++  BFD_RELOC_AVR_CALL,
47.34013 ++
47.34014 ++/* This is a 16 bit reloc for the AVR that stores all needed bits
47.34015 ++for absolute addressing with ldi with overflow check to linktime  */
47.34016 ++  BFD_RELOC_AVR_LDI,
47.34017 ++
47.34018 ++/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
47.34019 ++instructions  */
47.34020 ++  BFD_RELOC_AVR_6,
47.34021 ++
47.34022 ++/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
47.34023 ++instructions  */
47.34024 ++  BFD_RELOC_AVR_6_ADIW,
47.34025 ++
47.34026 ++/* Direct 12 bit.  */
47.34027 ++  BFD_RELOC_390_12,
47.34028 ++
47.34029 ++/* 12 bit GOT offset.  */
47.34030 ++  BFD_RELOC_390_GOT12,
47.34031 ++
47.34032 ++/* 32 bit PC relative PLT address.  */
47.34033 ++  BFD_RELOC_390_PLT32,
47.34034 ++
47.34035 ++/* Copy symbol at runtime.  */
47.34036 ++  BFD_RELOC_390_COPY,
47.34037 ++
47.34038 ++/* Create GOT entry.  */
47.34039 ++  BFD_RELOC_390_GLOB_DAT,
47.34040 ++
47.34041 ++/* Create PLT entry.  */
47.34042 ++  BFD_RELOC_390_JMP_SLOT,
47.34043 ++
47.34044 ++/* Adjust by program base.  */
47.34045 ++  BFD_RELOC_390_RELATIVE,
47.34046 ++
47.34047 ++/* 32 bit PC relative offset to GOT.  */
47.34048 ++  BFD_RELOC_390_GOTPC,
47.34049 ++
47.34050 ++/* 16 bit GOT offset.  */
47.34051 ++  BFD_RELOC_390_GOT16,
47.34052 ++
47.34053 ++/* PC relative 16 bit shifted by 1.  */
47.34054 ++  BFD_RELOC_390_PC16DBL,
47.34055 ++
47.34056 ++/* 16 bit PC rel. PLT shifted by 1.  */
47.34057 ++  BFD_RELOC_390_PLT16DBL,
47.34058 ++
47.34059 ++/* PC relative 32 bit shifted by 1.  */
47.34060 ++  BFD_RELOC_390_PC32DBL,
47.34061 ++
47.34062 ++/* 32 bit PC rel. PLT shifted by 1.  */
47.34063 ++  BFD_RELOC_390_PLT32DBL,
47.34064 ++
47.34065 ++/* 32 bit PC rel. GOT shifted by 1.  */
47.34066 ++  BFD_RELOC_390_GOTPCDBL,
47.34067 ++
47.34068 ++/* 64 bit GOT offset.  */
47.34069 ++  BFD_RELOC_390_GOT64,
47.34070 ++
47.34071 ++/* 64 bit PC relative PLT address.  */
47.34072 ++  BFD_RELOC_390_PLT64,
47.34073 ++
47.34074 ++/* 32 bit rel. offset to GOT entry.  */
47.34075 ++  BFD_RELOC_390_GOTENT,
47.34076 ++
47.34077 ++/* 64 bit offset to GOT.  */
47.34078 ++  BFD_RELOC_390_GOTOFF64,
47.34079 ++
47.34080 ++/* 12-bit offset to symbol-entry within GOT, with PLT handling.  */
47.34081 ++  BFD_RELOC_390_GOTPLT12,
47.34082 ++
47.34083 ++/* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
47.34084 ++  BFD_RELOC_390_GOTPLT16,
47.34085 ++
47.34086 ++/* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
47.34087 ++  BFD_RELOC_390_GOTPLT32,
47.34088 ++
47.34089 ++/* 64-bit offset to symbol-entry within GOT, with PLT handling.  */
47.34090 ++  BFD_RELOC_390_GOTPLT64,
47.34091 ++
47.34092 ++/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling.  */
47.34093 ++  BFD_RELOC_390_GOTPLTENT,
47.34094 ++
47.34095 ++/* 16-bit rel. offset from the GOT to a PLT entry.  */
47.34096 ++  BFD_RELOC_390_PLTOFF16,
47.34097 ++
47.34098 ++/* 32-bit rel. offset from the GOT to a PLT entry.  */
47.34099 ++  BFD_RELOC_390_PLTOFF32,
47.34100 ++
47.34101 ++/* 64-bit rel. offset from the GOT to a PLT entry.  */
47.34102 ++  BFD_RELOC_390_PLTOFF64,
47.34103 ++
47.34104 ++/* s390 tls relocations.  */
47.34105 ++  BFD_RELOC_390_TLS_LOAD,
47.34106 ++  BFD_RELOC_390_TLS_GDCALL,
47.34107 ++  BFD_RELOC_390_TLS_LDCALL,
47.34108 ++  BFD_RELOC_390_TLS_GD32,
47.34109 ++  BFD_RELOC_390_TLS_GD64,
47.34110 ++  BFD_RELOC_390_TLS_GOTIE12,
47.34111 ++  BFD_RELOC_390_TLS_GOTIE32,
47.34112 ++  BFD_RELOC_390_TLS_GOTIE64,
47.34113 ++  BFD_RELOC_390_TLS_LDM32,
47.34114 ++  BFD_RELOC_390_TLS_LDM64,
47.34115 ++  BFD_RELOC_390_TLS_IE32,
47.34116 ++  BFD_RELOC_390_TLS_IE64,
47.34117 ++  BFD_RELOC_390_TLS_IEENT,
47.34118 ++  BFD_RELOC_390_TLS_LE32,
47.34119 ++  BFD_RELOC_390_TLS_LE64,
47.34120 ++  BFD_RELOC_390_TLS_LDO32,
47.34121 ++  BFD_RELOC_390_TLS_LDO64,
47.34122 ++  BFD_RELOC_390_TLS_DTPMOD,
47.34123 ++  BFD_RELOC_390_TLS_DTPOFF,
47.34124 ++  BFD_RELOC_390_TLS_TPOFF,
47.34125 ++
47.34126 ++/* Long displacement extension.  */
47.34127 ++  BFD_RELOC_390_20,
47.34128 ++  BFD_RELOC_390_GOT20,
47.34129 ++  BFD_RELOC_390_GOTPLT20,
47.34130 ++  BFD_RELOC_390_TLS_GOTIE20,
47.34131 ++
47.34132 ++/* Score relocations  */
47.34133 ++  BFD_RELOC_SCORE_DUMMY1,
47.34134 ++
47.34135 ++/* Low 16 bit for load/store  */
47.34136 ++  BFD_RELOC_SCORE_GPREL15,
47.34137 ++
47.34138 ++/* This is a 24-bit reloc with the right 1 bit assumed to be 0  */
47.34139 ++  BFD_RELOC_SCORE_DUMMY2,
47.34140 ++  BFD_RELOC_SCORE_JMP,
47.34141 ++
47.34142 ++/* This is a 19-bit reloc with the right 1 bit assumed to be 0  */
47.34143 ++  BFD_RELOC_SCORE_BRANCH,
47.34144 ++
47.34145 ++/* This is a 11-bit reloc with the right 1 bit assumed to be 0  */
47.34146 ++  BFD_RELOC_SCORE16_JMP,
47.34147 ++
47.34148 ++/* This is a 8-bit reloc with the right 1 bit assumed to be 0  */
47.34149 ++  BFD_RELOC_SCORE16_BRANCH,
47.34150 ++
47.34151 ++/* Undocumented Score relocs  */
47.34152 ++  BFD_RELOC_SCORE_GOT15,
47.34153 ++  BFD_RELOC_SCORE_GOT_LO16,
47.34154 ++  BFD_RELOC_SCORE_CALL15,
47.34155 ++  BFD_RELOC_SCORE_DUMMY_HI16,
47.34156 ++
47.34157 ++/* Scenix IP2K - 9-bit register number / data address  */
47.34158 ++  BFD_RELOC_IP2K_FR9,
47.34159 ++
47.34160 ++/* Scenix IP2K - 4-bit register/data bank number  */
47.34161 ++  BFD_RELOC_IP2K_BANK,
47.34162 ++
47.34163 ++/* Scenix IP2K - low 13 bits of instruction word address  */
47.34164 ++  BFD_RELOC_IP2K_ADDR16CJP,
47.34165 ++
47.34166 ++/* Scenix IP2K - high 3 bits of instruction word address  */
47.34167 ++  BFD_RELOC_IP2K_PAGE3,
47.34168 ++
47.34169 ++/* Scenix IP2K - ext/low/high 8 bits of data address  */
47.34170 ++  BFD_RELOC_IP2K_LO8DATA,
47.34171 ++  BFD_RELOC_IP2K_HI8DATA,
47.34172 ++  BFD_RELOC_IP2K_EX8DATA,
47.34173 ++
47.34174 ++/* Scenix IP2K - low/high 8 bits of instruction word address  */
47.34175 ++  BFD_RELOC_IP2K_LO8INSN,
47.34176 ++  BFD_RELOC_IP2K_HI8INSN,
47.34177 ++
47.34178 ++/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0  */
47.34179 ++  BFD_RELOC_IP2K_PC_SKIP,
47.34180 ++
47.34181 ++/* Scenix IP2K - 16 bit word address in text section.  */
47.34182 ++  BFD_RELOC_IP2K_TEXT,
47.34183 ++
47.34184 ++/* Scenix IP2K - 7-bit sp or dp offset  */
47.34185 ++  BFD_RELOC_IP2K_FR_OFFSET,
47.34186 ++
47.34187 ++/* Scenix VPE4K coprocessor - data/insn-space addressing  */
47.34188 ++  BFD_RELOC_VPE4KMATH_DATA,
47.34189 ++  BFD_RELOC_VPE4KMATH_INSN,
47.34190 ++
47.34191 ++/* These two relocations are used by the linker to determine which of
47.34192 ++the entries in a C++ virtual function table are actually used.  When
47.34193 ++the --gc-sections option is given, the linker will zero out the entries
47.34194 ++that are not used, so that the code for those functions need not be
47.34195 ++included in the output.
47.34196 ++
47.34197 ++VTABLE_INHERIT is a zero-space relocation used to describe to the
47.34198 ++linker the inheritance tree of a C++ virtual function table.  The
47.34199 ++relocation's symbol should be the parent class' vtable, and the
47.34200 ++relocation should be located at the child vtable.
47.34201 ++
47.34202 ++VTABLE_ENTRY is a zero-space relocation that describes the use of a
47.34203 ++virtual function table entry.  The reloc's symbol should refer to the
47.34204 ++table of the class mentioned in the code.  Off of that base, an offset
47.34205 ++describes the entry that is being used.  For Rela hosts, this offset
47.34206 ++is stored in the reloc's addend.  For Rel hosts, we are forced to put
47.34207 ++this offset in the reloc's section offset.  */
47.34208 ++  BFD_RELOC_VTABLE_INHERIT,
47.34209 ++  BFD_RELOC_VTABLE_ENTRY,
47.34210 ++
47.34211 ++/* Intel IA64 Relocations.  */
47.34212 ++  BFD_RELOC_IA64_IMM14,
47.34213 ++  BFD_RELOC_IA64_IMM22,
47.34214 ++  BFD_RELOC_IA64_IMM64,
47.34215 ++  BFD_RELOC_IA64_DIR32MSB,
47.34216 ++  BFD_RELOC_IA64_DIR32LSB,
47.34217 ++  BFD_RELOC_IA64_DIR64MSB,
47.34218 ++  BFD_RELOC_IA64_DIR64LSB,
47.34219 ++  BFD_RELOC_IA64_GPREL22,
47.34220 ++  BFD_RELOC_IA64_GPREL64I,
47.34221 ++  BFD_RELOC_IA64_GPREL32MSB,
47.34222 ++  BFD_RELOC_IA64_GPREL32LSB,
47.34223 ++  BFD_RELOC_IA64_GPREL64MSB,
47.34224 ++  BFD_RELOC_IA64_GPREL64LSB,
47.34225 ++  BFD_RELOC_IA64_LTOFF22,
47.34226 ++  BFD_RELOC_IA64_LTOFF64I,
47.34227 ++  BFD_RELOC_IA64_PLTOFF22,
47.34228 ++  BFD_RELOC_IA64_PLTOFF64I,
47.34229 ++  BFD_RELOC_IA64_PLTOFF64MSB,
47.34230 ++  BFD_RELOC_IA64_PLTOFF64LSB,
47.34231 ++  BFD_RELOC_IA64_FPTR64I,
47.34232 ++  BFD_RELOC_IA64_FPTR32MSB,
47.34233 ++  BFD_RELOC_IA64_FPTR32LSB,
47.34234 ++  BFD_RELOC_IA64_FPTR64MSB,
47.34235 ++  BFD_RELOC_IA64_FPTR64LSB,
47.34236 ++  BFD_RELOC_IA64_PCREL21B,
47.34237 ++  BFD_RELOC_IA64_PCREL21BI,
47.34238 ++  BFD_RELOC_IA64_PCREL21M,
47.34239 ++  BFD_RELOC_IA64_PCREL21F,
47.34240 ++  BFD_RELOC_IA64_PCREL22,
47.34241 ++  BFD_RELOC_IA64_PCREL60B,
47.34242 ++  BFD_RELOC_IA64_PCREL64I,
47.34243 ++  BFD_RELOC_IA64_PCREL32MSB,
47.34244 ++  BFD_RELOC_IA64_PCREL32LSB,
47.34245 ++  BFD_RELOC_IA64_PCREL64MSB,
47.34246 ++  BFD_RELOC_IA64_PCREL64LSB,
47.34247 ++  BFD_RELOC_IA64_LTOFF_FPTR22,
47.34248 ++  BFD_RELOC_IA64_LTOFF_FPTR64I,
47.34249 ++  BFD_RELOC_IA64_LTOFF_FPTR32MSB,
47.34250 ++  BFD_RELOC_IA64_LTOFF_FPTR32LSB,
47.34251 ++  BFD_RELOC_IA64_LTOFF_FPTR64MSB,
47.34252 ++  BFD_RELOC_IA64_LTOFF_FPTR64LSB,
47.34253 ++  BFD_RELOC_IA64_SEGREL32MSB,
47.34254 ++  BFD_RELOC_IA64_SEGREL32LSB,
47.34255 ++  BFD_RELOC_IA64_SEGREL64MSB,
47.34256 ++  BFD_RELOC_IA64_SEGREL64LSB,
47.34257 ++  BFD_RELOC_IA64_SECREL32MSB,
47.34258 ++  BFD_RELOC_IA64_SECREL32LSB,
47.34259 ++  BFD_RELOC_IA64_SECREL64MSB,
47.34260 ++  BFD_RELOC_IA64_SECREL64LSB,
47.34261 ++  BFD_RELOC_IA64_REL32MSB,
47.34262 ++  BFD_RELOC_IA64_REL32LSB,
47.34263 ++  BFD_RELOC_IA64_REL64MSB,
47.34264 ++  BFD_RELOC_IA64_REL64LSB,
47.34265 ++  BFD_RELOC_IA64_LTV32MSB,
47.34266 ++  BFD_RELOC_IA64_LTV32LSB,
47.34267 ++  BFD_RELOC_IA64_LTV64MSB,
47.34268 ++  BFD_RELOC_IA64_LTV64LSB,
47.34269 ++  BFD_RELOC_IA64_IPLTMSB,
47.34270 ++  BFD_RELOC_IA64_IPLTLSB,
47.34271 ++  BFD_RELOC_IA64_COPY,
47.34272 ++  BFD_RELOC_IA64_LTOFF22X,
47.34273 ++  BFD_RELOC_IA64_LDXMOV,
47.34274 ++  BFD_RELOC_IA64_TPREL14,
47.34275 ++  BFD_RELOC_IA64_TPREL22,
47.34276 ++  BFD_RELOC_IA64_TPREL64I,
47.34277 ++  BFD_RELOC_IA64_TPREL64MSB,
47.34278 ++  BFD_RELOC_IA64_TPREL64LSB,
47.34279 ++  BFD_RELOC_IA64_LTOFF_TPREL22,
47.34280 ++  BFD_RELOC_IA64_DTPMOD64MSB,
47.34281 ++  BFD_RELOC_IA64_DTPMOD64LSB,
47.34282 ++  BFD_RELOC_IA64_LTOFF_DTPMOD22,
47.34283 ++  BFD_RELOC_IA64_DTPREL14,
47.34284 ++  BFD_RELOC_IA64_DTPREL22,
47.34285 ++  BFD_RELOC_IA64_DTPREL64I,
47.34286 ++  BFD_RELOC_IA64_DTPREL32MSB,
47.34287 ++  BFD_RELOC_IA64_DTPREL32LSB,
47.34288 ++  BFD_RELOC_IA64_DTPREL64MSB,
47.34289 ++  BFD_RELOC_IA64_DTPREL64LSB,
47.34290 ++  BFD_RELOC_IA64_LTOFF_DTPREL22,
47.34291 ++
47.34292 ++/* Motorola 68HC11 reloc.
47.34293 ++This is the 8 bit high part of an absolute address.  */
47.34294 ++  BFD_RELOC_M68HC11_HI8,
47.34295 ++
47.34296 ++/* Motorola 68HC11 reloc.
47.34297 ++This is the 8 bit low part of an absolute address.  */
47.34298 ++  BFD_RELOC_M68HC11_LO8,
47.34299 ++
47.34300 ++/* Motorola 68HC11 reloc.
47.34301 ++This is the 3 bit of a value.  */
47.34302 ++  BFD_RELOC_M68HC11_3B,
47.34303 ++
47.34304 ++/* Motorola 68HC11 reloc.
47.34305 ++This reloc marks the beginning of a jump/call instruction.
47.34306 ++It is used for linker relaxation to correctly identify beginning
47.34307 ++of instruction and change some branches to use PC-relative
47.34308 ++addressing mode.  */
47.34309 ++  BFD_RELOC_M68HC11_RL_JUMP,
47.34310 ++
47.34311 ++/* Motorola 68HC11 reloc.
47.34312 ++This reloc marks a group of several instructions that gcc generates
47.34313 ++and for which the linker relaxation pass can modify and/or remove
47.34314 ++some of them.  */
47.34315 ++  BFD_RELOC_M68HC11_RL_GROUP,
47.34316 ++
47.34317 ++/* Motorola 68HC11 reloc.
47.34318 ++This is the 16-bit lower part of an address.  It is used for 'call'
47.34319 ++instruction to specify the symbol address without any special
47.34320 ++transformation (due to memory bank window).  */
47.34321 ++  BFD_RELOC_M68HC11_LO16,
47.34322 ++
47.34323 ++/* Motorola 68HC11 reloc.
47.34324 ++This is a 8-bit reloc that specifies the page number of an address.
47.34325 ++It is used by 'call' instruction to specify the page number of
47.34326 ++the symbol.  */
47.34327 ++  BFD_RELOC_M68HC11_PAGE,
47.34328 ++
47.34329 ++/* Motorola 68HC11 reloc.
47.34330 ++This is a 24-bit reloc that represents the address with a 16-bit
47.34331 ++value and a 8-bit page number.  The symbol address is transformed
47.34332 ++to follow the 16K memory bank of 68HC12 (seen as mapped in the window).  */
47.34333 ++  BFD_RELOC_M68HC11_24,
47.34334 ++
47.34335 ++/* Motorola 68HC12 reloc.
47.34336 ++This is the 5 bits of a value.  */
47.34337 ++  BFD_RELOC_M68HC12_5B,
47.34338 ++
47.34339 ++/* NS CR16C Relocations.  */
47.34340 ++  BFD_RELOC_16C_NUM08,
47.34341 ++  BFD_RELOC_16C_NUM08_C,
47.34342 ++  BFD_RELOC_16C_NUM16,
47.34343 ++  BFD_RELOC_16C_NUM16_C,
47.34344 ++  BFD_RELOC_16C_NUM32,
47.34345 ++  BFD_RELOC_16C_NUM32_C,
47.34346 ++  BFD_RELOC_16C_DISP04,
47.34347 ++  BFD_RELOC_16C_DISP04_C,
47.34348 ++  BFD_RELOC_16C_DISP08,
47.34349 ++  BFD_RELOC_16C_DISP08_C,
47.34350 ++  BFD_RELOC_16C_DISP16,
47.34351 ++  BFD_RELOC_16C_DISP16_C,
47.34352 ++  BFD_RELOC_16C_DISP24,
47.34353 ++  BFD_RELOC_16C_DISP24_C,
47.34354 ++  BFD_RELOC_16C_DISP24a,
47.34355 ++  BFD_RELOC_16C_DISP24a_C,
47.34356 ++  BFD_RELOC_16C_REG04,
47.34357 ++  BFD_RELOC_16C_REG04_C,
47.34358 ++  BFD_RELOC_16C_REG04a,
47.34359 ++  BFD_RELOC_16C_REG04a_C,
47.34360 ++  BFD_RELOC_16C_REG14,
47.34361 ++  BFD_RELOC_16C_REG14_C,
47.34362 ++  BFD_RELOC_16C_REG16,
47.34363 ++  BFD_RELOC_16C_REG16_C,
47.34364 ++  BFD_RELOC_16C_REG20,
47.34365 ++  BFD_RELOC_16C_REG20_C,
47.34366 ++  BFD_RELOC_16C_ABS20,
47.34367 ++  BFD_RELOC_16C_ABS20_C,
47.34368 ++  BFD_RELOC_16C_ABS24,
47.34369 ++  BFD_RELOC_16C_ABS24_C,
47.34370 ++  BFD_RELOC_16C_IMM04,
47.34371 ++  BFD_RELOC_16C_IMM04_C,
47.34372 ++  BFD_RELOC_16C_IMM16,
47.34373 ++  BFD_RELOC_16C_IMM16_C,
47.34374 ++  BFD_RELOC_16C_IMM20,
47.34375 ++  BFD_RELOC_16C_IMM20_C,
47.34376 ++  BFD_RELOC_16C_IMM24,
47.34377 ++  BFD_RELOC_16C_IMM24_C,
47.34378 ++  BFD_RELOC_16C_IMM32,
47.34379 ++  BFD_RELOC_16C_IMM32_C,
47.34380 ++
47.34381 ++/* NS CR16 Relocations.  */
47.34382 ++  BFD_RELOC_CR16_NUM8,
47.34383 ++  BFD_RELOC_CR16_NUM16,
47.34384 ++  BFD_RELOC_CR16_NUM32,
47.34385 ++  BFD_RELOC_CR16_NUM32a,
47.34386 ++  BFD_RELOC_CR16_REGREL0,
47.34387 ++  BFD_RELOC_CR16_REGREL4,
47.34388 ++  BFD_RELOC_CR16_REGREL4a,
47.34389 ++  BFD_RELOC_CR16_REGREL14,
47.34390 ++  BFD_RELOC_CR16_REGREL14a,
47.34391 ++  BFD_RELOC_CR16_REGREL16,
47.34392 ++  BFD_RELOC_CR16_REGREL20,
47.34393 ++  BFD_RELOC_CR16_REGREL20a,
47.34394 ++  BFD_RELOC_CR16_ABS20,
47.34395 ++  BFD_RELOC_CR16_ABS24,
47.34396 ++  BFD_RELOC_CR16_IMM4,
47.34397 ++  BFD_RELOC_CR16_IMM8,
47.34398 ++  BFD_RELOC_CR16_IMM16,
47.34399 ++  BFD_RELOC_CR16_IMM20,
47.34400 ++  BFD_RELOC_CR16_IMM24,
47.34401 ++  BFD_RELOC_CR16_IMM32,
47.34402 ++  BFD_RELOC_CR16_IMM32a,
47.34403 ++  BFD_RELOC_CR16_DISP4,
47.34404 ++  BFD_RELOC_CR16_DISP8,
47.34405 ++  BFD_RELOC_CR16_DISP16,
47.34406 ++  BFD_RELOC_CR16_DISP20,
47.34407 ++  BFD_RELOC_CR16_DISP24,
47.34408 ++  BFD_RELOC_CR16_DISP24a,
47.34409 ++
47.34410 ++/* NS CRX Relocations.  */
47.34411 ++  BFD_RELOC_CRX_REL4,
47.34412 ++  BFD_RELOC_CRX_REL8,
47.34413 ++  BFD_RELOC_CRX_REL8_CMP,
47.34414 ++  BFD_RELOC_CRX_REL16,
47.34415 ++  BFD_RELOC_CRX_REL24,
47.34416 ++  BFD_RELOC_CRX_REL32,
47.34417 ++  BFD_RELOC_CRX_REGREL12,
47.34418 ++  BFD_RELOC_CRX_REGREL22,
47.34419 ++  BFD_RELOC_CRX_REGREL28,
47.34420 ++  BFD_RELOC_CRX_REGREL32,
47.34421 ++  BFD_RELOC_CRX_ABS16,
47.34422 ++  BFD_RELOC_CRX_ABS32,
47.34423 ++  BFD_RELOC_CRX_NUM8,
47.34424 ++  BFD_RELOC_CRX_NUM16,
47.34425 ++  BFD_RELOC_CRX_NUM32,
47.34426 ++  BFD_RELOC_CRX_IMM16,
47.34427 ++  BFD_RELOC_CRX_IMM32,
47.34428 ++  BFD_RELOC_CRX_SWITCH8,
47.34429 ++  BFD_RELOC_CRX_SWITCH16,
47.34430 ++  BFD_RELOC_CRX_SWITCH32,
47.34431 ++
47.34432 ++/* These relocs are only used within the CRIS assembler.  They are not
47.34433 ++(at present) written to any object files.  */
47.34434 ++  BFD_RELOC_CRIS_BDISP8,
47.34435 ++  BFD_RELOC_CRIS_UNSIGNED_5,
47.34436 ++  BFD_RELOC_CRIS_SIGNED_6,
47.34437 ++  BFD_RELOC_CRIS_UNSIGNED_6,
47.34438 ++  BFD_RELOC_CRIS_SIGNED_8,
47.34439 ++  BFD_RELOC_CRIS_UNSIGNED_8,
47.34440 ++  BFD_RELOC_CRIS_SIGNED_16,
47.34441 ++  BFD_RELOC_CRIS_UNSIGNED_16,
47.34442 ++  BFD_RELOC_CRIS_LAPCQ_OFFSET,
47.34443 ++  BFD_RELOC_CRIS_UNSIGNED_4,
47.34444 ++
47.34445 ++/* Relocs used in ELF shared libraries for CRIS.  */
47.34446 ++  BFD_RELOC_CRIS_COPY,
47.34447 ++  BFD_RELOC_CRIS_GLOB_DAT,
47.34448 ++  BFD_RELOC_CRIS_JUMP_SLOT,
47.34449 ++  BFD_RELOC_CRIS_RELATIVE,
47.34450 ++
47.34451 ++/* 32-bit offset to symbol-entry within GOT.  */
47.34452 ++  BFD_RELOC_CRIS_32_GOT,
47.34453 ++
47.34454 ++/* 16-bit offset to symbol-entry within GOT.  */
47.34455 ++  BFD_RELOC_CRIS_16_GOT,
47.34456 ++
47.34457 ++/* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
47.34458 ++  BFD_RELOC_CRIS_32_GOTPLT,
47.34459 ++
47.34460 ++/* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
47.34461 ++  BFD_RELOC_CRIS_16_GOTPLT,
47.34462 ++
47.34463 ++/* 32-bit offset to symbol, relative to GOT.  */
47.34464 ++  BFD_RELOC_CRIS_32_GOTREL,
47.34465 ++
47.34466 ++/* 32-bit offset to symbol with PLT entry, relative to GOT.  */
47.34467 ++  BFD_RELOC_CRIS_32_PLT_GOTREL,
47.34468 ++
47.34469 ++/* 32-bit offset to symbol with PLT entry, relative to this relocation.  */
47.34470 ++  BFD_RELOC_CRIS_32_PLT_PCREL,
47.34471 ++
47.34472 ++/* Intel i860 Relocations.  */
47.34473 ++  BFD_RELOC_860_COPY,
47.34474 ++  BFD_RELOC_860_GLOB_DAT,
47.34475 ++  BFD_RELOC_860_JUMP_SLOT,
47.34476 ++  BFD_RELOC_860_RELATIVE,
47.34477 ++  BFD_RELOC_860_PC26,
47.34478 ++  BFD_RELOC_860_PLT26,
47.34479 ++  BFD_RELOC_860_PC16,
47.34480 ++  BFD_RELOC_860_LOW0,
47.34481 ++  BFD_RELOC_860_SPLIT0,
47.34482 ++  BFD_RELOC_860_LOW1,
47.34483 ++  BFD_RELOC_860_SPLIT1,
47.34484 ++  BFD_RELOC_860_LOW2,
47.34485 ++  BFD_RELOC_860_SPLIT2,
47.34486 ++  BFD_RELOC_860_LOW3,
47.34487 ++  BFD_RELOC_860_LOGOT0,
47.34488 ++  BFD_RELOC_860_SPGOT0,
47.34489 ++  BFD_RELOC_860_LOGOT1,
47.34490 ++  BFD_RELOC_860_SPGOT1,
47.34491 ++  BFD_RELOC_860_LOGOTOFF0,
47.34492 ++  BFD_RELOC_860_SPGOTOFF0,
47.34493 ++  BFD_RELOC_860_LOGOTOFF1,
47.34494 ++  BFD_RELOC_860_SPGOTOFF1,
47.34495 ++  BFD_RELOC_860_LOGOTOFF2,
47.34496 ++  BFD_RELOC_860_LOGOTOFF3,
47.34497 ++  BFD_RELOC_860_LOPC,
47.34498 ++  BFD_RELOC_860_HIGHADJ,
47.34499 ++  BFD_RELOC_860_HAGOT,
47.34500 ++  BFD_RELOC_860_HAGOTOFF,
47.34501 ++  BFD_RELOC_860_HAPC,
47.34502 ++  BFD_RELOC_860_HIGH,
47.34503 ++  BFD_RELOC_860_HIGOT,
47.34504 ++  BFD_RELOC_860_HIGOTOFF,
47.34505 ++
47.34506 ++/* OpenRISC Relocations.  */
47.34507 ++  BFD_RELOC_OPENRISC_ABS_26,
47.34508 ++  BFD_RELOC_OPENRISC_REL_26,
47.34509 ++
47.34510 ++/* H8 elf Relocations.  */
47.34511 ++  BFD_RELOC_H8_DIR16A8,
47.34512 ++  BFD_RELOC_H8_DIR16R8,
47.34513 ++  BFD_RELOC_H8_DIR24A8,
47.34514 ++  BFD_RELOC_H8_DIR24R8,
47.34515 ++  BFD_RELOC_H8_DIR32A16,
47.34516 ++
47.34517 ++/* Sony Xstormy16 Relocations.  */
47.34518 ++  BFD_RELOC_XSTORMY16_REL_12,
47.34519 ++  BFD_RELOC_XSTORMY16_12,
47.34520 ++  BFD_RELOC_XSTORMY16_24,
47.34521 ++  BFD_RELOC_XSTORMY16_FPTR16,
47.34522 ++
47.34523 ++/* Self-describing complex relocations.  */
47.34524 ++  BFD_RELOC_RELC,
47.34525 ++
47.34526 ++
47.34527 ++/* Infineon Relocations.  */
47.34528 ++  BFD_RELOC_XC16X_PAG,
47.34529 ++  BFD_RELOC_XC16X_POF,
47.34530 ++  BFD_RELOC_XC16X_SEG,
47.34531 ++  BFD_RELOC_XC16X_SOF,
47.34532 ++
47.34533 ++/* Relocations used by VAX ELF.  */
47.34534 ++  BFD_RELOC_VAX_GLOB_DAT,
47.34535 ++  BFD_RELOC_VAX_JMP_SLOT,
47.34536 ++  BFD_RELOC_VAX_RELATIVE,
47.34537 ++
47.34538 ++/* Morpho MT - 16 bit immediate relocation.  */
47.34539 ++  BFD_RELOC_MT_PC16,
47.34540 ++
47.34541 ++/* Morpho MT - Hi 16 bits of an address.  */
47.34542 ++  BFD_RELOC_MT_HI16,
47.34543 ++
47.34544 ++/* Morpho MT - Low 16 bits of an address.  */
47.34545 ++  BFD_RELOC_MT_LO16,
47.34546 ++
47.34547 ++/* Morpho MT - Used to tell the linker which vtable entries are used.  */
47.34548 ++  BFD_RELOC_MT_GNU_VTINHERIT,
47.34549 ++
47.34550 ++/* Morpho MT - Used to tell the linker which vtable entries are used.  */
47.34551 ++  BFD_RELOC_MT_GNU_VTENTRY,
47.34552 ++
47.34553 ++/* Morpho MT - 8 bit immediate relocation.  */
47.34554 ++  BFD_RELOC_MT_PCINSN8,
47.34555 ++
47.34556 ++/* msp430 specific relocation codes  */
47.34557 ++  BFD_RELOC_MSP430_10_PCREL,
47.34558 ++  BFD_RELOC_MSP430_16_PCREL,
47.34559 ++  BFD_RELOC_MSP430_16,
47.34560 ++  BFD_RELOC_MSP430_16_PCREL_BYTE,
47.34561 ++  BFD_RELOC_MSP430_16_BYTE,
47.34562 ++  BFD_RELOC_MSP430_2X_PCREL,
47.34563 ++  BFD_RELOC_MSP430_RL_PCREL,
47.34564 ++
47.34565 ++/* IQ2000 Relocations.  */
47.34566 ++  BFD_RELOC_IQ2000_OFFSET_16,
47.34567 ++  BFD_RELOC_IQ2000_OFFSET_21,
47.34568 ++  BFD_RELOC_IQ2000_UHI16,
47.34569 ++
47.34570 ++/* Special Xtensa relocation used only by PLT entries in ELF shared
47.34571 ++objects to indicate that the runtime linker should set the value
47.34572 ++to one of its own internal functions or data structures.  */
47.34573 ++  BFD_RELOC_XTENSA_RTLD,
47.34574 ++
47.34575 ++/* Xtensa relocations for ELF shared objects.  */
47.34576 ++  BFD_RELOC_XTENSA_GLOB_DAT,
47.34577 ++  BFD_RELOC_XTENSA_JMP_SLOT,
47.34578 ++  BFD_RELOC_XTENSA_RELATIVE,
47.34579 ++
47.34580 ++/* Xtensa relocation used in ELF object files for symbols that may require
47.34581 ++PLT entries.  Otherwise, this is just a generic 32-bit relocation.  */
47.34582 ++  BFD_RELOC_XTENSA_PLT,
47.34583 ++
47.34584 ++/* Xtensa relocations to mark the difference of two local symbols.
47.34585 ++These are only needed to support linker relaxation and can be ignored
47.34586 ++when not relaxing.  The field is set to the value of the difference
47.34587 ++assuming no relaxation.  The relocation encodes the position of the
47.34588 ++first symbol so the linker can determine whether to adjust the field
47.34589 ++value.  */
47.34590 ++  BFD_RELOC_XTENSA_DIFF8,
47.34591 ++  BFD_RELOC_XTENSA_DIFF16,
47.34592 ++  BFD_RELOC_XTENSA_DIFF32,
47.34593 ++
47.34594 ++/* Generic Xtensa relocations for instruction operands.  Only the slot
47.34595 ++number is encoded in the relocation.  The relocation applies to the
47.34596 ++last PC-relative immediate operand, or if there are no PC-relative
47.34597 ++immediates, to the last immediate operand.  */
47.34598 ++  BFD_RELOC_XTENSA_SLOT0_OP,
47.34599 ++  BFD_RELOC_XTENSA_SLOT1_OP,
47.34600 ++  BFD_RELOC_XTENSA_SLOT2_OP,
47.34601 ++  BFD_RELOC_XTENSA_SLOT3_OP,
47.34602 ++  BFD_RELOC_XTENSA_SLOT4_OP,
47.34603 ++  BFD_RELOC_XTENSA_SLOT5_OP,
47.34604 ++  BFD_RELOC_XTENSA_SLOT6_OP,
47.34605 ++  BFD_RELOC_XTENSA_SLOT7_OP,
47.34606 ++  BFD_RELOC_XTENSA_SLOT8_OP,
47.34607 ++  BFD_RELOC_XTENSA_SLOT9_OP,
47.34608 ++  BFD_RELOC_XTENSA_SLOT10_OP,
47.34609 ++  BFD_RELOC_XTENSA_SLOT11_OP,
47.34610 ++  BFD_RELOC_XTENSA_SLOT12_OP,
47.34611 ++  BFD_RELOC_XTENSA_SLOT13_OP,
47.34612 ++  BFD_RELOC_XTENSA_SLOT14_OP,
47.34613 ++
47.34614 ++/* Alternate Xtensa relocations.  Only the slot is encoded in the
47.34615 ++relocation.  The meaning of these relocations is opcode-specific.  */
47.34616 ++  BFD_RELOC_XTENSA_SLOT0_ALT,
47.34617 ++  BFD_RELOC_XTENSA_SLOT1_ALT,
47.34618 ++  BFD_RELOC_XTENSA_SLOT2_ALT,
47.34619 ++  BFD_RELOC_XTENSA_SLOT3_ALT,
47.34620 ++  BFD_RELOC_XTENSA_SLOT4_ALT,
47.34621 ++  BFD_RELOC_XTENSA_SLOT5_ALT,
47.34622 ++  BFD_RELOC_XTENSA_SLOT6_ALT,
47.34623 ++  BFD_RELOC_XTENSA_SLOT7_ALT,
47.34624 ++  BFD_RELOC_XTENSA_SLOT8_ALT,
47.34625 ++  BFD_RELOC_XTENSA_SLOT9_ALT,
47.34626 ++  BFD_RELOC_XTENSA_SLOT10_ALT,
47.34627 ++  BFD_RELOC_XTENSA_SLOT11_ALT,
47.34628 ++  BFD_RELOC_XTENSA_SLOT12_ALT,
47.34629 ++  BFD_RELOC_XTENSA_SLOT13_ALT,
47.34630 ++  BFD_RELOC_XTENSA_SLOT14_ALT,
47.34631 ++
47.34632 ++/* Xtensa relocations for backward compatibility.  These have all been
47.34633 ++replaced by BFD_RELOC_XTENSA_SLOT0_OP.  */
47.34634 ++  BFD_RELOC_XTENSA_OP0,
47.34635 ++  BFD_RELOC_XTENSA_OP1,
47.34636 ++  BFD_RELOC_XTENSA_OP2,
47.34637 ++
47.34638 ++/* Xtensa relocation to mark that the assembler expanded the
47.34639 ++instructions from an original target.  The expansion size is
47.34640 ++encoded in the reloc size.  */
47.34641 ++  BFD_RELOC_XTENSA_ASM_EXPAND,
47.34642 ++
47.34643 ++/* Xtensa relocation to mark that the linker should simplify
47.34644 ++assembler-expanded instructions.  This is commonly used
47.34645 ++internally by the linker after analysis of a
47.34646 ++BFD_RELOC_XTENSA_ASM_EXPAND.  */
47.34647 ++  BFD_RELOC_XTENSA_ASM_SIMPLIFY,
47.34648 ++
47.34649 ++/* 8 bit signed offset in (ix+d) or (iy+d).  */
47.34650 ++  BFD_RELOC_Z80_DISP8,
47.34651 ++
47.34652 ++/* DJNZ offset.  */
47.34653 ++  BFD_RELOC_Z8K_DISP7,
47.34654 ++
47.34655 ++/* CALR offset.  */
47.34656 ++  BFD_RELOC_Z8K_CALLR,
47.34657 ++
47.34658 ++/* 4 bit value.  */
47.34659 ++  BFD_RELOC_Z8K_IMM4L,
47.34660 ++  BFD_RELOC_UNUSED };
47.34661 ++typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
47.34662 ++reloc_howto_type *bfd_reloc_type_lookup
47.34663 ++   (bfd *abfd, bfd_reloc_code_real_type code);
47.34664 ++reloc_howto_type *bfd_reloc_name_lookup
47.34665 ++   (bfd *abfd, const char *reloc_name);
47.34666 ++
47.34667 ++const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
47.34668 ++
47.34669 ++/* Extracted from syms.c.  */
47.34670 ++
47.34671 ++typedef struct bfd_symbol
47.34672 ++{
47.34673 ++  /* A pointer to the BFD which owns the symbol. This information
47.34674 ++     is necessary so that a back end can work out what additional
47.34675 ++     information (invisible to the application writer) is carried
47.34676 ++     with the symbol.
47.34677 ++
47.34678 ++     This field is *almost* redundant, since you can use section->owner
47.34679 ++     instead, except that some symbols point to the global sections
47.34680 ++     bfd_{abs,com,und}_section.  This could be fixed by making
47.34681 ++     these globals be per-bfd (or per-target-flavor).  FIXME.  */
47.34682 ++  struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */
47.34683 ++
47.34684 ++  /* The text of the symbol. The name is left alone, and not copied; the
47.34685 ++     application may not alter it.  */
47.34686 ++  const char *name;
47.34687 ++
47.34688 ++  /* The value of the symbol.  This really should be a union of a
47.34689 ++     numeric value with a pointer, since some flags indicate that
47.34690 ++     a pointer to another symbol is stored here.  */
47.34691 ++  symvalue value;
47.34692 ++
47.34693 ++  /* Attributes of a symbol.  */
47.34694 ++#define BSF_NO_FLAGS    0x00
47.34695 ++
47.34696 ++  /* The symbol has local scope; <<static>> in <<C>>. The value
47.34697 ++     is the offset into the section of the data.  */
47.34698 ++#define BSF_LOCAL      0x01
47.34699 ++
47.34700 ++  /* The symbol has global scope; initialized data in <<C>>. The
47.34701 ++     value is the offset into the section of the data.  */
47.34702 ++#define BSF_GLOBAL     0x02
47.34703 ++
47.34704 ++  /* The symbol has global scope and is exported. The value is
47.34705 ++     the offset into the section of the data.  */
47.34706 ++#define BSF_EXPORT     BSF_GLOBAL /* No real difference.  */
47.34707 ++
47.34708 ++  /* A normal C symbol would be one of:
47.34709 ++     <<BSF_LOCAL>>, <<BSF_FORT_COMM>>,  <<BSF_UNDEFINED>> or
47.34710 ++     <<BSF_GLOBAL>>.  */
47.34711 ++
47.34712 ++  /* The symbol is a debugging record. The value has an arbitrary
47.34713 ++     meaning, unless BSF_DEBUGGING_RELOC is also set.  */
47.34714 ++#define BSF_DEBUGGING  0x08
47.34715 ++
47.34716 ++  /* The symbol denotes a function entry point.  Used in ELF,
47.34717 ++     perhaps others someday.  */
47.34718 ++#define BSF_FUNCTION    0x10
47.34719 ++
47.34720 ++  /* Used by the linker.  */
47.34721 ++#define BSF_KEEP        0x20
47.34722 ++#define BSF_KEEP_G      0x40
47.34723 ++
47.34724 ++  /* A weak global symbol, overridable without warnings by
47.34725 ++     a regular global symbol of the same name.  */
47.34726 ++#define BSF_WEAK        0x80
47.34727 ++
47.34728 ++  /* This symbol was created to point to a section, e.g. ELF's
47.34729 ++     STT_SECTION symbols.  */
47.34730 ++#define BSF_SECTION_SYM 0x100
47.34731 ++
47.34732 ++  /* The symbol used to be a common symbol, but now it is
47.34733 ++     allocated.  */
47.34734 ++#define BSF_OLD_COMMON  0x200
47.34735 ++
47.34736 ++  /* The default value for common data.  */
47.34737 ++#define BFD_FORT_COMM_DEFAULT_VALUE 0
47.34738 ++
47.34739 ++  /* In some files the type of a symbol sometimes alters its
47.34740 ++     location in an output file - ie in coff a <<ISFCN>> symbol
47.34741 ++     which is also <<C_EXT>> symbol appears where it was
47.34742 ++     declared and not at the end of a section.  This bit is set
47.34743 ++     by the target BFD part to convey this information.  */
47.34744 ++#define BSF_NOT_AT_END    0x400
47.34745 ++
47.34746 ++  /* Signal that the symbol is the label of constructor section.  */
47.34747 ++#define BSF_CONSTRUCTOR   0x800
47.34748 ++
47.34749 ++  /* Signal that the symbol is a warning symbol.  The name is a
47.34750 ++     warning.  The name of the next symbol is the one to warn about;
47.34751 ++     if a reference is made to a symbol with the same name as the next
47.34752 ++     symbol, a warning is issued by the linker.  */
47.34753 ++#define BSF_WARNING       0x1000
47.34754 ++
47.34755 ++  /* Signal that the symbol is indirect.  This symbol is an indirect
47.34756 ++     pointer to the symbol with the same name as the next symbol.  */
47.34757 ++#define BSF_INDIRECT      0x2000
47.34758 ++
47.34759 ++  /* BSF_FILE marks symbols that contain a file name.  This is used
47.34760 ++     for ELF STT_FILE symbols.  */
47.34761 ++#define BSF_FILE          0x4000
47.34762 ++
47.34763 ++  /* Symbol is from dynamic linking information.  */
47.34764 ++#define BSF_DYNAMIC       0x8000
47.34765 ++
47.34766 ++  /* The symbol denotes a data object.  Used in ELF, and perhaps
47.34767 ++     others someday.  */
47.34768 ++#define BSF_OBJECT        0x10000
47.34769 ++
47.34770 ++  /* This symbol is a debugging symbol.  The value is the offset
47.34771 ++     into the section of the data.  BSF_DEBUGGING should be set
47.34772 ++     as well.  */
47.34773 ++#define BSF_DEBUGGING_RELOC 0x20000
47.34774 ++
47.34775 ++  /* This symbol is thread local.  Used in ELF.  */
47.34776 ++#define BSF_THREAD_LOCAL  0x40000
47.34777 ++
47.34778 ++  /* This symbol represents a complex relocation expression,
47.34779 ++     with the expression tree serialized in the symbol name.  */
47.34780 ++#define BSF_RELC 0x80000
47.34781 ++
47.34782 ++  /* This symbol represents a signed complex relocation expression,
47.34783 ++     with the expression tree serialized in the symbol name.  */
47.34784 ++#define BSF_SRELC 0x100000
47.34785 ++
47.34786 ++  flagword flags;
47.34787 ++
47.34788 ++  /* A pointer to the section to which this symbol is
47.34789 ++     relative.  This will always be non NULL, there are special
47.34790 ++     sections for undefined and absolute symbols.  */
47.34791 ++  struct bfd_section *section;
47.34792 ++
47.34793 ++  /* Back end special data.  */
47.34794 ++  union
47.34795 ++    {
47.34796 ++      void *p;
47.34797 ++      bfd_vma i;
47.34798 ++    }
47.34799 ++  udata;
47.34800 ++}
47.34801 ++asymbol;
47.34802 ++
47.34803 ++#define bfd_get_symtab_upper_bound(abfd) \
47.34804 ++     BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
47.34805 ++
47.34806 ++bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
47.34807 ++
47.34808 ++bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
47.34809 ++
47.34810 ++#define bfd_is_local_label_name(abfd, name) \
47.34811 ++  BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
47.34812 ++
47.34813 ++bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
47.34814 ++
47.34815 ++#define bfd_is_target_special_symbol(abfd, sym) \
47.34816 ++  BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
47.34817 ++
47.34818 ++#define bfd_canonicalize_symtab(abfd, location) \
47.34819 ++  BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
47.34820 ++
47.34821 ++bfd_boolean bfd_set_symtab
47.34822 ++   (bfd *abfd, asymbol **location, unsigned int count);
47.34823 ++
47.34824 ++void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
47.34825 ++
47.34826 ++#define bfd_make_empty_symbol(abfd) \
47.34827 ++  BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
47.34828 ++
47.34829 ++asymbol *_bfd_generic_make_empty_symbol (bfd *);
47.34830 ++
47.34831 ++#define bfd_make_debug_symbol(abfd,ptr,size) \
47.34832 ++  BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
47.34833 ++
47.34834 ++int bfd_decode_symclass (asymbol *symbol);
47.34835 ++
47.34836 ++bfd_boolean bfd_is_undefined_symclass (int symclass);
47.34837 ++
47.34838 ++void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
47.34839 ++
47.34840 ++bfd_boolean bfd_copy_private_symbol_data
47.34841 ++   (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
47.34842 ++
47.34843 ++#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
47.34844 ++  BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
47.34845 ++            (ibfd, isymbol, obfd, osymbol))
47.34846 ++
47.34847 ++/* Extracted from bfd.c.  */
47.34848 ++struct bfd
47.34849 ++{
47.34850 ++  /* A unique identifier of the BFD  */
47.34851 ++  unsigned int id;
47.34852 ++
47.34853 ++  /* The filename the application opened the BFD with.  */
47.34854 ++  const char *filename;
47.34855 ++
47.34856 ++  /* A pointer to the target jump table.  */
47.34857 ++  const struct bfd_target *xvec;
47.34858 ++
47.34859 ++  /* The IOSTREAM, and corresponding IO vector that provide access
47.34860 ++     to the file backing the BFD.  */
47.34861 ++  void *iostream;
47.34862 ++  const struct bfd_iovec *iovec;
47.34863 ++
47.34864 ++  /* Is the file descriptor being cached?  That is, can it be closed as
47.34865 ++     needed, and re-opened when accessed later?  */
47.34866 ++  bfd_boolean cacheable;
47.34867 ++
47.34868 ++  /* Marks whether there was a default target specified when the
47.34869 ++     BFD was opened. This is used to select which matching algorithm
47.34870 ++     to use to choose the back end.  */
47.34871 ++  bfd_boolean target_defaulted;
47.34872 ++
47.34873 ++  /* The caching routines use these to maintain a
47.34874 ++     least-recently-used list of BFDs.  */
47.34875 ++  struct bfd *lru_prev, *lru_next;
47.34876 ++
47.34877 ++  /* When a file is closed by the caching routines, BFD retains
47.34878 ++     state information on the file here...  */
47.34879 ++  ufile_ptr where;
47.34880 ++
47.34881 ++  /* ... and here: (``once'' means at least once).  */
47.34882 ++  bfd_boolean opened_once;
47.34883 ++
47.34884 ++  /* Set if we have a locally maintained mtime value, rather than
47.34885 ++     getting it from the file each time.  */
47.34886 ++  bfd_boolean mtime_set;
47.34887 ++
47.34888 ++  /* File modified time, if mtime_set is TRUE.  */
47.34889 ++  long mtime;
47.34890 ++
47.34891 ++  /* Reserved for an unimplemented file locking extension.  */
47.34892 ++  int ifd;
47.34893 ++
47.34894 ++  /* The format which belongs to the BFD. (object, core, etc.)  */
47.34895 ++  bfd_format format;
47.34896 ++
47.34897 ++  /* The direction with which the BFD was opened.  */
47.34898 ++  enum bfd_direction
47.34899 ++    {
47.34900 ++      no_direction = 0,
47.34901 ++      read_direction = 1,
47.34902 ++      write_direction = 2,
47.34903 ++      both_direction = 3
47.34904 ++    }
47.34905 ++  direction;
47.34906 ++
47.34907 ++  /* Format_specific flags.  */
47.34908 ++  flagword flags;
47.34909 ++
47.34910 ++  /* Currently my_archive is tested before adding origin to
47.34911 ++     anything. I believe that this can become always an add of
47.34912 ++     origin, with origin set to 0 for non archive files.  */
47.34913 ++  ufile_ptr origin;
47.34914 ++
47.34915 ++  /* Remember when output has begun, to stop strange things
47.34916 ++     from happening.  */
47.34917 ++  bfd_boolean output_has_begun;
47.34918 ++
47.34919 ++  /* A hash table for section names.  */
47.34920 ++  struct bfd_hash_table section_htab;
47.34921 ++
47.34922 ++  /* Pointer to linked list of sections.  */
47.34923 ++  struct bfd_section *sections;
47.34924 ++
47.34925 ++  /* The last section on the section list.  */
47.34926 ++  struct bfd_section *section_last;
47.34927 ++
47.34928 ++  /* The number of sections.  */
47.34929 ++  unsigned int section_count;
47.34930 ++
47.34931 ++  /* Stuff only useful for object files:
47.34932 ++     The start address.  */
47.34933 ++  bfd_vma start_address;
47.34934 ++
47.34935 ++  /* Used for input and output.  */
47.34936 ++  unsigned int symcount;
47.34937 ++
47.34938 ++  /* Symbol table for output BFD (with symcount entries).  */
47.34939 ++  struct bfd_symbol  **outsymbols;
47.34940 ++
47.34941 ++  /* Used for slurped dynamic symbol tables.  */
47.34942 ++  unsigned int dynsymcount;
47.34943 ++
47.34944 ++  /* Pointer to structure which contains architecture information.  */
47.34945 ++  const struct bfd_arch_info *arch_info;
47.34946 ++
47.34947 ++  /* Flag set if symbols from this BFD should not be exported.  */
47.34948 ++  bfd_boolean no_export;
47.34949 ++
47.34950 ++  /* Stuff only useful for archives.  */
47.34951 ++  void *arelt_data;
47.34952 ++  struct bfd *my_archive;      /* The containing archive BFD.  */
47.34953 ++  struct bfd *archive_next;    /* The next BFD in the archive.  */
47.34954 ++  struct bfd *archive_head;    /* The first BFD in the archive.  */
47.34955 ++  bfd_boolean has_armap;
47.34956 ++
47.34957 ++  /* A chain of BFD structures involved in a link.  */
47.34958 ++  struct bfd *link_next;
47.34959 ++
47.34960 ++  /* A field used by _bfd_generic_link_add_archive_symbols.  This will
47.34961 ++     be used only for archive elements.  */
47.34962 ++  int archive_pass;
47.34963 ++
47.34964 ++  /* Used by the back end to hold private data.  */
47.34965 ++  union
47.34966 ++    {
47.34967 ++      struct aout_data_struct *aout_data;
47.34968 ++      struct artdata *aout_ar_data;
47.34969 ++      struct _oasys_data *oasys_obj_data;
47.34970 ++      struct _oasys_ar_data *oasys_ar_data;
47.34971 ++      struct coff_tdata *coff_obj_data;
47.34972 ++      struct pe_tdata *pe_obj_data;
47.34973 ++      struct xcoff_tdata *xcoff_obj_data;
47.34974 ++      struct ecoff_tdata *ecoff_obj_data;
47.34975 ++      struct ieee_data_struct *ieee_data;
47.34976 ++      struct ieee_ar_data_struct *ieee_ar_data;
47.34977 ++      struct srec_data_struct *srec_data;
47.34978 ++      struct ihex_data_struct *ihex_data;
47.34979 ++      struct tekhex_data_struct *tekhex_data;
47.34980 ++      struct elf_obj_tdata *elf_obj_data;
47.34981 ++      struct nlm_obj_tdata *nlm_obj_data;
47.34982 ++      struct bout_data_struct *bout_data;
47.34983 ++      struct mmo_data_struct *mmo_data;
47.34984 ++      struct sun_core_struct *sun_core_data;
47.34985 ++      struct sco5_core_struct *sco5_core_data;
47.34986 ++      struct trad_core_struct *trad_core_data;
47.34987 ++      struct som_data_struct *som_data;
47.34988 ++      struct hpux_core_struct *hpux_core_data;
47.34989 ++      struct hppabsd_core_struct *hppabsd_core_data;
47.34990 ++      struct sgi_core_struct *sgi_core_data;
47.34991 ++      struct lynx_core_struct *lynx_core_data;
47.34992 ++      struct osf_core_struct *osf_core_data;
47.34993 ++      struct cisco_core_struct *cisco_core_data;
47.34994 ++      struct versados_data_struct *versados_data;
47.34995 ++      struct netbsd_core_struct *netbsd_core_data;
47.34996 ++      struct mach_o_data_struct *mach_o_data;
47.34997 ++      struct mach_o_fat_data_struct *mach_o_fat_data;
47.34998 ++      struct bfd_pef_data_struct *pef_data;
47.34999 ++      struct bfd_pef_xlib_data_struct *pef_xlib_data;
47.35000 ++      struct bfd_sym_data_struct *sym_data;
47.35001 ++      void *any;
47.35002 ++    }
47.35003 ++  tdata;
47.35004 ++
47.35005 ++  /* Used by the application to hold private data.  */
47.35006 ++  void *usrdata;
47.35007 ++
47.35008 ++  /* Where all the allocated stuff under this BFD goes.  This is a
47.35009 ++     struct objalloc *, but we use void * to avoid requiring the inclusion
47.35010 ++     of objalloc.h.  */
47.35011 ++  void *memory;
47.35012 ++};
47.35013 ++
47.35014 ++typedef enum bfd_error
47.35015 ++{
47.35016 ++  bfd_error_no_error = 0,
47.35017 ++  bfd_error_system_call,
47.35018 ++  bfd_error_invalid_target,
47.35019 ++  bfd_error_wrong_format,
47.35020 ++  bfd_error_wrong_object_format,
47.35021 ++  bfd_error_invalid_operation,
47.35022 ++  bfd_error_no_memory,
47.35023 ++  bfd_error_no_symbols,
47.35024 ++  bfd_error_no_armap,
47.35025 ++  bfd_error_no_more_archived_files,
47.35026 ++  bfd_error_malformed_archive,
47.35027 ++  bfd_error_file_not_recognized,
47.35028 ++  bfd_error_file_ambiguously_recognized,
47.35029 ++  bfd_error_no_contents,
47.35030 ++  bfd_error_nonrepresentable_section,
47.35031 ++  bfd_error_no_debug_section,
47.35032 ++  bfd_error_bad_value,
47.35033 ++  bfd_error_file_truncated,
47.35034 ++  bfd_error_file_too_big,
47.35035 ++  bfd_error_on_input,
47.35036 ++  bfd_error_invalid_error_code
47.35037 ++}
47.35038 ++bfd_error_type;
47.35039 ++
47.35040 ++bfd_error_type bfd_get_error (void);
47.35041 ++
47.35042 ++void bfd_set_error (bfd_error_type error_tag, ...);
47.35043 ++
47.35044 ++const char *bfd_errmsg (bfd_error_type error_tag);
47.35045 ++
47.35046 ++void bfd_perror (const char *message);
47.35047 ++
47.35048 ++typedef void (*bfd_error_handler_type) (const char *, ...);
47.35049 ++
47.35050 ++bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
47.35051 ++
47.35052 ++void bfd_set_error_program_name (const char *);
47.35053 ++
47.35054 ++bfd_error_handler_type bfd_get_error_handler (void);
47.35055 ++
47.35056 ++long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
47.35057 ++
47.35058 ++long bfd_canonicalize_reloc
47.35059 ++   (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
47.35060 ++
47.35061 ++void bfd_set_reloc
47.35062 ++   (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
47.35063 ++
47.35064 ++bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
47.35065 ++
47.35066 ++int bfd_get_arch_size (bfd *abfd);
47.35067 ++
47.35068 ++int bfd_get_sign_extend_vma (bfd *abfd);
47.35069 ++
47.35070 ++bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
47.35071 ++
47.35072 ++unsigned int bfd_get_gp_size (bfd *abfd);
47.35073 ++
47.35074 ++void bfd_set_gp_size (bfd *abfd, unsigned int i);
47.35075 ++
47.35076 ++bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
47.35077 ++
47.35078 ++bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
47.35079 ++
47.35080 ++#define bfd_copy_private_header_data(ibfd, obfd) \
47.35081 ++     BFD_SEND (obfd, _bfd_copy_private_header_data, \
47.35082 ++               (ibfd, obfd))
47.35083 ++bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
47.35084 ++
47.35085 ++#define bfd_copy_private_bfd_data(ibfd, obfd) \
47.35086 ++     BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
47.35087 ++               (ibfd, obfd))
47.35088 ++bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
47.35089 ++
47.35090 ++#define bfd_merge_private_bfd_data(ibfd, obfd) \
47.35091 ++     BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
47.35092 ++               (ibfd, obfd))
47.35093 ++bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
47.35094 ++
47.35095 ++#define bfd_set_private_flags(abfd, flags) \
47.35096 ++     BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
47.35097 ++#define bfd_sizeof_headers(abfd, info) \
47.35098 ++       BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
47.35099 ++
47.35100 ++#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
47.35101 ++       BFD_SEND (abfd, _bfd_find_nearest_line, \
47.35102 ++                 (abfd, sec, syms, off, file, func, line))
47.35103 ++
47.35104 ++#define bfd_find_line(abfd, syms, sym, file, line) \
47.35105 ++       BFD_SEND (abfd, _bfd_find_line, \
47.35106 ++                 (abfd, syms, sym, file, line))
47.35107 ++
47.35108 ++#define bfd_find_inliner_info(abfd, file, func, line) \
47.35109 ++       BFD_SEND (abfd, _bfd_find_inliner_info, \
47.35110 ++                 (abfd, file, func, line))
47.35111 ++
47.35112 ++#define bfd_debug_info_start(abfd) \
47.35113 ++       BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
47.35114 ++
47.35115 ++#define bfd_debug_info_end(abfd) \
47.35116 ++       BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
47.35117 ++
47.35118 ++#define bfd_debug_info_accumulate(abfd, section) \
47.35119 ++       BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
47.35120 ++
47.35121 ++#define bfd_stat_arch_elt(abfd, stat) \
47.35122 ++       BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
47.35123 ++
47.35124 ++#define bfd_update_armap_timestamp(abfd) \
47.35125 ++       BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
47.35126 ++
47.35127 ++#define bfd_set_arch_mach(abfd, arch, mach)\
47.35128 ++       BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
47.35129 ++
47.35130 ++#define bfd_relax_section(abfd, section, link_info, again) \
47.35131 ++       BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
47.35132 ++
47.35133 ++#define bfd_gc_sections(abfd, link_info) \
47.35134 ++       BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
47.35135 ++
47.35136 ++#define bfd_merge_sections(abfd, link_info) \
47.35137 ++       BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
47.35138 ++
47.35139 ++#define bfd_is_group_section(abfd, sec) \
47.35140 ++       BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
47.35141 ++
47.35142 ++#define bfd_discard_group(abfd, sec) \
47.35143 ++       BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
47.35144 ++
47.35145 ++#define bfd_link_hash_table_create(abfd) \
47.35146 ++       BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
47.35147 ++
47.35148 ++#define bfd_link_hash_table_free(abfd, hash) \
47.35149 ++       BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
47.35150 ++
47.35151 ++#define bfd_link_add_symbols(abfd, info) \
47.35152 ++       BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
47.35153 ++
47.35154 ++#define bfd_link_just_syms(abfd, sec, info) \
47.35155 ++       BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
47.35156 ++
47.35157 ++#define bfd_final_link(abfd, info) \
47.35158 ++       BFD_SEND (abfd, _bfd_final_link, (abfd, info))
47.35159 ++
47.35160 ++#define bfd_free_cached_info(abfd) \
47.35161 ++       BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
47.35162 ++
47.35163 ++#define bfd_get_dynamic_symtab_upper_bound(abfd) \
47.35164 ++       BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
47.35165 ++
47.35166 ++#define bfd_print_private_bfd_data(abfd, file)\
47.35167 ++       BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
47.35168 ++
47.35169 ++#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
47.35170 ++       BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
47.35171 ++
47.35172 ++#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
47.35173 ++       BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
47.35174 ++                                                   dyncount, dynsyms, ret))
47.35175 ++
47.35176 ++#define bfd_get_dynamic_reloc_upper_bound(abfd) \
47.35177 ++       BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
47.35178 ++
47.35179 ++#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
47.35180 ++       BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
47.35181 ++
47.35182 ++extern bfd_byte *bfd_get_relocated_section_contents
47.35183 ++  (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
47.35184 ++   bfd_boolean, asymbol **);
47.35185 ++
47.35186 ++bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
47.35187 ++
47.35188 ++struct bfd_preserve
47.35189 ++{
47.35190 ++  void *marker;
47.35191 ++  void *tdata;
47.35192 ++  flagword flags;
47.35193 ++  const struct bfd_arch_info *arch_info;
47.35194 ++  struct bfd_section *sections;
47.35195 ++  struct bfd_section *section_last;
47.35196 ++  unsigned int section_count;
47.35197 ++  struct bfd_hash_table section_htab;
47.35198 ++};
47.35199 ++
47.35200 ++bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
47.35201 ++
47.35202 ++void bfd_preserve_restore (bfd *, struct bfd_preserve *);
47.35203 ++
47.35204 ++void bfd_preserve_finish (bfd *, struct bfd_preserve *);
47.35205 ++
47.35206 ++bfd_vma bfd_emul_get_maxpagesize (const char *);
47.35207 ++
47.35208 ++void bfd_emul_set_maxpagesize (const char *, bfd_vma);
47.35209 ++
47.35210 ++bfd_vma bfd_emul_get_commonpagesize (const char *);
47.35211 ++
47.35212 ++void bfd_emul_set_commonpagesize (const char *, bfd_vma);
47.35213 ++
47.35214 ++char *bfd_demangle (bfd *, const char *, int);
47.35215 ++
47.35216 ++/* Extracted from archive.c.  */
47.35217 ++symindex bfd_get_next_mapent
47.35218 ++   (bfd *abfd, symindex previous, carsym **sym);
47.35219 ++
47.35220 ++bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
47.35221 ++
47.35222 ++bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
47.35223 ++
47.35224 ++/* Extracted from corefile.c.  */
47.35225 ++const char *bfd_core_file_failing_command (bfd *abfd);
47.35226 ++
47.35227 ++int bfd_core_file_failing_signal (bfd *abfd);
47.35228 ++
47.35229 ++bfd_boolean core_file_matches_executable_p
47.35230 ++   (bfd *core_bfd, bfd *exec_bfd);
47.35231 ++
47.35232 ++bfd_boolean generic_core_file_matches_executable_p
47.35233 ++   (bfd *core_bfd, bfd *exec_bfd);
47.35234 ++
47.35235 ++/* Extracted from targets.c.  */
47.35236 ++#define BFD_SEND(bfd, message, arglist) \
47.35237 ++  ((*((bfd)->xvec->message)) arglist)
47.35238 ++
47.35239 ++#ifdef DEBUG_BFD_SEND
47.35240 ++#undef BFD_SEND
47.35241 ++#define BFD_SEND(bfd, message, arglist) \
47.35242 ++  (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
47.35243 ++    ((*((bfd)->xvec->message)) arglist) : \
47.35244 ++    (bfd_assert (__FILE__,__LINE__), NULL))
47.35245 ++#endif
47.35246 ++#define BFD_SEND_FMT(bfd, message, arglist) \
47.35247 ++  (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
47.35248 ++
47.35249 ++#ifdef DEBUG_BFD_SEND
47.35250 ++#undef BFD_SEND_FMT
47.35251 ++#define BFD_SEND_FMT(bfd, message, arglist) \
47.35252 ++  (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
47.35253 ++   (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
47.35254 ++   (bfd_assert (__FILE__,__LINE__), NULL))
47.35255 ++#endif
47.35256 ++
47.35257 ++enum bfd_flavour
47.35258 ++{
47.35259 ++  bfd_target_unknown_flavour,
47.35260 ++  bfd_target_aout_flavour,
47.35261 ++  bfd_target_coff_flavour,
47.35262 ++  bfd_target_ecoff_flavour,
47.35263 ++  bfd_target_xcoff_flavour,
47.35264 ++  bfd_target_elf_flavour,
47.35265 ++  bfd_target_ieee_flavour,
47.35266 ++  bfd_target_nlm_flavour,
47.35267 ++  bfd_target_oasys_flavour,
47.35268 ++  bfd_target_tekhex_flavour,
47.35269 ++  bfd_target_srec_flavour,
47.35270 ++  bfd_target_ihex_flavour,
47.35271 ++  bfd_target_som_flavour,
47.35272 ++  bfd_target_os9k_flavour,
47.35273 ++  bfd_target_versados_flavour,
47.35274 ++  bfd_target_msdos_flavour,
47.35275 ++  bfd_target_ovax_flavour,
47.35276 ++  bfd_target_evax_flavour,
47.35277 ++  bfd_target_mmo_flavour,
47.35278 ++  bfd_target_mach_o_flavour,
47.35279 ++  bfd_target_pef_flavour,
47.35280 ++  bfd_target_pef_xlib_flavour,
47.35281 ++  bfd_target_sym_flavour
47.35282 ++};
47.35283 ++
47.35284 ++enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
47.35285 ++
47.35286 ++/* Forward declaration.  */
47.35287 ++typedef struct bfd_link_info _bfd_link_info;
47.35288 ++
47.35289 ++typedef struct bfd_target
47.35290 ++{
47.35291 ++  /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
47.35292 ++  char *name;
47.35293 ++
47.35294 ++ /* The "flavour" of a back end is a general indication about
47.35295 ++    the contents of a file.  */
47.35296 ++  enum bfd_flavour flavour;
47.35297 ++
47.35298 ++  /* The order of bytes within the data area of a file.  */
47.35299 ++  enum bfd_endian byteorder;
47.35300 ++
47.35301 ++ /* The order of bytes within the header parts of a file.  */
47.35302 ++  enum bfd_endian header_byteorder;
47.35303 ++
47.35304 ++  /* A mask of all the flags which an executable may have set -
47.35305 ++     from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>.  */
47.35306 ++  flagword object_flags;
47.35307 ++
47.35308 ++ /* A mask of all the flags which a section may have set - from
47.35309 ++    the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>.  */
47.35310 ++  flagword section_flags;
47.35311 ++
47.35312 ++ /* The character normally found at the front of a symbol.
47.35313 ++    (if any), perhaps `_'.  */
47.35314 ++  char symbol_leading_char;
47.35315 ++
47.35316 ++ /* The pad character for file names within an archive header.  */
47.35317 ++  char ar_pad_char;
47.35318 ++
47.35319 ++  /* The maximum number of characters in an archive header.  */
47.35320 ++  unsigned short ar_max_namelen;
47.35321 ++
47.35322 ++  /* Entries for byte swapping for data. These are different from the
47.35323 ++     other entry points, since they don't take a BFD as the first argument.
47.35324 ++     Certain other handlers could do the same.  */
47.35325 ++  bfd_uint64_t   (*bfd_getx64) (const void *);
47.35326 ++  bfd_int64_t    (*bfd_getx_signed_64) (const void *);
47.35327 ++  void           (*bfd_putx64) (bfd_uint64_t, void *);
47.35328 ++  bfd_vma        (*bfd_getx32) (const void *);
47.35329 ++  bfd_signed_vma (*bfd_getx_signed_32) (const void *);
47.35330 ++  void           (*bfd_putx32) (bfd_vma, void *);
47.35331 ++  bfd_vma        (*bfd_getx16) (const void *);
47.35332 ++  bfd_signed_vma (*bfd_getx_signed_16) (const void *);
47.35333 ++  void           (*bfd_putx16) (bfd_vma, void *);
47.35334 ++
47.35335 ++  /* Byte swapping for the headers.  */
47.35336 ++  bfd_uint64_t   (*bfd_h_getx64) (const void *);
47.35337 ++  bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
47.35338 ++  void           (*bfd_h_putx64) (bfd_uint64_t, void *);
47.35339 ++  bfd_vma        (*bfd_h_getx32) (const void *);
47.35340 ++  bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
47.35341 ++  void           (*bfd_h_putx32) (bfd_vma, void *);
47.35342 ++  bfd_vma        (*bfd_h_getx16) (const void *);
47.35343 ++  bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
47.35344 ++  void           (*bfd_h_putx16) (bfd_vma, void *);
47.35345 ++
47.35346 ++  /* Format dependent routines: these are vectors of entry points
47.35347 ++     within the target vector structure, one for each format to check.  */
47.35348 ++
47.35349 ++  /* Check the format of a file being read.  Return a <<bfd_target *>> or zero.  */
47.35350 ++  const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
47.35351 ++
47.35352 ++  /* Set the format of a file being written.  */
47.35353 ++  bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
47.35354 ++
47.35355 ++  /* Write cached information into a file being written, at <<bfd_close>>.  */
47.35356 ++  bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
47.35357 ++
47.35358 ++
47.35359 ++  /* Generic entry points.  */
47.35360 ++#define BFD_JUMP_TABLE_GENERIC(NAME) \
47.35361 ++  NAME##_close_and_cleanup, \
47.35362 ++  NAME##_bfd_free_cached_info, \
47.35363 ++  NAME##_new_section_hook, \
47.35364 ++  NAME##_get_section_contents, \
47.35365 ++  NAME##_get_section_contents_in_window
47.35366 ++
47.35367 ++  /* Called when the BFD is being closed to do any necessary cleanup.  */
47.35368 ++  bfd_boolean (*_close_and_cleanup) (bfd *);
47.35369 ++  /* Ask the BFD to free all cached information.  */
47.35370 ++  bfd_boolean (*_bfd_free_cached_info) (bfd *);
47.35371 ++  /* Called when a new section is created.  */
47.35372 ++  bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
47.35373 ++  /* Read the contents of a section.  */
47.35374 ++  bfd_boolean (*_bfd_get_section_contents)
47.35375 ++    (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
47.35376 ++  bfd_boolean (*_bfd_get_section_contents_in_window)
47.35377 ++    (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
47.35378 ++
47.35379 ++  /* Entry points to copy private data.  */
47.35380 ++#define BFD_JUMP_TABLE_COPY(NAME) \
47.35381 ++  NAME##_bfd_copy_private_bfd_data, \
47.35382 ++  NAME##_bfd_merge_private_bfd_data, \
47.35383 ++  _bfd_generic_init_private_section_data, \
47.35384 ++  NAME##_bfd_copy_private_section_data, \
47.35385 ++  NAME##_bfd_copy_private_symbol_data, \
47.35386 ++  NAME##_bfd_copy_private_header_data, \
47.35387 ++  NAME##_bfd_set_private_flags, \
47.35388 ++  NAME##_bfd_print_private_bfd_data
47.35389 ++
47.35390 ++  /* Called to copy BFD general private data from one object file
47.35391 ++     to another.  */
47.35392 ++  bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
47.35393 ++  /* Called to merge BFD general private data from one object file
47.35394 ++     to a common output file when linking.  */
47.35395 ++  bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
47.35396 ++  /* Called to initialize BFD private section data from one object file
47.35397 ++     to another.  */
47.35398 ++#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
47.35399 ++  BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
47.35400 ++  bfd_boolean (*_bfd_init_private_section_data)
47.35401 ++    (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
47.35402 ++  /* Called to copy BFD private section data from one object file
47.35403 ++     to another.  */
47.35404 ++  bfd_boolean (*_bfd_copy_private_section_data)
47.35405 ++    (bfd *, sec_ptr, bfd *, sec_ptr);
47.35406 ++  /* Called to copy BFD private symbol data from one symbol
47.35407 ++     to another.  */
47.35408 ++  bfd_boolean (*_bfd_copy_private_symbol_data)
47.35409 ++    (bfd *, asymbol *, bfd *, asymbol *);
47.35410 ++  /* Called to copy BFD private header data from one object file
47.35411 ++     to another.  */
47.35412 ++  bfd_boolean (*_bfd_copy_private_header_data)
47.35413 ++    (bfd *, bfd *);
47.35414 ++  /* Called to set private backend flags.  */
47.35415 ++  bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
47.35416 ++
47.35417 ++  /* Called to print private BFD data.  */
47.35418 ++  bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
47.35419 ++
47.35420 ++  /* Core file entry points.  */
47.35421 ++#define BFD_JUMP_TABLE_CORE(NAME) \
47.35422 ++  NAME##_core_file_failing_command, \
47.35423 ++  NAME##_core_file_failing_signal, \
47.35424 ++  NAME##_core_file_matches_executable_p
47.35425 ++
47.35426 ++  char *      (*_core_file_failing_command) (bfd *);
47.35427 ++  int         (*_core_file_failing_signal) (bfd *);
47.35428 ++  bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
47.35429 ++
47.35430 ++  /* Archive entry points.  */
47.35431 ++#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
47.35432 ++  NAME##_slurp_armap, \
47.35433 ++  NAME##_slurp_extended_name_table, \
47.35434 ++  NAME##_construct_extended_name_table, \
47.35435 ++  NAME##_truncate_arname, \
47.35436 ++  NAME##_write_armap, \
47.35437 ++  NAME##_read_ar_hdr, \
47.35438 ++  NAME##_openr_next_archived_file, \
47.35439 ++  NAME##_get_elt_at_index, \
47.35440 ++  NAME##_generic_stat_arch_elt, \
47.35441 ++  NAME##_update_armap_timestamp
47.35442 ++
47.35443 ++  bfd_boolean (*_bfd_slurp_armap) (bfd *);
47.35444 ++  bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
47.35445 ++  bfd_boolean (*_bfd_construct_extended_name_table)
47.35446 ++    (bfd *, char **, bfd_size_type *, const char **);
47.35447 ++  void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
47.35448 ++  bfd_boolean (*write_armap)
47.35449 ++    (bfd *, unsigned int, struct orl *, unsigned int, int);
47.35450 ++  void *      (*_bfd_read_ar_hdr_fn) (bfd *);
47.35451 ++  bfd *       (*openr_next_archived_file) (bfd *, bfd *);
47.35452 ++#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
47.35453 ++  bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
47.35454 ++  int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
47.35455 ++  bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
47.35456 ++
47.35457 ++  /* Entry points used for symbols.  */
47.35458 ++#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
47.35459 ++  NAME##_get_symtab_upper_bound, \
47.35460 ++  NAME##_canonicalize_symtab, \
47.35461 ++  NAME##_make_empty_symbol, \
47.35462 ++  NAME##_print_symbol, \
47.35463 ++  NAME##_get_symbol_info, \
47.35464 ++  NAME##_bfd_is_local_label_name, \
47.35465 ++  NAME##_bfd_is_target_special_symbol, \
47.35466 ++  NAME##_get_lineno, \
47.35467 ++  NAME##_find_nearest_line, \
47.35468 ++  _bfd_generic_find_line, \
47.35469 ++  NAME##_find_inliner_info, \
47.35470 ++  NAME##_bfd_make_debug_symbol, \
47.35471 ++  NAME##_read_minisymbols, \
47.35472 ++  NAME##_minisymbol_to_symbol
47.35473 ++
47.35474 ++  long        (*_bfd_get_symtab_upper_bound) (bfd *);
47.35475 ++  long        (*_bfd_canonicalize_symtab)
47.35476 ++    (bfd *, struct bfd_symbol **);
47.35477 ++  struct bfd_symbol *
47.35478 ++              (*_bfd_make_empty_symbol) (bfd *);
47.35479 ++  void        (*_bfd_print_symbol)
47.35480 ++    (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
47.35481 ++#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
47.35482 ++  void        (*_bfd_get_symbol_info)
47.35483 ++    (bfd *, struct bfd_symbol *, symbol_info *);
47.35484 ++#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
47.35485 ++  bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
47.35486 ++  bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
47.35487 ++  alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
47.35488 ++  bfd_boolean (*_bfd_find_nearest_line)
47.35489 ++    (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
47.35490 ++     const char **, const char **, unsigned int *);
47.35491 ++  bfd_boolean (*_bfd_find_line)
47.35492 ++    (bfd *, struct bfd_symbol **, struct bfd_symbol *,
47.35493 ++     const char **, unsigned int *);
47.35494 ++  bfd_boolean (*_bfd_find_inliner_info)
47.35495 ++    (bfd *, const char **, const char **, unsigned int *);
47.35496 ++ /* Back-door to allow format-aware applications to create debug symbols
47.35497 ++    while using BFD for everything else.  Currently used by the assembler
47.35498 ++    when creating COFF files.  */
47.35499 ++  asymbol *   (*_bfd_make_debug_symbol)
47.35500 ++    (bfd *, void *, unsigned long size);
47.35501 ++#define bfd_read_minisymbols(b, d, m, s) \
47.35502 ++  BFD_SEND (b, _read_minisymbols, (b, d, m, s))
47.35503 ++  long        (*_read_minisymbols)
47.35504 ++    (bfd *, bfd_boolean, void **, unsigned int *);
47.35505 ++#define bfd_minisymbol_to_symbol(b, d, m, f) \
47.35506 ++  BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
47.35507 ++  asymbol *   (*_minisymbol_to_symbol)
47.35508 ++    (bfd *, bfd_boolean, const void *, asymbol *);
47.35509 ++
47.35510 ++  /* Routines for relocs.  */
47.35511 ++#define BFD_JUMP_TABLE_RELOCS(NAME) \
47.35512 ++  NAME##_get_reloc_upper_bound, \
47.35513 ++  NAME##_canonicalize_reloc, \
47.35514 ++  NAME##_bfd_reloc_type_lookup, \
47.35515 ++  NAME##_bfd_reloc_name_lookup
47.35516 ++
47.35517 ++  long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
47.35518 ++  long        (*_bfd_canonicalize_reloc)
47.35519 ++    (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
47.35520 ++  /* See documentation on reloc types.  */
47.35521 ++  reloc_howto_type *
47.35522 ++              (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
47.35523 ++  reloc_howto_type *
47.35524 ++              (*reloc_name_lookup) (bfd *, const char *);
47.35525 ++
47.35526 ++
47.35527 ++  /* Routines used when writing an object file.  */
47.35528 ++#define BFD_JUMP_TABLE_WRITE(NAME) \
47.35529 ++  NAME##_set_arch_mach, \
47.35530 ++  NAME##_set_section_contents
47.35531 ++
47.35532 ++  bfd_boolean (*_bfd_set_arch_mach)
47.35533 ++    (bfd *, enum bfd_architecture, unsigned long);
47.35534 ++  bfd_boolean (*_bfd_set_section_contents)
47.35535 ++    (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
47.35536 ++
47.35537 ++  /* Routines used by the linker.  */
47.35538 ++#define BFD_JUMP_TABLE_LINK(NAME) \
47.35539 ++  NAME##_sizeof_headers, \
47.35540 ++  NAME##_bfd_get_relocated_section_contents, \
47.35541 ++  NAME##_bfd_relax_section, \
47.35542 ++  NAME##_bfd_link_hash_table_create, \
47.35543 ++  NAME##_bfd_link_hash_table_free, \
47.35544 ++  NAME##_bfd_link_add_symbols, \
47.35545 ++  NAME##_bfd_link_just_syms, \
47.35546 ++  NAME##_bfd_final_link, \
47.35547 ++  NAME##_bfd_link_split_section, \
47.35548 ++  NAME##_bfd_gc_sections, \
47.35549 ++  NAME##_bfd_merge_sections, \
47.35550 ++  NAME##_bfd_is_group_section, \
47.35551 ++  NAME##_bfd_discard_group, \
47.35552 ++  NAME##_section_already_linked \
47.35553 ++
47.35554 ++  int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
47.35555 ++  bfd_byte *  (*_bfd_get_relocated_section_contents)
47.35556 ++    (bfd *, struct bfd_link_info *, struct bfd_link_order *,
47.35557 ++     bfd_byte *, bfd_boolean, struct bfd_symbol **);
47.35558 ++
47.35559 ++  bfd_boolean (*_bfd_relax_section)
47.35560 ++    (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
47.35561 ++
47.35562 ++  /* Create a hash table for the linker.  Different backends store
47.35563 ++     different information in this table.  */
47.35564 ++  struct bfd_link_hash_table *
47.35565 ++              (*_bfd_link_hash_table_create) (bfd *);
47.35566 ++
47.35567 ++  /* Release the memory associated with the linker hash table.  */
47.35568 ++  void        (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
47.35569 ++
47.35570 ++  /* Add symbols from this object file into the hash table.  */
47.35571 ++  bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
47.35572 ++
47.35573 ++  /* Indicate that we are only retrieving symbol values from this section.  */
47.35574 ++  void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
47.35575 ++
47.35576 ++  /* Do a link based on the link_order structures attached to each
47.35577 ++     section of the BFD.  */
47.35578 ++  bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
47.35579 ++
47.35580 ++  /* Should this section be split up into smaller pieces during linking.  */
47.35581 ++  bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
47.35582 ++
47.35583 ++  /* Remove sections that are not referenced from the output.  */
47.35584 ++  bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
47.35585 ++
47.35586 ++  /* Attempt to merge SEC_MERGE sections.  */
47.35587 ++  bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
47.35588 ++
47.35589 ++  /* Is this section a member of a group?  */
47.35590 ++  bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
47.35591 ++
47.35592 ++  /* Discard members of a group.  */
47.35593 ++  bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
47.35594 ++
47.35595 ++  /* Check if SEC has been already linked during a reloceatable or
47.35596 ++     final link.  */
47.35597 ++  void (*_section_already_linked) (bfd *, struct bfd_section *,
47.35598 ++                                   struct bfd_link_info *);
47.35599 ++
47.35600 ++  /* Routines to handle dynamic symbols and relocs.  */
47.35601 ++#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
47.35602 ++  NAME##_get_dynamic_symtab_upper_bound, \
47.35603 ++  NAME##_canonicalize_dynamic_symtab, \
47.35604 ++  NAME##_get_synthetic_symtab, \
47.35605 ++  NAME##_get_dynamic_reloc_upper_bound, \
47.35606 ++  NAME##_canonicalize_dynamic_reloc
47.35607 ++
47.35608 ++  /* Get the amount of memory required to hold the dynamic symbols.  */
47.35609 ++  long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
47.35610 ++  /* Read in the dynamic symbols.  */
47.35611 ++  long        (*_bfd_canonicalize_dynamic_symtab)
47.35612 ++    (bfd *, struct bfd_symbol **);
47.35613 ++  /* Create synthetized symbols.  */
47.35614 ++  long        (*_bfd_get_synthetic_symtab)
47.35615 ++    (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
47.35616 ++     struct bfd_symbol **);
47.35617 ++  /* Get the amount of memory required to hold the dynamic relocs.  */
47.35618 ++  long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
47.35619 ++  /* Read in the dynamic relocs.  */
47.35620 ++  long        (*_bfd_canonicalize_dynamic_reloc)
47.35621 ++    (bfd *, arelent **, struct bfd_symbol **);
47.35622 ++
47.35623 ++  /* Opposite endian version of this target.  */
47.35624 ++  const struct bfd_target * alternative_target;
47.35625 ++
47.35626 ++  /* Data for use by back-end routines, which isn't
47.35627 ++     generic enough to belong in this structure.  */
47.35628 ++  const void *backend_data;
47.35629 ++
47.35630 ++} bfd_target;
47.35631 ++
47.35632 ++bfd_boolean bfd_set_default_target (const char *name);
47.35633 ++
47.35634 ++const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
47.35635 ++
47.35636 ++const char ** bfd_target_list (void);
47.35637 ++
47.35638 ++const bfd_target *bfd_search_for_target
47.35639 ++   (int (*search_func) (const bfd_target *, void *),
47.35640 ++    void *);
47.35641 ++
47.35642 ++/* Extracted from format.c.  */
47.35643 ++bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
47.35644 ++
47.35645 ++bfd_boolean bfd_check_format_matches
47.35646 ++   (bfd *abfd, bfd_format format, char ***matching);
47.35647 ++
47.35648 ++bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
47.35649 ++
47.35650 ++const char *bfd_format_string (bfd_format format);
47.35651 ++
47.35652 ++/* Extracted from linker.c.  */
47.35653 ++bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
47.35654 ++
47.35655 ++#define bfd_link_split_section(abfd, sec) \
47.35656 ++       BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
47.35657 ++
47.35658 ++void bfd_section_already_linked (bfd *abfd, asection *sec,
47.35659 ++    struct bfd_link_info *info);
47.35660 ++
47.35661 ++#define bfd_section_already_linked(abfd, sec, info) \
47.35662 ++       BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
47.35663 ++
47.35664 ++/* Extracted from simple.c.  */
47.35665 ++bfd_byte *bfd_simple_get_relocated_section_contents
47.35666 ++   (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
47.35667 ++
47.35668 ++#ifdef __cplusplus
47.35669 ++}
47.35670 ++#endif
47.35671 ++#endif
47.35672 +--- /dev/null
47.35673 ++++ b/bfd/bfd_stdint.h
47.35674 +@@ -0,0 +1,47 @@
47.35675 ++/* generated for  gcc (GCC) 4.2.4 (Ubuntu 4.2.4-3ubuntu4) */
47.35676 ++
47.35677 ++#ifndef GCC_GENERATED_STDINT_H
47.35678 ++#define GCC_GENERATED_STDINT_H 1
47.35679 ++
47.35680 ++#include <sys/types.h>
47.35681 ++#include <stdint.h>
47.35682 ++/* glibc uses these symbols as guards to prevent redefinitions.  */
47.35683 ++#ifdef __int8_t_defined
47.35684 ++#define _INT8_T
47.35685 ++#define _INT16_T
47.35686 ++#define _INT32_T
47.35687 ++#endif
47.35688 ++#ifdef __uint32_t_defined
47.35689 ++#define _UINT32_T
47.35690 ++#endif
47.35691 ++
47.35692 ++
47.35693 ++/* Some systems have guard macros to prevent redefinitions, define them.  */
47.35694 ++#ifndef _INT8_T
47.35695 ++#define _INT8_T
47.35696 ++#endif
47.35697 ++#ifndef _INT16_T
47.35698 ++#define _INT16_T
47.35699 ++#endif
47.35700 ++#ifndef _INT32_T
47.35701 ++#define _INT32_T
47.35702 ++#endif
47.35703 ++#ifndef _UINT8_T
47.35704 ++#define _UINT8_T
47.35705 ++#endif
47.35706 ++#ifndef _UINT16_T
47.35707 ++#define _UINT16_T
47.35708 ++#endif
47.35709 ++#ifndef _UINT32_T
47.35710 ++#define _UINT32_T
47.35711 ++#endif
47.35712 ++
47.35713 ++/* system headers have good uint64_t and int64_t */
47.35714 ++#ifndef _INT64_T
47.35715 ++#define _INT64_T
47.35716 ++#endif
47.35717 ++#ifndef _UINT64_T
47.35718 ++#define _UINT64_T
47.35719 ++#endif
47.35720 ++
47.35721 ++#endif /* GCC_GENERATED_STDINT_H */
47.35722 +--- a/bfd/configure
47.35723 ++++ b/bfd/configure
47.35724 +@@ -2994,7 +2994,7 @@ fi
47.35725 + 
47.35726 + # Define the identity of the package.
47.35727 +  PACKAGE=bfd
47.35728 +- VERSION=2.18
47.35729 ++ VERSION=2.18.atmel.1.0.1.avr32linux.1
47.35730 + 
47.35731 + 
47.35732 + cat >>confdefs.h <<_ACEOF
47.35733 +@@ -19041,6 +19041,7 @@ do
47.35734 +     bfd_efi_app_ia64_vec)	tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
47.35735 +     bfd_elf32_am33lin_vec)	tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
47.35736 +     bfd_elf32_avr_vec)		tb="$tb elf32-avr.lo elf32.lo $elf" ;;
47.35737 ++    bfd_elf32_avr32_vec)	tb="$tb elf32-avr32.lo elf32.lo $elf" ;;
47.35738 +     bfd_elf32_bfin_vec)		tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
47.35739 +     bfd_elf32_bfinfdpic_vec)	tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
47.35740 +     bfd_elf32_big_generic_vec) 	tb="$tb elf32-gen.lo elf32.lo $elf" ;;
47.35741 +--- /dev/null
47.35742 ++++ b/bfd/doc/bfd.h
47.35743 +@@ -0,0 +1,5493 @@
47.35744 ++/* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically 
47.35745 ++   generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c", 
47.35746 ++   "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c", 
47.35747 ++   "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c", 
47.35748 ++   "linker.c" and "simple.c".
47.35749 ++   Run "make headers" in your build bfd/ to regenerate.  */
47.35750 ++
47.35751 ++/* Main header file for the bfd library -- portable access to object files.
47.35752 ++
47.35753 ++   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
47.35754 ++   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
47.35755 ++   Free Software Foundation, Inc.
47.35756 ++
47.35757 ++   Contributed by Cygnus Support.
47.35758 ++
47.35759 ++   This file is part of BFD, the Binary File Descriptor library.
47.35760 ++
47.35761 ++   This program is free software; you can redistribute it and/or modify
47.35762 ++   it under the terms of the GNU General Public License as published by
47.35763 ++   the Free Software Foundation; either version 3 of the License, or
47.35764 ++   (at your option) any later version.
47.35765 ++
47.35766 ++   This program is distributed in the hope that it will be useful,
47.35767 ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
47.35768 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
47.35769 ++   GNU General Public License for more details.
47.35770 ++
47.35771 ++   You should have received a copy of the GNU General Public License
47.35772 ++   along with this program; if not, write to the Free Software
47.35773 ++   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
47.35774 ++
47.35775 ++#ifndef __BFD_H_SEEN__
47.35776 ++#define __BFD_H_SEEN__
47.35777 ++
47.35778 ++#ifdef __cplusplus
47.35779 ++extern "C" {
47.35780 ++#endif
47.35781 ++
47.35782 ++#include "ansidecl.h"
47.35783 ++#include "symcat.h"
47.35784 ++#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
47.35785 ++#ifndef SABER
47.35786 ++/* This hack is to avoid a problem with some strict ANSI C preprocessors.
47.35787 ++   The problem is, "32_" is not a valid preprocessing token, and we don't
47.35788 ++   want extra underscores (e.g., "nlm_32_").  The XCONCAT2 macro will
47.35789 ++   cause the inner CONCAT2 macros to be evaluated first, producing
47.35790 ++   still-valid pp-tokens.  Then the final concatenation can be done.  */
47.35791 ++#undef CONCAT4
47.35792 ++#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
47.35793 ++#endif
47.35794 ++#endif
47.35795 ++
47.35796 ++/* This is a utility macro to handle the situation where the code
47.35797 ++   wants to place a constant string into the code, followed by a
47.35798 ++   comma and then the length of the string.  Doing this by hand
47.35799 ++   is error prone, so using this macro is safer.  The macro will
47.35800 ++   also safely handle the case where a NULL is passed as the arg.  */
47.35801 ++#define STRING_COMMA_LEN(STR) (STR), ((STR) ? sizeof (STR) - 1 : 0)
47.35802 ++/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
47.35803 ++   to create the arguments to another macro, since the preprocessor
47.35804 ++   will mis-count the number of arguments to the outer macro (by not
47.35805 ++   evaluating STRING_COMMA_LEN and so missing the comma).  This is a
47.35806 ++   problem for example when trying to use STRING_COMMA_LEN to build
47.35807 ++   the arguments to the strncmp() macro.  Hence this alternative
47.35808 ++   definition of strncmp is provided here.
47.35809 ++   
47.35810 ++   Note - these macros do NOT work if STR2 is not a constant string.  */
47.35811 ++#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
47.35812 ++  /* strcpy() can have a similar problem, but since we know we are
47.35813 ++     copying a constant string, we can use memcpy which will be faster
47.35814 ++     since there is no need to check for a NUL byte inside STR.  We
47.35815 ++     can also save time if we do not need to copy the terminating NUL.  */
47.35816 ++#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
47.35817 ++#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
47.35818 ++
47.35819 ++
47.35820 ++/* The word size used by BFD on the host.  This may be 64 with a 32
47.35821 ++   bit target if the host is 64 bit, or if other 64 bit targets have
47.35822 ++   been selected with --enable-targets, or if --enable-64-bit-bfd.  */
47.35823 ++#define BFD_ARCH_SIZE @wordsize@
47.35824 ++
47.35825 ++/* The word size of the default bfd target.  */
47.35826 ++#define BFD_DEFAULT_TARGET_SIZE @bfd_default_target_size@
47.35827 ++
47.35828 ++#define BFD_HOST_64BIT_LONG @BFD_HOST_64BIT_LONG@
47.35829 ++#define BFD_HOST_64BIT_LONG_LONG @BFD_HOST_64BIT_LONG_LONG@
47.35830 ++#define BFD_HOST_LONG_LONG @BFD_HOST_LONG_LONG@
47.35831 ++#if @BFD_HOST_64_BIT_DEFINED@
47.35832 ++#define BFD_HOST_64_BIT @BFD_HOST_64_BIT@
47.35833 ++#define BFD_HOST_U_64_BIT @BFD_HOST_U_64_BIT@
47.35834 ++typedef BFD_HOST_64_BIT bfd_int64_t;
47.35835 ++typedef BFD_HOST_U_64_BIT bfd_uint64_t;
47.35836 ++#endif
47.35837 ++
47.35838 ++#if BFD_ARCH_SIZE >= 64
47.35839 ++#define BFD64
47.35840 ++#endif
47.35841 ++
47.35842 ++#ifndef INLINE
47.35843 ++#if __GNUC__ >= 2
47.35844 ++#define INLINE __inline__
47.35845 ++#else
47.35846 ++#define INLINE
47.35847 ++#endif
47.35848 ++#endif
47.35849 ++
47.35850 ++/* Declaring a type wide enough to hold a host long and a host pointer.  */
47.35851 ++#define BFD_HOSTPTR_T	@BFD_HOSTPTR_T@
47.35852 ++typedef BFD_HOSTPTR_T bfd_hostptr_t;
47.35853 ++
47.35854 ++/* Forward declaration.  */
47.35855 ++typedef struct bfd bfd;
47.35856 ++
47.35857 ++/* Boolean type used in bfd.  Too many systems define their own
47.35858 ++   versions of "boolean" for us to safely typedef a "boolean" of
47.35859 ++   our own.  Using an enum for "bfd_boolean" has its own set of
47.35860 ++   problems, with strange looking casts required to avoid warnings
47.35861 ++   on some older compilers.  Thus we just use an int.
47.35862 ++
47.35863 ++   General rule: Functions which are bfd_boolean return TRUE on
47.35864 ++   success and FALSE on failure (unless they're a predicate).  */
47.35865 ++
47.35866 ++typedef int bfd_boolean;
47.35867 ++#undef FALSE
47.35868 ++#undef TRUE
47.35869 ++#define FALSE 0
47.35870 ++#define TRUE 1
47.35871 ++
47.35872 ++#ifdef BFD64
47.35873 ++
47.35874 ++#ifndef BFD_HOST_64_BIT
47.35875 ++ #error No 64 bit integer type available
47.35876 ++#endif /* ! defined (BFD_HOST_64_BIT) */
47.35877 ++
47.35878 ++typedef BFD_HOST_U_64_BIT bfd_vma;
47.35879 ++typedef BFD_HOST_64_BIT bfd_signed_vma;
47.35880 ++typedef BFD_HOST_U_64_BIT bfd_size_type;
47.35881 ++typedef BFD_HOST_U_64_BIT symvalue;
47.35882 ++
47.35883 ++#ifndef fprintf_vma
47.35884 ++#if BFD_HOST_64BIT_LONG
47.35885 ++#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
47.35886 ++#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
47.35887 ++#elif BFD_HOST_64BIT_LONG_LONG
47.35888 ++#define sprintf_vma(s,x) sprintf (s, "%016llx", x)
47.35889 ++#define fprintf_vma(f,x) fprintf (f, "%016llx", x)
47.35890 ++#else
47.35891 ++#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
47.35892 ++#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
47.35893 ++#define fprintf_vma(s,x) \
47.35894 ++  fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
47.35895 ++#define sprintf_vma(s,x) \
47.35896 ++  sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
47.35897 ++#endif
47.35898 ++#endif
47.35899 ++
47.35900 ++#else /* not BFD64  */
47.35901 ++
47.35902 ++/* Represent a target address.  Also used as a generic unsigned type
47.35903 ++   which is guaranteed to be big enough to hold any arithmetic types
47.35904 ++   we need to deal with.  */
47.35905 ++typedef unsigned long bfd_vma;
47.35906 ++
47.35907 ++/* A generic signed type which is guaranteed to be big enough to hold any
47.35908 ++   arithmetic types we need to deal with.  Can be assumed to be compatible
47.35909 ++   with bfd_vma in the same way that signed and unsigned ints are compatible
47.35910 ++   (as parameters, in assignment, etc).  */
47.35911 ++typedef long bfd_signed_vma;
47.35912 ++
47.35913 ++typedef unsigned long symvalue;
47.35914 ++typedef unsigned long bfd_size_type;
47.35915 ++
47.35916 ++/* Print a bfd_vma x on stream s.  */
47.35917 ++#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
47.35918 ++#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
47.35919 ++
47.35920 ++#endif /* not BFD64  */
47.35921 ++
47.35922 ++#define HALF_BFD_SIZE_TYPE \
47.35923 ++  (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
47.35924 ++
47.35925 ++#ifndef BFD_HOST_64_BIT
47.35926 ++/* Fall back on a 32 bit type.  The idea is to make these types always
47.35927 ++   available for function return types, but in the case that
47.35928 ++   BFD_HOST_64_BIT is undefined such a function should abort or
47.35929 ++   otherwise signal an error.  */
47.35930 ++typedef bfd_signed_vma bfd_int64_t;
47.35931 ++typedef bfd_vma bfd_uint64_t;
47.35932 ++#endif
47.35933 ++
47.35934 ++/* An offset into a file.  BFD always uses the largest possible offset
47.35935 ++   based on the build time availability of fseek, fseeko, or fseeko64.  */
47.35936 ++typedef @bfd_file_ptr@ file_ptr;
47.35937 ++typedef unsigned @bfd_file_ptr@ ufile_ptr;
47.35938 ++
47.35939 ++extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
47.35940 ++extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
47.35941 ++
47.35942 ++#define printf_vma(x) fprintf_vma(stdout,x)
47.35943 ++#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
47.35944 ++
47.35945 ++typedef unsigned int flagword;	/* 32 bits of flags */
47.35946 ++typedef unsigned char bfd_byte;
47.35947 ++
47.35948 ++/* File formats.  */
47.35949 ++
47.35950 ++typedef enum bfd_format
47.35951 ++{
47.35952 ++  bfd_unknown = 0,	/* File format is unknown.  */
47.35953 ++  bfd_object,		/* Linker/assembler/compiler output.  */
47.35954 ++  bfd_archive,		/* Object archive file.  */
47.35955 ++  bfd_core,		/* Core dump.  */
47.35956 ++  bfd_type_end		/* Marks the end; don't use it!  */
47.35957 ++}
47.35958 ++bfd_format;
47.35959 ++
47.35960 ++/* Values that may appear in the flags field of a BFD.  These also
47.35961 ++   appear in the object_flags field of the bfd_target structure, where
47.35962 ++   they indicate the set of flags used by that backend (not all flags
47.35963 ++   are meaningful for all object file formats) (FIXME: at the moment,
47.35964 ++   the object_flags values have mostly just been copied from backend
47.35965 ++   to another, and are not necessarily correct).  */
47.35966 ++
47.35967 ++/* No flags.  */
47.35968 ++#define BFD_NO_FLAGS   	0x00
47.35969 ++
47.35970 ++/* BFD contains relocation entries.  */
47.35971 ++#define HAS_RELOC   	0x01
47.35972 ++
47.35973 ++/* BFD is directly executable.  */
47.35974 ++#define EXEC_P      	0x02
47.35975 ++
47.35976 ++/* BFD has line number information (basically used for F_LNNO in a
47.35977 ++   COFF header).  */
47.35978 ++#define HAS_LINENO  	0x04
47.35979 ++
47.35980 ++/* BFD has debugging information.  */
47.35981 ++#define HAS_DEBUG   	0x08
47.35982 ++
47.35983 ++/* BFD has symbols.  */
47.35984 ++#define HAS_SYMS    	0x10
47.35985 ++
47.35986 ++/* BFD has local symbols (basically used for F_LSYMS in a COFF
47.35987 ++   header).  */
47.35988 ++#define HAS_LOCALS  	0x20
47.35989 ++
47.35990 ++/* BFD is a dynamic object.  */
47.35991 ++#define DYNAMIC     	0x40
47.35992 ++
47.35993 ++/* Text section is write protected (if D_PAGED is not set, this is
47.35994 ++   like an a.out NMAGIC file) (the linker sets this by default, but
47.35995 ++   clears it for -r or -N).  */
47.35996 ++#define WP_TEXT     	0x80
47.35997 ++
47.35998 ++/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
47.35999 ++   linker sets this by default, but clears it for -r or -n or -N).  */
47.36000 ++#define D_PAGED     	0x100
47.36001 ++
47.36002 ++/* BFD is relaxable (this means that bfd_relax_section may be able to
47.36003 ++   do something) (sometimes bfd_relax_section can do something even if
47.36004 ++   this is not set).  */
47.36005 ++#define BFD_IS_RELAXABLE 0x200
47.36006 ++
47.36007 ++/* This may be set before writing out a BFD to request using a
47.36008 ++   traditional format.  For example, this is used to request that when
47.36009 ++   writing out an a.out object the symbols not be hashed to eliminate
47.36010 ++   duplicates.  */
47.36011 ++#define BFD_TRADITIONAL_FORMAT 0x400
47.36012 ++
47.36013 ++/* This flag indicates that the BFD contents are actually cached in
47.36014 ++   memory.  If this is set, iostream points to a bfd_in_memory struct.  */
47.36015 ++#define BFD_IN_MEMORY 0x800
47.36016 ++
47.36017 ++/* The sections in this BFD specify a memory page.  */
47.36018 ++#define HAS_LOAD_PAGE 0x1000
47.36019 ++
47.36020 ++/* This BFD has been created by the linker and doesn't correspond
47.36021 ++   to any input file.  */
47.36022 ++#define BFD_LINKER_CREATED 0x2000
47.36023 ++
47.36024 ++/* Symbols and relocation.  */
47.36025 ++
47.36026 ++/* A count of carsyms (canonical archive symbols).  */
47.36027 ++typedef unsigned long symindex;
47.36028 ++
47.36029 ++/* How to perform a relocation.  */
47.36030 ++typedef const struct reloc_howto_struct reloc_howto_type;
47.36031 ++
47.36032 ++#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
47.36033 ++
47.36034 ++/* General purpose part of a symbol X;
47.36035 ++   target specific parts are in libcoff.h, libaout.h, etc.  */
47.36036 ++
47.36037 ++#define bfd_get_section(x) ((x)->section)
47.36038 ++#define bfd_get_output_section(x) ((x)->section->output_section)
47.36039 ++#define bfd_set_section(x,y) ((x)->section) = (y)
47.36040 ++#define bfd_asymbol_base(x) ((x)->section->vma)
47.36041 ++#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
47.36042 ++#define bfd_asymbol_name(x) ((x)->name)
47.36043 ++/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
47.36044 ++#define bfd_asymbol_bfd(x) ((x)->the_bfd)
47.36045 ++#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
47.36046 ++
47.36047 ++/* A canonical archive symbol.  */
47.36048 ++/* This is a type pun with struct ranlib on purpose!  */
47.36049 ++typedef struct carsym
47.36050 ++{
47.36051 ++  char *name;
47.36052 ++  file_ptr file_offset;	/* Look here to find the file.  */
47.36053 ++}
47.36054 ++carsym;			/* To make these you call a carsymogen.  */
47.36055 ++
47.36056 ++/* Used in generating armaps (archive tables of contents).
47.36057 ++   Perhaps just a forward definition would do?  */
47.36058 ++struct orl 			/* Output ranlib.  */
47.36059 ++{
47.36060 ++  char **name;		/* Symbol name.  */
47.36061 ++  union
47.36062 ++  {
47.36063 ++    file_ptr pos;
47.36064 ++    bfd *abfd;
47.36065 ++  } u;			/* bfd* or file position.  */
47.36066 ++  int namidx;		/* Index into string table.  */
47.36067 ++};
47.36068 ++
47.36069 ++/* Linenumber stuff.  */
47.36070 ++typedef struct lineno_cache_entry
47.36071 ++{
47.36072 ++  unsigned int line_number;	/* Linenumber from start of function.  */
47.36073 ++  union
47.36074 ++  {
47.36075 ++    struct bfd_symbol *sym;	/* Function name.  */
47.36076 ++    bfd_vma offset;	    		/* Offset into section.  */
47.36077 ++  } u;
47.36078 ++}
47.36079 ++alent;
47.36080 ++
47.36081 ++/* Object and core file sections.  */
47.36082 ++
47.36083 ++#define	align_power(addr, align)	\
47.36084 ++  (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
47.36085 ++
47.36086 ++typedef struct bfd_section *sec_ptr;
47.36087 ++
47.36088 ++#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
47.36089 ++#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
47.36090 ++#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
47.36091 ++#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
47.36092 ++#define bfd_section_name(bfd, ptr) ((ptr)->name)
47.36093 ++#define bfd_section_size(bfd, ptr) ((ptr)->size)
47.36094 ++#define bfd_get_section_size(ptr) ((ptr)->size)
47.36095 ++#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
47.36096 ++#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
47.36097 ++#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
47.36098 ++#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
47.36099 ++#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
47.36100 ++
47.36101 ++#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
47.36102 ++
47.36103 ++#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
47.36104 ++#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
47.36105 ++#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
47.36106 ++/* Find the address one past the end of SEC.  */
47.36107 ++#define bfd_get_section_limit(bfd, sec) \
47.36108 ++  (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
47.36109 ++   / bfd_octets_per_byte (bfd))
47.36110 ++
47.36111 ++/* Return TRUE if section has been discarded.  */
47.36112 ++#define elf_discarded_section(sec)				\
47.36113 ++  (!bfd_is_abs_section (sec)					\
47.36114 ++   && bfd_is_abs_section ((sec)->output_section)		\
47.36115 ++   && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE		\
47.36116 ++   && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
47.36117 ++
47.36118 ++/* Forward define.  */
47.36119 ++struct stat;
47.36120 ++
47.36121 ++typedef enum bfd_print_symbol
47.36122 ++{
47.36123 ++  bfd_print_symbol_name,
47.36124 ++  bfd_print_symbol_more,
47.36125 ++  bfd_print_symbol_all
47.36126 ++} bfd_print_symbol_type;
47.36127 ++
47.36128 ++/* Information about a symbol that nm needs.  */
47.36129 ++
47.36130 ++typedef struct _symbol_info
47.36131 ++{
47.36132 ++  symvalue value;
47.36133 ++  char type;
47.36134 ++  const char *name;            /* Symbol name.  */
47.36135 ++  unsigned char stab_type;     /* Stab type.  */
47.36136 ++  char stab_other;             /* Stab other.  */
47.36137 ++  short stab_desc;             /* Stab desc.  */
47.36138 ++  const char *stab_name;       /* String for stab type.  */
47.36139 ++} symbol_info;
47.36140 ++
47.36141 ++/* Get the name of a stabs type code.  */
47.36142 ++
47.36143 ++extern const char *bfd_get_stab_name (int);
47.36144 ++
47.36145 ++/* Hash table routines.  There is no way to free up a hash table.  */
47.36146 ++
47.36147 ++/* An element in the hash table.  Most uses will actually use a larger
47.36148 ++   structure, and an instance of this will be the first field.  */
47.36149 ++
47.36150 ++struct bfd_hash_entry
47.36151 ++{
47.36152 ++  /* Next entry for this hash code.  */
47.36153 ++  struct bfd_hash_entry *next;
47.36154 ++  /* String being hashed.  */
47.36155 ++  const char *string;
47.36156 ++  /* Hash code.  This is the full hash code, not the index into the
47.36157 ++     table.  */
47.36158 ++  unsigned long hash;
47.36159 ++};
47.36160 ++
47.36161 ++/* A hash table.  */
47.36162 ++
47.36163 ++struct bfd_hash_table
47.36164 ++{
47.36165 ++  /* The hash array.  */
47.36166 ++  struct bfd_hash_entry **table;
47.36167 ++  /* A function used to create new elements in the hash table.  The
47.36168 ++     first entry is itself a pointer to an element.  When this
47.36169 ++     function is first invoked, this pointer will be NULL.  However,
47.36170 ++     having the pointer permits a hierarchy of method functions to be
47.36171 ++     built each of which calls the function in the superclass.  Thus
47.36172 ++     each function should be written to allocate a new block of memory
47.36173 ++     only if the argument is NULL.  */
47.36174 ++  struct bfd_hash_entry *(*newfunc)
47.36175 ++    (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
47.36176 ++   /* An objalloc for this hash table.  This is a struct objalloc *,
47.36177 ++     but we use void * to avoid requiring the inclusion of objalloc.h.  */
47.36178 ++  void *memory;
47.36179 ++  /* The number of slots in the hash table.  */
47.36180 ++  unsigned int size;
47.36181 ++  /* The number of entries in the hash table.  */
47.36182 ++  unsigned int count;
47.36183 ++  /* The size of elements.  */
47.36184 ++  unsigned int entsize;
47.36185 ++  /* If non-zero, don't grow the hash table.  */
47.36186 ++  unsigned int frozen:1;
47.36187 ++};
47.36188 ++
47.36189 ++/* Initialize a hash table.  */
47.36190 ++extern bfd_boolean bfd_hash_table_init
47.36191 ++  (struct bfd_hash_table *,
47.36192 ++   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
47.36193 ++			       struct bfd_hash_table *,
47.36194 ++			       const char *),
47.36195 ++   unsigned int);
47.36196 ++
47.36197 ++/* Initialize a hash table specifying a size.  */
47.36198 ++extern bfd_boolean bfd_hash_table_init_n
47.36199 ++  (struct bfd_hash_table *,
47.36200 ++   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
47.36201 ++			       struct bfd_hash_table *,
47.36202 ++			       const char *),
47.36203 ++   unsigned int, unsigned int);
47.36204 ++
47.36205 ++/* Free up a hash table.  */
47.36206 ++extern void bfd_hash_table_free
47.36207 ++  (struct bfd_hash_table *);
47.36208 ++
47.36209 ++/* Look up a string in a hash table.  If CREATE is TRUE, a new entry
47.36210 ++   will be created for this string if one does not already exist.  The
47.36211 ++   COPY argument must be TRUE if this routine should copy the string
47.36212 ++   into newly allocated memory when adding an entry.  */
47.36213 ++extern struct bfd_hash_entry *bfd_hash_lookup
47.36214 ++  (struct bfd_hash_table *, const char *, bfd_boolean create,
47.36215 ++   bfd_boolean copy);
47.36216 ++
47.36217 ++/* Replace an entry in a hash table.  */
47.36218 ++extern void bfd_hash_replace
47.36219 ++  (struct bfd_hash_table *, struct bfd_hash_entry *old,
47.36220 ++   struct bfd_hash_entry *nw);
47.36221 ++
47.36222 ++/* Base method for creating a hash table entry.  */
47.36223 ++extern struct bfd_hash_entry *bfd_hash_newfunc
47.36224 ++  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
47.36225 ++
47.36226 ++/* Grab some space for a hash table entry.  */
47.36227 ++extern void *bfd_hash_allocate
47.36228 ++  (struct bfd_hash_table *, unsigned int);
47.36229 ++
47.36230 ++/* Traverse a hash table in a random order, calling a function on each
47.36231 ++   element.  If the function returns FALSE, the traversal stops.  The
47.36232 ++   INFO argument is passed to the function.  */
47.36233 ++extern void bfd_hash_traverse
47.36234 ++  (struct bfd_hash_table *,
47.36235 ++   bfd_boolean (*) (struct bfd_hash_entry *, void *),
47.36236 ++   void *info);
47.36237 ++
47.36238 ++/* Allows the default size of a hash table to be configured. New hash
47.36239 ++   tables allocated using bfd_hash_table_init will be created with
47.36240 ++   this size.  */
47.36241 ++extern void bfd_hash_set_default_size (bfd_size_type);
47.36242 ++
47.36243 ++/* This structure is used to keep track of stabs in sections
47.36244 ++   information while linking.  */
47.36245 ++
47.36246 ++struct stab_info
47.36247 ++{
47.36248 ++  /* A hash table used to hold stabs strings.  */
47.36249 ++  struct bfd_strtab_hash *strings;
47.36250 ++  /* The header file hash table.  */
47.36251 ++  struct bfd_hash_table includes;
47.36252 ++  /* The first .stabstr section.  */
47.36253 ++  struct bfd_section *stabstr;
47.36254 ++};
47.36255 ++
47.36256 ++#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
47.36257 ++
47.36258 ++/* User program access to BFD facilities.  */
47.36259 ++
47.36260 ++/* Direct I/O routines, for programs which know more about the object
47.36261 ++   file than BFD does.  Use higher level routines if possible.  */
47.36262 ++
47.36263 ++extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
47.36264 ++extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
47.36265 ++extern int bfd_seek (bfd *, file_ptr, int);
47.36266 ++extern file_ptr bfd_tell (bfd *);
47.36267 ++extern int bfd_flush (bfd *);
47.36268 ++extern int bfd_stat (bfd *, struct stat *);
47.36269 ++
47.36270 ++/* Deprecated old routines.  */
47.36271 ++#if __GNUC__
47.36272 ++#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
47.36273 ++  (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__),	\
47.36274 ++   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
47.36275 ++#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
47.36276 ++  (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__),	\
47.36277 ++   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
47.36278 ++#else
47.36279 ++#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
47.36280 ++  (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
47.36281 ++   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
47.36282 ++#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
47.36283 ++  (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
47.36284 ++   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
47.36285 ++#endif
47.36286 ++extern void warn_deprecated (const char *, const char *, int, const char *);
47.36287 ++
47.36288 ++/* Cast from const char * to char * so that caller can assign to
47.36289 ++   a char * without a warning.  */
47.36290 ++#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
47.36291 ++#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
47.36292 ++#define bfd_get_format(abfd) ((abfd)->format)
47.36293 ++#define bfd_get_target(abfd) ((abfd)->xvec->name)
47.36294 ++#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
47.36295 ++#define bfd_family_coff(abfd) \
47.36296 ++  (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
47.36297 ++   bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
47.36298 ++#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
47.36299 ++#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
47.36300 ++#define bfd_header_big_endian(abfd) \
47.36301 ++  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
47.36302 ++#define bfd_header_little_endian(abfd) \
47.36303 ++  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
47.36304 ++#define bfd_get_file_flags(abfd) ((abfd)->flags)
47.36305 ++#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
47.36306 ++#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
47.36307 ++#define bfd_my_archive(abfd) ((abfd)->my_archive)
47.36308 ++#define bfd_has_map(abfd) ((abfd)->has_armap)
47.36309 ++
47.36310 ++#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
47.36311 ++#define bfd_usrdata(abfd) ((abfd)->usrdata)
47.36312 ++
47.36313 ++#define bfd_get_start_address(abfd) ((abfd)->start_address)
47.36314 ++#define bfd_get_symcount(abfd) ((abfd)->symcount)
47.36315 ++#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
47.36316 ++#define bfd_count_sections(abfd) ((abfd)->section_count)
47.36317 ++
47.36318 ++#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
47.36319 ++
47.36320 ++#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
47.36321 ++
47.36322 ++#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
47.36323 ++
47.36324 ++extern bfd_boolean bfd_cache_close
47.36325 ++  (bfd *abfd);
47.36326 ++/* NB: This declaration should match the autogenerated one in libbfd.h.  */
47.36327 ++
47.36328 ++extern bfd_boolean bfd_cache_close_all (void);
47.36329 ++
47.36330 ++extern bfd_boolean bfd_record_phdr
47.36331 ++  (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
47.36332 ++   bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
47.36333 ++
47.36334 ++/* Byte swapping routines.  */
47.36335 ++
47.36336 ++bfd_uint64_t bfd_getb64 (const void *);
47.36337 ++bfd_uint64_t bfd_getl64 (const void *);
47.36338 ++bfd_int64_t bfd_getb_signed_64 (const void *);
47.36339 ++bfd_int64_t bfd_getl_signed_64 (const void *);
47.36340 ++bfd_vma bfd_getb32 (const void *);
47.36341 ++bfd_vma bfd_getl32 (const void *);
47.36342 ++bfd_signed_vma bfd_getb_signed_32 (const void *);
47.36343 ++bfd_signed_vma bfd_getl_signed_32 (const void *);
47.36344 ++bfd_vma bfd_getb16 (const void *);
47.36345 ++bfd_vma bfd_getl16 (const void *);
47.36346 ++bfd_signed_vma bfd_getb_signed_16 (const void *);
47.36347 ++bfd_signed_vma bfd_getl_signed_16 (const void *);
47.36348 ++void bfd_putb64 (bfd_uint64_t, void *);
47.36349 ++void bfd_putl64 (bfd_uint64_t, void *);
47.36350 ++void bfd_putb32 (bfd_vma, void *);
47.36351 ++void bfd_putl32 (bfd_vma, void *);
47.36352 ++void bfd_putb16 (bfd_vma, void *);
47.36353 ++void bfd_putl16 (bfd_vma, void *);
47.36354 ++
47.36355 ++/* Byte swapping routines which take size and endiannes as arguments.  */
47.36356 ++
47.36357 ++bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
47.36358 ++void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
47.36359 ++
47.36360 ++extern bfd_boolean bfd_section_already_linked_table_init (void);
47.36361 ++extern void bfd_section_already_linked_table_free (void);
47.36362 ++
47.36363 ++/* Externally visible ECOFF routines.  */
47.36364 ++
47.36365 ++#if defined(__STDC__) || defined(ALMOST_STDC)
47.36366 ++struct ecoff_debug_info;
47.36367 ++struct ecoff_debug_swap;
47.36368 ++struct ecoff_extr;
47.36369 ++struct bfd_symbol;
47.36370 ++struct bfd_link_info;
47.36371 ++struct bfd_link_hash_entry;
47.36372 ++struct bfd_elf_version_tree;
47.36373 ++#endif
47.36374 ++extern bfd_vma bfd_ecoff_get_gp_value
47.36375 ++  (bfd * abfd);
47.36376 ++extern bfd_boolean bfd_ecoff_set_gp_value
47.36377 ++  (bfd *abfd, bfd_vma gp_value);
47.36378 ++extern bfd_boolean bfd_ecoff_set_regmasks
47.36379 ++  (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
47.36380 ++   unsigned long *cprmask);
47.36381 ++extern void *bfd_ecoff_debug_init
47.36382 ++  (bfd *output_bfd, struct ecoff_debug_info *output_debug,
47.36383 ++   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
47.36384 ++extern void bfd_ecoff_debug_free
47.36385 ++  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
47.36386 ++   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
47.36387 ++extern bfd_boolean bfd_ecoff_debug_accumulate
47.36388 ++  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
47.36389 ++   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
47.36390 ++   struct ecoff_debug_info *input_debug,
47.36391 ++   const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
47.36392 ++extern bfd_boolean bfd_ecoff_debug_accumulate_other
47.36393 ++  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
47.36394 ++   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
47.36395 ++   struct bfd_link_info *);
47.36396 ++extern bfd_boolean bfd_ecoff_debug_externals
47.36397 ++  (bfd *abfd, struct ecoff_debug_info *debug,
47.36398 ++   const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
47.36399 ++   bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
47.36400 ++   void (*set_index) (struct bfd_symbol *, bfd_size_type));
47.36401 ++extern bfd_boolean bfd_ecoff_debug_one_external
47.36402 ++  (bfd *abfd, struct ecoff_debug_info *debug,
47.36403 ++   const struct ecoff_debug_swap *swap, const char *name,
47.36404 ++   struct ecoff_extr *esym);
47.36405 ++extern bfd_size_type bfd_ecoff_debug_size
47.36406 ++  (bfd *abfd, struct ecoff_debug_info *debug,
47.36407 ++   const struct ecoff_debug_swap *swap);
47.36408 ++extern bfd_boolean bfd_ecoff_write_debug
47.36409 ++  (bfd *abfd, struct ecoff_debug_info *debug,
47.36410 ++   const struct ecoff_debug_swap *swap, file_ptr where);
47.36411 ++extern bfd_boolean bfd_ecoff_write_accumulated_debug
47.36412 ++  (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
47.36413 ++   const struct ecoff_debug_swap *swap,
47.36414 ++   struct bfd_link_info *info, file_ptr where);
47.36415 ++
47.36416 ++/* Externally visible ELF routines.  */
47.36417 ++
47.36418 ++struct bfd_link_needed_list
47.36419 ++{
47.36420 ++  struct bfd_link_needed_list *next;
47.36421 ++  bfd *by;
47.36422 ++  const char *name;
47.36423 ++};
47.36424 ++
47.36425 ++enum dynamic_lib_link_class {
47.36426 ++  DYN_NORMAL = 0,
47.36427 ++  DYN_AS_NEEDED = 1,
47.36428 ++  DYN_DT_NEEDED = 2,
47.36429 ++  DYN_NO_ADD_NEEDED = 4,
47.36430 ++  DYN_NO_NEEDED = 8
47.36431 ++};
47.36432 ++
47.36433 ++enum notice_asneeded_action {
47.36434 ++  notice_as_needed,
47.36435 ++  notice_not_needed,
47.36436 ++  notice_needed
47.36437 ++};
47.36438 ++
47.36439 ++extern bfd_boolean bfd_elf_record_link_assignment
47.36440 ++  (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
47.36441 ++   bfd_boolean);
47.36442 ++extern struct bfd_link_needed_list *bfd_elf_get_needed_list
47.36443 ++  (bfd *, struct bfd_link_info *);
47.36444 ++extern bfd_boolean bfd_elf_get_bfd_needed_list
47.36445 ++  (bfd *, struct bfd_link_needed_list **);
47.36446 ++extern bfd_boolean bfd_elf_size_dynamic_sections
47.36447 ++  (bfd *, const char *, const char *, const char *, const char * const *,
47.36448 ++   struct bfd_link_info *, struct bfd_section **,
47.36449 ++   struct bfd_elf_version_tree *);
47.36450 ++extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
47.36451 ++  (bfd *, struct bfd_link_info *);
47.36452 ++extern void bfd_elf_set_dt_needed_name
47.36453 ++  (bfd *, const char *);
47.36454 ++extern const char *bfd_elf_get_dt_soname
47.36455 ++  (bfd *);
47.36456 ++extern void bfd_elf_set_dyn_lib_class
47.36457 ++  (bfd *, enum dynamic_lib_link_class);
47.36458 ++extern int bfd_elf_get_dyn_lib_class
47.36459 ++  (bfd *);
47.36460 ++extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
47.36461 ++  (bfd *, struct bfd_link_info *);
47.36462 ++extern bfd_boolean bfd_elf_discard_info
47.36463 ++  (bfd *, struct bfd_link_info *);
47.36464 ++extern unsigned int _bfd_elf_default_action_discarded
47.36465 ++  (struct bfd_section *);
47.36466 ++
47.36467 ++/* Return an upper bound on the number of bytes required to store a
47.36468 ++   copy of ABFD's program header table entries.  Return -1 if an error
47.36469 ++   occurs; bfd_get_error will return an appropriate code.  */
47.36470 ++extern long bfd_get_elf_phdr_upper_bound
47.36471 ++  (bfd *abfd);
47.36472 ++
47.36473 ++/* Copy ABFD's program header table entries to *PHDRS.  The entries
47.36474 ++   will be stored as an array of Elf_Internal_Phdr structures, as
47.36475 ++   defined in include/elf/internal.h.  To find out how large the
47.36476 ++   buffer needs to be, call bfd_get_elf_phdr_upper_bound.
47.36477 ++
47.36478 ++   Return the number of program header table entries read, or -1 if an
47.36479 ++   error occurs; bfd_get_error will return an appropriate code.  */
47.36480 ++extern int bfd_get_elf_phdrs
47.36481 ++  (bfd *abfd, void *phdrs);
47.36482 ++
47.36483 ++/* Create a new BFD as if by bfd_openr.  Rather than opening a file,
47.36484 ++   reconstruct an ELF file by reading the segments out of remote memory
47.36485 ++   based on the ELF file header at EHDR_VMA and the ELF program headers it
47.36486 ++   points to.  If not null, *LOADBASEP is filled in with the difference
47.36487 ++   between the VMAs from which the segments were read, and the VMAs the
47.36488 ++   file headers (and hence BFD's idea of each section's VMA) put them at.
47.36489 ++
47.36490 ++   The function TARGET_READ_MEMORY is called to copy LEN bytes from the
47.36491 ++   remote memory at target address VMA into the local buffer at MYADDR; it
47.36492 ++   should return zero on success or an `errno' code on failure.  TEMPL must
47.36493 ++   be a BFD for an ELF target with the word size and byte order found in
47.36494 ++   the remote memory.  */
47.36495 ++extern bfd *bfd_elf_bfd_from_remote_memory
47.36496 ++  (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
47.36497 ++   int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
47.36498 ++
47.36499 ++/* Return the arch_size field of an elf bfd, or -1 if not elf.  */
47.36500 ++extern int bfd_get_arch_size
47.36501 ++  (bfd *);
47.36502 ++
47.36503 ++/* Return TRUE if address "naturally" sign extends, or -1 if not elf.  */
47.36504 ++extern int bfd_get_sign_extend_vma
47.36505 ++  (bfd *);
47.36506 ++
47.36507 ++extern struct bfd_section *_bfd_elf_tls_setup
47.36508 ++  (bfd *, struct bfd_link_info *);
47.36509 ++
47.36510 ++extern void _bfd_fix_excluded_sec_syms
47.36511 ++  (bfd *, struct bfd_link_info *);
47.36512 ++
47.36513 ++extern unsigned bfd_m68k_mach_to_features (int);
47.36514 ++
47.36515 ++extern int bfd_m68k_features_to_mach (unsigned);
47.36516 ++
47.36517 ++extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
47.36518 ++  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
47.36519 ++   char **);
47.36520 ++
47.36521 ++extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
47.36522 ++  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
47.36523 ++   char **);
47.36524 ++
47.36525 ++/* SunOS shared library support routines for the linker.  */
47.36526 ++
47.36527 ++extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
47.36528 ++  (bfd *, struct bfd_link_info *);
47.36529 ++extern bfd_boolean bfd_sunos_record_link_assignment
47.36530 ++  (bfd *, struct bfd_link_info *, const char *);
47.36531 ++extern bfd_boolean bfd_sunos_size_dynamic_sections
47.36532 ++  (bfd *, struct bfd_link_info *, struct bfd_section **,
47.36533 ++   struct bfd_section **, struct bfd_section **);
47.36534 ++
47.36535 ++/* Linux shared library support routines for the linker.  */
47.36536 ++
47.36537 ++extern bfd_boolean bfd_i386linux_size_dynamic_sections
47.36538 ++  (bfd *, struct bfd_link_info *);
47.36539 ++extern bfd_boolean bfd_m68klinux_size_dynamic_sections
47.36540 ++  (bfd *, struct bfd_link_info *);
47.36541 ++extern bfd_boolean bfd_sparclinux_size_dynamic_sections
47.36542 ++  (bfd *, struct bfd_link_info *);
47.36543 ++
47.36544 ++/* mmap hacks */
47.36545 ++
47.36546 ++struct _bfd_window_internal;
47.36547 ++typedef struct _bfd_window_internal bfd_window_internal;
47.36548 ++
47.36549 ++typedef struct _bfd_window
47.36550 ++{
47.36551 ++  /* What the user asked for.  */
47.36552 ++  void *data;
47.36553 ++  bfd_size_type size;
47.36554 ++  /* The actual window used by BFD.  Small user-requested read-only
47.36555 ++     regions sharing a page may share a single window into the object
47.36556 ++     file.  Read-write versions shouldn't until I've fixed things to
47.36557 ++     keep track of which portions have been claimed by the
47.36558 ++     application; don't want to give the same region back when the
47.36559 ++     application wants two writable copies!  */
47.36560 ++  struct _bfd_window_internal *i;
47.36561 ++}
47.36562 ++bfd_window;
47.36563 ++
47.36564 ++extern void bfd_init_window
47.36565 ++  (bfd_window *);
47.36566 ++extern void bfd_free_window
47.36567 ++  (bfd_window *);
47.36568 ++extern bfd_boolean bfd_get_file_window
47.36569 ++  (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
47.36570 ++
47.36571 ++/* XCOFF support routines for the linker.  */
47.36572 ++
47.36573 ++extern bfd_boolean bfd_xcoff_link_record_set
47.36574 ++  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
47.36575 ++extern bfd_boolean bfd_xcoff_import_symbol
47.36576 ++  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
47.36577 ++   const char *, const char *, const char *, unsigned int);
47.36578 ++extern bfd_boolean bfd_xcoff_export_symbol
47.36579 ++  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
47.36580 ++extern bfd_boolean bfd_xcoff_link_count_reloc
47.36581 ++  (bfd *, struct bfd_link_info *, const char *);
47.36582 ++extern bfd_boolean bfd_xcoff_record_link_assignment
47.36583 ++  (bfd *, struct bfd_link_info *, const char *);
47.36584 ++extern bfd_boolean bfd_xcoff_size_dynamic_sections
47.36585 ++  (bfd *, struct bfd_link_info *, const char *, const char *,
47.36586 ++   unsigned long, unsigned long, unsigned long, bfd_boolean,
47.36587 ++   int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
47.36588 ++extern bfd_boolean bfd_xcoff_link_generate_rtinit
47.36589 ++  (bfd *, const char *, const char *, bfd_boolean);
47.36590 ++
47.36591 ++/* XCOFF support routines for ar.  */
47.36592 ++extern bfd_boolean bfd_xcoff_ar_archive_set_magic
47.36593 ++  (bfd *, char *);
47.36594 ++
47.36595 ++/* Externally visible COFF routines.  */
47.36596 ++
47.36597 ++#if defined(__STDC__) || defined(ALMOST_STDC)
47.36598 ++struct internal_syment;
47.36599 ++union internal_auxent;
47.36600 ++#endif
47.36601 ++
47.36602 ++extern bfd_boolean bfd_coff_get_syment
47.36603 ++  (bfd *, struct bfd_symbol *, struct internal_syment *);
47.36604 ++
47.36605 ++extern bfd_boolean bfd_coff_get_auxent
47.36606 ++  (bfd *, struct bfd_symbol *, int, union internal_auxent *);
47.36607 ++
47.36608 ++extern bfd_boolean bfd_coff_set_symbol_class
47.36609 ++  (bfd *, struct bfd_symbol *, unsigned int);
47.36610 ++
47.36611 ++extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
47.36612 ++  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
47.36613 ++
47.36614 ++/* ARM VFP11 erratum workaround support.  */
47.36615 ++typedef enum
47.36616 ++{
47.36617 ++  BFD_ARM_VFP11_FIX_DEFAULT,
47.36618 ++  BFD_ARM_VFP11_FIX_NONE,
47.36619 ++  BFD_ARM_VFP11_FIX_SCALAR,
47.36620 ++  BFD_ARM_VFP11_FIX_VECTOR
47.36621 ++} bfd_arm_vfp11_fix;
47.36622 ++
47.36623 ++extern void bfd_elf32_arm_init_maps
47.36624 ++  (bfd *);
47.36625 ++
47.36626 ++extern void bfd_elf32_arm_set_vfp11_fix
47.36627 ++  (bfd *, struct bfd_link_info *);
47.36628 ++
47.36629 ++extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
47.36630 ++  (bfd *, struct bfd_link_info *);
47.36631 ++
47.36632 ++extern void bfd_elf32_arm_vfp11_fix_veneer_locations
47.36633 ++  (bfd *, struct bfd_link_info *);
47.36634 ++
47.36635 ++/* ARM Interworking support.  Called from linker.  */
47.36636 ++extern bfd_boolean bfd_arm_allocate_interworking_sections
47.36637 ++  (struct bfd_link_info *);
47.36638 ++
47.36639 ++extern bfd_boolean bfd_arm_process_before_allocation
47.36640 ++  (bfd *, struct bfd_link_info *, int);
47.36641 ++
47.36642 ++extern bfd_boolean bfd_arm_get_bfd_for_interworking
47.36643 ++  (bfd *, struct bfd_link_info *);
47.36644 ++
47.36645 ++/* PE ARM Interworking support.  Called from linker.  */
47.36646 ++extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
47.36647 ++  (struct bfd_link_info *);
47.36648 ++
47.36649 ++extern bfd_boolean bfd_arm_pe_process_before_allocation
47.36650 ++  (bfd *, struct bfd_link_info *, int);
47.36651 ++
47.36652 ++extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
47.36653 ++  (bfd *, struct bfd_link_info *);
47.36654 ++
47.36655 ++/* ELF ARM Interworking support.  Called from linker.  */
47.36656 ++extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
47.36657 ++  (struct bfd_link_info *);
47.36658 ++
47.36659 ++extern bfd_boolean bfd_elf32_arm_process_before_allocation
47.36660 ++  (bfd *, struct bfd_link_info *);
47.36661 ++
47.36662 ++void bfd_elf32_arm_set_target_relocs
47.36663 ++  (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
47.36664 ++   int, int);
47.36665 ++
47.36666 ++extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
47.36667 ++  (bfd *, struct bfd_link_info *);
47.36668 ++
47.36669 ++extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
47.36670 ++  (bfd *, struct bfd_link_info *);
47.36671 ++
47.36672 ++/* ELF ARM mapping symbol support */
47.36673 ++#define BFD_ARM_SPECIAL_SYM_TYPE_MAP	(1 << 0)
47.36674 ++#define BFD_ARM_SPECIAL_SYM_TYPE_TAG	(1 << 1)
47.36675 ++#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER  (1 << 2)
47.36676 ++#define BFD_ARM_SPECIAL_SYM_TYPE_ANY	(~0)
47.36677 ++extern bfd_boolean bfd_is_arm_special_symbol_name
47.36678 ++  (const char * name, int type);
47.36679 ++
47.36680 ++extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
47.36681 ++
47.36682 ++/* ARM Note section processing.  */
47.36683 ++extern bfd_boolean bfd_arm_merge_machines
47.36684 ++  (bfd *, bfd *);
47.36685 ++
47.36686 ++extern bfd_boolean bfd_arm_update_notes
47.36687 ++  (bfd *, const char *);
47.36688 ++
47.36689 ++extern unsigned int bfd_arm_get_mach_from_notes
47.36690 ++  (bfd *, const char *);
47.36691 ++
47.36692 ++/* TI COFF load page support.  */
47.36693 ++extern void bfd_ticoff_set_section_load_page
47.36694 ++  (struct bfd_section *, int);
47.36695 ++
47.36696 ++extern int bfd_ticoff_get_section_load_page
47.36697 ++  (struct bfd_section *);
47.36698 ++
47.36699 ++/* H8/300 functions.  */
47.36700 ++extern bfd_vma bfd_h8300_pad_address
47.36701 ++  (bfd *, bfd_vma);
47.36702 ++
47.36703 ++/* IA64 Itanium code generation.  Called from linker.  */
47.36704 ++extern void bfd_elf32_ia64_after_parse
47.36705 ++  (int);
47.36706 ++
47.36707 ++extern void bfd_elf64_ia64_after_parse
47.36708 ++  (int);
47.36709 ++
47.36710 ++/* This structure is used for a comdat section, as in PE.  A comdat
47.36711 ++   section is associated with a particular symbol.  When the linker
47.36712 ++   sees a comdat section, it keeps only one of the sections with a
47.36713 ++   given name and associated with a given symbol.  */
47.36714 ++
47.36715 ++struct coff_comdat_info
47.36716 ++{
47.36717 ++  /* The name of the symbol associated with a comdat section.  */
47.36718 ++  const char *name;
47.36719 ++
47.36720 ++  /* The local symbol table index of the symbol associated with a
47.36721 ++     comdat section.  This is only meaningful to the object file format
47.36722 ++     specific code; it is not an index into the list returned by
47.36723 ++     bfd_canonicalize_symtab.  */
47.36724 ++  long symbol;
47.36725 ++};
47.36726 ++
47.36727 ++extern struct coff_comdat_info *bfd_coff_get_comdat_section
47.36728 ++  (bfd *, struct bfd_section *);
47.36729 ++
47.36730 ++/* Extracted from init.c.  */
47.36731 ++void bfd_init (void);
47.36732 ++
47.36733 ++/* Extracted from opncls.c.  */
47.36734 ++bfd *bfd_fopen (const char *filename, const char *target,
47.36735 ++    const char *mode, int fd);
47.36736 ++
47.36737 ++bfd *bfd_openr (const char *filename, const char *target);
47.36738 ++
47.36739 ++bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
47.36740 ++
47.36741 ++bfd *bfd_openstreamr (const char *, const char *, void *);
47.36742 ++
47.36743 ++bfd *bfd_openr_iovec (const char *filename, const char *target,
47.36744 ++    void *(*open) (struct bfd *nbfd,
47.36745 ++    void *open_closure),
47.36746 ++    void *open_closure,
47.36747 ++    file_ptr (*pread) (struct bfd *nbfd,
47.36748 ++    void *stream,
47.36749 ++    void *buf,
47.36750 ++    file_ptr nbytes,
47.36751 ++    file_ptr offset),
47.36752 ++    int (*close) (struct bfd *nbfd,
47.36753 ++    void *stream),
47.36754 ++    int (*stat) (struct bfd *abfd,
47.36755 ++    void *stream,
47.36756 ++    struct stat *sb));
47.36757 ++
47.36758 ++bfd *bfd_openw (const char *filename, const char *target);
47.36759 ++
47.36760 ++bfd_boolean bfd_close (bfd *abfd);
47.36761 ++
47.36762 ++bfd_boolean bfd_close_all_done (bfd *);
47.36763 ++
47.36764 ++bfd *bfd_create (const char *filename, bfd *templ);
47.36765 ++
47.36766 ++bfd_boolean bfd_make_writable (bfd *abfd);
47.36767 ++
47.36768 ++bfd_boolean bfd_make_readable (bfd *abfd);
47.36769 ++
47.36770 ++unsigned long bfd_calc_gnu_debuglink_crc32
47.36771 ++   (unsigned long crc, const unsigned char *buf, bfd_size_type len);
47.36772 ++
47.36773 ++char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
47.36774 ++
47.36775 ++struct bfd_section *bfd_create_gnu_debuglink_section
47.36776 ++   (bfd *abfd, const char *filename);
47.36777 ++
47.36778 ++bfd_boolean bfd_fill_in_gnu_debuglink_section
47.36779 ++   (bfd *abfd, struct bfd_section *sect, const char *filename);
47.36780 ++
47.36781 ++/* Extracted from libbfd.c.  */
47.36782 ++
47.36783 ++/* Byte swapping macros for user section data.  */
47.36784 ++
47.36785 ++#define bfd_put_8(abfd, val, ptr) \
47.36786 ++  ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
47.36787 ++#define bfd_put_signed_8 \
47.36788 ++  bfd_put_8
47.36789 ++#define bfd_get_8(abfd, ptr) \
47.36790 ++  (*(unsigned char *) (ptr) & 0xff)
47.36791 ++#define bfd_get_signed_8(abfd, ptr) \
47.36792 ++  (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
47.36793 ++
47.36794 ++#define bfd_put_16(abfd, val, ptr) \
47.36795 ++  BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
47.36796 ++#define bfd_put_signed_16 \
47.36797 ++  bfd_put_16
47.36798 ++#define bfd_get_16(abfd, ptr) \
47.36799 ++  BFD_SEND (abfd, bfd_getx16, (ptr))
47.36800 ++#define bfd_get_signed_16(abfd, ptr) \
47.36801 ++  BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
47.36802 ++
47.36803 ++#define bfd_put_32(abfd, val, ptr) \
47.36804 ++  BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
47.36805 ++#define bfd_put_signed_32 \
47.36806 ++  bfd_put_32
47.36807 ++#define bfd_get_32(abfd, ptr) \
47.36808 ++  BFD_SEND (abfd, bfd_getx32, (ptr))
47.36809 ++#define bfd_get_signed_32(abfd, ptr) \
47.36810 ++  BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
47.36811 ++
47.36812 ++#define bfd_put_64(abfd, val, ptr) \
47.36813 ++  BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
47.36814 ++#define bfd_put_signed_64 \
47.36815 ++  bfd_put_64
47.36816 ++#define bfd_get_64(abfd, ptr) \
47.36817 ++  BFD_SEND (abfd, bfd_getx64, (ptr))
47.36818 ++#define bfd_get_signed_64(abfd, ptr) \
47.36819 ++  BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
47.36820 ++
47.36821 ++#define bfd_get(bits, abfd, ptr)                       \
47.36822 ++  ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
47.36823 ++   : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
47.36824 ++   : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
47.36825 ++   : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
47.36826 ++   : (abort (), (bfd_vma) - 1))
47.36827 ++
47.36828 ++#define bfd_put(bits, abfd, val, ptr)                  \
47.36829 ++  ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \
47.36830 ++   : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)                \
47.36831 ++   : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)                \
47.36832 ++   : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)                \
47.36833 ++   : (abort (), (void) 0))
47.36834 ++
47.36835 ++
47.36836 ++/* Byte swapping macros for file header data.  */
47.36837 ++
47.36838 ++#define bfd_h_put_8(abfd, val, ptr) \
47.36839 ++  bfd_put_8 (abfd, val, ptr)
47.36840 ++#define bfd_h_put_signed_8(abfd, val, ptr) \
47.36841 ++  bfd_put_8 (abfd, val, ptr)
47.36842 ++#define bfd_h_get_8(abfd, ptr) \
47.36843 ++  bfd_get_8 (abfd, ptr)
47.36844 ++#define bfd_h_get_signed_8(abfd, ptr) \
47.36845 ++  bfd_get_signed_8 (abfd, ptr)
47.36846 ++
47.36847 ++#define bfd_h_put_16(abfd, val, ptr) \
47.36848 ++  BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
47.36849 ++#define bfd_h_put_signed_16 \
47.36850 ++  bfd_h_put_16
47.36851 ++#define bfd_h_get_16(abfd, ptr) \
47.36852 ++  BFD_SEND (abfd, bfd_h_getx16, (ptr))
47.36853 ++#define bfd_h_get_signed_16(abfd, ptr) \
47.36854 ++  BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
47.36855 ++
47.36856 ++#define bfd_h_put_32(abfd, val, ptr) \
47.36857 ++  BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
47.36858 ++#define bfd_h_put_signed_32 \
47.36859 ++  bfd_h_put_32
47.36860 ++#define bfd_h_get_32(abfd, ptr) \
47.36861 ++  BFD_SEND (abfd, bfd_h_getx32, (ptr))
47.36862 ++#define bfd_h_get_signed_32(abfd, ptr) \
47.36863 ++  BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
47.36864 ++
47.36865 ++#define bfd_h_put_64(abfd, val, ptr) \
47.36866 ++  BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
47.36867 ++#define bfd_h_put_signed_64 \
47.36868 ++  bfd_h_put_64
47.36869 ++#define bfd_h_get_64(abfd, ptr) \
47.36870 ++  BFD_SEND (abfd, bfd_h_getx64, (ptr))
47.36871 ++#define bfd_h_get_signed_64(abfd, ptr) \
47.36872 ++  BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
47.36873 ++
47.36874 ++/* Aliases for the above, which should eventually go away.  */
47.36875 ++
47.36876 ++#define H_PUT_64  bfd_h_put_64
47.36877 ++#define H_PUT_32  bfd_h_put_32
47.36878 ++#define H_PUT_16  bfd_h_put_16
47.36879 ++#define H_PUT_8   bfd_h_put_8
47.36880 ++#define H_PUT_S64 bfd_h_put_signed_64
47.36881 ++#define H_PUT_S32 bfd_h_put_signed_32
47.36882 ++#define H_PUT_S16 bfd_h_put_signed_16
47.36883 ++#define H_PUT_S8  bfd_h_put_signed_8
47.36884 ++#define H_GET_64  bfd_h_get_64
47.36885 ++#define H_GET_32  bfd_h_get_32
47.36886 ++#define H_GET_16  bfd_h_get_16
47.36887 ++#define H_GET_8   bfd_h_get_8
47.36888 ++#define H_GET_S64 bfd_h_get_signed_64
47.36889 ++#define H_GET_S32 bfd_h_get_signed_32
47.36890 ++#define H_GET_S16 bfd_h_get_signed_16
47.36891 ++#define H_GET_S8  bfd_h_get_signed_8
47.36892 ++
47.36893 ++
47.36894 ++/* Extracted from bfdio.c.  */
47.36895 ++long bfd_get_mtime (bfd *abfd);
47.36896 ++
47.36897 ++file_ptr bfd_get_size (bfd *abfd);
47.36898 ++
47.36899 ++/* Extracted from bfdwin.c.  */
47.36900 ++/* Extracted from section.c.  */
47.36901 ++typedef struct bfd_section
47.36902 ++{
47.36903 ++  /* The name of the section; the name isn't a copy, the pointer is
47.36904 ++     the same as that passed to bfd_make_section.  */
47.36905 ++  const char *name;
47.36906 ++
47.36907 ++  /* A unique sequence number.  */
47.36908 ++  int id;
47.36909 ++
47.36910 ++  /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
47.36911 ++  int index;
47.36912 ++
47.36913 ++  /* The next section in the list belonging to the BFD, or NULL.  */
47.36914 ++  struct bfd_section *next;
47.36915 ++
47.36916 ++  /* The previous section in the list belonging to the BFD, or NULL.  */
47.36917 ++  struct bfd_section *prev;
47.36918 ++
47.36919 ++  /* The field flags contains attributes of the section. Some
47.36920 ++     flags are read in from the object file, and some are
47.36921 ++     synthesized from other information.  */
47.36922 ++  flagword flags;
47.36923 ++
47.36924 ++#define SEC_NO_FLAGS   0x000
47.36925 ++
47.36926 ++  /* Tells the OS to allocate space for this section when loading.
47.36927 ++     This is clear for a section containing debug information only.  */
47.36928 ++#define SEC_ALLOC      0x001
47.36929 ++
47.36930 ++  /* Tells the OS to load the section from the file when loading.
47.36931 ++     This is clear for a .bss section.  */
47.36932 ++#define SEC_LOAD       0x002
47.36933 ++
47.36934 ++  /* The section contains data still to be relocated, so there is
47.36935 ++     some relocation information too.  */
47.36936 ++#define SEC_RELOC      0x004
47.36937 ++
47.36938 ++  /* A signal to the OS that the section contains read only data.  */
47.36939 ++#define SEC_READONLY   0x008
47.36940 ++
47.36941 ++  /* The section contains code only.  */
47.36942 ++#define SEC_CODE       0x010
47.36943 ++
47.36944 ++  /* The section contains data only.  */
47.36945 ++#define SEC_DATA       0x020
47.36946 ++
47.36947 ++  /* The section will reside in ROM.  */
47.36948 ++#define SEC_ROM        0x040
47.36949 ++
47.36950 ++  /* The section contains constructor information. This section
47.36951 ++     type is used by the linker to create lists of constructors and
47.36952 ++     destructors used by <<g++>>. When a back end sees a symbol
47.36953 ++     which should be used in a constructor list, it creates a new
47.36954 ++     section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
47.36955 ++     the symbol to it, and builds a relocation. To build the lists
47.36956 ++     of constructors, all the linker has to do is catenate all the
47.36957 ++     sections called <<__CTOR_LIST__>> and relocate the data
47.36958 ++     contained within - exactly the operations it would peform on
47.36959 ++     standard data.  */
47.36960 ++#define SEC_CONSTRUCTOR 0x080
47.36961 ++
47.36962 ++  /* The section has contents - a data section could be
47.36963 ++     <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
47.36964 ++     <<SEC_HAS_CONTENTS>>  */
47.36965 ++#define SEC_HAS_CONTENTS 0x100
47.36966 ++
47.36967 ++  /* An instruction to the linker to not output the section
47.36968 ++     even if it has information which would normally be written.  */
47.36969 ++#define SEC_NEVER_LOAD 0x200
47.36970 ++
47.36971 ++  /* The section contains thread local data.  */
47.36972 ++#define SEC_THREAD_LOCAL 0x400
47.36973 ++
47.36974 ++  /* The section has GOT references.  This flag is only for the
47.36975 ++     linker, and is currently only used by the elf32-hppa back end.
47.36976 ++     It will be set if global offset table references were detected
47.36977 ++     in this section, which indicate to the linker that the section
47.36978 ++     contains PIC code, and must be handled specially when doing a
47.36979 ++     static link.  */
47.36980 ++#define SEC_HAS_GOT_REF 0x800
47.36981 ++
47.36982 ++  /* The section contains common symbols (symbols may be defined
47.36983 ++     multiple times, the value of a symbol is the amount of
47.36984 ++     space it requires, and the largest symbol value is the one
47.36985 ++     used).  Most targets have exactly one of these (which we
47.36986 ++     translate to bfd_com_section_ptr), but ECOFF has two.  */
47.36987 ++#define SEC_IS_COMMON 0x1000
47.36988 ++
47.36989 ++  /* The section contains only debugging information.  For
47.36990 ++     example, this is set for ELF .debug and .stab sections.
47.36991 ++     strip tests this flag to see if a section can be
47.36992 ++     discarded.  */
47.36993 ++#define SEC_DEBUGGING 0x2000
47.36994 ++
47.36995 ++  /* The contents of this section are held in memory pointed to
47.36996 ++     by the contents field.  This is checked by bfd_get_section_contents,
47.36997 ++     and the data is retrieved from memory if appropriate.  */
47.36998 ++#define SEC_IN_MEMORY 0x4000
47.36999 ++
47.37000 ++  /* The contents of this section are to be excluded by the
47.37001 ++     linker for executable and shared objects unless those
47.37002 ++     objects are to be further relocated.  */
47.37003 ++#define SEC_EXCLUDE 0x8000
47.37004 ++
47.37005 ++  /* The contents of this section are to be sorted based on the sum of
47.37006 ++     the symbol and addend values specified by the associated relocation
47.37007 ++     entries.  Entries without associated relocation entries will be
47.37008 ++     appended to the end of the section in an unspecified order.  */
47.37009 ++#define SEC_SORT_ENTRIES 0x10000
47.37010 ++
47.37011 ++  /* When linking, duplicate sections of the same name should be
47.37012 ++     discarded, rather than being combined into a single section as
47.37013 ++     is usually done.  This is similar to how common symbols are
47.37014 ++     handled.  See SEC_LINK_DUPLICATES below.  */
47.37015 ++#define SEC_LINK_ONCE 0x20000
47.37016 ++
47.37017 ++  /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
47.37018 ++     should handle duplicate sections.  */
47.37019 ++#define SEC_LINK_DUPLICATES 0x40000
47.37020 ++
47.37021 ++  /* This value for SEC_LINK_DUPLICATES means that duplicate
47.37022 ++     sections with the same name should simply be discarded.  */
47.37023 ++#define SEC_LINK_DUPLICATES_DISCARD 0x0
47.37024 ++
47.37025 ++  /* This value for SEC_LINK_DUPLICATES means that the linker
47.37026 ++     should warn if there are any duplicate sections, although
47.37027 ++     it should still only link one copy.  */
47.37028 ++#define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
47.37029 ++
47.37030 ++  /* This value for SEC_LINK_DUPLICATES means that the linker
47.37031 ++     should warn if any duplicate sections are a different size.  */
47.37032 ++#define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
47.37033 ++
47.37034 ++  /* This value for SEC_LINK_DUPLICATES means that the linker
47.37035 ++     should warn if any duplicate sections contain different
47.37036 ++     contents.  */
47.37037 ++#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
47.37038 ++  (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
47.37039 ++
47.37040 ++  /* This section was created by the linker as part of dynamic
47.37041 ++     relocation or other arcane processing.  It is skipped when
47.37042 ++     going through the first-pass output, trusting that someone
47.37043 ++     else up the line will take care of it later.  */
47.37044 ++#define SEC_LINKER_CREATED 0x200000
47.37045 ++
47.37046 ++  /* This section should not be subject to garbage collection.
47.37047 ++     Also set to inform the linker that this section should not be
47.37048 ++     listed in the link map as discarded.  */
47.37049 ++#define SEC_KEEP 0x400000
47.37050 ++
47.37051 ++  /* This section contains "short" data, and should be placed
47.37052 ++     "near" the GP.  */
47.37053 ++#define SEC_SMALL_DATA 0x800000
47.37054 ++
47.37055 ++  /* Attempt to merge identical entities in the section.
47.37056 ++     Entity size is given in the entsize field.  */
47.37057 ++#define SEC_MERGE 0x1000000
47.37058 ++
47.37059 ++  /* If given with SEC_MERGE, entities to merge are zero terminated
47.37060 ++     strings where entsize specifies character size instead of fixed
47.37061 ++     size entries.  */
47.37062 ++#define SEC_STRINGS 0x2000000
47.37063 ++
47.37064 ++  /* This section contains data about section groups.  */
47.37065 ++#define SEC_GROUP 0x4000000
47.37066 ++
47.37067 ++  /* The section is a COFF shared library section.  This flag is
47.37068 ++     only for the linker.  If this type of section appears in
47.37069 ++     the input file, the linker must copy it to the output file
47.37070 ++     without changing the vma or size.  FIXME: Although this
47.37071 ++     was originally intended to be general, it really is COFF
47.37072 ++     specific (and the flag was renamed to indicate this).  It
47.37073 ++     might be cleaner to have some more general mechanism to
47.37074 ++     allow the back end to control what the linker does with
47.37075 ++     sections.  */
47.37076 ++#define SEC_COFF_SHARED_LIBRARY 0x10000000
47.37077 ++
47.37078 ++  /* This section contains data which may be shared with other
47.37079 ++     executables or shared objects. This is for COFF only.  */
47.37080 ++#define SEC_COFF_SHARED 0x20000000
47.37081 ++
47.37082 ++  /* When a section with this flag is being linked, then if the size of
47.37083 ++     the input section is less than a page, it should not cross a page
47.37084 ++     boundary.  If the size of the input section is one page or more,
47.37085 ++     it should be aligned on a page boundary.  This is for TI
47.37086 ++     TMS320C54X only.  */
47.37087 ++#define SEC_TIC54X_BLOCK 0x40000000
47.37088 ++
47.37089 ++  /* Conditionally link this section; do not link if there are no
47.37090 ++     references found to any symbol in the section.  This is for TI
47.37091 ++     TMS320C54X only.  */
47.37092 ++#define SEC_TIC54X_CLINK 0x80000000
47.37093 ++
47.37094 ++  /*  End of section flags.  */
47.37095 ++
47.37096 ++  /* Some internal packed boolean fields.  */
47.37097 ++
47.37098 ++  /* See the vma field.  */
47.37099 ++  unsigned int user_set_vma : 1;
47.37100 ++
47.37101 ++  /* A mark flag used by some of the linker backends.  */
47.37102 ++  unsigned int linker_mark : 1;
47.37103 ++
47.37104 ++  /* Another mark flag used by some of the linker backends.  Set for
47.37105 ++     output sections that have an input section.  */
47.37106 ++  unsigned int linker_has_input : 1;
47.37107 ++
47.37108 ++  /* Mark flags used by some linker backends for garbage collection.  */
47.37109 ++  unsigned int gc_mark : 1;
47.37110 ++  unsigned int gc_mark_from_eh : 1;
47.37111 ++
47.37112 ++  /* The following flags are used by the ELF linker. */
47.37113 ++
47.37114 ++  /* Mark sections which have been allocated to segments.  */
47.37115 ++  unsigned int segment_mark : 1;
47.37116 ++
47.37117 ++  /* Type of sec_info information.  */
47.37118 ++  unsigned int sec_info_type:3;
47.37119 ++#define ELF_INFO_TYPE_NONE      0
47.37120 ++#define ELF_INFO_TYPE_STABS     1
47.37121 ++#define ELF_INFO_TYPE_MERGE     2
47.37122 ++#define ELF_INFO_TYPE_EH_FRAME  3
47.37123 ++#define ELF_INFO_TYPE_JUST_SYMS 4
47.37124 ++
47.37125 ++  /* Nonzero if this section uses RELA relocations, rather than REL.  */
47.37126 ++  unsigned int use_rela_p:1;
47.37127 ++
47.37128 ++  /* Bits used by various backends.  The generic code doesn't touch
47.37129 ++     these fields.  */
47.37130 ++
47.37131 ++  /* Nonzero if this section has TLS related relocations.  */
47.37132 ++  unsigned int has_tls_reloc:1;
47.37133 ++
47.37134 ++  /* Nonzero if this section has a gp reloc.  */
47.37135 ++  unsigned int has_gp_reloc:1;
47.37136 ++
47.37137 ++  /* Nonzero if this section needs the relax finalize pass.  */
47.37138 ++  unsigned int need_finalize_relax:1;
47.37139 ++
47.37140 ++  /* Whether relocations have been processed.  */
47.37141 ++  unsigned int reloc_done : 1;
47.37142 ++
47.37143 ++  /* End of internal packed boolean fields.  */
47.37144 ++
47.37145 ++  /*  The virtual memory address of the section - where it will be
47.37146 ++      at run time.  The symbols are relocated against this.  The
47.37147 ++      user_set_vma flag is maintained by bfd; if it's not set, the
47.37148 ++      backend can assign addresses (for example, in <<a.out>>, where
47.37149 ++      the default address for <<.data>> is dependent on the specific
47.37150 ++      target and various flags).  */
47.37151 ++  bfd_vma vma;
47.37152 ++
47.37153 ++  /*  The load address of the section - where it would be in a
47.37154 ++      rom image; really only used for writing section header
47.37155 ++      information.  */
47.37156 ++  bfd_vma lma;
47.37157 ++
47.37158 ++  /* The size of the section in octets, as it will be output.
47.37159 ++     Contains a value even if the section has no contents (e.g., the
47.37160 ++     size of <<.bss>>).  */
47.37161 ++  bfd_size_type size;
47.37162 ++
47.37163 ++  /* For input sections, the original size on disk of the section, in
47.37164 ++     octets.  This field is used by the linker relaxation code.  It is
47.37165 ++     currently only set for sections where the linker relaxation scheme
47.37166 ++     doesn't cache altered section and reloc contents (stabs, eh_frame,
47.37167 ++     SEC_MERGE, some coff relaxing targets), and thus the original size
47.37168 ++     needs to be kept to read the section multiple times.
47.37169 ++     For output sections, rawsize holds the section size calculated on
47.37170 ++     a previous linker relaxation pass.  */
47.37171 ++  bfd_size_type rawsize;
47.37172 ++
47.37173 ++  /* If this section is going to be output, then this value is the
47.37174 ++     offset in *bytes* into the output section of the first byte in the
47.37175 ++     input section (byte ==> smallest addressable unit on the
47.37176 ++     target).  In most cases, if this was going to start at the
47.37177 ++     100th octet (8-bit quantity) in the output section, this value
47.37178 ++     would be 100.  However, if the target byte size is 16 bits
47.37179 ++     (bfd_octets_per_byte is "2"), this value would be 50.  */
47.37180 ++  bfd_vma output_offset;
47.37181 ++
47.37182 ++  /* The output section through which to map on output.  */
47.37183 ++  struct bfd_section *output_section;
47.37184 ++
47.37185 ++  /* The alignment requirement of the section, as an exponent of 2 -
47.37186 ++     e.g., 3 aligns to 2^3 (or 8).  */
47.37187 ++  unsigned int alignment_power;
47.37188 ++
47.37189 ++  /* If an input section, a pointer to a vector of relocation
47.37190 ++     records for the data in this section.  */
47.37191 ++  struct reloc_cache_entry *relocation;
47.37192 ++
47.37193 ++  /* If an output section, a pointer to a vector of pointers to
47.37194 ++     relocation records for the data in this section.  */
47.37195 ++  struct reloc_cache_entry **orelocation;
47.37196 ++
47.37197 ++  /* The number of relocation records in one of the above.  */
47.37198 ++  unsigned reloc_count;
47.37199 ++
47.37200 ++  /* Information below is back end specific - and not always used
47.37201 ++     or updated.  */
47.37202 ++
47.37203 ++  /* File position of section data.  */
47.37204 ++  file_ptr filepos;
47.37205 ++
47.37206 ++  /* File position of relocation info.  */
47.37207 ++  file_ptr rel_filepos;
47.37208 ++
47.37209 ++  /* File position of line data.  */
47.37210 ++  file_ptr line_filepos;
47.37211 ++
47.37212 ++  /* Pointer to data for applications.  */
47.37213 ++  void *userdata;
47.37214 ++
47.37215 ++  /* If the SEC_IN_MEMORY flag is set, this points to the actual
47.37216 ++     contents.  */
47.37217 ++  unsigned char *contents;
47.37218 ++
47.37219 ++  /* Attached line number information.  */
47.37220 ++  alent *lineno;
47.37221 ++
47.37222 ++  /* Number of line number records.  */
47.37223 ++  unsigned int lineno_count;
47.37224 ++
47.37225 ++  /* Entity size for merging purposes.  */
47.37226 ++  unsigned int entsize;
47.37227 ++
47.37228 ++  /* Points to the kept section if this section is a link-once section,
47.37229 ++     and is discarded.  */
47.37230 ++  struct bfd_section *kept_section;
47.37231 ++
47.37232 ++  /* When a section is being output, this value changes as more
47.37233 ++     linenumbers are written out.  */
47.37234 ++  file_ptr moving_line_filepos;
47.37235 ++
47.37236 ++  /* What the section number is in the target world.  */
47.37237 ++  int target_index;
47.37238 ++
47.37239 ++  void *used_by_bfd;
47.37240 ++
47.37241 ++  /* If this is a constructor section then here is a list of the
47.37242 ++     relocations created to relocate items within it.  */
47.37243 ++  struct relent_chain *constructor_chain;
47.37244 ++
47.37245 ++  /* The BFD which owns the section.  */
47.37246 ++  bfd *owner;
47.37247 ++
47.37248 ++  /* A symbol which points at this section only.  */
47.37249 ++  struct bfd_symbol *symbol;
47.37250 ++  struct bfd_symbol **symbol_ptr_ptr;
47.37251 ++
47.37252 ++  /* Early in the link process, map_head and map_tail are used to build
47.37253 ++     a list of input sections attached to an output section.  Later,
47.37254 ++     output sections use these fields for a list of bfd_link_order
47.37255 ++     structs.  */
47.37256 ++  union {
47.37257 ++    struct bfd_link_order *link_order;
47.37258 ++    struct bfd_section *s;
47.37259 ++  } map_head, map_tail;
47.37260 ++} asection;
47.37261 ++
47.37262 ++/* These sections are global, and are managed by BFD.  The application
47.37263 ++   and target back end are not permitted to change the values in
47.37264 ++   these sections.  New code should use the section_ptr macros rather
47.37265 ++   than referring directly to the const sections.  The const sections
47.37266 ++   may eventually vanish.  */
47.37267 ++#define BFD_ABS_SECTION_NAME "*ABS*"
47.37268 ++#define BFD_UND_SECTION_NAME "*UND*"
47.37269 ++#define BFD_COM_SECTION_NAME "*COM*"
47.37270 ++#define BFD_IND_SECTION_NAME "*IND*"
47.37271 ++
47.37272 ++/* The absolute section.  */
47.37273 ++extern asection bfd_abs_section;
47.37274 ++#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
47.37275 ++#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
47.37276 ++/* Pointer to the undefined section.  */
47.37277 ++extern asection bfd_und_section;
47.37278 ++#define bfd_und_section_ptr ((asection *) &bfd_und_section)
47.37279 ++#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
47.37280 ++/* Pointer to the common section.  */
47.37281 ++extern asection bfd_com_section;
47.37282 ++#define bfd_com_section_ptr ((asection *) &bfd_com_section)
47.37283 ++/* Pointer to the indirect section.  */
47.37284 ++extern asection bfd_ind_section;
47.37285 ++#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
47.37286 ++#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
47.37287 ++
47.37288 ++#define bfd_is_const_section(SEC)              \
47.37289 ++ (   ((SEC) == bfd_abs_section_ptr)            \
47.37290 ++  || ((SEC) == bfd_und_section_ptr)            \
47.37291 ++  || ((SEC) == bfd_com_section_ptr)            \
47.37292 ++  || ((SEC) == bfd_ind_section_ptr))
47.37293 ++
47.37294 ++/* Macros to handle insertion and deletion of a bfd's sections.  These
47.37295 ++   only handle the list pointers, ie. do not adjust section_count,
47.37296 ++   target_index etc.  */
47.37297 ++#define bfd_section_list_remove(ABFD, S) \
47.37298 ++  do                                                   \
47.37299 ++    {                                                  \
47.37300 ++      asection *_s = S;                                \
47.37301 ++      asection *_next = _s->next;                      \
47.37302 ++      asection *_prev = _s->prev;                      \
47.37303 ++      if (_prev)                                       \
47.37304 ++        _prev->next = _next;                           \
47.37305 ++      else                                             \
47.37306 ++        (ABFD)->sections = _next;                      \
47.37307 ++      if (_next)                                       \
47.37308 ++        _next->prev = _prev;                           \
47.37309 ++      else                                             \
47.37310 ++        (ABFD)->section_last = _prev;                  \
47.37311 ++    }                                                  \
47.37312 ++  while (0)
47.37313 ++#define bfd_section_list_append(ABFD, S) \
47.37314 ++  do                                                   \
47.37315 ++    {                                                  \
47.37316 ++      asection *_s = S;                                \
47.37317 ++      bfd *_abfd = ABFD;                               \
47.37318 ++      _s->next = NULL;                                 \
47.37319 ++      if (_abfd->section_last)                         \
47.37320 ++        {                                              \
47.37321 ++          _s->prev = _abfd->section_last;              \
47.37322 ++          _abfd->section_last->next = _s;              \
47.37323 ++        }                                              \
47.37324 ++      else                                             \
47.37325 ++        {                                              \
47.37326 ++          _s->prev = NULL;                             \
47.37327 ++          _abfd->sections = _s;                        \
47.37328 ++        }                                              \
47.37329 ++      _abfd->section_last = _s;                        \
47.37330 ++    }                                                  \
47.37331 ++  while (0)
47.37332 ++#define bfd_section_list_prepend(ABFD, S) \
47.37333 ++  do                                                   \
47.37334 ++    {                                                  \
47.37335 ++      asection *_s = S;                                \
47.37336 ++      bfd *_abfd = ABFD;                               \
47.37337 ++      _s->prev = NULL;                                 \
47.37338 ++      if (_abfd->sections)                             \
47.37339 ++        {                                              \
47.37340 ++          _s->next = _abfd->sections;                  \
47.37341 ++          _abfd->sections->prev = _s;                  \
47.37342 ++        }                                              \
47.37343 ++      else                                             \
47.37344 ++        {                                              \
47.37345 ++          _s->next = NULL;                             \
47.37346 ++          _abfd->section_last = _s;                    \
47.37347 ++        }                                              \
47.37348 ++      _abfd->sections = _s;                            \
47.37349 ++    }                                                  \
47.37350 ++  while (0)
47.37351 ++#define bfd_section_list_insert_after(ABFD, A, S) \
47.37352 ++  do                                                   \
47.37353 ++    {                                                  \
47.37354 ++      asection *_a = A;                                \
47.37355 ++      asection *_s = S;                                \
47.37356 ++      asection *_next = _a->next;                      \
47.37357 ++      _s->next = _next;                                \
47.37358 ++      _s->prev = _a;                                   \
47.37359 ++      _a->next = _s;                                   \
47.37360 ++      if (_next)                                       \
47.37361 ++        _next->prev = _s;                              \
47.37362 ++      else                                             \
47.37363 ++        (ABFD)->section_last = _s;                     \
47.37364 ++    }                                                  \
47.37365 ++  while (0)
47.37366 ++#define bfd_section_list_insert_before(ABFD, B, S) \
47.37367 ++  do                                                   \
47.37368 ++    {                                                  \
47.37369 ++      asection *_b = B;                                \
47.37370 ++      asection *_s = S;                                \
47.37371 ++      asection *_prev = _b->prev;                      \
47.37372 ++      _s->prev = _prev;                                \
47.37373 ++      _s->next = _b;                                   \
47.37374 ++      _b->prev = _s;                                   \
47.37375 ++      if (_prev)                                       \
47.37376 ++        _prev->next = _s;                              \
47.37377 ++      else                                             \
47.37378 ++        (ABFD)->sections = _s;                         \
47.37379 ++    }                                                  \
47.37380 ++  while (0)
47.37381 ++#define bfd_section_removed_from_list(ABFD, S) \
47.37382 ++  ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
47.37383 ++
47.37384 ++#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX)                   \
47.37385 ++  /* name, id,  index, next, prev, flags, user_set_vma,            */  \
47.37386 ++  { NAME,  IDX, 0,     NULL, NULL, FLAGS, 0,                           \
47.37387 ++                                                                       \
47.37388 ++  /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh,      */  \
47.37389 ++     0,           0,                1,       0,                        \
47.37390 ++                                                                       \
47.37391 ++  /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc,       */  \
47.37392 ++     0,            0,             0,          0,                       \
47.37393 ++                                                                       \
47.37394 ++  /* has_gp_reloc, need_finalize_relax, reloc_done,                */  \
47.37395 ++     0,            0,                   0,                             \
47.37396 ++                                                                       \
47.37397 ++  /* vma, lma, size, rawsize                                       */  \
47.37398 ++     0,   0,   0,    0,                                                \
47.37399 ++                                                                       \
47.37400 ++  /* output_offset, output_section,              alignment_power,  */  \
47.37401 ++     0,             (struct bfd_section *) &SEC, 0,                    \
47.37402 ++                                                                       \
47.37403 ++  /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
47.37404 ++     NULL,       NULL,        0,           0,       0,                 \
47.37405 ++                                                                       \
47.37406 ++  /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
47.37407 ++     0,            NULL,     NULL,     NULL,   0,                      \
47.37408 ++                                                                       \
47.37409 ++  /* entsize, kept_section, moving_line_filepos,                    */ \
47.37410 ++     0,       NULL,          0,                                        \
47.37411 ++                                                                       \
47.37412 ++  /* target_index, used_by_bfd, constructor_chain, owner,          */  \
47.37413 ++     0,            NULL,        NULL,              NULL,               \
47.37414 ++                                                                       \
47.37415 ++  /* symbol,                    symbol_ptr_ptr,                    */  \
47.37416 ++     (struct bfd_symbol *) SYM, &SEC.symbol,                           \
47.37417 ++                                                                       \
47.37418 ++  /* map_head, map_tail                                            */  \
47.37419 ++     { NULL }, { NULL }                                                \
47.37420 ++    }
47.37421 ++
47.37422 ++void bfd_section_list_clear (bfd *);
47.37423 ++
47.37424 ++asection *bfd_get_section_by_name (bfd *abfd, const char *name);
47.37425 ++
47.37426 ++asection *bfd_get_section_by_name_if
47.37427 ++   (bfd *abfd,
47.37428 ++    const char *name,
47.37429 ++    bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
47.37430 ++    void *obj);
47.37431 ++
47.37432 ++char *bfd_get_unique_section_name
47.37433 ++   (bfd *abfd, const char *templat, int *count);
47.37434 ++
47.37435 ++asection *bfd_make_section_old_way (bfd *abfd, const char *name);
47.37436 ++
47.37437 ++asection *bfd_make_section_anyway_with_flags
47.37438 ++   (bfd *abfd, const char *name, flagword flags);
47.37439 ++
47.37440 ++asection *bfd_make_section_anyway (bfd *abfd, const char *name);
47.37441 ++
47.37442 ++asection *bfd_make_section_with_flags
47.37443 ++   (bfd *, const char *name, flagword flags);
47.37444 ++
47.37445 ++asection *bfd_make_section (bfd *, const char *name);
47.37446 ++
47.37447 ++bfd_boolean bfd_set_section_flags
47.37448 ++   (bfd *abfd, asection *sec, flagword flags);
47.37449 ++
47.37450 ++void bfd_map_over_sections
47.37451 ++   (bfd *abfd,
47.37452 ++    void (*func) (bfd *abfd, asection *sect, void *obj),
47.37453 ++    void *obj);
47.37454 ++
47.37455 ++asection *bfd_sections_find_if
47.37456 ++   (bfd *abfd,
47.37457 ++    bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
47.37458 ++    void *obj);
47.37459 ++
47.37460 ++bfd_boolean bfd_set_section_size
47.37461 ++   (bfd *abfd, asection *sec, bfd_size_type val);
47.37462 ++
47.37463 ++bfd_boolean bfd_set_section_contents
47.37464 ++   (bfd *abfd, asection *section, const void *data,
47.37465 ++    file_ptr offset, bfd_size_type count);
47.37466 ++
47.37467 ++bfd_boolean bfd_get_section_contents
47.37468 ++   (bfd *abfd, asection *section, void *location, file_ptr offset,
47.37469 ++    bfd_size_type count);
47.37470 ++
47.37471 ++bfd_boolean bfd_malloc_and_get_section
47.37472 ++   (bfd *abfd, asection *section, bfd_byte **buf);
47.37473 ++
47.37474 ++bfd_boolean bfd_copy_private_section_data
47.37475 ++   (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
47.37476 ++
47.37477 ++#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
47.37478 ++     BFD_SEND (obfd, _bfd_copy_private_section_data, \
47.37479 ++               (ibfd, isection, obfd, osection))
47.37480 ++bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
47.37481 ++
47.37482 ++bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
47.37483 ++
47.37484 ++/* Extracted from archures.c.  */
47.37485 ++enum bfd_architecture
47.37486 ++{
47.37487 ++  bfd_arch_unknown,   /* File arch not known.  */
47.37488 ++  bfd_arch_obscure,   /* Arch known, not one of these.  */
47.37489 ++  bfd_arch_m68k,      /* Motorola 68xxx */
47.37490 ++#define bfd_mach_m68000 1
47.37491 ++#define bfd_mach_m68008 2
47.37492 ++#define bfd_mach_m68010 3
47.37493 ++#define bfd_mach_m68020 4
47.37494 ++#define bfd_mach_m68030 5
47.37495 ++#define bfd_mach_m68040 6
47.37496 ++#define bfd_mach_m68060 7
47.37497 ++#define bfd_mach_cpu32  8
47.37498 ++#define bfd_mach_fido   9
47.37499 ++#define bfd_mach_mcf_isa_a_nodiv 10
47.37500 ++#define bfd_mach_mcf_isa_a 11
47.37501 ++#define bfd_mach_mcf_isa_a_mac 12
47.37502 ++#define bfd_mach_mcf_isa_a_emac 13
47.37503 ++#define bfd_mach_mcf_isa_aplus 14
47.37504 ++#define bfd_mach_mcf_isa_aplus_mac 15
47.37505 ++#define bfd_mach_mcf_isa_aplus_emac 16
47.37506 ++#define bfd_mach_mcf_isa_b_nousp 17
47.37507 ++#define bfd_mach_mcf_isa_b_nousp_mac 18
47.37508 ++#define bfd_mach_mcf_isa_b_nousp_emac 19
47.37509 ++#define bfd_mach_mcf_isa_b 20
47.37510 ++#define bfd_mach_mcf_isa_b_mac 21
47.37511 ++#define bfd_mach_mcf_isa_b_emac 22
47.37512 ++#define bfd_mach_mcf_isa_b_float 23
47.37513 ++#define bfd_mach_mcf_isa_b_float_mac 24
47.37514 ++#define bfd_mach_mcf_isa_b_float_emac 25
47.37515 ++#define bfd_mach_mcf_isa_c 26
47.37516 ++#define bfd_mach_mcf_isa_c_mac 27
47.37517 ++#define bfd_mach_mcf_isa_c_emac 28
47.37518 ++  bfd_arch_vax,       /* DEC Vax */
47.37519 ++  bfd_arch_i960,      /* Intel 960 */
47.37520 ++    /* The order of the following is important.
47.37521 ++       lower number indicates a machine type that
47.37522 ++       only accepts a subset of the instructions
47.37523 ++       available to machines with higher numbers.
47.37524 ++       The exception is the "ca", which is
47.37525 ++       incompatible with all other machines except
47.37526 ++       "core".  */
47.37527 ++
47.37528 ++#define bfd_mach_i960_core      1
47.37529 ++#define bfd_mach_i960_ka_sa     2
47.37530 ++#define bfd_mach_i960_kb_sb     3
47.37531 ++#define bfd_mach_i960_mc        4
47.37532 ++#define bfd_mach_i960_xa        5
47.37533 ++#define bfd_mach_i960_ca        6
47.37534 ++#define bfd_mach_i960_jx        7
47.37535 ++#define bfd_mach_i960_hx        8
47.37536 ++
47.37537 ++  bfd_arch_or32,      /* OpenRISC 32 */
47.37538 ++
47.37539 ++  bfd_arch_sparc,     /* SPARC */
47.37540 ++#define bfd_mach_sparc                 1
47.37541 ++/* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
47.37542 ++#define bfd_mach_sparc_sparclet        2
47.37543 ++#define bfd_mach_sparc_sparclite       3
47.37544 ++#define bfd_mach_sparc_v8plus          4
47.37545 ++#define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */
47.37546 ++#define bfd_mach_sparc_sparclite_le    6
47.37547 ++#define bfd_mach_sparc_v9              7
47.37548 ++#define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
47.37549 ++#define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
47.37550 ++#define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
47.37551 ++/* Nonzero if MACH has the v9 instruction set.  */
47.37552 ++#define bfd_mach_sparc_v9_p(mach) \
47.37553 ++  ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
47.37554 ++   && (mach) != bfd_mach_sparc_sparclite_le)
47.37555 ++/* Nonzero if MACH is a 64 bit sparc architecture.  */
47.37556 ++#define bfd_mach_sparc_64bit_p(mach) \
47.37557 ++  ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
47.37558 ++  bfd_arch_spu,       /* PowerPC SPU */
47.37559 ++#define bfd_mach_spu           256 
47.37560 ++  bfd_arch_mips,      /* MIPS Rxxxx */
47.37561 ++#define bfd_mach_mips3000              3000
47.37562 ++#define bfd_mach_mips3900              3900
47.37563 ++#define bfd_mach_mips4000              4000
47.37564 ++#define bfd_mach_mips4010              4010
47.37565 ++#define bfd_mach_mips4100              4100
47.37566 ++#define bfd_mach_mips4111              4111
47.37567 ++#define bfd_mach_mips4120              4120
47.37568 ++#define bfd_mach_mips4300              4300
47.37569 ++#define bfd_mach_mips4400              4400
47.37570 ++#define bfd_mach_mips4600              4600
47.37571 ++#define bfd_mach_mips4650              4650
47.37572 ++#define bfd_mach_mips5000              5000
47.37573 ++#define bfd_mach_mips5400              5400
47.37574 ++#define bfd_mach_mips5500              5500
47.37575 ++#define bfd_mach_mips6000              6000
47.37576 ++#define bfd_mach_mips7000              7000
47.37577 ++#define bfd_mach_mips8000              8000
47.37578 ++#define bfd_mach_mips9000              9000
47.37579 ++#define bfd_mach_mips10000             10000
47.37580 ++#define bfd_mach_mips12000             12000
47.37581 ++#define bfd_mach_mips16                16
47.37582 ++#define bfd_mach_mips5                 5
47.37583 ++#define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */
47.37584 ++#define bfd_mach_mipsisa32             32
47.37585 ++#define bfd_mach_mipsisa32r2           33
47.37586 ++#define bfd_mach_mipsisa64             64
47.37587 ++#define bfd_mach_mipsisa64r2           65
47.37588 ++  bfd_arch_i386,      /* Intel 386 */
47.37589 ++#define bfd_mach_i386_i386 1
47.37590 ++#define bfd_mach_i386_i8086 2
47.37591 ++#define bfd_mach_i386_i386_intel_syntax 3
47.37592 ++#define bfd_mach_x86_64 64
47.37593 ++#define bfd_mach_x86_64_intel_syntax 65
47.37594 ++  bfd_arch_we32k,     /* AT&T WE32xxx */
47.37595 ++  bfd_arch_tahoe,     /* CCI/Harris Tahoe */
47.37596 ++  bfd_arch_i860,      /* Intel 860 */
47.37597 ++  bfd_arch_i370,      /* IBM 360/370 Mainframes */
47.37598 ++  bfd_arch_romp,      /* IBM ROMP PC/RT */
47.37599 ++  bfd_arch_convex,    /* Convex */
47.37600 ++  bfd_arch_m88k,      /* Motorola 88xxx */
47.37601 ++  bfd_arch_m98k,      /* Motorola 98xxx */
47.37602 ++  bfd_arch_pyramid,   /* Pyramid Technology */
47.37603 ++  bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */
47.37604 ++#define bfd_mach_h8300    1
47.37605 ++#define bfd_mach_h8300h   2
47.37606 ++#define bfd_mach_h8300s   3
47.37607 ++#define bfd_mach_h8300hn  4
47.37608 ++#define bfd_mach_h8300sn  5
47.37609 ++#define bfd_mach_h8300sx  6
47.37610 ++#define bfd_mach_h8300sxn 7
47.37611 ++  bfd_arch_pdp11,     /* DEC PDP-11 */
47.37612 ++  bfd_arch_powerpc,   /* PowerPC */
47.37613 ++#define bfd_mach_ppc           32
47.37614 ++#define bfd_mach_ppc64         64
47.37615 ++#define bfd_mach_ppc_403       403
47.37616 ++#define bfd_mach_ppc_403gc     4030
47.37617 ++#define bfd_mach_ppc_505       505
47.37618 ++#define bfd_mach_ppc_601       601
47.37619 ++#define bfd_mach_ppc_602       602
47.37620 ++#define bfd_mach_ppc_603       603
47.37621 ++#define bfd_mach_ppc_ec603e    6031
47.37622 ++#define bfd_mach_ppc_604       604
47.37623 ++#define bfd_mach_ppc_620       620
47.37624 ++#define bfd_mach_ppc_630       630
47.37625 ++#define bfd_mach_ppc_750       750
47.37626 ++#define bfd_mach_ppc_860       860
47.37627 ++#define bfd_mach_ppc_a35       35
47.37628 ++#define bfd_mach_ppc_rs64ii    642
47.37629 ++#define bfd_mach_ppc_rs64iii   643
47.37630 ++#define bfd_mach_ppc_7400      7400
47.37631 ++#define bfd_mach_ppc_e500      500
47.37632 ++  bfd_arch_rs6000,    /* IBM RS/6000 */
47.37633 ++#define bfd_mach_rs6k          6000
47.37634 ++#define bfd_mach_rs6k_rs1      6001
47.37635 ++#define bfd_mach_rs6k_rsc      6003
47.37636 ++#define bfd_mach_rs6k_rs2      6002
47.37637 ++  bfd_arch_hppa,      /* HP PA RISC */
47.37638 ++#define bfd_mach_hppa10        10
47.37639 ++#define bfd_mach_hppa11        11
47.37640 ++#define bfd_mach_hppa20        20
47.37641 ++#define bfd_mach_hppa20w       25
47.37642 ++  bfd_arch_d10v,      /* Mitsubishi D10V */
47.37643 ++#define bfd_mach_d10v          1
47.37644 ++#define bfd_mach_d10v_ts2      2
47.37645 ++#define bfd_mach_d10v_ts3      3
47.37646 ++  bfd_arch_d30v,      /* Mitsubishi D30V */
47.37647 ++  bfd_arch_dlx,       /* DLX */
47.37648 ++  bfd_arch_m68hc11,   /* Motorola 68HC11 */
47.37649 ++  bfd_arch_m68hc12,   /* Motorola 68HC12 */
47.37650 ++#define bfd_mach_m6812_default 0
47.37651 ++#define bfd_mach_m6812         1
47.37652 ++#define bfd_mach_m6812s        2
47.37653 ++  bfd_arch_z8k,       /* Zilog Z8000 */
47.37654 ++#define bfd_mach_z8001         1
47.37655 ++#define bfd_mach_z8002         2
47.37656 ++  bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */
47.37657 ++  bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */
47.37658 ++#define bfd_mach_sh            1
47.37659 ++#define bfd_mach_sh2        0x20
47.37660 ++#define bfd_mach_sh_dsp     0x2d
47.37661 ++#define bfd_mach_sh2a       0x2a
47.37662 ++#define bfd_mach_sh2a_nofpu 0x2b
47.37663 ++#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
47.37664 ++#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
47.37665 ++#define bfd_mach_sh2a_or_sh4  0x2a3
47.37666 ++#define bfd_mach_sh2a_or_sh3e 0x2a4
47.37667 ++#define bfd_mach_sh2e       0x2e
47.37668 ++#define bfd_mach_sh3        0x30
47.37669 ++#define bfd_mach_sh3_nommu  0x31
47.37670 ++#define bfd_mach_sh3_dsp    0x3d
47.37671 ++#define bfd_mach_sh3e       0x3e
47.37672 ++#define bfd_mach_sh4        0x40
47.37673 ++#define bfd_mach_sh4_nofpu  0x41
47.37674 ++#define bfd_mach_sh4_nommu_nofpu  0x42
47.37675 ++#define bfd_mach_sh4a       0x4a
47.37676 ++#define bfd_mach_sh4a_nofpu 0x4b
47.37677 ++#define bfd_mach_sh4al_dsp  0x4d
47.37678 ++#define bfd_mach_sh5        0x50
47.37679 ++  bfd_arch_alpha,     /* Dec Alpha */
47.37680 ++#define bfd_mach_alpha_ev4  0x10
47.37681 ++#define bfd_mach_alpha_ev5  0x20
47.37682 ++#define bfd_mach_alpha_ev6  0x30
47.37683 ++  bfd_arch_arm,       /* Advanced Risc Machines ARM.  */
47.37684 ++#define bfd_mach_arm_unknown   0
47.37685 ++#define bfd_mach_arm_2         1
47.37686 ++#define bfd_mach_arm_2a        2
47.37687 ++#define bfd_mach_arm_3         3
47.37688 ++#define bfd_mach_arm_3M        4
47.37689 ++#define bfd_mach_arm_4         5
47.37690 ++#define bfd_mach_arm_4T        6
47.37691 ++#define bfd_mach_arm_5         7
47.37692 ++#define bfd_mach_arm_5T        8
47.37693 ++#define bfd_mach_arm_5TE       9
47.37694 ++#define bfd_mach_arm_XScale    10
47.37695 ++#define bfd_mach_arm_ep9312    11
47.37696 ++#define bfd_mach_arm_iWMMXt    12
47.37697 ++#define bfd_mach_arm_iWMMXt2   13
47.37698 ++  bfd_arch_ns32k,     /* National Semiconductors ns32000 */
47.37699 ++  bfd_arch_w65,       /* WDC 65816 */
47.37700 ++  bfd_arch_tic30,     /* Texas Instruments TMS320C30 */
47.37701 ++  bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */
47.37702 ++#define bfd_mach_tic3x         30
47.37703 ++#define bfd_mach_tic4x         40
47.37704 ++  bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */
47.37705 ++  bfd_arch_tic80,     /* TI TMS320c80 (MVP) */
47.37706 ++  bfd_arch_v850,      /* NEC V850 */
47.37707 ++#define bfd_mach_v850          1
47.37708 ++#define bfd_mach_v850e         'E'
47.37709 ++#define bfd_mach_v850e1        '1'
47.37710 ++  bfd_arch_arc,       /* ARC Cores */
47.37711 ++#define bfd_mach_arc_5         5
47.37712 ++#define bfd_mach_arc_6         6
47.37713 ++#define bfd_mach_arc_7         7
47.37714 ++#define bfd_mach_arc_8         8
47.37715 ++ bfd_arch_m32c,     /* Renesas M16C/M32C.  */
47.37716 ++#define bfd_mach_m16c        0x75
47.37717 ++#define bfd_mach_m32c        0x78
47.37718 ++  bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */
47.37719 ++#define bfd_mach_m32r          1 /* For backwards compatibility.  */
47.37720 ++#define bfd_mach_m32rx         'x'
47.37721 ++#define bfd_mach_m32r2         '2'
47.37722 ++  bfd_arch_mn10200,   /* Matsushita MN10200 */
47.37723 ++  bfd_arch_mn10300,   /* Matsushita MN10300 */
47.37724 ++#define bfd_mach_mn10300               300
47.37725 ++#define bfd_mach_am33          330
47.37726 ++#define bfd_mach_am33_2        332
47.37727 ++  bfd_arch_fr30,
47.37728 ++#define bfd_mach_fr30          0x46523330
47.37729 ++  bfd_arch_frv,
47.37730 ++#define bfd_mach_frv           1
47.37731 ++#define bfd_mach_frvsimple     2
47.37732 ++#define bfd_mach_fr300         300
47.37733 ++#define bfd_mach_fr400         400
47.37734 ++#define bfd_mach_fr450         450
47.37735 ++#define bfd_mach_frvtomcat     499     /* fr500 prototype */
47.37736 ++#define bfd_mach_fr500         500
47.37737 ++#define bfd_mach_fr550         550
47.37738 ++  bfd_arch_mcore,
47.37739 ++  bfd_arch_mep,
47.37740 ++#define bfd_mach_mep           1
47.37741 ++#define bfd_mach_mep_h1        0x6831
47.37742 ++  bfd_arch_ia64,      /* HP/Intel ia64 */
47.37743 ++#define bfd_mach_ia64_elf64    64
47.37744 ++#define bfd_mach_ia64_elf32    32
47.37745 ++  bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */
47.37746 ++#define bfd_mach_ip2022        1
47.37747 ++#define bfd_mach_ip2022ext     2
47.37748 ++ bfd_arch_iq2000,     /* Vitesse IQ2000.  */
47.37749 ++#define bfd_mach_iq2000        1
47.37750 ++#define bfd_mach_iq10          2
47.37751 ++  bfd_arch_mt,
47.37752 ++#define bfd_mach_ms1           1
47.37753 ++#define bfd_mach_mrisc2        2
47.37754 ++#define bfd_mach_ms2           3
47.37755 ++  bfd_arch_pj,
47.37756 ++  bfd_arch_avr,       /* Atmel AVR microcontrollers.  */
47.37757 ++#define bfd_mach_avr1          1
47.37758 ++#define bfd_mach_avr2          2
47.37759 ++#define bfd_mach_avr3          3
47.37760 ++#define bfd_mach_avr4          4
47.37761 ++#define bfd_mach_avr5          5
47.37762 ++#define bfd_mach_avr6          6
47.37763 ++  bfd_arch_avr32,     /* Atmel AVR32 */
47.37764 ++#define bfd_mach_avr32_ap      7000
47.37765 ++#define bfd_mach_avr32_uc      3000
47.37766 ++#define bfd_mach_avr32_ucr1    3001
47.37767 ++#define bfd_mach_avr32_ucr2    3002
47.37768 ++  bfd_arch_bfin,        /* ADI Blackfin */
47.37769 ++#define bfd_mach_bfin          1
47.37770 ++  bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */
47.37771 ++#define bfd_mach_cr16          1
47.37772 ++  bfd_arch_cr16c,       /* National Semiconductor CompactRISC. */
47.37773 ++#define bfd_mach_cr16c         1
47.37774 ++  bfd_arch_crx,       /*  National Semiconductor CRX.  */
47.37775 ++#define bfd_mach_crx           1
47.37776 ++  bfd_arch_cris,      /* Axis CRIS */
47.37777 ++#define bfd_mach_cris_v0_v10   255
47.37778 ++#define bfd_mach_cris_v32      32
47.37779 ++#define bfd_mach_cris_v10_v32  1032
47.37780 ++  bfd_arch_s390,      /* IBM s390 */
47.37781 ++#define bfd_mach_s390_31       31
47.37782 ++#define bfd_mach_s390_64       64
47.37783 ++  bfd_arch_score,     /* Sunplus score */ 
47.37784 ++  bfd_arch_openrisc,  /* OpenRISC */
47.37785 ++  bfd_arch_mmix,      /* Donald Knuth's educational processor.  */
47.37786 ++  bfd_arch_xstormy16,
47.37787 ++#define bfd_mach_xstormy16     1
47.37788 ++  bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
47.37789 ++#define bfd_mach_msp11          11
47.37790 ++#define bfd_mach_msp110         110
47.37791 ++#define bfd_mach_msp12          12
47.37792 ++#define bfd_mach_msp13          13
47.37793 ++#define bfd_mach_msp14          14
47.37794 ++#define bfd_mach_msp15          15
47.37795 ++#define bfd_mach_msp16          16
47.37796 ++#define bfd_mach_msp21          21
47.37797 ++#define bfd_mach_msp31          31
47.37798 ++#define bfd_mach_msp32          32
47.37799 ++#define bfd_mach_msp33          33
47.37800 ++#define bfd_mach_msp41          41
47.37801 ++#define bfd_mach_msp42          42
47.37802 ++#define bfd_mach_msp43          43
47.37803 ++#define bfd_mach_msp44          44
47.37804 ++  bfd_arch_xc16x,     /* Infineon's XC16X Series.               */
47.37805 ++#define bfd_mach_xc16x         1
47.37806 ++#define bfd_mach_xc16xl        2
47.37807 ++#define bfd_mach_xc16xs         3
47.37808 ++  bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
47.37809 ++#define bfd_mach_xtensa        1
47.37810 ++   bfd_arch_maxq,     /* Dallas MAXQ 10/20 */
47.37811 ++#define bfd_mach_maxq10    10
47.37812 ++#define bfd_mach_maxq20    20
47.37813 ++  bfd_arch_z80,
47.37814 ++#define bfd_mach_z80strict      1 /* No undocumented opcodes.  */
47.37815 ++#define bfd_mach_z80            3 /* With ixl, ixh, iyl, and iyh.  */
47.37816 ++#define bfd_mach_z80full        7 /* All undocumented instructions.  */
47.37817 ++#define bfd_mach_r800           11 /* R800: successor with multiplication.  */
47.37818 ++  bfd_arch_last
47.37819 ++  };
47.37820 ++
47.37821 ++typedef struct bfd_arch_info
47.37822 ++{
47.37823 ++  int bits_per_word;
47.37824 ++  int bits_per_address;
47.37825 ++  int bits_per_byte;
47.37826 ++  enum bfd_architecture arch;
47.37827 ++  unsigned long mach;
47.37828 ++  const char *arch_name;
47.37829 ++  const char *printable_name;
47.37830 ++  unsigned int section_align_power;
47.37831 ++  /* TRUE if this is the default machine for the architecture.
47.37832 ++     The default arch should be the first entry for an arch so that
47.37833 ++     all the entries for that arch can be accessed via <<next>>.  */
47.37834 ++  bfd_boolean the_default;
47.37835 ++  const struct bfd_arch_info * (*compatible)
47.37836 ++    (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
47.37837 ++
47.37838 ++  bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
47.37839 ++
47.37840 ++  const struct bfd_arch_info *next;
47.37841 ++}
47.37842 ++bfd_arch_info_type;
47.37843 ++
47.37844 ++const char *bfd_printable_name (bfd *abfd);
47.37845 ++
47.37846 ++const bfd_arch_info_type *bfd_scan_arch (const char *string);
47.37847 ++
47.37848 ++const char **bfd_arch_list (void);
47.37849 ++
47.37850 ++const bfd_arch_info_type *bfd_arch_get_compatible
47.37851 ++   (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
47.37852 ++
47.37853 ++void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
47.37854 ++
47.37855 ++enum bfd_architecture bfd_get_arch (bfd *abfd);
47.37856 ++
47.37857 ++unsigned long bfd_get_mach (bfd *abfd);
47.37858 ++
47.37859 ++unsigned int bfd_arch_bits_per_byte (bfd *abfd);
47.37860 ++
47.37861 ++unsigned int bfd_arch_bits_per_address (bfd *abfd);
47.37862 ++
47.37863 ++const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
47.37864 ++
47.37865 ++const bfd_arch_info_type *bfd_lookup_arch
47.37866 ++   (enum bfd_architecture arch, unsigned long machine);
47.37867 ++
47.37868 ++const char *bfd_printable_arch_mach
47.37869 ++   (enum bfd_architecture arch, unsigned long machine);
47.37870 ++
47.37871 ++unsigned int bfd_octets_per_byte (bfd *abfd);
47.37872 ++
47.37873 ++unsigned int bfd_arch_mach_octets_per_byte
47.37874 ++   (enum bfd_architecture arch, unsigned long machine);
47.37875 ++
47.37876 ++/* Extracted from reloc.c.  */
47.37877 ++typedef enum bfd_reloc_status
47.37878 ++{
47.37879 ++  /* No errors detected.  */
47.37880 ++  bfd_reloc_ok,
47.37881 ++
47.37882 ++  /* The relocation was performed, but there was an overflow.  */
47.37883 ++  bfd_reloc_overflow,
47.37884 ++
47.37885 ++  /* The address to relocate was not within the section supplied.  */
47.37886 ++  bfd_reloc_outofrange,
47.37887 ++
47.37888 ++  /* Used by special functions.  */
47.37889 ++  bfd_reloc_continue,
47.37890 ++
47.37891 ++  /* Unsupported relocation size requested.  */
47.37892 ++  bfd_reloc_notsupported,
47.37893 ++
47.37894 ++  /* Unused.  */
47.37895 ++  bfd_reloc_other,
47.37896 ++
47.37897 ++  /* The symbol to relocate against was undefined.  */
47.37898 ++  bfd_reloc_undefined,
47.37899 ++
47.37900 ++  /* The relocation was performed, but may not be ok - presently
47.37901 ++     generated only when linking i960 coff files with i960 b.out
47.37902 ++     symbols.  If this type is returned, the error_message argument
47.37903 ++     to bfd_perform_relocation will be set.  */
47.37904 ++  bfd_reloc_dangerous
47.37905 ++ }
47.37906 ++ bfd_reloc_status_type;
47.37907 ++
47.37908 ++
47.37909 ++typedef struct reloc_cache_entry
47.37910 ++{
47.37911 ++  /* A pointer into the canonical table of pointers.  */
47.37912 ++  struct bfd_symbol **sym_ptr_ptr;
47.37913 ++
47.37914 ++  /* offset in section.  */
47.37915 ++  bfd_size_type address;
47.37916 ++
47.37917 ++  /* addend for relocation value.  */
47.37918 ++  bfd_vma addend;
47.37919 ++
47.37920 ++  /* Pointer to how to perform the required relocation.  */
47.37921 ++  reloc_howto_type *howto;
47.37922 ++
47.37923 ++}
47.37924 ++arelent;
47.37925 ++
47.37926 ++enum complain_overflow
47.37927 ++{
47.37928 ++  /* Do not complain on overflow.  */
47.37929 ++  complain_overflow_dont,
47.37930 ++
47.37931 ++  /* Complain if the value overflows when considered as a signed
47.37932 ++     number one bit larger than the field.  ie. A bitfield of N bits
47.37933 ++     is allowed to represent -2**n to 2**n-1.  */
47.37934 ++  complain_overflow_bitfield,
47.37935 ++
47.37936 ++  /* Complain if the value overflows when considered as a signed
47.37937 ++     number.  */
47.37938 ++  complain_overflow_signed,
47.37939 ++
47.37940 ++  /* Complain if the value overflows when considered as an
47.37941 ++     unsigned number.  */
47.37942 ++  complain_overflow_unsigned
47.37943 ++};
47.37944 ++
47.37945 ++struct reloc_howto_struct
47.37946 ++{
47.37947 ++  /*  The type field has mainly a documentary use - the back end can
47.37948 ++      do what it wants with it, though normally the back end's
47.37949 ++      external idea of what a reloc number is stored
47.37950 ++      in this field.  For example, a PC relative word relocation
47.37951 ++      in a coff environment has the type 023 - because that's
47.37952 ++      what the outside world calls a R_PCRWORD reloc.  */
47.37953 ++  unsigned int type;
47.37954 ++
47.37955 ++  /*  The value the final relocation is shifted right by.  This drops
47.37956 ++      unwanted data from the relocation.  */
47.37957 ++  unsigned int rightshift;
47.37958 ++
47.37959 ++  /*  The size of the item to be relocated.  This is *not* a
47.37960 ++      power-of-two measure.  To get the number of bytes operated
47.37961 ++      on by a type of relocation, use bfd_get_reloc_size.  */
47.37962 ++  int size;
47.37963 ++
47.37964 ++  /*  The number of bits in the item to be relocated.  This is used
47.37965 ++      when doing overflow checking.  */
47.37966 ++  unsigned int bitsize;
47.37967 ++
47.37968 ++  /*  Notes that the relocation is relative to the location in the
47.37969 ++      data section of the addend.  The relocation function will
47.37970 ++      subtract from the relocation value the address of the location
47.37971 ++      being relocated.  */
47.37972 ++  bfd_boolean pc_relative;
47.37973 ++
47.37974 ++  /*  The bit position of the reloc value in the destination.
47.37975 ++      The relocated value is left shifted by this amount.  */
47.37976 ++  unsigned int bitpos;
47.37977 ++
47.37978 ++  /* What type of overflow error should be checked for when
47.37979 ++     relocating.  */
47.37980 ++  enum complain_overflow complain_on_overflow;
47.37981 ++
47.37982 ++  /* If this field is non null, then the supplied function is
47.37983 ++     called rather than the normal function.  This allows really
47.37984 ++     strange relocation methods to be accommodated (e.g., i960 callj
47.37985 ++     instructions).  */
47.37986 ++  bfd_reloc_status_type (*special_function)
47.37987 ++    (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
47.37988 ++     bfd *, char **);
47.37989 ++
47.37990 ++  /* The textual name of the relocation type.  */
47.37991 ++  char *name;
47.37992 ++
47.37993 ++  /* Some formats record a relocation addend in the section contents
47.37994 ++     rather than with the relocation.  For ELF formats this is the
47.37995 ++     distinction between USE_REL and USE_RELA (though the code checks
47.37996 ++     for USE_REL == 1/0).  The value of this field is TRUE if the
47.37997 ++     addend is recorded with the section contents; when performing a
47.37998 ++     partial link (ld -r) the section contents (the data) will be
47.37999 ++     modified.  The value of this field is FALSE if addends are
47.38000 ++     recorded with the relocation (in arelent.addend); when performing
47.38001 ++     a partial link the relocation will be modified.
47.38002 ++     All relocations for all ELF USE_RELA targets should set this field
47.38003 ++     to FALSE (values of TRUE should be looked on with suspicion).
47.38004 ++     However, the converse is not true: not all relocations of all ELF
47.38005 ++     USE_REL targets set this field to TRUE.  Why this is so is peculiar
47.38006 ++     to each particular target.  For relocs that aren't used in partial
47.38007 ++     links (e.g. GOT stuff) it doesn't matter what this is set to.  */
47.38008 ++  bfd_boolean partial_inplace;
47.38009 ++
47.38010 ++  /* src_mask selects the part of the instruction (or data) to be used
47.38011 ++     in the relocation sum.  If the target relocations don't have an
47.38012 ++     addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
47.38013 ++     dst_mask to extract the addend from the section contents.  If
47.38014 ++     relocations do have an addend in the reloc, eg. ELF USE_RELA, this
47.38015 ++     field should be zero.  Non-zero values for ELF USE_RELA targets are
47.38016 ++     bogus as in those cases the value in the dst_mask part of the
47.38017 ++     section contents should be treated as garbage.  */
47.38018 ++  bfd_vma src_mask;
47.38019 ++
47.38020 ++  /* dst_mask selects which parts of the instruction (or data) are
47.38021 ++     replaced with a relocated value.  */
47.38022 ++  bfd_vma dst_mask;
47.38023 ++
47.38024 ++  /* When some formats create PC relative instructions, they leave
47.38025 ++     the value of the pc of the place being relocated in the offset
47.38026 ++     slot of the instruction, so that a PC relative relocation can
47.38027 ++     be made just by adding in an ordinary offset (e.g., sun3 a.out).
47.38028 ++     Some formats leave the displacement part of an instruction
47.38029 ++     empty (e.g., m88k bcs); this flag signals the fact.  */
47.38030 ++  bfd_boolean pcrel_offset;
47.38031 ++};
47.38032 ++
47.38033 ++#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
47.38034 ++  { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
47.38035 ++#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
47.38036 ++  HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
47.38037 ++         NAME, FALSE, 0, 0, IN)
47.38038 ++
47.38039 ++#define EMPTY_HOWTO(C) \
47.38040 ++  HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
47.38041 ++         NULL, FALSE, 0, 0, FALSE)
47.38042 ++
47.38043 ++#define HOWTO_PREPARE(relocation, symbol)               \
47.38044 ++  {                                                     \
47.38045 ++    if (symbol != NULL)                                 \
47.38046 ++      {                                                 \
47.38047 ++        if (bfd_is_com_section (symbol->section))       \
47.38048 ++          {                                             \
47.38049 ++            relocation = 0;                             \
47.38050 ++          }                                             \
47.38051 ++        else                                            \
47.38052 ++          {                                             \
47.38053 ++            relocation = symbol->value;                 \
47.38054 ++          }                                             \
47.38055 ++      }                                                 \
47.38056 ++  }
47.38057 ++
47.38058 ++unsigned int bfd_get_reloc_size (reloc_howto_type *);
47.38059 ++
47.38060 ++typedef struct relent_chain
47.38061 ++{
47.38062 ++  arelent relent;
47.38063 ++  struct relent_chain *next;
47.38064 ++}
47.38065 ++arelent_chain;
47.38066 ++
47.38067 ++bfd_reloc_status_type bfd_check_overflow
47.38068 ++   (enum complain_overflow how,
47.38069 ++    unsigned int bitsize,
47.38070 ++    unsigned int rightshift,
47.38071 ++    unsigned int addrsize,
47.38072 ++    bfd_vma relocation);
47.38073 ++
47.38074 ++bfd_reloc_status_type bfd_perform_relocation
47.38075 ++   (bfd *abfd,
47.38076 ++    arelent *reloc_entry,
47.38077 ++    void *data,
47.38078 ++    asection *input_section,
47.38079 ++    bfd *output_bfd,
47.38080 ++    char **error_message);
47.38081 ++
47.38082 ++bfd_reloc_status_type bfd_install_relocation
47.38083 ++   (bfd *abfd,
47.38084 ++    arelent *reloc_entry,
47.38085 ++    void *data, bfd_vma data_start,
47.38086 ++    asection *input_section,
47.38087 ++    char **error_message);
47.38088 ++
47.38089 ++enum bfd_reloc_code_real {
47.38090 ++  _dummy_first_bfd_reloc_code_real,
47.38091 ++
47.38092 ++
47.38093 ++/* Basic absolute relocations of N bits.  */
47.38094 ++  BFD_RELOC_64,
47.38095 ++  BFD_RELOC_32,
47.38096 ++  BFD_RELOC_26,
47.38097 ++  BFD_RELOC_24,
47.38098 ++  BFD_RELOC_16,
47.38099 ++  BFD_RELOC_14,
47.38100 ++  BFD_RELOC_8,
47.38101 ++
47.38102 ++/* PC-relative relocations.  Sometimes these are relative to the address
47.38103 ++of the relocation itself; sometimes they are relative to the start of
47.38104 ++the section containing the relocation.  It depends on the specific target.
47.38105 ++
47.38106 ++The 24-bit relocation is used in some Intel 960 configurations.  */
47.38107 ++  BFD_RELOC_64_PCREL,
47.38108 ++  BFD_RELOC_32_PCREL,
47.38109 ++  BFD_RELOC_24_PCREL,
47.38110 ++  BFD_RELOC_16_PCREL,
47.38111 ++  BFD_RELOC_12_PCREL,
47.38112 ++  BFD_RELOC_8_PCREL,
47.38113 ++
47.38114 ++/* Section relative relocations.  Some targets need this for DWARF2.  */
47.38115 ++  BFD_RELOC_32_SECREL,
47.38116 ++
47.38117 ++/* For ELF.  */
47.38118 ++  BFD_RELOC_32_GOT_PCREL,
47.38119 ++  BFD_RELOC_16_GOT_PCREL,
47.38120 ++  BFD_RELOC_8_GOT_PCREL,
47.38121 ++  BFD_RELOC_32_GOTOFF,
47.38122 ++  BFD_RELOC_16_GOTOFF,
47.38123 ++  BFD_RELOC_LO16_GOTOFF,
47.38124 ++  BFD_RELOC_HI16_GOTOFF,
47.38125 ++  BFD_RELOC_HI16_S_GOTOFF,
47.38126 ++  BFD_RELOC_8_GOTOFF,
47.38127 ++  BFD_RELOC_64_PLT_PCREL,
47.38128 ++  BFD_RELOC_32_PLT_PCREL,
47.38129 ++  BFD_RELOC_24_PLT_PCREL,
47.38130 ++  BFD_RELOC_16_PLT_PCREL,
47.38131 ++  BFD_RELOC_8_PLT_PCREL,
47.38132 ++  BFD_RELOC_64_PLTOFF,
47.38133 ++  BFD_RELOC_32_PLTOFF,
47.38134 ++  BFD_RELOC_16_PLTOFF,
47.38135 ++  BFD_RELOC_LO16_PLTOFF,
47.38136 ++  BFD_RELOC_HI16_PLTOFF,
47.38137 ++  BFD_RELOC_HI16_S_PLTOFF,
47.38138 ++  BFD_RELOC_8_PLTOFF,
47.38139 ++
47.38140 ++/* Relocations used by 68K ELF.  */
47.38141 ++  BFD_RELOC_68K_GLOB_DAT,
47.38142 ++  BFD_RELOC_68K_JMP_SLOT,
47.38143 ++  BFD_RELOC_68K_RELATIVE,
47.38144 ++
47.38145 ++/* Linkage-table relative.  */
47.38146 ++  BFD_RELOC_32_BASEREL,
47.38147 ++  BFD_RELOC_16_BASEREL,
47.38148 ++  BFD_RELOC_LO16_BASEREL,
47.38149 ++  BFD_RELOC_HI16_BASEREL,
47.38150 ++  BFD_RELOC_HI16_S_BASEREL,
47.38151 ++  BFD_RELOC_8_BASEREL,
47.38152 ++  BFD_RELOC_RVA,
47.38153 ++
47.38154 ++/* Absolute 8-bit relocation, but used to form an address like 0xFFnn.  */
47.38155 ++  BFD_RELOC_8_FFnn,
47.38156 ++
47.38157 ++/* These PC-relative relocations are stored as word displacements --
47.38158 ++i.e., byte displacements shifted right two bits.  The 30-bit word
47.38159 ++displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
47.38160 ++SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
47.38161 ++signed 16-bit displacement is used on the MIPS, and the 23-bit
47.38162 ++displacement is used on the Alpha.  */
47.38163 ++  BFD_RELOC_32_PCREL_S2,
47.38164 ++  BFD_RELOC_16_PCREL_S2,
47.38165 ++  BFD_RELOC_23_PCREL_S2,
47.38166 ++
47.38167 ++/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
47.38168 ++the target word.  These are used on the SPARC.  */
47.38169 ++  BFD_RELOC_HI22,
47.38170 ++  BFD_RELOC_LO10,
47.38171 ++
47.38172 ++/* For systems that allocate a Global Pointer register, these are
47.38173 ++displacements off that register.  These relocation types are
47.38174 ++handled specially, because the value the register will have is
47.38175 ++decided relatively late.  */
47.38176 ++  BFD_RELOC_GPREL16,
47.38177 ++  BFD_RELOC_GPREL32,
47.38178 ++
47.38179 ++/* Reloc types used for i960/b.out.  */
47.38180 ++  BFD_RELOC_I960_CALLJ,
47.38181 ++
47.38182 ++/* SPARC ELF relocations.  There is probably some overlap with other
47.38183 ++relocation types already defined.  */
47.38184 ++  BFD_RELOC_NONE,
47.38185 ++  BFD_RELOC_SPARC_WDISP22,
47.38186 ++  BFD_RELOC_SPARC22,
47.38187 ++  BFD_RELOC_SPARC13,
47.38188 ++  BFD_RELOC_SPARC_GOT10,
47.38189 ++  BFD_RELOC_SPARC_GOT13,
47.38190 ++  BFD_RELOC_SPARC_GOT22,
47.38191 ++  BFD_RELOC_SPARC_PC10,
47.38192 ++  BFD_RELOC_SPARC_PC22,
47.38193 ++  BFD_RELOC_SPARC_WPLT30,
47.38194 ++  BFD_RELOC_SPARC_COPY,
47.38195 ++  BFD_RELOC_SPARC_GLOB_DAT,
47.38196 ++  BFD_RELOC_SPARC_JMP_SLOT,
47.38197 ++  BFD_RELOC_SPARC_RELATIVE,
47.38198 ++  BFD_RELOC_SPARC_UA16,
47.38199 ++  BFD_RELOC_SPARC_UA32,
47.38200 ++  BFD_RELOC_SPARC_UA64,
47.38201 ++
47.38202 ++/* I think these are specific to SPARC a.out (e.g., Sun 4).  */
47.38203 ++  BFD_RELOC_SPARC_BASE13,
47.38204 ++  BFD_RELOC_SPARC_BASE22,
47.38205 ++
47.38206 ++/* SPARC64 relocations  */
47.38207 ++#define BFD_RELOC_SPARC_64 BFD_RELOC_64
47.38208 ++  BFD_RELOC_SPARC_10,
47.38209 ++  BFD_RELOC_SPARC_11,
47.38210 ++  BFD_RELOC_SPARC_OLO10,
47.38211 ++  BFD_RELOC_SPARC_HH22,
47.38212 ++  BFD_RELOC_SPARC_HM10,
47.38213 ++  BFD_RELOC_SPARC_LM22,
47.38214 ++  BFD_RELOC_SPARC_PC_HH22,
47.38215 ++  BFD_RELOC_SPARC_PC_HM10,
47.38216 ++  BFD_RELOC_SPARC_PC_LM22,
47.38217 ++  BFD_RELOC_SPARC_WDISP16,
47.38218 ++  BFD_RELOC_SPARC_WDISP19,
47.38219 ++  BFD_RELOC_SPARC_7,
47.38220 ++  BFD_RELOC_SPARC_6,
47.38221 ++  BFD_RELOC_SPARC_5,
47.38222 ++#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
47.38223 ++  BFD_RELOC_SPARC_PLT32,
47.38224 ++  BFD_RELOC_SPARC_PLT64,
47.38225 ++  BFD_RELOC_SPARC_HIX22,
47.38226 ++  BFD_RELOC_SPARC_LOX10,
47.38227 ++  BFD_RELOC_SPARC_H44,
47.38228 ++  BFD_RELOC_SPARC_M44,
47.38229 ++  BFD_RELOC_SPARC_L44,
47.38230 ++  BFD_RELOC_SPARC_REGISTER,
47.38231 ++
47.38232 ++/* SPARC little endian relocation  */
47.38233 ++  BFD_RELOC_SPARC_REV32,
47.38234 ++
47.38235 ++/* SPARC TLS relocations  */
47.38236 ++  BFD_RELOC_SPARC_TLS_GD_HI22,
47.38237 ++  BFD_RELOC_SPARC_TLS_GD_LO10,
47.38238 ++  BFD_RELOC_SPARC_TLS_GD_ADD,
47.38239 ++  BFD_RELOC_SPARC_TLS_GD_CALL,
47.38240 ++  BFD_RELOC_SPARC_TLS_LDM_HI22,
47.38241 ++  BFD_RELOC_SPARC_TLS_LDM_LO10,
47.38242 ++  BFD_RELOC_SPARC_TLS_LDM_ADD,
47.38243 ++  BFD_RELOC_SPARC_TLS_LDM_CALL,
47.38244 ++  BFD_RELOC_SPARC_TLS_LDO_HIX22,
47.38245 ++  BFD_RELOC_SPARC_TLS_LDO_LOX10,
47.38246 ++  BFD_RELOC_SPARC_TLS_LDO_ADD,
47.38247 ++  BFD_RELOC_SPARC_TLS_IE_HI22,
47.38248 ++  BFD_RELOC_SPARC_TLS_IE_LO10,
47.38249 ++  BFD_RELOC_SPARC_TLS_IE_LD,
47.38250 ++  BFD_RELOC_SPARC_TLS_IE_LDX,
47.38251 ++  BFD_RELOC_SPARC_TLS_IE_ADD,
47.38252 ++  BFD_RELOC_SPARC_TLS_LE_HIX22,
47.38253 ++  BFD_RELOC_SPARC_TLS_LE_LOX10,
47.38254 ++  BFD_RELOC_SPARC_TLS_DTPMOD32,
47.38255 ++  BFD_RELOC_SPARC_TLS_DTPMOD64,
47.38256 ++  BFD_RELOC_SPARC_TLS_DTPOFF32,
47.38257 ++  BFD_RELOC_SPARC_TLS_DTPOFF64,
47.38258 ++  BFD_RELOC_SPARC_TLS_TPOFF32,
47.38259 ++  BFD_RELOC_SPARC_TLS_TPOFF64,
47.38260 ++
47.38261 ++/* SPU Relocations.  */
47.38262 ++  BFD_RELOC_SPU_IMM7,
47.38263 ++  BFD_RELOC_SPU_IMM8,
47.38264 ++  BFD_RELOC_SPU_IMM10,
47.38265 ++  BFD_RELOC_SPU_IMM10W,
47.38266 ++  BFD_RELOC_SPU_IMM16,
47.38267 ++  BFD_RELOC_SPU_IMM16W,
47.38268 ++  BFD_RELOC_SPU_IMM18,
47.38269 ++  BFD_RELOC_SPU_PCREL9a,
47.38270 ++  BFD_RELOC_SPU_PCREL9b,
47.38271 ++  BFD_RELOC_SPU_PCREL16,
47.38272 ++  BFD_RELOC_SPU_LO16,
47.38273 ++  BFD_RELOC_SPU_HI16,
47.38274 ++  BFD_RELOC_SPU_PPU32,
47.38275 ++  BFD_RELOC_SPU_PPU64,
47.38276 ++
47.38277 ++/* Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
47.38278 ++"addend" in some special way.
47.38279 ++For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
47.38280 ++writing; when reading, it will be the absolute section symbol.  The
47.38281 ++addend is the displacement in bytes of the "lda" instruction from
47.38282 ++the "ldah" instruction (which is at the address of this reloc).  */
47.38283 ++  BFD_RELOC_ALPHA_GPDISP_HI16,
47.38284 ++
47.38285 ++/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
47.38286 ++with GPDISP_HI16 relocs.  The addend is ignored when writing the
47.38287 ++relocations out, and is filled in with the file's GP value on
47.38288 ++reading, for convenience.  */
47.38289 ++  BFD_RELOC_ALPHA_GPDISP_LO16,
47.38290 ++
47.38291 ++/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
47.38292 ++relocation except that there is no accompanying GPDISP_LO16
47.38293 ++relocation.  */
47.38294 ++  BFD_RELOC_ALPHA_GPDISP,
47.38295 ++
47.38296 ++/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
47.38297 ++the assembler turns it into a LDQ instruction to load the address of
47.38298 ++the symbol, and then fills in a register in the real instruction.
47.38299 ++
47.38300 ++The LITERAL reloc, at the LDQ instruction, refers to the .lita
47.38301 ++section symbol.  The addend is ignored when writing, but is filled
47.38302 ++in with the file's GP value on reading, for convenience, as with the
47.38303 ++GPDISP_LO16 reloc.
47.38304 ++
47.38305 ++The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
47.38306 ++It should refer to the symbol to be referenced, as with 16_GOTOFF,
47.38307 ++but it generates output not based on the position within the .got
47.38308 ++section, but relative to the GP value chosen for the file during the
47.38309 ++final link stage.
47.38310 ++
47.38311 ++The LITUSE reloc, on the instruction using the loaded address, gives
47.38312 ++information to the linker that it might be able to use to optimize
47.38313 ++away some literal section references.  The symbol is ignored (read
47.38314 ++as the absolute section symbol), and the "addend" indicates the type
47.38315 ++of instruction using the register:
47.38316 ++1 - "memory" fmt insn
47.38317 ++2 - byte-manipulation (byte offset reg)
47.38318 ++3 - jsr (target of branch)  */
47.38319 ++  BFD_RELOC_ALPHA_LITERAL,
47.38320 ++  BFD_RELOC_ALPHA_ELF_LITERAL,
47.38321 ++  BFD_RELOC_ALPHA_LITUSE,
47.38322 ++
47.38323 ++/* The HINT relocation indicates a value that should be filled into the
47.38324 ++"hint" field of a jmp/jsr/ret instruction, for possible branch-
47.38325 ++prediction logic which may be provided on some processors.  */
47.38326 ++  BFD_RELOC_ALPHA_HINT,
47.38327 ++
47.38328 ++/* The LINKAGE relocation outputs a linkage pair in the object file,
47.38329 ++which is filled by the linker.  */
47.38330 ++  BFD_RELOC_ALPHA_LINKAGE,
47.38331 ++
47.38332 ++/* The CODEADDR relocation outputs a STO_CA in the object file,
47.38333 ++which is filled by the linker.  */
47.38334 ++  BFD_RELOC_ALPHA_CODEADDR,
47.38335 ++
47.38336 ++/* The GPREL_HI/LO relocations together form a 32-bit offset from the
47.38337 ++GP register.  */
47.38338 ++  BFD_RELOC_ALPHA_GPREL_HI16,
47.38339 ++  BFD_RELOC_ALPHA_GPREL_LO16,
47.38340 ++
47.38341 ++/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
47.38342 ++share a common GP, and the target address is adjusted for
47.38343 ++STO_ALPHA_STD_GPLOAD.  */
47.38344 ++  BFD_RELOC_ALPHA_BRSGP,
47.38345 ++
47.38346 ++/* Alpha thread-local storage relocations.  */
47.38347 ++  BFD_RELOC_ALPHA_TLSGD,
47.38348 ++  BFD_RELOC_ALPHA_TLSLDM,
47.38349 ++  BFD_RELOC_ALPHA_DTPMOD64,
47.38350 ++  BFD_RELOC_ALPHA_GOTDTPREL16,
47.38351 ++  BFD_RELOC_ALPHA_DTPREL64,
47.38352 ++  BFD_RELOC_ALPHA_DTPREL_HI16,
47.38353 ++  BFD_RELOC_ALPHA_DTPREL_LO16,
47.38354 ++  BFD_RELOC_ALPHA_DTPREL16,
47.38355 ++  BFD_RELOC_ALPHA_GOTTPREL16,
47.38356 ++  BFD_RELOC_ALPHA_TPREL64,
47.38357 ++  BFD_RELOC_ALPHA_TPREL_HI16,
47.38358 ++  BFD_RELOC_ALPHA_TPREL_LO16,
47.38359 ++  BFD_RELOC_ALPHA_TPREL16,
47.38360 ++
47.38361 ++/* Bits 27..2 of the relocation address shifted right 2 bits;
47.38362 ++simple reloc otherwise.  */
47.38363 ++  BFD_RELOC_MIPS_JMP,
47.38364 ++
47.38365 ++/* The MIPS16 jump instruction.  */
47.38366 ++  BFD_RELOC_MIPS16_JMP,
47.38367 ++
47.38368 ++/* MIPS16 GP relative reloc.  */
47.38369 ++  BFD_RELOC_MIPS16_GPREL,
47.38370 ++
47.38371 ++/* High 16 bits of 32-bit value; simple reloc.  */
47.38372 ++  BFD_RELOC_HI16,
47.38373 ++
47.38374 ++/* High 16 bits of 32-bit value but the low 16 bits will be sign
47.38375 ++extended and added to form the final result.  If the low 16
47.38376 ++bits form a negative number, we need to add one to the high value
47.38377 ++to compensate for the borrow when the low bits are added.  */
47.38378 ++  BFD_RELOC_HI16_S,
47.38379 ++
47.38380 ++/* Low 16 bits.  */
47.38381 ++  BFD_RELOC_LO16,
47.38382 ++
47.38383 ++/* High 16 bits of 32-bit pc-relative value  */
47.38384 ++  BFD_RELOC_HI16_PCREL,
47.38385 ++
47.38386 ++/* High 16 bits of 32-bit pc-relative value, adjusted  */
47.38387 ++  BFD_RELOC_HI16_S_PCREL,
47.38388 ++
47.38389 ++/* Low 16 bits of pc-relative value  */
47.38390 ++  BFD_RELOC_LO16_PCREL,
47.38391 ++
47.38392 ++/* MIPS16 high 16 bits of 32-bit value.  */
47.38393 ++  BFD_RELOC_MIPS16_HI16,
47.38394 ++
47.38395 ++/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
47.38396 ++extended and added to form the final result.  If the low 16
47.38397 ++bits form a negative number, we need to add one to the high value
47.38398 ++to compensate for the borrow when the low bits are added.  */
47.38399 ++  BFD_RELOC_MIPS16_HI16_S,
47.38400 ++
47.38401 ++/* MIPS16 low 16 bits.  */
47.38402 ++  BFD_RELOC_MIPS16_LO16,
47.38403 ++
47.38404 ++/* Relocation against a MIPS literal section.  */
47.38405 ++  BFD_RELOC_MIPS_LITERAL,
47.38406 ++
47.38407 ++/* MIPS ELF relocations.  */
47.38408 ++  BFD_RELOC_MIPS_GOT16,
47.38409 ++  BFD_RELOC_MIPS_CALL16,
47.38410 ++  BFD_RELOC_MIPS_GOT_HI16,
47.38411 ++  BFD_RELOC_MIPS_GOT_LO16,
47.38412 ++  BFD_RELOC_MIPS_CALL_HI16,
47.38413 ++  BFD_RELOC_MIPS_CALL_LO16,
47.38414 ++  BFD_RELOC_MIPS_SUB,
47.38415 ++  BFD_RELOC_MIPS_GOT_PAGE,
47.38416 ++  BFD_RELOC_MIPS_GOT_OFST,
47.38417 ++  BFD_RELOC_MIPS_GOT_DISP,
47.38418 ++  BFD_RELOC_MIPS_SHIFT5,
47.38419 ++  BFD_RELOC_MIPS_SHIFT6,
47.38420 ++  BFD_RELOC_MIPS_INSERT_A,
47.38421 ++  BFD_RELOC_MIPS_INSERT_B,
47.38422 ++  BFD_RELOC_MIPS_DELETE,
47.38423 ++  BFD_RELOC_MIPS_HIGHEST,
47.38424 ++  BFD_RELOC_MIPS_HIGHER,
47.38425 ++  BFD_RELOC_MIPS_SCN_DISP,
47.38426 ++  BFD_RELOC_MIPS_REL16,
47.38427 ++  BFD_RELOC_MIPS_RELGOT,
47.38428 ++  BFD_RELOC_MIPS_JALR,
47.38429 ++  BFD_RELOC_MIPS_TLS_DTPMOD32,
47.38430 ++  BFD_RELOC_MIPS_TLS_DTPREL32,
47.38431 ++  BFD_RELOC_MIPS_TLS_DTPMOD64,
47.38432 ++  BFD_RELOC_MIPS_TLS_DTPREL64,
47.38433 ++  BFD_RELOC_MIPS_TLS_GD,
47.38434 ++  BFD_RELOC_MIPS_TLS_LDM,
47.38435 ++  BFD_RELOC_MIPS_TLS_DTPREL_HI16,
47.38436 ++  BFD_RELOC_MIPS_TLS_DTPREL_LO16,
47.38437 ++  BFD_RELOC_MIPS_TLS_GOTTPREL,
47.38438 ++  BFD_RELOC_MIPS_TLS_TPREL32,
47.38439 ++  BFD_RELOC_MIPS_TLS_TPREL64,
47.38440 ++  BFD_RELOC_MIPS_TLS_TPREL_HI16,
47.38441 ++  BFD_RELOC_MIPS_TLS_TPREL_LO16,
47.38442 ++
47.38443 ++
47.38444 ++/* MIPS ELF relocations (VxWorks extensions).  */
47.38445 ++  BFD_RELOC_MIPS_COPY,
47.38446 ++  BFD_RELOC_MIPS_JUMP_SLOT,
47.38447 ++
47.38448 ++
47.38449 ++/* Fujitsu Frv Relocations.  */
47.38450 ++  BFD_RELOC_FRV_LABEL16,
47.38451 ++  BFD_RELOC_FRV_LABEL24,
47.38452 ++  BFD_RELOC_FRV_LO16,
47.38453 ++  BFD_RELOC_FRV_HI16,
47.38454 ++  BFD_RELOC_FRV_GPREL12,
47.38455 ++  BFD_RELOC_FRV_GPRELU12,
47.38456 ++  BFD_RELOC_FRV_GPREL32,
47.38457 ++  BFD_RELOC_FRV_GPRELHI,
47.38458 ++  BFD_RELOC_FRV_GPRELLO,
47.38459 ++  BFD_RELOC_FRV_GOT12,
47.38460 ++  BFD_RELOC_FRV_GOTHI,
47.38461 ++  BFD_RELOC_FRV_GOTLO,
47.38462 ++  BFD_RELOC_FRV_FUNCDESC,
47.38463 ++  BFD_RELOC_FRV_FUNCDESC_GOT12,
47.38464 ++  BFD_RELOC_FRV_FUNCDESC_GOTHI,
47.38465 ++  BFD_RELOC_FRV_FUNCDESC_GOTLO,
47.38466 ++  BFD_RELOC_FRV_FUNCDESC_VALUE,
47.38467 ++  BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
47.38468 ++  BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
47.38469 ++  BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
47.38470 ++  BFD_RELOC_FRV_GOTOFF12,
47.38471 ++  BFD_RELOC_FRV_GOTOFFHI,
47.38472 ++  BFD_RELOC_FRV_GOTOFFLO,
47.38473 ++  BFD_RELOC_FRV_GETTLSOFF,
47.38474 ++  BFD_RELOC_FRV_TLSDESC_VALUE,
47.38475 ++  BFD_RELOC_FRV_GOTTLSDESC12,
47.38476 ++  BFD_RELOC_FRV_GOTTLSDESCHI,
47.38477 ++  BFD_RELOC_FRV_GOTTLSDESCLO,
47.38478 ++  BFD_RELOC_FRV_TLSMOFF12,
47.38479 ++  BFD_RELOC_FRV_TLSMOFFHI,
47.38480 ++  BFD_RELOC_FRV_TLSMOFFLO,
47.38481 ++  BFD_RELOC_FRV_GOTTLSOFF12,
47.38482 ++  BFD_RELOC_FRV_GOTTLSOFFHI,
47.38483 ++  BFD_RELOC_FRV_GOTTLSOFFLO,
47.38484 ++  BFD_RELOC_FRV_TLSOFF,
47.38485 ++  BFD_RELOC_FRV_TLSDESC_RELAX,
47.38486 ++  BFD_RELOC_FRV_GETTLSOFF_RELAX,
47.38487 ++  BFD_RELOC_FRV_TLSOFF_RELAX,
47.38488 ++  BFD_RELOC_FRV_TLSMOFF,
47.38489 ++
47.38490 ++
47.38491 ++/* This is a 24bit GOT-relative reloc for the mn10300.  */
47.38492 ++  BFD_RELOC_MN10300_GOTOFF24,
47.38493 ++
47.38494 ++/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
47.38495 ++in the instruction.  */
47.38496 ++  BFD_RELOC_MN10300_GOT32,
47.38497 ++
47.38498 ++/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
47.38499 ++in the instruction.  */
47.38500 ++  BFD_RELOC_MN10300_GOT24,
47.38501 ++
47.38502 ++/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
47.38503 ++in the instruction.  */
47.38504 ++  BFD_RELOC_MN10300_GOT16,
47.38505 ++
47.38506 ++/* Copy symbol at runtime.  */
47.38507 ++  BFD_RELOC_MN10300_COPY,
47.38508 ++
47.38509 ++/* Create GOT entry.  */
47.38510 ++  BFD_RELOC_MN10300_GLOB_DAT,
47.38511 ++
47.38512 ++/* Create PLT entry.  */
47.38513 ++  BFD_RELOC_MN10300_JMP_SLOT,
47.38514 ++
47.38515 ++/* Adjust by program base.  */
47.38516 ++  BFD_RELOC_MN10300_RELATIVE,
47.38517 ++
47.38518 ++
47.38519 ++/* i386/elf relocations  */
47.38520 ++  BFD_RELOC_386_GOT32,
47.38521 ++  BFD_RELOC_386_PLT32,
47.38522 ++  BFD_RELOC_386_COPY,
47.38523 ++  BFD_RELOC_386_GLOB_DAT,
47.38524 ++  BFD_RELOC_386_JUMP_SLOT,
47.38525 ++  BFD_RELOC_386_RELATIVE,
47.38526 ++  BFD_RELOC_386_GOTOFF,
47.38527 ++  BFD_RELOC_386_GOTPC,
47.38528 ++  BFD_RELOC_386_TLS_TPOFF,
47.38529 ++  BFD_RELOC_386_TLS_IE,
47.38530 ++  BFD_RELOC_386_TLS_GOTIE,
47.38531 ++  BFD_RELOC_386_TLS_LE,
47.38532 ++  BFD_RELOC_386_TLS_GD,
47.38533 ++  BFD_RELOC_386_TLS_LDM,
47.38534 ++  BFD_RELOC_386_TLS_LDO_32,
47.38535 ++  BFD_RELOC_386_TLS_IE_32,
47.38536 ++  BFD_RELOC_386_TLS_LE_32,
47.38537 ++  BFD_RELOC_386_TLS_DTPMOD32,
47.38538 ++  BFD_RELOC_386_TLS_DTPOFF32,
47.38539 ++  BFD_RELOC_386_TLS_TPOFF32,
47.38540 ++  BFD_RELOC_386_TLS_GOTDESC,
47.38541 ++  BFD_RELOC_386_TLS_DESC_CALL,
47.38542 ++  BFD_RELOC_386_TLS_DESC,
47.38543 ++
47.38544 ++/* x86-64/elf relocations  */
47.38545 ++  BFD_RELOC_X86_64_GOT32,
47.38546 ++  BFD_RELOC_X86_64_PLT32,
47.38547 ++  BFD_RELOC_X86_64_COPY,
47.38548 ++  BFD_RELOC_X86_64_GLOB_DAT,
47.38549 ++  BFD_RELOC_X86_64_JUMP_SLOT,
47.38550 ++  BFD_RELOC_X86_64_RELATIVE,
47.38551 ++  BFD_RELOC_X86_64_GOTPCREL,
47.38552 ++  BFD_RELOC_X86_64_32S,
47.38553 ++  BFD_RELOC_X86_64_DTPMOD64,
47.38554 ++  BFD_RELOC_X86_64_DTPOFF64,
47.38555 ++  BFD_RELOC_X86_64_TPOFF64,
47.38556 ++  BFD_RELOC_X86_64_TLSGD,
47.38557 ++  BFD_RELOC_X86_64_TLSLD,
47.38558 ++  BFD_RELOC_X86_64_DTPOFF32,
47.38559 ++  BFD_RELOC_X86_64_GOTTPOFF,
47.38560 ++  BFD_RELOC_X86_64_TPOFF32,
47.38561 ++  BFD_RELOC_X86_64_GOTOFF64,
47.38562 ++  BFD_RELOC_X86_64_GOTPC32,
47.38563 ++  BFD_RELOC_X86_64_GOT64,
47.38564 ++  BFD_RELOC_X86_64_GOTPCREL64,
47.38565 ++  BFD_RELOC_X86_64_GOTPC64,
47.38566 ++  BFD_RELOC_X86_64_GOTPLT64,
47.38567 ++  BFD_RELOC_X86_64_PLTOFF64,
47.38568 ++  BFD_RELOC_X86_64_GOTPC32_TLSDESC,
47.38569 ++  BFD_RELOC_X86_64_TLSDESC_CALL,
47.38570 ++  BFD_RELOC_X86_64_TLSDESC,
47.38571 ++
47.38572 ++/* ns32k relocations  */
47.38573 ++  BFD_RELOC_NS32K_IMM_8,
47.38574 ++  BFD_RELOC_NS32K_IMM_16,
47.38575 ++  BFD_RELOC_NS32K_IMM_32,
47.38576 ++  BFD_RELOC_NS32K_IMM_8_PCREL,
47.38577 ++  BFD_RELOC_NS32K_IMM_16_PCREL,
47.38578 ++  BFD_RELOC_NS32K_IMM_32_PCREL,
47.38579 ++  BFD_RELOC_NS32K_DISP_8,
47.38580 ++  BFD_RELOC_NS32K_DISP_16,
47.38581 ++  BFD_RELOC_NS32K_DISP_32,
47.38582 ++  BFD_RELOC_NS32K_DISP_8_PCREL,
47.38583 ++  BFD_RELOC_NS32K_DISP_16_PCREL,
47.38584 ++  BFD_RELOC_NS32K_DISP_32_PCREL,
47.38585 ++
47.38586 ++/* PDP11 relocations  */
47.38587 ++  BFD_RELOC_PDP11_DISP_8_PCREL,
47.38588 ++  BFD_RELOC_PDP11_DISP_6_PCREL,
47.38589 ++
47.38590 ++/* Picojava relocs.  Not all of these appear in object files.  */
47.38591 ++  BFD_RELOC_PJ_CODE_HI16,
47.38592 ++  BFD_RELOC_PJ_CODE_LO16,
47.38593 ++  BFD_RELOC_PJ_CODE_DIR16,
47.38594 ++  BFD_RELOC_PJ_CODE_DIR32,
47.38595 ++  BFD_RELOC_PJ_CODE_REL16,
47.38596 ++  BFD_RELOC_PJ_CODE_REL32,
47.38597 ++
47.38598 ++/* Power(rs6000) and PowerPC relocations.  */
47.38599 ++  BFD_RELOC_PPC_B26,
47.38600 ++  BFD_RELOC_PPC_BA26,
47.38601 ++  BFD_RELOC_PPC_TOC16,
47.38602 ++  BFD_RELOC_PPC_B16,
47.38603 ++  BFD_RELOC_PPC_B16_BRTAKEN,
47.38604 ++  BFD_RELOC_PPC_B16_BRNTAKEN,
47.38605 ++  BFD_RELOC_PPC_BA16,
47.38606 ++  BFD_RELOC_PPC_BA16_BRTAKEN,
47.38607 ++  BFD_RELOC_PPC_BA16_BRNTAKEN,
47.38608 ++  BFD_RELOC_PPC_COPY,
47.38609 ++  BFD_RELOC_PPC_GLOB_DAT,
47.38610 ++  BFD_RELOC_PPC_JMP_SLOT,
47.38611 ++  BFD_RELOC_PPC_RELATIVE,
47.38612 ++  BFD_RELOC_PPC_LOCAL24PC,
47.38613 ++  BFD_RELOC_PPC_EMB_NADDR32,
47.38614 ++  BFD_RELOC_PPC_EMB_NADDR16,
47.38615 ++  BFD_RELOC_PPC_EMB_NADDR16_LO,
47.38616 ++  BFD_RELOC_PPC_EMB_NADDR16_HI,
47.38617 ++  BFD_RELOC_PPC_EMB_NADDR16_HA,
47.38618 ++  BFD_RELOC_PPC_EMB_SDAI16,
47.38619 ++  BFD_RELOC_PPC_EMB_SDA2I16,
47.38620 ++  BFD_RELOC_PPC_EMB_SDA2REL,
47.38621 ++  BFD_RELOC_PPC_EMB_SDA21,
47.38622 ++  BFD_RELOC_PPC_EMB_MRKREF,
47.38623 ++  BFD_RELOC_PPC_EMB_RELSEC16,
47.38624 ++  BFD_RELOC_PPC_EMB_RELST_LO,
47.38625 ++  BFD_RELOC_PPC_EMB_RELST_HI,
47.38626 ++  BFD_RELOC_PPC_EMB_RELST_HA,
47.38627 ++  BFD_RELOC_PPC_EMB_BIT_FLD,
47.38628 ++  BFD_RELOC_PPC_EMB_RELSDA,
47.38629 ++  BFD_RELOC_PPC64_HIGHER,
47.38630 ++  BFD_RELOC_PPC64_HIGHER_S,
47.38631 ++  BFD_RELOC_PPC64_HIGHEST,
47.38632 ++  BFD_RELOC_PPC64_HIGHEST_S,
47.38633 ++  BFD_RELOC_PPC64_TOC16_LO,
47.38634 ++  BFD_RELOC_PPC64_TOC16_HI,
47.38635 ++  BFD_RELOC_PPC64_TOC16_HA,
47.38636 ++  BFD_RELOC_PPC64_TOC,
47.38637 ++  BFD_RELOC_PPC64_PLTGOT16,
47.38638 ++  BFD_RELOC_PPC64_PLTGOT16_LO,
47.38639 ++  BFD_RELOC_PPC64_PLTGOT16_HI,
47.38640 ++  BFD_RELOC_PPC64_PLTGOT16_HA,
47.38641 ++  BFD_RELOC_PPC64_ADDR16_DS,
47.38642 ++  BFD_RELOC_PPC64_ADDR16_LO_DS,
47.38643 ++  BFD_RELOC_PPC64_GOT16_DS,
47.38644 ++  BFD_RELOC_PPC64_GOT16_LO_DS,
47.38645 ++  BFD_RELOC_PPC64_PLT16_LO_DS,
47.38646 ++  BFD_RELOC_PPC64_SECTOFF_DS,
47.38647 ++  BFD_RELOC_PPC64_SECTOFF_LO_DS,
47.38648 ++  BFD_RELOC_PPC64_TOC16_DS,
47.38649 ++  BFD_RELOC_PPC64_TOC16_LO_DS,
47.38650 ++  BFD_RELOC_PPC64_PLTGOT16_DS,
47.38651 ++  BFD_RELOC_PPC64_PLTGOT16_LO_DS,
47.38652 ++
47.38653 ++/* PowerPC and PowerPC64 thread-local storage relocations.  */
47.38654 ++  BFD_RELOC_PPC_TLS,
47.38655 ++  BFD_RELOC_PPC_DTPMOD,
47.38656 ++  BFD_RELOC_PPC_TPREL16,
47.38657 ++  BFD_RELOC_PPC_TPREL16_LO,
47.38658 ++  BFD_RELOC_PPC_TPREL16_HI,
47.38659 ++  BFD_RELOC_PPC_TPREL16_HA,
47.38660 ++  BFD_RELOC_PPC_TPREL,
47.38661 ++  BFD_RELOC_PPC_DTPREL16,
47.38662 ++  BFD_RELOC_PPC_DTPREL16_LO,
47.38663 ++  BFD_RELOC_PPC_DTPREL16_HI,
47.38664 ++  BFD_RELOC_PPC_DTPREL16_HA,
47.38665 ++  BFD_RELOC_PPC_DTPREL,
47.38666 ++  BFD_RELOC_PPC_GOT_TLSGD16,
47.38667 ++  BFD_RELOC_PPC_GOT_TLSGD16_LO,
47.38668 ++  BFD_RELOC_PPC_GOT_TLSGD16_HI,
47.38669 ++  BFD_RELOC_PPC_GOT_TLSGD16_HA,
47.38670 ++  BFD_RELOC_PPC_GOT_TLSLD16,
47.38671 ++  BFD_RELOC_PPC_GOT_TLSLD16_LO,
47.38672 ++  BFD_RELOC_PPC_GOT_TLSLD16_HI,
47.38673 ++  BFD_RELOC_PPC_GOT_TLSLD16_HA,
47.38674 ++  BFD_RELOC_PPC_GOT_TPREL16,
47.38675 ++  BFD_RELOC_PPC_GOT_TPREL16_LO,
47.38676 ++  BFD_RELOC_PPC_GOT_TPREL16_HI,
47.38677 ++  BFD_RELOC_PPC_GOT_TPREL16_HA,
47.38678 ++  BFD_RELOC_PPC_GOT_DTPREL16,
47.38679 ++  BFD_RELOC_PPC_GOT_DTPREL16_LO,
47.38680 ++  BFD_RELOC_PPC_GOT_DTPREL16_HI,
47.38681 ++  BFD_RELOC_PPC_GOT_DTPREL16_HA,
47.38682 ++  BFD_RELOC_PPC64_TPREL16_DS,
47.38683 ++  BFD_RELOC_PPC64_TPREL16_LO_DS,
47.38684 ++  BFD_RELOC_PPC64_TPREL16_HIGHER,
47.38685 ++  BFD_RELOC_PPC64_TPREL16_HIGHERA,
47.38686 ++  BFD_RELOC_PPC64_TPREL16_HIGHEST,
47.38687 ++  BFD_RELOC_PPC64_TPREL16_HIGHESTA,
47.38688 ++  BFD_RELOC_PPC64_DTPREL16_DS,
47.38689 ++  BFD_RELOC_PPC64_DTPREL16_LO_DS,
47.38690 ++  BFD_RELOC_PPC64_DTPREL16_HIGHER,
47.38691 ++  BFD_RELOC_PPC64_DTPREL16_HIGHERA,
47.38692 ++  BFD_RELOC_PPC64_DTPREL16_HIGHEST,
47.38693 ++  BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
47.38694 ++
47.38695 ++/* IBM 370/390 relocations  */
47.38696 ++  BFD_RELOC_I370_D12,
47.38697 ++
47.38698 ++/* The type of reloc used to build a constructor table - at the moment
47.38699 ++probably a 32 bit wide absolute relocation, but the target can choose.
47.38700 ++It generally does map to one of the other relocation types.  */
47.38701 ++  BFD_RELOC_CTOR,
47.38702 ++
47.38703 ++/* ARM 26 bit pc-relative branch.  The lowest two bits must be zero and are
47.38704 ++not stored in the instruction.  */
47.38705 ++  BFD_RELOC_ARM_PCREL_BRANCH,
47.38706 ++
47.38707 ++/* ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
47.38708 ++not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
47.38709 ++field in the instruction.  */
47.38710 ++  BFD_RELOC_ARM_PCREL_BLX,
47.38711 ++
47.38712 ++/* Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
47.38713 ++not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
47.38714 ++field in the instruction.  */
47.38715 ++  BFD_RELOC_THUMB_PCREL_BLX,
47.38716 ++
47.38717 ++/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.  */
47.38718 ++  BFD_RELOC_ARM_PCREL_CALL,
47.38719 ++
47.38720 ++/* ARM 26-bit pc-relative branch for B or conditional BL instruction.  */
47.38721 ++  BFD_RELOC_ARM_PCREL_JUMP,
47.38722 ++
47.38723 ++/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
47.38724 ++The lowest bit must be zero and is not stored in the instruction.
47.38725 ++Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
47.38726 ++"nn" one smaller in all cases.  Note further that BRANCH23
47.38727 ++corresponds to R_ARM_THM_CALL.  */
47.38728 ++  BFD_RELOC_THUMB_PCREL_BRANCH7,
47.38729 ++  BFD_RELOC_THUMB_PCREL_BRANCH9,
47.38730 ++  BFD_RELOC_THUMB_PCREL_BRANCH12,
47.38731 ++  BFD_RELOC_THUMB_PCREL_BRANCH20,
47.38732 ++  BFD_RELOC_THUMB_PCREL_BRANCH23,
47.38733 ++  BFD_RELOC_THUMB_PCREL_BRANCH25,
47.38734 ++
47.38735 ++/* 12-bit immediate offset, used in ARM-format ldr and str instructions.  */
47.38736 ++  BFD_RELOC_ARM_OFFSET_IMM,
47.38737 ++
47.38738 ++/* 5-bit immediate offset, used in Thumb-format ldr and str instructions.  */
47.38739 ++  BFD_RELOC_ARM_THUMB_OFFSET,
47.38740 ++
47.38741 ++/* Pc-relative or absolute relocation depending on target.  Used for
47.38742 ++entries in .init_array sections.  */
47.38743 ++  BFD_RELOC_ARM_TARGET1,
47.38744 ++
47.38745 ++/* Read-only segment base relative address.  */
47.38746 ++  BFD_RELOC_ARM_ROSEGREL32,
47.38747 ++
47.38748 ++/* Data segment base relative address.  */
47.38749 ++  BFD_RELOC_ARM_SBREL32,
47.38750 ++
47.38751 ++/* This reloc is used for references to RTTI data from exception handling
47.38752 ++tables.  The actual definition depends on the target.  It may be a
47.38753 ++pc-relative or some form of GOT-indirect relocation.  */
47.38754 ++  BFD_RELOC_ARM_TARGET2,
47.38755 ++
47.38756 ++/* 31-bit PC relative address.  */
47.38757 ++  BFD_RELOC_ARM_PREL31,
47.38758 ++
47.38759 ++/* Low and High halfword relocations for MOVW and MOVT instructions.  */
47.38760 ++  BFD_RELOC_ARM_MOVW,
47.38761 ++  BFD_RELOC_ARM_MOVT,
47.38762 ++  BFD_RELOC_ARM_MOVW_PCREL,
47.38763 ++  BFD_RELOC_ARM_MOVT_PCREL,
47.38764 ++  BFD_RELOC_ARM_THUMB_MOVW,
47.38765 ++  BFD_RELOC_ARM_THUMB_MOVT,
47.38766 ++  BFD_RELOC_ARM_THUMB_MOVW_PCREL,
47.38767 ++  BFD_RELOC_ARM_THUMB_MOVT_PCREL,
47.38768 ++
47.38769 ++/* Relocations for setting up GOTs and PLTs for shared libraries.  */
47.38770 ++  BFD_RELOC_ARM_JUMP_SLOT,
47.38771 ++  BFD_RELOC_ARM_GLOB_DAT,
47.38772 ++  BFD_RELOC_ARM_GOT32,
47.38773 ++  BFD_RELOC_ARM_PLT32,
47.38774 ++  BFD_RELOC_ARM_RELATIVE,
47.38775 ++  BFD_RELOC_ARM_GOTOFF,
47.38776 ++  BFD_RELOC_ARM_GOTPC,
47.38777 ++
47.38778 ++/* ARM thread-local storage relocations.  */
47.38779 ++  BFD_RELOC_ARM_TLS_GD32,
47.38780 ++  BFD_RELOC_ARM_TLS_LDO32,
47.38781 ++  BFD_RELOC_ARM_TLS_LDM32,
47.38782 ++  BFD_RELOC_ARM_TLS_DTPOFF32,
47.38783 ++  BFD_RELOC_ARM_TLS_DTPMOD32,
47.38784 ++  BFD_RELOC_ARM_TLS_TPOFF32,
47.38785 ++  BFD_RELOC_ARM_TLS_IE32,
47.38786 ++  BFD_RELOC_ARM_TLS_LE32,
47.38787 ++
47.38788 ++/* ARM group relocations.  */
47.38789 ++  BFD_RELOC_ARM_ALU_PC_G0_NC,
47.38790 ++  BFD_RELOC_ARM_ALU_PC_G0,
47.38791 ++  BFD_RELOC_ARM_ALU_PC_G1_NC,
47.38792 ++  BFD_RELOC_ARM_ALU_PC_G1,
47.38793 ++  BFD_RELOC_ARM_ALU_PC_G2,
47.38794 ++  BFD_RELOC_ARM_LDR_PC_G0,
47.38795 ++  BFD_RELOC_ARM_LDR_PC_G1,
47.38796 ++  BFD_RELOC_ARM_LDR_PC_G2,
47.38797 ++  BFD_RELOC_ARM_LDRS_PC_G0,
47.38798 ++  BFD_RELOC_ARM_LDRS_PC_G1,
47.38799 ++  BFD_RELOC_ARM_LDRS_PC_G2,
47.38800 ++  BFD_RELOC_ARM_LDC_PC_G0,
47.38801 ++  BFD_RELOC_ARM_LDC_PC_G1,
47.38802 ++  BFD_RELOC_ARM_LDC_PC_G2,
47.38803 ++  BFD_RELOC_ARM_ALU_SB_G0_NC,
47.38804 ++  BFD_RELOC_ARM_ALU_SB_G0,
47.38805 ++  BFD_RELOC_ARM_ALU_SB_G1_NC,
47.38806 ++  BFD_RELOC_ARM_ALU_SB_G1,
47.38807 ++  BFD_RELOC_ARM_ALU_SB_G2,
47.38808 ++  BFD_RELOC_ARM_LDR_SB_G0,
47.38809 ++  BFD_RELOC_ARM_LDR_SB_G1,
47.38810 ++  BFD_RELOC_ARM_LDR_SB_G2,
47.38811 ++  BFD_RELOC_ARM_LDRS_SB_G0,
47.38812 ++  BFD_RELOC_ARM_LDRS_SB_G1,
47.38813 ++  BFD_RELOC_ARM_LDRS_SB_G2,
47.38814 ++  BFD_RELOC_ARM_LDC_SB_G0,
47.38815 ++  BFD_RELOC_ARM_LDC_SB_G1,
47.38816 ++  BFD_RELOC_ARM_LDC_SB_G2,
47.38817 ++
47.38818 ++/* These relocs are only used within the ARM assembler.  They are not
47.38819 ++(at present) written to any object files.  */
47.38820 ++  BFD_RELOC_ARM_IMMEDIATE,
47.38821 ++  BFD_RELOC_ARM_ADRL_IMMEDIATE,
47.38822 ++  BFD_RELOC_ARM_T32_IMMEDIATE,
47.38823 ++  BFD_RELOC_ARM_T32_ADD_IMM,
47.38824 ++  BFD_RELOC_ARM_T32_IMM12,
47.38825 ++  BFD_RELOC_ARM_T32_ADD_PC12,
47.38826 ++  BFD_RELOC_ARM_SHIFT_IMM,
47.38827 ++  BFD_RELOC_ARM_SMC,
47.38828 ++  BFD_RELOC_ARM_SWI,
47.38829 ++  BFD_RELOC_ARM_MULTI,
47.38830 ++  BFD_RELOC_ARM_CP_OFF_IMM,
47.38831 ++  BFD_RELOC_ARM_CP_OFF_IMM_S2,
47.38832 ++  BFD_RELOC_ARM_T32_CP_OFF_IMM,
47.38833 ++  BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
47.38834 ++  BFD_RELOC_ARM_ADR_IMM,
47.38835 ++  BFD_RELOC_ARM_LDR_IMM,
47.38836 ++  BFD_RELOC_ARM_LITERAL,
47.38837 ++  BFD_RELOC_ARM_IN_POOL,
47.38838 ++  BFD_RELOC_ARM_OFFSET_IMM8,
47.38839 ++  BFD_RELOC_ARM_T32_OFFSET_U8,
47.38840 ++  BFD_RELOC_ARM_T32_OFFSET_IMM,
47.38841 ++  BFD_RELOC_ARM_HWLITERAL,
47.38842 ++  BFD_RELOC_ARM_THUMB_ADD,
47.38843 ++  BFD_RELOC_ARM_THUMB_IMM,
47.38844 ++  BFD_RELOC_ARM_THUMB_SHIFT,
47.38845 ++
47.38846 ++/* Renesas / SuperH SH relocs.  Not all of these appear in object files.  */
47.38847 ++  BFD_RELOC_SH_PCDISP8BY2,
47.38848 ++  BFD_RELOC_SH_PCDISP12BY2,
47.38849 ++  BFD_RELOC_SH_IMM3,
47.38850 ++  BFD_RELOC_SH_IMM3U,
47.38851 ++  BFD_RELOC_SH_DISP12,
47.38852 ++  BFD_RELOC_SH_DISP12BY2,
47.38853 ++  BFD_RELOC_SH_DISP12BY4,
47.38854 ++  BFD_RELOC_SH_DISP12BY8,
47.38855 ++  BFD_RELOC_SH_DISP20,
47.38856 ++  BFD_RELOC_SH_DISP20BY8,
47.38857 ++  BFD_RELOC_SH_IMM4,
47.38858 ++  BFD_RELOC_SH_IMM4BY2,
47.38859 ++  BFD_RELOC_SH_IMM4BY4,
47.38860 ++  BFD_RELOC_SH_IMM8,
47.38861 ++  BFD_RELOC_SH_IMM8BY2,
47.38862 ++  BFD_RELOC_SH_IMM8BY4,
47.38863 ++  BFD_RELOC_SH_PCRELIMM8BY2,
47.38864 ++  BFD_RELOC_SH_PCRELIMM8BY4,
47.38865 ++  BFD_RELOC_SH_SWITCH16,
47.38866 ++  BFD_RELOC_SH_SWITCH32,
47.38867 ++  BFD_RELOC_SH_USES,
47.38868 ++  BFD_RELOC_SH_COUNT,
47.38869 ++  BFD_RELOC_SH_ALIGN,
47.38870 ++  BFD_RELOC_SH_CODE,
47.38871 ++  BFD_RELOC_SH_DATA,
47.38872 ++  BFD_RELOC_SH_LABEL,
47.38873 ++  BFD_RELOC_SH_LOOP_START,
47.38874 ++  BFD_RELOC_SH_LOOP_END,
47.38875 ++  BFD_RELOC_SH_COPY,
47.38876 ++  BFD_RELOC_SH_GLOB_DAT,
47.38877 ++  BFD_RELOC_SH_JMP_SLOT,
47.38878 ++  BFD_RELOC_SH_RELATIVE,
47.38879 ++  BFD_RELOC_SH_GOTPC,
47.38880 ++  BFD_RELOC_SH_GOT_LOW16,
47.38881 ++  BFD_RELOC_SH_GOT_MEDLOW16,
47.38882 ++  BFD_RELOC_SH_GOT_MEDHI16,
47.38883 ++  BFD_RELOC_SH_GOT_HI16,
47.38884 ++  BFD_RELOC_SH_GOTPLT_LOW16,
47.38885 ++  BFD_RELOC_SH_GOTPLT_MEDLOW16,
47.38886 ++  BFD_RELOC_SH_GOTPLT_MEDHI16,
47.38887 ++  BFD_RELOC_SH_GOTPLT_HI16,
47.38888 ++  BFD_RELOC_SH_PLT_LOW16,
47.38889 ++  BFD_RELOC_SH_PLT_MEDLOW16,
47.38890 ++  BFD_RELOC_SH_PLT_MEDHI16,
47.38891 ++  BFD_RELOC_SH_PLT_HI16,
47.38892 ++  BFD_RELOC_SH_GOTOFF_LOW16,
47.38893 ++  BFD_RELOC_SH_GOTOFF_MEDLOW16,
47.38894 ++  BFD_RELOC_SH_GOTOFF_MEDHI16,
47.38895 ++  BFD_RELOC_SH_GOTOFF_HI16,
47.38896 ++  BFD_RELOC_SH_GOTPC_LOW16,
47.38897 ++  BFD_RELOC_SH_GOTPC_MEDLOW16,
47.38898 ++  BFD_RELOC_SH_GOTPC_MEDHI16,
47.38899 ++  BFD_RELOC_SH_GOTPC_HI16,
47.38900 ++  BFD_RELOC_SH_COPY64,
47.38901 ++  BFD_RELOC_SH_GLOB_DAT64,
47.38902 ++  BFD_RELOC_SH_JMP_SLOT64,
47.38903 ++  BFD_RELOC_SH_RELATIVE64,
47.38904 ++  BFD_RELOC_SH_GOT10BY4,
47.38905 ++  BFD_RELOC_SH_GOT10BY8,
47.38906 ++  BFD_RELOC_SH_GOTPLT10BY4,
47.38907 ++  BFD_RELOC_SH_GOTPLT10BY8,
47.38908 ++  BFD_RELOC_SH_GOTPLT32,
47.38909 ++  BFD_RELOC_SH_SHMEDIA_CODE,
47.38910 ++  BFD_RELOC_SH_IMMU5,
47.38911 ++  BFD_RELOC_SH_IMMS6,
47.38912 ++  BFD_RELOC_SH_IMMS6BY32,
47.38913 ++  BFD_RELOC_SH_IMMU6,
47.38914 ++  BFD_RELOC_SH_IMMS10,
47.38915 ++  BFD_RELOC_SH_IMMS10BY2,
47.38916 ++  BFD_RELOC_SH_IMMS10BY4,
47.38917 ++  BFD_RELOC_SH_IMMS10BY8,
47.38918 ++  BFD_RELOC_SH_IMMS16,
47.38919 ++  BFD_RELOC_SH_IMMU16,
47.38920 ++  BFD_RELOC_SH_IMM_LOW16,
47.38921 ++  BFD_RELOC_SH_IMM_LOW16_PCREL,
47.38922 ++  BFD_RELOC_SH_IMM_MEDLOW16,
47.38923 ++  BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
47.38924 ++  BFD_RELOC_SH_IMM_MEDHI16,
47.38925 ++  BFD_RELOC_SH_IMM_MEDHI16_PCREL,
47.38926 ++  BFD_RELOC_SH_IMM_HI16,
47.38927 ++  BFD_RELOC_SH_IMM_HI16_PCREL,
47.38928 ++  BFD_RELOC_SH_PT_16,
47.38929 ++  BFD_RELOC_SH_TLS_GD_32,
47.38930 ++  BFD_RELOC_SH_TLS_LD_32,
47.38931 ++  BFD_RELOC_SH_TLS_LDO_32,
47.38932 ++  BFD_RELOC_SH_TLS_IE_32,
47.38933 ++  BFD_RELOC_SH_TLS_LE_32,
47.38934 ++  BFD_RELOC_SH_TLS_DTPMOD32,
47.38935 ++  BFD_RELOC_SH_TLS_DTPOFF32,
47.38936 ++  BFD_RELOC_SH_TLS_TPOFF32,
47.38937 ++
47.38938 ++/* ARC Cores relocs.
47.38939 ++ARC 22 bit pc-relative branch.  The lowest two bits must be zero and are
47.38940 ++not stored in the instruction.  The high 20 bits are installed in bits 26
47.38941 ++through 7 of the instruction.  */
47.38942 ++  BFD_RELOC_ARC_B22_PCREL,
47.38943 ++
47.38944 ++/* ARC 26 bit absolute branch.  The lowest two bits must be zero and are not
47.38945 ++stored in the instruction.  The high 24 bits are installed in bits 23
47.38946 ++through 0.  */
47.38947 ++  BFD_RELOC_ARC_B26,
47.38948 ++
47.38949 ++/* ADI Blackfin 16 bit immediate absolute reloc.  */
47.38950 ++  BFD_RELOC_BFIN_16_IMM,
47.38951 ++
47.38952 ++/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.  */
47.38953 ++  BFD_RELOC_BFIN_16_HIGH,
47.38954 ++
47.38955 ++/* ADI Blackfin 'a' part of LSETUP.  */
47.38956 ++  BFD_RELOC_BFIN_4_PCREL,
47.38957 ++
47.38958 ++/* ADI Blackfin.  */
47.38959 ++  BFD_RELOC_BFIN_5_PCREL,
47.38960 ++
47.38961 ++/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.  */
47.38962 ++  BFD_RELOC_BFIN_16_LOW,
47.38963 ++
47.38964 ++/* ADI Blackfin.  */
47.38965 ++  BFD_RELOC_BFIN_10_PCREL,
47.38966 ++
47.38967 ++/* ADI Blackfin 'b' part of LSETUP.  */
47.38968 ++  BFD_RELOC_BFIN_11_PCREL,
47.38969 ++
47.38970 ++/* ADI Blackfin.  */
47.38971 ++  BFD_RELOC_BFIN_12_PCREL_JUMP,
47.38972 ++
47.38973 ++/* ADI Blackfin Short jump, pcrel.  */
47.38974 ++  BFD_RELOC_BFIN_12_PCREL_JUMP_S,
47.38975 ++
47.38976 ++/* ADI Blackfin Call.x not implemented.  */
47.38977 ++  BFD_RELOC_BFIN_24_PCREL_CALL_X,
47.38978 ++
47.38979 ++/* ADI Blackfin Long Jump pcrel.  */
47.38980 ++  BFD_RELOC_BFIN_24_PCREL_JUMP_L,
47.38981 ++
47.38982 ++/* ADI Blackfin FD-PIC relocations.  */
47.38983 ++  BFD_RELOC_BFIN_GOT17M4,
47.38984 ++  BFD_RELOC_BFIN_GOTHI,
47.38985 ++  BFD_RELOC_BFIN_GOTLO,
47.38986 ++  BFD_RELOC_BFIN_FUNCDESC,
47.38987 ++  BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
47.38988 ++  BFD_RELOC_BFIN_FUNCDESC_GOTHI,
47.38989 ++  BFD_RELOC_BFIN_FUNCDESC_GOTLO,
47.38990 ++  BFD_RELOC_BFIN_FUNCDESC_VALUE,
47.38991 ++  BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
47.38992 ++  BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
47.38993 ++  BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
47.38994 ++  BFD_RELOC_BFIN_GOTOFF17M4,
47.38995 ++  BFD_RELOC_BFIN_GOTOFFHI,
47.38996 ++  BFD_RELOC_BFIN_GOTOFFLO,
47.38997 ++
47.38998 ++/* ADI Blackfin GOT relocation.  */
47.38999 ++  BFD_RELOC_BFIN_GOT,
47.39000 ++
47.39001 ++/* ADI Blackfin PLTPC relocation.  */
47.39002 ++  BFD_RELOC_BFIN_PLTPC,
47.39003 ++
47.39004 ++/* ADI Blackfin arithmetic relocation.  */
47.39005 ++  BFD_ARELOC_BFIN_PUSH,
47.39006 ++
47.39007 ++/* ADI Blackfin arithmetic relocation.  */
47.39008 ++  BFD_ARELOC_BFIN_CONST,
47.39009 ++
47.39010 ++/* ADI Blackfin arithmetic relocation.  */
47.39011 ++  BFD_ARELOC_BFIN_ADD,
47.39012 ++
47.39013 ++/* ADI Blackfin arithmetic relocation.  */
47.39014 ++  BFD_ARELOC_BFIN_SUB,
47.39015 ++
47.39016 ++/* ADI Blackfin arithmetic relocation.  */
47.39017 ++  BFD_ARELOC_BFIN_MULT,
47.39018 ++
47.39019 ++/* ADI Blackfin arithmetic relocation.  */
47.39020 ++  BFD_ARELOC_BFIN_DIV,
47.39021 ++
47.39022 ++/* ADI Blackfin arithmetic relocation.  */
47.39023 ++  BFD_ARELOC_BFIN_MOD,
47.39024 ++
47.39025 ++/* ADI Blackfin arithmetic relocation.  */
47.39026 ++  BFD_ARELOC_BFIN_LSHIFT,
47.39027 ++
47.39028 ++/* ADI Blackfin arithmetic relocation.  */
47.39029 ++  BFD_ARELOC_BFIN_RSHIFT,
47.39030 ++
47.39031 ++/* ADI Blackfin arithmetic relocation.  */
47.39032 ++  BFD_ARELOC_BFIN_AND,
47.39033 ++
47.39034 ++/* ADI Blackfin arithmetic relocation.  */
47.39035 ++  BFD_ARELOC_BFIN_OR,
47.39036 ++
47.39037 ++/* ADI Blackfin arithmetic relocation.  */
47.39038 ++  BFD_ARELOC_BFIN_XOR,
47.39039 ++
47.39040 ++/* ADI Blackfin arithmetic relocation.  */
47.39041 ++  BFD_ARELOC_BFIN_LAND,
47.39042 ++
47.39043 ++/* ADI Blackfin arithmetic relocation.  */
47.39044 ++  BFD_ARELOC_BFIN_LOR,
47.39045 ++
47.39046 ++/* ADI Blackfin arithmetic relocation.  */
47.39047 ++  BFD_ARELOC_BFIN_LEN,
47.39048 ++
47.39049 ++/* ADI Blackfin arithmetic relocation.  */
47.39050 ++  BFD_ARELOC_BFIN_NEG,
47.39051 ++
47.39052 ++/* ADI Blackfin arithmetic relocation.  */
47.39053 ++  BFD_ARELOC_BFIN_COMP,
47.39054 ++
47.39055 ++/* ADI Blackfin arithmetic relocation.  */
47.39056 ++  BFD_ARELOC_BFIN_PAGE,
47.39057 ++
47.39058 ++/* ADI Blackfin arithmetic relocation.  */
47.39059 ++  BFD_ARELOC_BFIN_HWPAGE,
47.39060 ++
47.39061 ++/* ADI Blackfin arithmetic relocation.  */
47.39062 ++  BFD_ARELOC_BFIN_ADDR,
47.39063 ++
47.39064 ++/* Mitsubishi D10V relocs.
47.39065 ++This is a 10-bit reloc with the right 2 bits
47.39066 ++assumed to be 0.  */
47.39067 ++  BFD_RELOC_D10V_10_PCREL_R,
47.39068 ++
47.39069 ++/* Mitsubishi D10V relocs.
47.39070 ++This is a 10-bit reloc with the right 2 bits
47.39071 ++assumed to be 0.  This is the same as the previous reloc
47.39072 ++except it is in the left container, i.e.,
47.39073 ++shifted left 15 bits.  */
47.39074 ++  BFD_RELOC_D10V_10_PCREL_L,
47.39075 ++
47.39076 ++/* This is an 18-bit reloc with the right 2 bits
47.39077 ++assumed to be 0.  */
47.39078 ++  BFD_RELOC_D10V_18,
47.39079 ++
47.39080 ++/* This is an 18-bit reloc with the right 2 bits
47.39081 ++assumed to be 0.  */
47.39082 ++  BFD_RELOC_D10V_18_PCREL,
47.39083 ++
47.39084 ++/* Mitsubishi D30V relocs.
47.39085 ++This is a 6-bit absolute reloc.  */
47.39086 ++  BFD_RELOC_D30V_6,
47.39087 ++
47.39088 ++/* This is a 6-bit pc-relative reloc with
47.39089 ++the right 3 bits assumed to be 0.  */
47.39090 ++  BFD_RELOC_D30V_9_PCREL,
47.39091 ++
47.39092 ++/* This is a 6-bit pc-relative reloc with
47.39093 ++the right 3 bits assumed to be 0. Same
47.39094 ++as the previous reloc but on the right side
47.39095 ++of the container.  */
47.39096 ++  BFD_RELOC_D30V_9_PCREL_R,
47.39097 ++
47.39098 ++/* This is a 12-bit absolute reloc with the
47.39099 ++right 3 bitsassumed to be 0.  */
47.39100 ++  BFD_RELOC_D30V_15,
47.39101 ++
47.39102 ++/* This is a 12-bit pc-relative reloc with
47.39103 ++the right 3 bits assumed to be 0.  */
47.39104 ++  BFD_RELOC_D30V_15_PCREL,
47.39105 ++
47.39106 ++/* This is a 12-bit pc-relative reloc with
47.39107 ++the right 3 bits assumed to be 0. Same
47.39108 ++as the previous reloc but on the right side
47.39109 ++of the container.  */
47.39110 ++  BFD_RELOC_D30V_15_PCREL_R,
47.39111 ++
47.39112 ++/* This is an 18-bit absolute reloc with
47.39113 ++the right 3 bits assumed to be 0.  */
47.39114 ++  BFD_RELOC_D30V_21,
47.39115 ++
47.39116 ++/* This is an 18-bit pc-relative reloc with
47.39117 ++the right 3 bits assumed to be 0.  */
47.39118 ++  BFD_RELOC_D30V_21_PCREL,
47.39119 ++
47.39120 ++/* This is an 18-bit pc-relative reloc with
47.39121 ++the right 3 bits assumed to be 0. Same
47.39122 ++as the previous reloc but on the right side
47.39123 ++of the container.  */
47.39124 ++  BFD_RELOC_D30V_21_PCREL_R,
47.39125 ++
47.39126 ++/* This is a 32-bit absolute reloc.  */
47.39127 ++  BFD_RELOC_D30V_32,
47.39128 ++
47.39129 ++/* This is a 32-bit pc-relative reloc.  */
47.39130 ++  BFD_RELOC_D30V_32_PCREL,
47.39131 ++
47.39132 ++/* DLX relocs  */
47.39133 ++  BFD_RELOC_DLX_HI16_S,
47.39134 ++
47.39135 ++/* DLX relocs  */
47.39136 ++  BFD_RELOC_DLX_LO16,
47.39137 ++
47.39138 ++/* DLX relocs  */
47.39139 ++  BFD_RELOC_DLX_JMP26,
47.39140 ++
47.39141 ++/* Renesas M16C/M32C Relocations.  */
47.39142 ++  BFD_RELOC_M32C_HI8,
47.39143 ++  BFD_RELOC_M32C_RL_JUMP,
47.39144 ++  BFD_RELOC_M32C_RL_1ADDR,
47.39145 ++  BFD_RELOC_M32C_RL_2ADDR,
47.39146 ++
47.39147 ++/* Renesas M32R (formerly Mitsubishi M32R) relocs.
47.39148 ++This is a 24 bit absolute address.  */
47.39149 ++  BFD_RELOC_M32R_24,
47.39150 ++
47.39151 ++/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.  */
47.39152 ++  BFD_RELOC_M32R_10_PCREL,
47.39153 ++
47.39154 ++/* This is an 18-bit reloc with the right 2 bits assumed to be 0.  */
47.39155 ++  BFD_RELOC_M32R_18_PCREL,
47.39156 ++
47.39157 ++/* This is a 26-bit reloc with the right 2 bits assumed to be 0.  */
47.39158 ++  BFD_RELOC_M32R_26_PCREL,
47.39159 ++
47.39160 ++/* This is a 16-bit reloc containing the high 16 bits of an address
47.39161 ++used when the lower 16 bits are treated as unsigned.  */
47.39162 ++  BFD_RELOC_M32R_HI16_ULO,
47.39163 ++
47.39164 ++/* This is a 16-bit reloc containing the high 16 bits of an address
47.39165 ++used when the lower 16 bits are treated as signed.  */
47.39166 ++  BFD_RELOC_M32R_HI16_SLO,
47.39167 ++
47.39168 ++/* This is a 16-bit reloc containing the lower 16 bits of an address.  */
47.39169 ++  BFD_RELOC_M32R_LO16,
47.39170 ++
47.39171 ++/* This is a 16-bit reloc containing the small data area offset for use in
47.39172 ++add3, load, and store instructions.  */
47.39173 ++  BFD_RELOC_M32R_SDA16,
47.39174 ++
47.39175 ++/* For PIC.  */
47.39176 ++  BFD_RELOC_M32R_GOT24,
47.39177 ++  BFD_RELOC_M32R_26_PLTREL,
47.39178 ++  BFD_RELOC_M32R_COPY,
47.39179 ++  BFD_RELOC_M32R_GLOB_DAT,
47.39180 ++  BFD_RELOC_M32R_JMP_SLOT,
47.39181 ++  BFD_RELOC_M32R_RELATIVE,
47.39182 ++  BFD_RELOC_M32R_GOTOFF,
47.39183 ++  BFD_RELOC_M32R_GOTOFF_HI_ULO,
47.39184 ++  BFD_RELOC_M32R_GOTOFF_HI_SLO,
47.39185 ++  BFD_RELOC_M32R_GOTOFF_LO,
47.39186 ++  BFD_RELOC_M32R_GOTPC24,
47.39187 ++  BFD_RELOC_M32R_GOT16_HI_ULO,
47.39188 ++  BFD_RELOC_M32R_GOT16_HI_SLO,
47.39189 ++  BFD_RELOC_M32R_GOT16_LO,
47.39190 ++  BFD_RELOC_M32R_GOTPC_HI_ULO,
47.39191 ++  BFD_RELOC_M32R_GOTPC_HI_SLO,
47.39192 ++  BFD_RELOC_M32R_GOTPC_LO,
47.39193 ++
47.39194 ++/* This is a 9-bit reloc  */
47.39195 ++  BFD_RELOC_V850_9_PCREL,
47.39196 ++
47.39197 ++/* This is a 22-bit reloc  */
47.39198 ++  BFD_RELOC_V850_22_PCREL,
47.39199 ++
47.39200 ++/* This is a 16 bit offset from the short data area pointer.  */
47.39201 ++  BFD_RELOC_V850_SDA_16_16_OFFSET,
47.39202 ++
47.39203 ++/* This is a 16 bit offset (of which only 15 bits are used) from the
47.39204 ++short data area pointer.  */
47.39205 ++  BFD_RELOC_V850_SDA_15_16_OFFSET,
47.39206 ++
47.39207 ++/* This is a 16 bit offset from the zero data area pointer.  */
47.39208 ++  BFD_RELOC_V850_ZDA_16_16_OFFSET,
47.39209 ++
47.39210 ++/* This is a 16 bit offset (of which only 15 bits are used) from the
47.39211 ++zero data area pointer.  */
47.39212 ++  BFD_RELOC_V850_ZDA_15_16_OFFSET,
47.39213 ++
47.39214 ++/* This is an 8 bit offset (of which only 6 bits are used) from the
47.39215 ++tiny data area pointer.  */
47.39216 ++  BFD_RELOC_V850_TDA_6_8_OFFSET,
47.39217 ++
47.39218 ++/* This is an 8bit offset (of which only 7 bits are used) from the tiny
47.39219 ++data area pointer.  */
47.39220 ++  BFD_RELOC_V850_TDA_7_8_OFFSET,
47.39221 ++
47.39222 ++/* This is a 7 bit offset from the tiny data area pointer.  */
47.39223 ++  BFD_RELOC_V850_TDA_7_7_OFFSET,
47.39224 ++
47.39225 ++/* This is a 16 bit offset from the tiny data area pointer.  */
47.39226 ++  BFD_RELOC_V850_TDA_16_16_OFFSET,
47.39227 ++
47.39228 ++/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
47.39229 ++data area pointer.  */
47.39230 ++  BFD_RELOC_V850_TDA_4_5_OFFSET,
47.39231 ++
47.39232 ++/* This is a 4 bit offset from the tiny data area pointer.  */
47.39233 ++  BFD_RELOC_V850_TDA_4_4_OFFSET,
47.39234 ++
47.39235 ++/* This is a 16 bit offset from the short data area pointer, with the
47.39236 ++bits placed non-contiguously in the instruction.  */
47.39237 ++  BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
47.39238 ++
47.39239 ++/* This is a 16 bit offset from the zero data area pointer, with the
47.39240 ++bits placed non-contiguously in the instruction.  */
47.39241 ++  BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
47.39242 ++
47.39243 ++/* This is a 6 bit offset from the call table base pointer.  */
47.39244 ++  BFD_RELOC_V850_CALLT_6_7_OFFSET,
47.39245 ++
47.39246 ++/* This is a 16 bit offset from the call table base pointer.  */
47.39247 ++  BFD_RELOC_V850_CALLT_16_16_OFFSET,
47.39248 ++
47.39249 ++/* Used for relaxing indirect function calls.  */
47.39250 ++  BFD_RELOC_V850_LONGCALL,
47.39251 ++
47.39252 ++/* Used for relaxing indirect jumps.  */
47.39253 ++  BFD_RELOC_V850_LONGJUMP,
47.39254 ++
47.39255 ++/* Used to maintain alignment whilst relaxing.  */
47.39256 ++  BFD_RELOC_V850_ALIGN,
47.39257 ++
47.39258 ++/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
47.39259 ++instructions.  */
47.39260 ++  BFD_RELOC_V850_LO16_SPLIT_OFFSET,
47.39261 ++
47.39262 ++/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
47.39263 ++instruction.  */
47.39264 ++  BFD_RELOC_MN10300_32_PCREL,
47.39265 ++
47.39266 ++/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
47.39267 ++instruction.  */
47.39268 ++  BFD_RELOC_MN10300_16_PCREL,
47.39269 ++
47.39270 ++/* This is a 8bit DP reloc for the tms320c30, where the most
47.39271 ++significant 8 bits of a 24 bit word are placed into the least
47.39272 ++significant 8 bits of the opcode.  */
47.39273 ++  BFD_RELOC_TIC30_LDP,
47.39274 ++
47.39275 ++/* This is a 7bit reloc for the tms320c54x, where the least
47.39276 ++significant 7 bits of a 16 bit word are placed into the least
47.39277 ++significant 7 bits of the opcode.  */
47.39278 ++  BFD_RELOC_TIC54X_PARTLS7,
47.39279 ++
47.39280 ++/* This is a 9bit DP reloc for the tms320c54x, where the most
47.39281 ++significant 9 bits of a 16 bit word are placed into the least
47.39282 ++significant 9 bits of the opcode.  */
47.39283 ++  BFD_RELOC_TIC54X_PARTMS9,
47.39284 ++
47.39285 ++/* This is an extended address 23-bit reloc for the tms320c54x.  */
47.39286 ++  BFD_RELOC_TIC54X_23,
47.39287 ++
47.39288 ++/* This is a 16-bit reloc for the tms320c54x, where the least
47.39289 ++significant 16 bits of a 23-bit extended address are placed into
47.39290 ++the opcode.  */
47.39291 ++  BFD_RELOC_TIC54X_16_OF_23,
47.39292 ++
47.39293 ++/* This is a reloc for the tms320c54x, where the most
47.39294 ++significant 7 bits of a 23-bit extended address are placed into
47.39295 ++the opcode.  */
47.39296 ++  BFD_RELOC_TIC54X_MS7_OF_23,
47.39297 ++
47.39298 ++/* This is a 48 bit reloc for the FR30 that stores 32 bits.  */
47.39299 ++  BFD_RELOC_FR30_48,
47.39300 ++
47.39301 ++/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
47.39302 ++two sections.  */
47.39303 ++  BFD_RELOC_FR30_20,
47.39304 ++
47.39305 ++/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
47.39306 ++4 bits.  */
47.39307 ++  BFD_RELOC_FR30_6_IN_4,
47.39308 ++
47.39309 ++/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
47.39310 ++into 8 bits.  */
47.39311 ++  BFD_RELOC_FR30_8_IN_8,
47.39312 ++
47.39313 ++/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
47.39314 ++into 8 bits.  */
47.39315 ++  BFD_RELOC_FR30_9_IN_8,
47.39316 ++
47.39317 ++/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
47.39318 ++into 8 bits.  */
47.39319 ++  BFD_RELOC_FR30_10_IN_8,
47.39320 ++
47.39321 ++/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
47.39322 ++short offset into 8 bits.  */
47.39323 ++  BFD_RELOC_FR30_9_PCREL,
47.39324 ++
47.39325 ++/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
47.39326 ++short offset into 11 bits.  */
47.39327 ++  BFD_RELOC_FR30_12_PCREL,
47.39328 ++
47.39329 ++/* Motorola Mcore relocations.  */
47.39330 ++  BFD_RELOC_MCORE_PCREL_IMM8BY4,
47.39331 ++  BFD_RELOC_MCORE_PCREL_IMM11BY2,
47.39332 ++  BFD_RELOC_MCORE_PCREL_IMM4BY2,
47.39333 ++  BFD_RELOC_MCORE_PCREL_32,
47.39334 ++  BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
47.39335 ++  BFD_RELOC_MCORE_RVA,
47.39336 ++
47.39337 ++/* Toshiba Media Processor Relocations.  */
47.39338 ++  BFD_RELOC_MEP_8,
47.39339 ++  BFD_RELOC_MEP_16,
47.39340 ++  BFD_RELOC_MEP_32,
47.39341 ++  BFD_RELOC_MEP_PCREL8A2,
47.39342 ++  BFD_RELOC_MEP_PCREL12A2,
47.39343 ++  BFD_RELOC_MEP_PCREL17A2,
47.39344 ++  BFD_RELOC_MEP_PCREL24A2,
47.39345 ++  BFD_RELOC_MEP_PCABS24A2,
47.39346 ++  BFD_RELOC_MEP_LOW16,
47.39347 ++  BFD_RELOC_MEP_HI16U,
47.39348 ++  BFD_RELOC_MEP_HI16S,
47.39349 ++  BFD_RELOC_MEP_GPREL,
47.39350 ++  BFD_RELOC_MEP_TPREL,
47.39351 ++  BFD_RELOC_MEP_TPREL7,
47.39352 ++  BFD_RELOC_MEP_TPREL7A2,
47.39353 ++  BFD_RELOC_MEP_TPREL7A4,
47.39354 ++  BFD_RELOC_MEP_UIMM24,
47.39355 ++  BFD_RELOC_MEP_ADDR24A4,
47.39356 ++  BFD_RELOC_MEP_GNU_VTINHERIT,
47.39357 ++  BFD_RELOC_MEP_GNU_VTENTRY,
47.39358 ++
47.39359 ++
47.39360 ++/* These are relocations for the GETA instruction.  */
47.39361 ++  BFD_RELOC_MMIX_GETA,
47.39362 ++  BFD_RELOC_MMIX_GETA_1,
47.39363 ++  BFD_RELOC_MMIX_GETA_2,
47.39364 ++  BFD_RELOC_MMIX_GETA_3,
47.39365 ++
47.39366 ++/* These are relocations for a conditional branch instruction.  */
47.39367 ++  BFD_RELOC_MMIX_CBRANCH,
47.39368 ++  BFD_RELOC_MMIX_CBRANCH_J,
47.39369 ++  BFD_RELOC_MMIX_CBRANCH_1,
47.39370 ++  BFD_RELOC_MMIX_CBRANCH_2,
47.39371 ++  BFD_RELOC_MMIX_CBRANCH_3,
47.39372 ++
47.39373 ++/* These are relocations for the PUSHJ instruction.  */
47.39374 ++  BFD_RELOC_MMIX_PUSHJ,
47.39375 ++  BFD_RELOC_MMIX_PUSHJ_1,
47.39376 ++  BFD_RELOC_MMIX_PUSHJ_2,
47.39377 ++  BFD_RELOC_MMIX_PUSHJ_3,
47.39378 ++  BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
47.39379 ++
47.39380 ++/* These are relocations for the JMP instruction.  */
47.39381 ++  BFD_RELOC_MMIX_JMP,
47.39382 ++  BFD_RELOC_MMIX_JMP_1,
47.39383 ++  BFD_RELOC_MMIX_JMP_2,
47.39384 ++  BFD_RELOC_MMIX_JMP_3,
47.39385 ++
47.39386 ++/* This is a relocation for a relative address as in a GETA instruction or
47.39387 ++a branch.  */
47.39388 ++  BFD_RELOC_MMIX_ADDR19,
47.39389 ++
47.39390 ++/* This is a relocation for a relative address as in a JMP instruction.  */
47.39391 ++  BFD_RELOC_MMIX_ADDR27,
47.39392 ++
47.39393 ++/* This is a relocation for an instruction field that may be a general
47.39394 ++register or a value 0..255.  */
47.39395 ++  BFD_RELOC_MMIX_REG_OR_BYTE,
47.39396 ++
47.39397 ++/* This is a relocation for an instruction field that may be a general
47.39398 ++register.  */
47.39399 ++  BFD_RELOC_MMIX_REG,
47.39400 ++
47.39401 ++/* This is a relocation for two instruction fields holding a register and
47.39402 ++an offset, the equivalent of the relocation.  */
47.39403 ++  BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
47.39404 ++
47.39405 ++/* This relocation is an assertion that the expression is not allocated as
47.39406 ++a global register.  It does not modify contents.  */
47.39407 ++  BFD_RELOC_MMIX_LOCAL,
47.39408 ++
47.39409 ++/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
47.39410 ++short offset into 7 bits.  */
47.39411 ++  BFD_RELOC_AVR_7_PCREL,
47.39412 ++
47.39413 ++/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
47.39414 ++short offset into 12 bits.  */
47.39415 ++  BFD_RELOC_AVR_13_PCREL,
47.39416 ++
47.39417 ++/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
47.39418 ++program memory address) into 16 bits.  */
47.39419 ++  BFD_RELOC_AVR_16_PM,
47.39420 ++
47.39421 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
47.39422 ++data memory address) into 8 bit immediate value of LDI insn.  */
47.39423 ++  BFD_RELOC_AVR_LO8_LDI,
47.39424 ++
47.39425 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
47.39426 ++of data memory address) into 8 bit immediate value of LDI insn.  */
47.39427 ++  BFD_RELOC_AVR_HI8_LDI,
47.39428 ++
47.39429 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
47.39430 ++of program memory address) into 8 bit immediate value of LDI insn.  */
47.39431 ++  BFD_RELOC_AVR_HH8_LDI,
47.39432 ++
47.39433 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
47.39434 ++of 32 bit value) into 8 bit immediate value of LDI insn.  */
47.39435 ++  BFD_RELOC_AVR_MS8_LDI,
47.39436 ++
47.39437 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
47.39438 ++(usually data memory address) into 8 bit immediate value of SUBI insn.  */
47.39439 ++  BFD_RELOC_AVR_LO8_LDI_NEG,
47.39440 ++
47.39441 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
47.39442 ++(high 8 bit of data memory address) into 8 bit immediate value of
47.39443 ++SUBI insn.  */
47.39444 ++  BFD_RELOC_AVR_HI8_LDI_NEG,
47.39445 ++
47.39446 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
47.39447 ++(most high 8 bit of program memory address) into 8 bit immediate value
47.39448 ++of LDI or SUBI insn.  */
47.39449 ++  BFD_RELOC_AVR_HH8_LDI_NEG,
47.39450 ++
47.39451 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
47.39452 ++of 32 bit value) into 8 bit immediate value of LDI insn.  */
47.39453 ++  BFD_RELOC_AVR_MS8_LDI_NEG,
47.39454 ++
47.39455 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
47.39456 ++command address) into 8 bit immediate value of LDI insn.  */
47.39457 ++  BFD_RELOC_AVR_LO8_LDI_PM,
47.39458 ++
47.39459 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value 
47.39460 ++(command address) into 8 bit immediate value of LDI insn. If the address
47.39461 ++is beyond the 128k boundary, the linker inserts a jump stub for this reloc
47.39462 ++in the lower 128k.  */
47.39463 ++  BFD_RELOC_AVR_LO8_LDI_GS,
47.39464 ++
47.39465 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
47.39466 ++of command address) into 8 bit immediate value of LDI insn.  */
47.39467 ++  BFD_RELOC_AVR_HI8_LDI_PM,
47.39468 ++
47.39469 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
47.39470 ++of command address) into 8 bit immediate value of LDI insn.  If the address
47.39471 ++is beyond the 128k boundary, the linker inserts a jump stub for this reloc
47.39472 ++below 128k.  */
47.39473 ++  BFD_RELOC_AVR_HI8_LDI_GS,
47.39474 ++
47.39475 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
47.39476 ++of command address) into 8 bit immediate value of LDI insn.  */
47.39477 ++  BFD_RELOC_AVR_HH8_LDI_PM,
47.39478 ++
47.39479 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
47.39480 ++(usually command address) into 8 bit immediate value of SUBI insn.  */
47.39481 ++  BFD_RELOC_AVR_LO8_LDI_PM_NEG,
47.39482 ++
47.39483 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
47.39484 ++(high 8 bit of 16 bit command address) into 8 bit immediate value
47.39485 ++of SUBI insn.  */
47.39486 ++  BFD_RELOC_AVR_HI8_LDI_PM_NEG,
47.39487 ++
47.39488 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
47.39489 ++(high 6 bit of 22 bit command address) into 8 bit immediate
47.39490 ++value of SUBI insn.  */
47.39491 ++  BFD_RELOC_AVR_HH8_LDI_PM_NEG,
47.39492 ++
47.39493 ++/* This is a 32 bit reloc for the AVR that stores 23 bit value
47.39494 ++into 22 bits.  */
47.39495 ++  BFD_RELOC_AVR_CALL,
47.39496 ++
47.39497 ++/* This is a 16 bit reloc for the AVR that stores all needed bits
47.39498 ++for absolute addressing with ldi with overflow check to linktime  */
47.39499 ++  BFD_RELOC_AVR_LDI,
47.39500 ++
47.39501 ++/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
47.39502 ++instructions  */
47.39503 ++  BFD_RELOC_AVR_6,
47.39504 ++
47.39505 ++/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
47.39506 ++instructions  */
47.39507 ++  BFD_RELOC_AVR_6_ADIW,
47.39508 ++
47.39509 ++/* Difference between two labels: L2 - L1. The value of L1 is encoded
47.39510 ++as sym + addend, while the initial difference after assembly is
47.39511 ++inserted into the object file by the assembler.  */
47.39512 ++  BFD_RELOC_AVR32_DIFF32,
47.39513 ++  BFD_RELOC_AVR32_DIFF16,
47.39514 ++  BFD_RELOC_AVR32_DIFF8,
47.39515 ++
47.39516 ++/* Reference to a symbol through the Global Offset Table. The linker
47.39517 ++will allocate an entry for symbol in the GOT and insert the offset
47.39518 ++of this entry as the relocation value.  */
47.39519 ++  BFD_RELOC_AVR32_GOT32,
47.39520 ++  BFD_RELOC_AVR32_GOT16,
47.39521 ++  BFD_RELOC_AVR32_GOT8,
47.39522 ++
47.39523 ++/* Normal (non-pc-relative) code relocations. Alignment and signedness
47.39524 ++is indicated by the suffixes. S means signed, U means unsigned. W
47.39525 ++means word-aligned, H means halfword-aligned, neither means
47.39526 ++byte-aligned (no alignment.) SUB5 is the same relocation as 16S.  */
47.39527 ++  BFD_RELOC_AVR32_21S,
47.39528 ++  BFD_RELOC_AVR32_16U,
47.39529 ++  BFD_RELOC_AVR32_16S,
47.39530 ++  BFD_RELOC_AVR32_SUB5,
47.39531 ++  BFD_RELOC_AVR32_8S_EXT,
47.39532 ++  BFD_RELOC_AVR32_8S,
47.39533 ++  BFD_RELOC_AVR32_15S,
47.39534 ++
47.39535 ++/* PC-relative relocations are signed if neither 'U' nor 'S' is
47.39536 ++specified. However, we explicitly tack on a 'B' to indicate no
47.39537 ++alignment, to avoid confusion with data relocs. All of these resolve
47.39538 ++to sym + addend - offset, except the one with 'N' (negated) suffix.
47.39539 ++This particular one resolves to offset - sym - addend.  */
47.39540 ++  BFD_RELOC_AVR32_22H_PCREL,
47.39541 ++  BFD_RELOC_AVR32_18W_PCREL,
47.39542 ++  BFD_RELOC_AVR32_16B_PCREL,
47.39543 ++  BFD_RELOC_AVR32_16N_PCREL,
47.39544 ++  BFD_RELOC_AVR32_14UW_PCREL,
47.39545 ++  BFD_RELOC_AVR32_11H_PCREL,
47.39546 ++  BFD_RELOC_AVR32_10UW_PCREL,
47.39547 ++  BFD_RELOC_AVR32_9H_PCREL,
47.39548 ++  BFD_RELOC_AVR32_9UW_PCREL,
47.39549 ++
47.39550 ++/* Subtract the link-time address of the GOT from (symbol + addend)
47.39551 ++and insert the result.  */
47.39552 ++  BFD_RELOC_AVR32_GOTPC,
47.39553 ++
47.39554 ++/* Reference to a symbol through the GOT. The linker will allocate an
47.39555 ++entry for symbol in the GOT and insert the offset of this entry as
47.39556 ++the relocation value. addend must be zero. As usual, 'S' means
47.39557 ++signed, 'W' means word-aligned, etc.  */
47.39558 ++  BFD_RELOC_AVR32_GOTCALL,
47.39559 ++  BFD_RELOC_AVR32_LDA_GOT,
47.39560 ++  BFD_RELOC_AVR32_GOT21S,
47.39561 ++  BFD_RELOC_AVR32_GOT18SW,
47.39562 ++  BFD_RELOC_AVR32_GOT16S,
47.39563 ++
47.39564 ++/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make
47.39565 ++a whole lot of sense.  */
47.39566 ++  BFD_RELOC_AVR32_32_CPENT,
47.39567 ++
47.39568 ++/* Constant pool references. Some of these relocations are signed,
47.39569 ++others are unsigned. It doesn't really matter, since the constant
47.39570 ++pool always comes after the code that references it.  */
47.39571 ++  BFD_RELOC_AVR32_CPCALL,
47.39572 ++  BFD_RELOC_AVR32_16_CP,
47.39573 ++  BFD_RELOC_AVR32_9W_CP,
47.39574 ++
47.39575 ++/* sym must be the absolute symbol. The addend specifies the alignment
47.39576 ++order, e.g. if addend is 2, the linker must add padding so that the
47.39577 ++next address is aligned to a 4-byte boundary.  */
47.39578 ++  BFD_RELOC_AVR32_ALIGN,
47.39579 ++
47.39580 ++/* Code relocations that will never make it to the output file.  */
47.39581 ++  BFD_RELOC_AVR32_14UW,
47.39582 ++  BFD_RELOC_AVR32_10UW,
47.39583 ++  BFD_RELOC_AVR32_10SW,
47.39584 ++  BFD_RELOC_AVR32_STHH_W,
47.39585 ++  BFD_RELOC_AVR32_7UW,
47.39586 ++  BFD_RELOC_AVR32_6S,
47.39587 ++  BFD_RELOC_AVR32_6UW,
47.39588 ++  BFD_RELOC_AVR32_4UH,
47.39589 ++  BFD_RELOC_AVR32_3U,
47.39590 ++
47.39591 ++/* Direct 12 bit.  */
47.39592 ++  BFD_RELOC_390_12,
47.39593 ++
47.39594 ++/* 12 bit GOT offset.  */
47.39595 ++  BFD_RELOC_390_GOT12,
47.39596 ++
47.39597 ++/* 32 bit PC relative PLT address.  */
47.39598 ++  BFD_RELOC_390_PLT32,
47.39599 ++
47.39600 ++/* Copy symbol at runtime.  */
47.39601 ++  BFD_RELOC_390_COPY,
47.39602 ++
47.39603 ++/* Create GOT entry.  */
47.39604 ++  BFD_RELOC_390_GLOB_DAT,
47.39605 ++
47.39606 ++/* Create PLT entry.  */
47.39607 ++  BFD_RELOC_390_JMP_SLOT,
47.39608 ++
47.39609 ++/* Adjust by program base.  */
47.39610 ++  BFD_RELOC_390_RELATIVE,
47.39611 ++
47.39612 ++/* 32 bit PC relative offset to GOT.  */
47.39613 ++  BFD_RELOC_390_GOTPC,
47.39614 ++
47.39615 ++/* 16 bit GOT offset.  */
47.39616 ++  BFD_RELOC_390_GOT16,
47.39617 ++
47.39618 ++/* PC relative 16 bit shifted by 1.  */
47.39619 ++  BFD_RELOC_390_PC16DBL,
47.39620 ++
47.39621 ++/* 16 bit PC rel. PLT shifted by 1.  */
47.39622 ++  BFD_RELOC_390_PLT16DBL,
47.39623 ++
47.39624 ++/* PC relative 32 bit shifted by 1.  */
47.39625 ++  BFD_RELOC_390_PC32DBL,
47.39626 ++
47.39627 ++/* 32 bit PC rel. PLT shifted by 1.  */
47.39628 ++  BFD_RELOC_390_PLT32DBL,
47.39629 ++
47.39630 ++/* 32 bit PC rel. GOT shifted by 1.  */
47.39631 ++  BFD_RELOC_390_GOTPCDBL,
47.39632 ++
47.39633 ++/* 64 bit GOT offset.  */
47.39634 ++  BFD_RELOC_390_GOT64,
47.39635 ++
47.39636 ++/* 64 bit PC relative PLT address.  */
47.39637 ++  BFD_RELOC_390_PLT64,
47.39638 ++
47.39639 ++/* 32 bit rel. offset to GOT entry.  */
47.39640 ++  BFD_RELOC_390_GOTENT,
47.39641 ++
47.39642 ++/* 64 bit offset to GOT.  */
47.39643 ++  BFD_RELOC_390_GOTOFF64,
47.39644 ++
47.39645 ++/* 12-bit offset to symbol-entry within GOT, with PLT handling.  */
47.39646 ++  BFD_RELOC_390_GOTPLT12,
47.39647 ++
47.39648 ++/* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
47.39649 ++  BFD_RELOC_390_GOTPLT16,
47.39650 ++
47.39651 ++/* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
47.39652 ++  BFD_RELOC_390_GOTPLT32,
47.39653 ++
47.39654 ++/* 64-bit offset to symbol-entry within GOT, with PLT handling.  */
47.39655 ++  BFD_RELOC_390_GOTPLT64,
47.39656 ++
47.39657 ++/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling.  */
47.39658 ++  BFD_RELOC_390_GOTPLTENT,
47.39659 ++
47.39660 ++/* 16-bit rel. offset from the GOT to a PLT entry.  */
47.39661 ++  BFD_RELOC_390_PLTOFF16,
47.39662 ++
47.39663 ++/* 32-bit rel. offset from the GOT to a PLT entry.  */
47.39664 ++  BFD_RELOC_390_PLTOFF32,
47.39665 ++
47.39666 ++/* 64-bit rel. offset from the GOT to a PLT entry.  */
47.39667 ++  BFD_RELOC_390_PLTOFF64,
47.39668 ++
47.39669 ++/* s390 tls relocations.  */
47.39670 ++  BFD_RELOC_390_TLS_LOAD,
47.39671 ++  BFD_RELOC_390_TLS_GDCALL,
47.39672 ++  BFD_RELOC_390_TLS_LDCALL,
47.39673 ++  BFD_RELOC_390_TLS_GD32,
47.39674 ++  BFD_RELOC_390_TLS_GD64,
47.39675 ++  BFD_RELOC_390_TLS_GOTIE12,
47.39676 ++  BFD_RELOC_390_TLS_GOTIE32,
47.39677 ++  BFD_RELOC_390_TLS_GOTIE64,
47.39678 ++  BFD_RELOC_390_TLS_LDM32,
47.39679 ++  BFD_RELOC_390_TLS_LDM64,
47.39680 ++  BFD_RELOC_390_TLS_IE32,
47.39681 ++  BFD_RELOC_390_TLS_IE64,
47.39682 ++  BFD_RELOC_390_TLS_IEENT,
47.39683 ++  BFD_RELOC_390_TLS_LE32,
47.39684 ++  BFD_RELOC_390_TLS_LE64,
47.39685 ++  BFD_RELOC_390_TLS_LDO32,
47.39686 ++  BFD_RELOC_390_TLS_LDO64,
47.39687 ++  BFD_RELOC_390_TLS_DTPMOD,
47.39688 ++  BFD_RELOC_390_TLS_DTPOFF,
47.39689 ++  BFD_RELOC_390_TLS_TPOFF,
47.39690 ++
47.39691 ++/* Long displacement extension.  */
47.39692 ++  BFD_RELOC_390_20,
47.39693 ++  BFD_RELOC_390_GOT20,
47.39694 ++  BFD_RELOC_390_GOTPLT20,
47.39695 ++  BFD_RELOC_390_TLS_GOTIE20,
47.39696 ++
47.39697 ++/* Score relocations  */
47.39698 ++  BFD_RELOC_SCORE_DUMMY1,
47.39699 ++
47.39700 ++/* Low 16 bit for load/store  */
47.39701 ++  BFD_RELOC_SCORE_GPREL15,
47.39702 ++
47.39703 ++/* This is a 24-bit reloc with the right 1 bit assumed to be 0  */
47.39704 ++  BFD_RELOC_SCORE_DUMMY2,
47.39705 ++  BFD_RELOC_SCORE_JMP,
47.39706 ++
47.39707 ++/* This is a 19-bit reloc with the right 1 bit assumed to be 0  */
47.39708 ++  BFD_RELOC_SCORE_BRANCH,
47.39709 ++
47.39710 ++/* This is a 11-bit reloc with the right 1 bit assumed to be 0  */
47.39711 ++  BFD_RELOC_SCORE16_JMP,
47.39712 ++
47.39713 ++/* This is a 8-bit reloc with the right 1 bit assumed to be 0  */
47.39714 ++  BFD_RELOC_SCORE16_BRANCH,
47.39715 ++
47.39716 ++/* Undocumented Score relocs  */
47.39717 ++  BFD_RELOC_SCORE_GOT15,
47.39718 ++  BFD_RELOC_SCORE_GOT_LO16,
47.39719 ++  BFD_RELOC_SCORE_CALL15,
47.39720 ++  BFD_RELOC_SCORE_DUMMY_HI16,
47.39721 ++
47.39722 ++/* Scenix IP2K - 9-bit register number / data address  */
47.39723 ++  BFD_RELOC_IP2K_FR9,
47.39724 ++
47.39725 ++/* Scenix IP2K - 4-bit register/data bank number  */
47.39726 ++  BFD_RELOC_IP2K_BANK,
47.39727 ++
47.39728 ++/* Scenix IP2K - low 13 bits of instruction word address  */
47.39729 ++  BFD_RELOC_IP2K_ADDR16CJP,
47.39730 ++
47.39731 ++/* Scenix IP2K - high 3 bits of instruction word address  */
47.39732 ++  BFD_RELOC_IP2K_PAGE3,
47.39733 ++
47.39734 ++/* Scenix IP2K - ext/low/high 8 bits of data address  */
47.39735 ++  BFD_RELOC_IP2K_LO8DATA,
47.39736 ++  BFD_RELOC_IP2K_HI8DATA,
47.39737 ++  BFD_RELOC_IP2K_EX8DATA,
47.39738 ++
47.39739 ++/* Scenix IP2K - low/high 8 bits of instruction word address  */
47.39740 ++  BFD_RELOC_IP2K_LO8INSN,
47.39741 ++  BFD_RELOC_IP2K_HI8INSN,
47.39742 ++
47.39743 ++/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0  */
47.39744 ++  BFD_RELOC_IP2K_PC_SKIP,
47.39745 ++
47.39746 ++/* Scenix IP2K - 16 bit word address in text section.  */
47.39747 ++  BFD_RELOC_IP2K_TEXT,
47.39748 ++
47.39749 ++/* Scenix IP2K - 7-bit sp or dp offset  */
47.39750 ++  BFD_RELOC_IP2K_FR_OFFSET,
47.39751 ++
47.39752 ++/* Scenix VPE4K coprocessor - data/insn-space addressing  */
47.39753 ++  BFD_RELOC_VPE4KMATH_DATA,
47.39754 ++  BFD_RELOC_VPE4KMATH_INSN,
47.39755 ++
47.39756 ++/* These two relocations are used by the linker to determine which of
47.39757 ++the entries in a C++ virtual function table are actually used.  When
47.39758 ++the --gc-sections option is given, the linker will zero out the entries
47.39759 ++that are not used, so that the code for those functions need not be
47.39760 ++included in the output.
47.39761 ++
47.39762 ++VTABLE_INHERIT is a zero-space relocation used to describe to the
47.39763 ++linker the inheritance tree of a C++ virtual function table.  The
47.39764 ++relocation's symbol should be the parent class' vtable, and the
47.39765 ++relocation should be located at the child vtable.
47.39766 ++
47.39767 ++VTABLE_ENTRY is a zero-space relocation that describes the use of a
47.39768 ++virtual function table entry.  The reloc's symbol should refer to the
47.39769 ++table of the class mentioned in the code.  Off of that base, an offset
47.39770 ++describes the entry that is being used.  For Rela hosts, this offset
47.39771 ++is stored in the reloc's addend.  For Rel hosts, we are forced to put
47.39772 ++this offset in the reloc's section offset.  */
47.39773 ++  BFD_RELOC_VTABLE_INHERIT,
47.39774 ++  BFD_RELOC_VTABLE_ENTRY,
47.39775 ++
47.39776 ++/* Intel IA64 Relocations.  */
47.39777 ++  BFD_RELOC_IA64_IMM14,
47.39778 ++  BFD_RELOC_IA64_IMM22,
47.39779 ++  BFD_RELOC_IA64_IMM64,
47.39780 ++  BFD_RELOC_IA64_DIR32MSB,
47.39781 ++  BFD_RELOC_IA64_DIR32LSB,
47.39782 ++  BFD_RELOC_IA64_DIR64MSB,
47.39783 ++  BFD_RELOC_IA64_DIR64LSB,
47.39784 ++  BFD_RELOC_IA64_GPREL22,
47.39785 ++  BFD_RELOC_IA64_GPREL64I,
47.39786 ++  BFD_RELOC_IA64_GPREL32MSB,
47.39787 ++  BFD_RELOC_IA64_GPREL32LSB,
47.39788 ++  BFD_RELOC_IA64_GPREL64MSB,
47.39789 ++  BFD_RELOC_IA64_GPREL64LSB,
47.39790 ++  BFD_RELOC_IA64_LTOFF22,
47.39791 ++  BFD_RELOC_IA64_LTOFF64I,
47.39792 ++  BFD_RELOC_IA64_PLTOFF22,
47.39793 ++  BFD_RELOC_IA64_PLTOFF64I,
47.39794 ++  BFD_RELOC_IA64_PLTOFF64MSB,
47.39795 ++  BFD_RELOC_IA64_PLTOFF64LSB,
47.39796 ++  BFD_RELOC_IA64_FPTR64I,
47.39797 ++  BFD_RELOC_IA64_FPTR32MSB,
47.39798 ++  BFD_RELOC_IA64_FPTR32LSB,
47.39799 ++  BFD_RELOC_IA64_FPTR64MSB,
47.39800 ++  BFD_RELOC_IA64_FPTR64LSB,
47.39801 ++  BFD_RELOC_IA64_PCREL21B,
47.39802 ++  BFD_RELOC_IA64_PCREL21BI,
47.39803 ++  BFD_RELOC_IA64_PCREL21M,
47.39804 ++  BFD_RELOC_IA64_PCREL21F,
47.39805 ++  BFD_RELOC_IA64_PCREL22,
47.39806 ++  BFD_RELOC_IA64_PCREL60B,
47.39807 ++  BFD_RELOC_IA64_PCREL64I,
47.39808 ++  BFD_RELOC_IA64_PCREL32MSB,
47.39809 ++  BFD_RELOC_IA64_PCREL32LSB,
47.39810 ++  BFD_RELOC_IA64_PCREL64MSB,
47.39811 ++  BFD_RELOC_IA64_PCREL64LSB,
47.39812 ++  BFD_RELOC_IA64_LTOFF_FPTR22,
47.39813 ++  BFD_RELOC_IA64_LTOFF_FPTR64I,
47.39814 ++  BFD_RELOC_IA64_LTOFF_FPTR32MSB,
47.39815 ++  BFD_RELOC_IA64_LTOFF_FPTR32LSB,
47.39816 ++  BFD_RELOC_IA64_LTOFF_FPTR64MSB,
47.39817 ++  BFD_RELOC_IA64_LTOFF_FPTR64LSB,
47.39818 ++  BFD_RELOC_IA64_SEGREL32MSB,
47.39819 ++  BFD_RELOC_IA64_SEGREL32LSB,
47.39820 ++  BFD_RELOC_IA64_SEGREL64MSB,
47.39821 ++  BFD_RELOC_IA64_SEGREL64LSB,
47.39822 ++  BFD_RELOC_IA64_SECREL32MSB,
47.39823 ++  BFD_RELOC_IA64_SECREL32LSB,
47.39824 ++  BFD_RELOC_IA64_SECREL64MSB,
47.39825 ++  BFD_RELOC_IA64_SECREL64LSB,
47.39826 ++  BFD_RELOC_IA64_REL32MSB,
47.39827 ++  BFD_RELOC_IA64_REL32LSB,
47.39828 ++  BFD_RELOC_IA64_REL64MSB,
47.39829 ++  BFD_RELOC_IA64_REL64LSB,
47.39830 ++  BFD_RELOC_IA64_LTV32MSB,
47.39831 ++  BFD_RELOC_IA64_LTV32LSB,
47.39832 ++  BFD_RELOC_IA64_LTV64MSB,
47.39833 ++  BFD_RELOC_IA64_LTV64LSB,
47.39834 ++  BFD_RELOC_IA64_IPLTMSB,
47.39835 ++  BFD_RELOC_IA64_IPLTLSB,
47.39836 ++  BFD_RELOC_IA64_COPY,
47.39837 ++  BFD_RELOC_IA64_LTOFF22X,
47.39838 ++  BFD_RELOC_IA64_LDXMOV,
47.39839 ++  BFD_RELOC_IA64_TPREL14,
47.39840 ++  BFD_RELOC_IA64_TPREL22,
47.39841 ++  BFD_RELOC_IA64_TPREL64I,
47.39842 ++  BFD_RELOC_IA64_TPREL64MSB,
47.39843 ++  BFD_RELOC_IA64_TPREL64LSB,
47.39844 ++  BFD_RELOC_IA64_LTOFF_TPREL22,
47.39845 ++  BFD_RELOC_IA64_DTPMOD64MSB,
47.39846 ++  BFD_RELOC_IA64_DTPMOD64LSB,
47.39847 ++  BFD_RELOC_IA64_LTOFF_DTPMOD22,
47.39848 ++  BFD_RELOC_IA64_DTPREL14,
47.39849 ++  BFD_RELOC_IA64_DTPREL22,
47.39850 ++  BFD_RELOC_IA64_DTPREL64I,
47.39851 ++  BFD_RELOC_IA64_DTPREL32MSB,
47.39852 ++  BFD_RELOC_IA64_DTPREL32LSB,
47.39853 ++  BFD_RELOC_IA64_DTPREL64MSB,
47.39854 ++  BFD_RELOC_IA64_DTPREL64LSB,
47.39855 ++  BFD_RELOC_IA64_LTOFF_DTPREL22,
47.39856 ++
47.39857 ++/* Motorola 68HC11 reloc.
47.39858 ++This is the 8 bit high part of an absolute address.  */
47.39859 ++  BFD_RELOC_M68HC11_HI8,
47.39860 ++
47.39861 ++/* Motorola 68HC11 reloc.
47.39862 ++This is the 8 bit low part of an absolute address.  */
47.39863 ++  BFD_RELOC_M68HC11_LO8,
47.39864 ++
47.39865 ++/* Motorola 68HC11 reloc.
47.39866 ++This is the 3 bit of a value.  */
47.39867 ++  BFD_RELOC_M68HC11_3B,
47.39868 ++
47.39869 ++/* Motorola 68HC11 reloc.
47.39870 ++This reloc marks the beginning of a jump/call instruction.
47.39871 ++It is used for linker relaxation to correctly identify beginning
47.39872 ++of instruction and change some branches to use PC-relative
47.39873 ++addressing mode.  */
47.39874 ++  BFD_RELOC_M68HC11_RL_JUMP,
47.39875 ++
47.39876 ++/* Motorola 68HC11 reloc.
47.39877 ++This reloc marks a group of several instructions that gcc generates
47.39878 ++and for which the linker relaxation pass can modify and/or remove
47.39879 ++some of them.  */
47.39880 ++  BFD_RELOC_M68HC11_RL_GROUP,
47.39881 ++
47.39882 ++/* Motorola 68HC11 reloc.
47.39883 ++This is the 16-bit lower part of an address.  It is used for 'call'
47.39884 ++instruction to specify the symbol address without any special
47.39885 ++transformation (due to memory bank window).  */
47.39886 ++  BFD_RELOC_M68HC11_LO16,
47.39887 ++
47.39888 ++/* Motorola 68HC11 reloc.
47.39889 ++This is a 8-bit reloc that specifies the page number of an address.
47.39890 ++It is used by 'call' instruction to specify the page number of
47.39891 ++the symbol.  */
47.39892 ++  BFD_RELOC_M68HC11_PAGE,
47.39893 ++
47.39894 ++/* Motorola 68HC11 reloc.
47.39895 ++This is a 24-bit reloc that represents the address with a 16-bit
47.39896 ++value and a 8-bit page number.  The symbol address is transformed
47.39897 ++to follow the 16K memory bank of 68HC12 (seen as mapped in the window).  */
47.39898 ++  BFD_RELOC_M68HC11_24,
47.39899 ++
47.39900 ++/* Motorola 68HC12 reloc.
47.39901 ++This is the 5 bits of a value.  */
47.39902 ++  BFD_RELOC_M68HC12_5B,
47.39903 ++
47.39904 ++/* NS CR16C Relocations.  */
47.39905 ++  BFD_RELOC_16C_NUM08,
47.39906 ++  BFD_RELOC_16C_NUM08_C,
47.39907 ++  BFD_RELOC_16C_NUM16,
47.39908 ++  BFD_RELOC_16C_NUM16_C,
47.39909 ++  BFD_RELOC_16C_NUM32,
47.39910 ++  BFD_RELOC_16C_NUM32_C,
47.39911 ++  BFD_RELOC_16C_DISP04,
47.39912 ++  BFD_RELOC_16C_DISP04_C,
47.39913 ++  BFD_RELOC_16C_DISP08,
47.39914 ++  BFD_RELOC_16C_DISP08_C,
47.39915 ++  BFD_RELOC_16C_DISP16,
47.39916 ++  BFD_RELOC_16C_DISP16_C,
47.39917 ++  BFD_RELOC_16C_DISP24,
47.39918 ++  BFD_RELOC_16C_DISP24_C,
47.39919 ++  BFD_RELOC_16C_DISP24a,
47.39920 ++  BFD_RELOC_16C_DISP24a_C,
47.39921 ++  BFD_RELOC_16C_REG04,
47.39922 ++  BFD_RELOC_16C_REG04_C,
47.39923 ++  BFD_RELOC_16C_REG04a,
47.39924 ++  BFD_RELOC_16C_REG04a_C,
47.39925 ++  BFD_RELOC_16C_REG14,
47.39926 ++  BFD_RELOC_16C_REG14_C,
47.39927 ++  BFD_RELOC_16C_REG16,
47.39928 ++  BFD_RELOC_16C_REG16_C,
47.39929 ++  BFD_RELOC_16C_REG20,
47.39930 ++  BFD_RELOC_16C_REG20_C,
47.39931 ++  BFD_RELOC_16C_ABS20,
47.39932 ++  BFD_RELOC_16C_ABS20_C,
47.39933 ++  BFD_RELOC_16C_ABS24,
47.39934 ++  BFD_RELOC_16C_ABS24_C,
47.39935 ++  BFD_RELOC_16C_IMM04,
47.39936 ++  BFD_RELOC_16C_IMM04_C,
47.39937 ++  BFD_RELOC_16C_IMM16,
47.39938 ++  BFD_RELOC_16C_IMM16_C,
47.39939 ++  BFD_RELOC_16C_IMM20,
47.39940 ++  BFD_RELOC_16C_IMM20_C,
47.39941 ++  BFD_RELOC_16C_IMM24,
47.39942 ++  BFD_RELOC_16C_IMM24_C,
47.39943 ++  BFD_RELOC_16C_IMM32,
47.39944 ++  BFD_RELOC_16C_IMM32_C,
47.39945 ++
47.39946 ++/* NS CR16 Relocations.  */
47.39947 ++  BFD_RELOC_CR16_NUM8,
47.39948 ++  BFD_RELOC_CR16_NUM16,
47.39949 ++  BFD_RELOC_CR16_NUM32,
47.39950 ++  BFD_RELOC_CR16_NUM32a,
47.39951 ++  BFD_RELOC_CR16_REGREL0,
47.39952 ++  BFD_RELOC_CR16_REGREL4,
47.39953 ++  BFD_RELOC_CR16_REGREL4a,
47.39954 ++  BFD_RELOC_CR16_REGREL14,
47.39955 ++  BFD_RELOC_CR16_REGREL14a,
47.39956 ++  BFD_RELOC_CR16_REGREL16,
47.39957 ++  BFD_RELOC_CR16_REGREL20,
47.39958 ++  BFD_RELOC_CR16_REGREL20a,
47.39959 ++  BFD_RELOC_CR16_ABS20,
47.39960 ++  BFD_RELOC_CR16_ABS24,
47.39961 ++  BFD_RELOC_CR16_IMM4,
47.39962 ++  BFD_RELOC_CR16_IMM8,
47.39963 ++  BFD_RELOC_CR16_IMM16,
47.39964 ++  BFD_RELOC_CR16_IMM20,
47.39965 ++  BFD_RELOC_CR16_IMM24,
47.39966 ++  BFD_RELOC_CR16_IMM32,
47.39967 ++  BFD_RELOC_CR16_IMM32a,
47.39968 ++  BFD_RELOC_CR16_DISP4,
47.39969 ++  BFD_RELOC_CR16_DISP8,
47.39970 ++  BFD_RELOC_CR16_DISP16,
47.39971 ++  BFD_RELOC_CR16_DISP20,
47.39972 ++  BFD_RELOC_CR16_DISP24,
47.39973 ++  BFD_RELOC_CR16_DISP24a,
47.39974 ++
47.39975 ++/* NS CRX Relocations.  */
47.39976 ++  BFD_RELOC_CRX_REL4,
47.39977 ++  BFD_RELOC_CRX_REL8,
47.39978 ++  BFD_RELOC_CRX_REL8_CMP,
47.39979 ++  BFD_RELOC_CRX_REL16,
47.39980 ++  BFD_RELOC_CRX_REL24,
47.39981 ++  BFD_RELOC_CRX_REL32,
47.39982 ++  BFD_RELOC_CRX_REGREL12,
47.39983 ++  BFD_RELOC_CRX_REGREL22,
47.39984 ++  BFD_RELOC_CRX_REGREL28,
47.39985 ++  BFD_RELOC_CRX_REGREL32,
47.39986 ++  BFD_RELOC_CRX_ABS16,
47.39987 ++  BFD_RELOC_CRX_ABS32,
47.39988 ++  BFD_RELOC_CRX_NUM8,
47.39989 ++  BFD_RELOC_CRX_NUM16,
47.39990 ++  BFD_RELOC_CRX_NUM32,
47.39991 ++  BFD_RELOC_CRX_IMM16,
47.39992 ++  BFD_RELOC_CRX_IMM32,
47.39993 ++  BFD_RELOC_CRX_SWITCH8,
47.39994 ++  BFD_RELOC_CRX_SWITCH16,
47.39995 ++  BFD_RELOC_CRX_SWITCH32,
47.39996 ++
47.39997 ++/* These relocs are only used within the CRIS assembler.  They are not
47.39998 ++(at present) written to any object files.  */
47.39999 ++  BFD_RELOC_CRIS_BDISP8,
47.40000 ++  BFD_RELOC_CRIS_UNSIGNED_5,
47.40001 ++  BFD_RELOC_CRIS_SIGNED_6,
47.40002 ++  BFD_RELOC_CRIS_UNSIGNED_6,
47.40003 ++  BFD_RELOC_CRIS_SIGNED_8,
47.40004 ++  BFD_RELOC_CRIS_UNSIGNED_8,
47.40005 ++  BFD_RELOC_CRIS_SIGNED_16,
47.40006 ++  BFD_RELOC_CRIS_UNSIGNED_16,
47.40007 ++  BFD_RELOC_CRIS_LAPCQ_OFFSET,
47.40008 ++  BFD_RELOC_CRIS_UNSIGNED_4,
47.40009 ++
47.40010 ++/* Relocs used in ELF shared libraries for CRIS.  */
47.40011 ++  BFD_RELOC_CRIS_COPY,
47.40012 ++  BFD_RELOC_CRIS_GLOB_DAT,
47.40013 ++  BFD_RELOC_CRIS_JUMP_SLOT,
47.40014 ++  BFD_RELOC_CRIS_RELATIVE,
47.40015 ++
47.40016 ++/* 32-bit offset to symbol-entry within GOT.  */
47.40017 ++  BFD_RELOC_CRIS_32_GOT,
47.40018 ++
47.40019 ++/* 16-bit offset to symbol-entry within GOT.  */
47.40020 ++  BFD_RELOC_CRIS_16_GOT,
47.40021 ++
47.40022 ++/* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
47.40023 ++  BFD_RELOC_CRIS_32_GOTPLT,
47.40024 ++
47.40025 ++/* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
47.40026 ++  BFD_RELOC_CRIS_16_GOTPLT,
47.40027 ++
47.40028 ++/* 32-bit offset to symbol, relative to GOT.  */
47.40029 ++  BFD_RELOC_CRIS_32_GOTREL,
47.40030 ++
47.40031 ++/* 32-bit offset to symbol with PLT entry, relative to GOT.  */
47.40032 ++  BFD_RELOC_CRIS_32_PLT_GOTREL,
47.40033 ++
47.40034 ++/* 32-bit offset to symbol with PLT entry, relative to this relocation.  */
47.40035 ++  BFD_RELOC_CRIS_32_PLT_PCREL,
47.40036 ++
47.40037 ++/* Intel i860 Relocations.  */
47.40038 ++  BFD_RELOC_860_COPY,
47.40039 ++  BFD_RELOC_860_GLOB_DAT,
47.40040 ++  BFD_RELOC_860_JUMP_SLOT,
47.40041 ++  BFD_RELOC_860_RELATIVE,
47.40042 ++  BFD_RELOC_860_PC26,
47.40043 ++  BFD_RELOC_860_PLT26,
47.40044 ++  BFD_RELOC_860_PC16,
47.40045 ++  BFD_RELOC_860_LOW0,
47.40046 ++  BFD_RELOC_860_SPLIT0,
47.40047 ++  BFD_RELOC_860_LOW1,
47.40048 ++  BFD_RELOC_860_SPLIT1,
47.40049 ++  BFD_RELOC_860_LOW2,
47.40050 ++  BFD_RELOC_860_SPLIT2,
47.40051 ++  BFD_RELOC_860_LOW3,
47.40052 ++  BFD_RELOC_860_LOGOT0,
47.40053 ++  BFD_RELOC_860_SPGOT0,
47.40054 ++  BFD_RELOC_860_LOGOT1,
47.40055 ++  BFD_RELOC_860_SPGOT1,
47.40056 ++  BFD_RELOC_860_LOGOTOFF0,
47.40057 ++  BFD_RELOC_860_SPGOTOFF0,
47.40058 ++  BFD_RELOC_860_LOGOTOFF1,
47.40059 ++  BFD_RELOC_860_SPGOTOFF1,
47.40060 ++  BFD_RELOC_860_LOGOTOFF2,
47.40061 ++  BFD_RELOC_860_LOGOTOFF3,
47.40062 ++  BFD_RELOC_860_LOPC,
47.40063 ++  BFD_RELOC_860_HIGHADJ,
47.40064 ++  BFD_RELOC_860_HAGOT,
47.40065 ++  BFD_RELOC_860_HAGOTOFF,
47.40066 ++  BFD_RELOC_860_HAPC,
47.40067 ++  BFD_RELOC_860_HIGH,
47.40068 ++  BFD_RELOC_860_HIGOT,
47.40069 ++  BFD_RELOC_860_HIGOTOFF,
47.40070 ++
47.40071 ++/* OpenRISC Relocations.  */
47.40072 ++  BFD_RELOC_OPENRISC_ABS_26,
47.40073 ++  BFD_RELOC_OPENRISC_REL_26,
47.40074 ++
47.40075 ++/* H8 elf Relocations.  */
47.40076 ++  BFD_RELOC_H8_DIR16A8,
47.40077 ++  BFD_RELOC_H8_DIR16R8,
47.40078 ++  BFD_RELOC_H8_DIR24A8,
47.40079 ++  BFD_RELOC_H8_DIR24R8,
47.40080 ++  BFD_RELOC_H8_DIR32A16,
47.40081 ++
47.40082 ++/* Sony Xstormy16 Relocations.  */
47.40083 ++  BFD_RELOC_XSTORMY16_REL_12,
47.40084 ++  BFD_RELOC_XSTORMY16_12,
47.40085 ++  BFD_RELOC_XSTORMY16_24,
47.40086 ++  BFD_RELOC_XSTORMY16_FPTR16,
47.40087 ++
47.40088 ++/* Self-describing complex relocations.  */
47.40089 ++  BFD_RELOC_RELC,
47.40090 ++
47.40091 ++
47.40092 ++/* Infineon Relocations.  */
47.40093 ++  BFD_RELOC_XC16X_PAG,
47.40094 ++  BFD_RELOC_XC16X_POF,
47.40095 ++  BFD_RELOC_XC16X_SEG,
47.40096 ++  BFD_RELOC_XC16X_SOF,
47.40097 ++
47.40098 ++/* Relocations used by VAX ELF.  */
47.40099 ++  BFD_RELOC_VAX_GLOB_DAT,
47.40100 ++  BFD_RELOC_VAX_JMP_SLOT,
47.40101 ++  BFD_RELOC_VAX_RELATIVE,
47.40102 ++
47.40103 ++/* Morpho MT - 16 bit immediate relocation.  */
47.40104 ++  BFD_RELOC_MT_PC16,
47.40105 ++
47.40106 ++/* Morpho MT - Hi 16 bits of an address.  */
47.40107 ++  BFD_RELOC_MT_HI16,
47.40108 ++
47.40109 ++/* Morpho MT - Low 16 bits of an address.  */
47.40110 ++  BFD_RELOC_MT_LO16,
47.40111 ++
47.40112 ++/* Morpho MT - Used to tell the linker which vtable entries are used.  */
47.40113 ++  BFD_RELOC_MT_GNU_VTINHERIT,
47.40114 ++
47.40115 ++/* Morpho MT - Used to tell the linker which vtable entries are used.  */
47.40116 ++  BFD_RELOC_MT_GNU_VTENTRY,
47.40117 ++
47.40118 ++/* Morpho MT - 8 bit immediate relocation.  */
47.40119 ++  BFD_RELOC_MT_PCINSN8,
47.40120 ++
47.40121 ++/* msp430 specific relocation codes  */
47.40122 ++  BFD_RELOC_MSP430_10_PCREL,
47.40123 ++  BFD_RELOC_MSP430_16_PCREL,
47.40124 ++  BFD_RELOC_MSP430_16,
47.40125 ++  BFD_RELOC_MSP430_16_PCREL_BYTE,
47.40126 ++  BFD_RELOC_MSP430_16_BYTE,
47.40127 ++  BFD_RELOC_MSP430_2X_PCREL,
47.40128 ++  BFD_RELOC_MSP430_RL_PCREL,
47.40129 ++
47.40130 ++/* IQ2000 Relocations.  */
47.40131 ++  BFD_RELOC_IQ2000_OFFSET_16,
47.40132 ++  BFD_RELOC_IQ2000_OFFSET_21,
47.40133 ++  BFD_RELOC_IQ2000_UHI16,
47.40134 ++
47.40135 ++/* Special Xtensa relocation used only by PLT entries in ELF shared
47.40136 ++objects to indicate that the runtime linker should set the value
47.40137 ++to one of its own internal functions or data structures.  */
47.40138 ++  BFD_RELOC_XTENSA_RTLD,
47.40139 ++
47.40140 ++/* Xtensa relocations for ELF shared objects.  */
47.40141 ++  BFD_RELOC_XTENSA_GLOB_DAT,
47.40142 ++  BFD_RELOC_XTENSA_JMP_SLOT,
47.40143 ++  BFD_RELOC_XTENSA_RELATIVE,
47.40144 ++
47.40145 ++/* Xtensa relocation used in ELF object files for symbols that may require
47.40146 ++PLT entries.  Otherwise, this is just a generic 32-bit relocation.  */
47.40147 ++  BFD_RELOC_XTENSA_PLT,
47.40148 ++
47.40149 ++/* Xtensa relocations to mark the difference of two local symbols.
47.40150 ++These are only needed to support linker relaxation and can be ignored
47.40151 ++when not relaxing.  The field is set to the value of the difference
47.40152 ++assuming no relaxation.  The relocation encodes the position of the
47.40153 ++first symbol so the linker can determine whether to adjust the field
47.40154 ++value.  */
47.40155 ++  BFD_RELOC_XTENSA_DIFF8,
47.40156 ++  BFD_RELOC_XTENSA_DIFF16,
47.40157 ++  BFD_RELOC_XTENSA_DIFF32,
47.40158 ++
47.40159 ++/* Generic Xtensa relocations for instruction operands.  Only the slot
47.40160 ++number is encoded in the relocation.  The relocation applies to the
47.40161 ++last PC-relative immediate operand, or if there are no PC-relative
47.40162 ++immediates, to the last immediate operand.  */
47.40163 ++  BFD_RELOC_XTENSA_SLOT0_OP,
47.40164 ++  BFD_RELOC_XTENSA_SLOT1_OP,
47.40165 ++  BFD_RELOC_XTENSA_SLOT2_OP,
47.40166 ++  BFD_RELOC_XTENSA_SLOT3_OP,
47.40167 ++  BFD_RELOC_XTENSA_SLOT4_OP,
47.40168 ++  BFD_RELOC_XTENSA_SLOT5_OP,
47.40169 ++  BFD_RELOC_XTENSA_SLOT6_OP,
47.40170 ++  BFD_RELOC_XTENSA_SLOT7_OP,
47.40171 ++  BFD_RELOC_XTENSA_SLOT8_OP,
47.40172 ++  BFD_RELOC_XTENSA_SLOT9_OP,
47.40173 ++  BFD_RELOC_XTENSA_SLOT10_OP,
47.40174 ++  BFD_RELOC_XTENSA_SLOT11_OP,
47.40175 ++  BFD_RELOC_XTENSA_SLOT12_OP,
47.40176 ++  BFD_RELOC_XTENSA_SLOT13_OP,
47.40177 ++  BFD_RELOC_XTENSA_SLOT14_OP,
47.40178 ++
47.40179 ++/* Alternate Xtensa relocations.  Only the slot is encoded in the
47.40180 ++relocation.  The meaning of these relocations is opcode-specific.  */
47.40181 ++  BFD_RELOC_XTENSA_SLOT0_ALT,
47.40182 ++  BFD_RELOC_XTENSA_SLOT1_ALT,
47.40183 ++  BFD_RELOC_XTENSA_SLOT2_ALT,
47.40184 ++  BFD_RELOC_XTENSA_SLOT3_ALT,
47.40185 ++  BFD_RELOC_XTENSA_SLOT4_ALT,
47.40186 ++  BFD_RELOC_XTENSA_SLOT5_ALT,
47.40187 ++  BFD_RELOC_XTENSA_SLOT6_ALT,
47.40188 ++  BFD_RELOC_XTENSA_SLOT7_ALT,
47.40189 ++  BFD_RELOC_XTENSA_SLOT8_ALT,
47.40190 ++  BFD_RELOC_XTENSA_SLOT9_ALT,
47.40191 ++  BFD_RELOC_XTENSA_SLOT10_ALT,
47.40192 ++  BFD_RELOC_XTENSA_SLOT11_ALT,
47.40193 ++  BFD_RELOC_XTENSA_SLOT12_ALT,
47.40194 ++  BFD_RELOC_XTENSA_SLOT13_ALT,
47.40195 ++  BFD_RELOC_XTENSA_SLOT14_ALT,
47.40196 ++
47.40197 ++/* Xtensa relocations for backward compatibility.  These have all been
47.40198 ++replaced by BFD_RELOC_XTENSA_SLOT0_OP.  */
47.40199 ++  BFD_RELOC_XTENSA_OP0,
47.40200 ++  BFD_RELOC_XTENSA_OP1,
47.40201 ++  BFD_RELOC_XTENSA_OP2,
47.40202 ++
47.40203 ++/* Xtensa relocation to mark that the assembler expanded the
47.40204 ++instructions from an original target.  The expansion size is
47.40205 ++encoded in the reloc size.  */
47.40206 ++  BFD_RELOC_XTENSA_ASM_EXPAND,
47.40207 ++
47.40208 ++/* Xtensa relocation to mark that the linker should simplify
47.40209 ++assembler-expanded instructions.  This is commonly used
47.40210 ++internally by the linker after analysis of a
47.40211 ++BFD_RELOC_XTENSA_ASM_EXPAND.  */
47.40212 ++  BFD_RELOC_XTENSA_ASM_SIMPLIFY,
47.40213 ++
47.40214 ++/* 8 bit signed offset in (ix+d) or (iy+d).  */
47.40215 ++  BFD_RELOC_Z80_DISP8,
47.40216 ++
47.40217 ++/* DJNZ offset.  */
47.40218 ++  BFD_RELOC_Z8K_DISP7,
47.40219 ++
47.40220 ++/* CALR offset.  */
47.40221 ++  BFD_RELOC_Z8K_CALLR,
47.40222 ++
47.40223 ++/* 4 bit value.  */
47.40224 ++  BFD_RELOC_Z8K_IMM4L,
47.40225 ++  BFD_RELOC_UNUSED };
47.40226 ++typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
47.40227 ++reloc_howto_type *bfd_reloc_type_lookup
47.40228 ++   (bfd *abfd, bfd_reloc_code_real_type code);
47.40229 ++reloc_howto_type *bfd_reloc_name_lookup
47.40230 ++   (bfd *abfd, const char *reloc_name);
47.40231 ++
47.40232 ++const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
47.40233 ++
47.40234 ++/* Extracted from syms.c.  */
47.40235 ++
47.40236 ++typedef struct bfd_symbol
47.40237 ++{
47.40238 ++  /* A pointer to the BFD which owns the symbol. This information
47.40239 ++     is necessary so that a back end can work out what additional
47.40240 ++     information (invisible to the application writer) is carried
47.40241 ++     with the symbol.
47.40242 ++
47.40243 ++     This field is *almost* redundant, since you can use section->owner
47.40244 ++     instead, except that some symbols point to the global sections
47.40245 ++     bfd_{abs,com,und}_section.  This could be fixed by making
47.40246 ++     these globals be per-bfd (or per-target-flavor).  FIXME.  */
47.40247 ++  struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */
47.40248 ++
47.40249 ++  /* The text of the symbol. The name is left alone, and not copied; the
47.40250 ++     application may not alter it.  */
47.40251 ++  const char *name;
47.40252 ++
47.40253 ++  /* The value of the symbol.  This really should be a union of a
47.40254 ++     numeric value with a pointer, since some flags indicate that
47.40255 ++     a pointer to another symbol is stored here.  */
47.40256 ++  symvalue value;
47.40257 ++
47.40258 ++  /* Attributes of a symbol.  */
47.40259 ++#define BSF_NO_FLAGS    0x00
47.40260 ++
47.40261 ++  /* The symbol has local scope; <<static>> in <<C>>. The value
47.40262 ++     is the offset into the section of the data.  */
47.40263 ++#define BSF_LOCAL      0x01
47.40264 ++
47.40265 ++  /* The symbol has global scope; initialized data in <<C>>. The
47.40266 ++     value is the offset into the section of the data.  */
47.40267 ++#define BSF_GLOBAL     0x02
47.40268 ++
47.40269 ++  /* The symbol has global scope and is exported. The value is
47.40270 ++     the offset into the section of the data.  */
47.40271 ++#define BSF_EXPORT     BSF_GLOBAL /* No real difference.  */
47.40272 ++
47.40273 ++  /* A normal C symbol would be one of:
47.40274 ++     <<BSF_LOCAL>>, <<BSF_FORT_COMM>>,  <<BSF_UNDEFINED>> or
47.40275 ++     <<BSF_GLOBAL>>.  */
47.40276 ++
47.40277 ++  /* The symbol is a debugging record. The value has an arbitrary
47.40278 ++     meaning, unless BSF_DEBUGGING_RELOC is also set.  */
47.40279 ++#define BSF_DEBUGGING  0x08
47.40280 ++
47.40281 ++  /* The symbol denotes a function entry point.  Used in ELF,
47.40282 ++     perhaps others someday.  */
47.40283 ++#define BSF_FUNCTION    0x10
47.40284 ++
47.40285 ++  /* Used by the linker.  */
47.40286 ++#define BSF_KEEP        0x20
47.40287 ++#define BSF_KEEP_G      0x40
47.40288 ++
47.40289 ++  /* A weak global symbol, overridable without warnings by
47.40290 ++     a regular global symbol of the same name.  */
47.40291 ++#define BSF_WEAK        0x80
47.40292 ++
47.40293 ++  /* This symbol was created to point to a section, e.g. ELF's
47.40294 ++     STT_SECTION symbols.  */
47.40295 ++#define BSF_SECTION_SYM 0x100
47.40296 ++
47.40297 ++  /* The symbol used to be a common symbol, but now it is
47.40298 ++     allocated.  */
47.40299 ++#define BSF_OLD_COMMON  0x200
47.40300 ++
47.40301 ++  /* The default value for common data.  */
47.40302 ++#define BFD_FORT_COMM_DEFAULT_VALUE 0
47.40303 ++
47.40304 ++  /* In some files the type of a symbol sometimes alters its
47.40305 ++     location in an output file - ie in coff a <<ISFCN>> symbol
47.40306 ++     which is also <<C_EXT>> symbol appears where it was
47.40307 ++     declared and not at the end of a section.  This bit is set
47.40308 ++     by the target BFD part to convey this information.  */
47.40309 ++#define BSF_NOT_AT_END    0x400
47.40310 ++
47.40311 ++  /* Signal that the symbol is the label of constructor section.  */
47.40312 ++#define BSF_CONSTRUCTOR   0x800
47.40313 ++
47.40314 ++  /* Signal that the symbol is a warning symbol.  The name is a
47.40315 ++     warning.  The name of the next symbol is the one to warn about;
47.40316 ++     if a reference is made to a symbol with the same name as the next
47.40317 ++     symbol, a warning is issued by the linker.  */
47.40318 ++#define BSF_WARNING       0x1000
47.40319 ++
47.40320 ++  /* Signal that the symbol is indirect.  This symbol is an indirect
47.40321 ++     pointer to the symbol with the same name as the next symbol.  */
47.40322 ++#define BSF_INDIRECT      0x2000
47.40323 ++
47.40324 ++  /* BSF_FILE marks symbols that contain a file name.  This is used
47.40325 ++     for ELF STT_FILE symbols.  */
47.40326 ++#define BSF_FILE          0x4000
47.40327 ++
47.40328 ++  /* Symbol is from dynamic linking information.  */
47.40329 ++#define BSF_DYNAMIC       0x8000
47.40330 ++
47.40331 ++  /* The symbol denotes a data object.  Used in ELF, and perhaps
47.40332 ++     others someday.  */
47.40333 ++#define BSF_OBJECT        0x10000
47.40334 ++
47.40335 ++  /* This symbol is a debugging symbol.  The value is the offset
47.40336 ++     into the section of the data.  BSF_DEBUGGING should be set
47.40337 ++     as well.  */
47.40338 ++#define BSF_DEBUGGING_RELOC 0x20000
47.40339 ++
47.40340 ++  /* This symbol is thread local.  Used in ELF.  */
47.40341 ++#define BSF_THREAD_LOCAL  0x40000
47.40342 ++
47.40343 ++  /* This symbol represents a complex relocation expression,
47.40344 ++     with the expression tree serialized in the symbol name.  */
47.40345 ++#define BSF_RELC 0x80000
47.40346 ++
47.40347 ++  /* This symbol represents a signed complex relocation expression,
47.40348 ++     with the expression tree serialized in the symbol name.  */
47.40349 ++#define BSF_SRELC 0x100000
47.40350 ++
47.40351 ++  flagword flags;
47.40352 ++
47.40353 ++  /* A pointer to the section to which this symbol is
47.40354 ++     relative.  This will always be non NULL, there are special
47.40355 ++     sections for undefined and absolute symbols.  */
47.40356 ++  struct bfd_section *section;
47.40357 ++
47.40358 ++  /* Back end special data.  */
47.40359 ++  union
47.40360 ++    {
47.40361 ++      void *p;
47.40362 ++      bfd_vma i;
47.40363 ++    }
47.40364 ++  udata;
47.40365 ++}
47.40366 ++asymbol;
47.40367 ++
47.40368 ++#define bfd_get_symtab_upper_bound(abfd) \
47.40369 ++     BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
47.40370 ++
47.40371 ++bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
47.40372 ++
47.40373 ++bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
47.40374 ++
47.40375 ++#define bfd_is_local_label_name(abfd, name) \
47.40376 ++  BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
47.40377 ++
47.40378 ++bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
47.40379 ++
47.40380 ++#define bfd_is_target_special_symbol(abfd, sym) \
47.40381 ++  BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
47.40382 ++
47.40383 ++#define bfd_canonicalize_symtab(abfd, location) \
47.40384 ++  BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
47.40385 ++
47.40386 ++bfd_boolean bfd_set_symtab
47.40387 ++   (bfd *abfd, asymbol **location, unsigned int count);
47.40388 ++
47.40389 ++void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
47.40390 ++
47.40391 ++#define bfd_make_empty_symbol(abfd) \
47.40392 ++  BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
47.40393 ++
47.40394 ++asymbol *_bfd_generic_make_empty_symbol (bfd *);
47.40395 ++
47.40396 ++#define bfd_make_debug_symbol(abfd,ptr,size) \
47.40397 ++  BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
47.40398 ++
47.40399 ++int bfd_decode_symclass (asymbol *symbol);
47.40400 ++
47.40401 ++bfd_boolean bfd_is_undefined_symclass (int symclass);
47.40402 ++
47.40403 ++void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
47.40404 ++
47.40405 ++bfd_boolean bfd_copy_private_symbol_data
47.40406 ++   (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
47.40407 ++
47.40408 ++#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
47.40409 ++  BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
47.40410 ++            (ibfd, isymbol, obfd, osymbol))
47.40411 ++
47.40412 ++/* Extracted from bfd.c.  */
47.40413 ++struct bfd
47.40414 ++{
47.40415 ++  /* A unique identifier of the BFD  */
47.40416 ++  unsigned int id;
47.40417 ++
47.40418 ++  /* The filename the application opened the BFD with.  */
47.40419 ++  const char *filename;
47.40420 ++
47.40421 ++  /* A pointer to the target jump table.  */
47.40422 ++  const struct bfd_target *xvec;
47.40423 ++
47.40424 ++  /* The IOSTREAM, and corresponding IO vector that provide access
47.40425 ++     to the file backing the BFD.  */
47.40426 ++  void *iostream;
47.40427 ++  const struct bfd_iovec *iovec;
47.40428 ++
47.40429 ++  /* Is the file descriptor being cached?  That is, can it be closed as
47.40430 ++     needed, and re-opened when accessed later?  */
47.40431 ++  bfd_boolean cacheable;
47.40432 ++
47.40433 ++  /* Marks whether there was a default target specified when the
47.40434 ++     BFD was opened. This is used to select which matching algorithm
47.40435 ++     to use to choose the back end.  */
47.40436 ++  bfd_boolean target_defaulted;
47.40437 ++
47.40438 ++  /* The caching routines use these to maintain a
47.40439 ++     least-recently-used list of BFDs.  */
47.40440 ++  struct bfd *lru_prev, *lru_next;
47.40441 ++
47.40442 ++  /* When a file is closed by the caching routines, BFD retains
47.40443 ++     state information on the file here...  */
47.40444 ++  ufile_ptr where;
47.40445 ++
47.40446 ++  /* ... and here: (``once'' means at least once).  */
47.40447 ++  bfd_boolean opened_once;
47.40448 ++
47.40449 ++  /* Set if we have a locally maintained mtime value, rather than
47.40450 ++     getting it from the file each time.  */
47.40451 ++  bfd_boolean mtime_set;
47.40452 ++
47.40453 ++  /* File modified time, if mtime_set is TRUE.  */
47.40454 ++  long mtime;
47.40455 ++
47.40456 ++  /* Reserved for an unimplemented file locking extension.  */
47.40457 ++  int ifd;
47.40458 ++
47.40459 ++  /* The format which belongs to the BFD. (object, core, etc.)  */
47.40460 ++  bfd_format format;
47.40461 ++
47.40462 ++  /* The direction with which the BFD was opened.  */
47.40463 ++  enum bfd_direction
47.40464 ++    {
47.40465 ++      no_direction = 0,
47.40466 ++      read_direction = 1,
47.40467 ++      write_direction = 2,
47.40468 ++      both_direction = 3
47.40469 ++    }
47.40470 ++  direction;
47.40471 ++
47.40472 ++  /* Format_specific flags.  */
47.40473 ++  flagword flags;
47.40474 ++
47.40475 ++  /* Currently my_archive is tested before adding origin to
47.40476 ++     anything. I believe that this can become always an add of
47.40477 ++     origin, with origin set to 0 for non archive files.  */
47.40478 ++  ufile_ptr origin;
47.40479 ++
47.40480 ++  /* Remember when output has begun, to stop strange things
47.40481 ++     from happening.  */
47.40482 ++  bfd_boolean output_has_begun;
47.40483 ++
47.40484 ++  /* A hash table for section names.  */
47.40485 ++  struct bfd_hash_table section_htab;
47.40486 ++
47.40487 ++  /* Pointer to linked list of sections.  */
47.40488 ++  struct bfd_section *sections;
47.40489 ++
47.40490 ++  /* The last section on the section list.  */
47.40491 ++  struct bfd_section *section_last;
47.40492 ++
47.40493 ++  /* The number of sections.  */
47.40494 ++  unsigned int section_count;
47.40495 ++
47.40496 ++  /* Stuff only useful for object files:
47.40497 ++     The start address.  */
47.40498 ++  bfd_vma start_address;
47.40499 ++
47.40500 ++  /* Used for input and output.  */
47.40501 ++  unsigned int symcount;
47.40502 ++
47.40503 ++  /* Symbol table for output BFD (with symcount entries).  */
47.40504 ++  struct bfd_symbol  **outsymbols;
47.40505 ++
47.40506 ++  /* Used for slurped dynamic symbol tables.  */
47.40507 ++  unsigned int dynsymcount;
47.40508 ++
47.40509 ++  /* Pointer to structure which contains architecture information.  */
47.40510 ++  const struct bfd_arch_info *arch_info;
47.40511 ++
47.40512 ++  /* Flag set if symbols from this BFD should not be exported.  */
47.40513 ++  bfd_boolean no_export;
47.40514 ++
47.40515 ++  /* Stuff only useful for archives.  */
47.40516 ++  void *arelt_data;
47.40517 ++  struct bfd *my_archive;      /* The containing archive BFD.  */
47.40518 ++  struct bfd *archive_next;    /* The next BFD in the archive.  */
47.40519 ++  struct bfd *archive_head;    /* The first BFD in the archive.  */
47.40520 ++  bfd_boolean has_armap;
47.40521 ++
47.40522 ++  /* A chain of BFD structures involved in a link.  */
47.40523 ++  struct bfd *link_next;
47.40524 ++
47.40525 ++  /* A field used by _bfd_generic_link_add_archive_symbols.  This will
47.40526 ++     be used only for archive elements.  */
47.40527 ++  int archive_pass;
47.40528 ++
47.40529 ++  /* Used by the back end to hold private data.  */
47.40530 ++  union
47.40531 ++    {
47.40532 ++      struct aout_data_struct *aout_data;
47.40533 ++      struct artdata *aout_ar_data;
47.40534 ++      struct _oasys_data *oasys_obj_data;
47.40535 ++      struct _oasys_ar_data *oasys_ar_data;
47.40536 ++      struct coff_tdata *coff_obj_data;
47.40537 ++      struct pe_tdata *pe_obj_data;
47.40538 ++      struct xcoff_tdata *xcoff_obj_data;
47.40539 ++      struct ecoff_tdata *ecoff_obj_data;
47.40540 ++      struct ieee_data_struct *ieee_data;
47.40541 ++      struct ieee_ar_data_struct *ieee_ar_data;
47.40542 ++      struct srec_data_struct *srec_data;
47.40543 ++      struct ihex_data_struct *ihex_data;
47.40544 ++      struct tekhex_data_struct *tekhex_data;
47.40545 ++      struct elf_obj_tdata *elf_obj_data;
47.40546 ++      struct nlm_obj_tdata *nlm_obj_data;
47.40547 ++      struct bout_data_struct *bout_data;
47.40548 ++      struct mmo_data_struct *mmo_data;
47.40549 ++      struct sun_core_struct *sun_core_data;
47.40550 ++      struct sco5_core_struct *sco5_core_data;
47.40551 ++      struct trad_core_struct *trad_core_data;
47.40552 ++      struct som_data_struct *som_data;
47.40553 ++      struct hpux_core_struct *hpux_core_data;
47.40554 ++      struct hppabsd_core_struct *hppabsd_core_data;
47.40555 ++      struct sgi_core_struct *sgi_core_data;
47.40556 ++      struct lynx_core_struct *lynx_core_data;
47.40557 ++      struct osf_core_struct *osf_core_data;
47.40558 ++      struct cisco_core_struct *cisco_core_data;
47.40559 ++      struct versados_data_struct *versados_data;
47.40560 ++      struct netbsd_core_struct *netbsd_core_data;
47.40561 ++      struct mach_o_data_struct *mach_o_data;
47.40562 ++      struct mach_o_fat_data_struct *mach_o_fat_data;
47.40563 ++      struct bfd_pef_data_struct *pef_data;
47.40564 ++      struct bfd_pef_xlib_data_struct *pef_xlib_data;
47.40565 ++      struct bfd_sym_data_struct *sym_data;
47.40566 ++      void *any;
47.40567 ++    }
47.40568 ++  tdata;
47.40569 ++
47.40570 ++  /* Used by the application to hold private data.  */
47.40571 ++  void *usrdata;
47.40572 ++
47.40573 ++  /* Where all the allocated stuff under this BFD goes.  This is a
47.40574 ++     struct objalloc *, but we use void * to avoid requiring the inclusion
47.40575 ++     of objalloc.h.  */
47.40576 ++  void *memory;
47.40577 ++};
47.40578 ++
47.40579 ++typedef enum bfd_error
47.40580 ++{
47.40581 ++  bfd_error_no_error = 0,
47.40582 ++  bfd_error_system_call,
47.40583 ++  bfd_error_invalid_target,
47.40584 ++  bfd_error_wrong_format,
47.40585 ++  bfd_error_wrong_object_format,
47.40586 ++  bfd_error_invalid_operation,
47.40587 ++  bfd_error_no_memory,
47.40588 ++  bfd_error_no_symbols,
47.40589 ++  bfd_error_no_armap,
47.40590 ++  bfd_error_no_more_archived_files,
47.40591 ++  bfd_error_malformed_archive,
47.40592 ++  bfd_error_file_not_recognized,
47.40593 ++  bfd_error_file_ambiguously_recognized,
47.40594 ++  bfd_error_no_contents,
47.40595 ++  bfd_error_nonrepresentable_section,
47.40596 ++  bfd_error_no_debug_section,
47.40597 ++  bfd_error_bad_value,
47.40598 ++  bfd_error_file_truncated,
47.40599 ++  bfd_error_file_too_big,
47.40600 ++  bfd_error_on_input,
47.40601 ++  bfd_error_invalid_error_code
47.40602 ++}
47.40603 ++bfd_error_type;
47.40604 ++
47.40605 ++bfd_error_type bfd_get_error (void);
47.40606 ++
47.40607 ++void bfd_set_error (bfd_error_type error_tag, ...);
47.40608 ++
47.40609 ++const char *bfd_errmsg (bfd_error_type error_tag);
47.40610 ++
47.40611 ++void bfd_perror (const char *message);
47.40612 ++
47.40613 ++typedef void (*bfd_error_handler_type) (const char *, ...);
47.40614 ++
47.40615 ++bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
47.40616 ++
47.40617 ++void bfd_set_error_program_name (const char *);
47.40618 ++
47.40619 ++bfd_error_handler_type bfd_get_error_handler (void);
47.40620 ++
47.40621 ++long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
47.40622 ++
47.40623 ++long bfd_canonicalize_reloc
47.40624 ++   (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
47.40625 ++
47.40626 ++void bfd_set_reloc
47.40627 ++   (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
47.40628 ++
47.40629 ++bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
47.40630 ++
47.40631 ++int bfd_get_arch_size (bfd *abfd);
47.40632 ++
47.40633 ++int bfd_get_sign_extend_vma (bfd *abfd);
47.40634 ++
47.40635 ++bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
47.40636 ++
47.40637 ++unsigned int bfd_get_gp_size (bfd *abfd);
47.40638 ++
47.40639 ++void bfd_set_gp_size (bfd *abfd, unsigned int i);
47.40640 ++
47.40641 ++bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
47.40642 ++
47.40643 ++bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
47.40644 ++
47.40645 ++#define bfd_copy_private_header_data(ibfd, obfd) \
47.40646 ++     BFD_SEND (obfd, _bfd_copy_private_header_data, \
47.40647 ++               (ibfd, obfd))
47.40648 ++bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
47.40649 ++
47.40650 ++#define bfd_copy_private_bfd_data(ibfd, obfd) \
47.40651 ++     BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
47.40652 ++               (ibfd, obfd))
47.40653 ++bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
47.40654 ++
47.40655 ++#define bfd_merge_private_bfd_data(ibfd, obfd) \
47.40656 ++     BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
47.40657 ++               (ibfd, obfd))
47.40658 ++bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
47.40659 ++
47.40660 ++#define bfd_set_private_flags(abfd, flags) \
47.40661 ++     BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
47.40662 ++#define bfd_sizeof_headers(abfd, info) \
47.40663 ++       BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
47.40664 ++
47.40665 ++#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
47.40666 ++       BFD_SEND (abfd, _bfd_find_nearest_line, \
47.40667 ++                 (abfd, sec, syms, off, file, func, line))
47.40668 ++
47.40669 ++#define bfd_find_line(abfd, syms, sym, file, line) \
47.40670 ++       BFD_SEND (abfd, _bfd_find_line, \
47.40671 ++                 (abfd, syms, sym, file, line))
47.40672 ++
47.40673 ++#define bfd_find_inliner_info(abfd, file, func, line) \
47.40674 ++       BFD_SEND (abfd, _bfd_find_inliner_info, \
47.40675 ++                 (abfd, file, func, line))
47.40676 ++
47.40677 ++#define bfd_debug_info_start(abfd) \
47.40678 ++       BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
47.40679 ++
47.40680 ++#define bfd_debug_info_end(abfd) \
47.40681 ++       BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
47.40682 ++
47.40683 ++#define bfd_debug_info_accumulate(abfd, section) \
47.40684 ++       BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
47.40685 ++
47.40686 ++#define bfd_stat_arch_elt(abfd, stat) \
47.40687 ++       BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
47.40688 ++
47.40689 ++#define bfd_update_armap_timestamp(abfd) \
47.40690 ++       BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
47.40691 ++
47.40692 ++#define bfd_set_arch_mach(abfd, arch, mach)\
47.40693 ++       BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
47.40694 ++
47.40695 ++#define bfd_relax_section(abfd, section, link_info, again) \
47.40696 ++       BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
47.40697 ++
47.40698 ++#define bfd_gc_sections(abfd, link_info) \
47.40699 ++       BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
47.40700 ++
47.40701 ++#define bfd_merge_sections(abfd, link_info) \
47.40702 ++       BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
47.40703 ++
47.40704 ++#define bfd_is_group_section(abfd, sec) \
47.40705 ++       BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
47.40706 ++
47.40707 ++#define bfd_discard_group(abfd, sec) \
47.40708 ++       BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
47.40709 ++
47.40710 ++#define bfd_link_hash_table_create(abfd) \
47.40711 ++       BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
47.40712 ++
47.40713 ++#define bfd_link_hash_table_free(abfd, hash) \
47.40714 ++       BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
47.40715 ++
47.40716 ++#define bfd_link_add_symbols(abfd, info) \
47.40717 ++       BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
47.40718 ++
47.40719 ++#define bfd_link_just_syms(abfd, sec, info) \
47.40720 ++       BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
47.40721 ++
47.40722 ++#define bfd_final_link(abfd, info) \
47.40723 ++       BFD_SEND (abfd, _bfd_final_link, (abfd, info))
47.40724 ++
47.40725 ++#define bfd_free_cached_info(abfd) \
47.40726 ++       BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
47.40727 ++
47.40728 ++#define bfd_get_dynamic_symtab_upper_bound(abfd) \
47.40729 ++       BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
47.40730 ++
47.40731 ++#define bfd_print_private_bfd_data(abfd, file)\
47.40732 ++       BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
47.40733 ++
47.40734 ++#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
47.40735 ++       BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
47.40736 ++
47.40737 ++#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
47.40738 ++       BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
47.40739 ++                                                   dyncount, dynsyms, ret))
47.40740 ++
47.40741 ++#define bfd_get_dynamic_reloc_upper_bound(abfd) \
47.40742 ++       BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
47.40743 ++
47.40744 ++#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
47.40745 ++       BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
47.40746 ++
47.40747 ++extern bfd_byte *bfd_get_relocated_section_contents
47.40748 ++  (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
47.40749 ++   bfd_boolean, asymbol **);
47.40750 ++
47.40751 ++bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
47.40752 ++
47.40753 ++struct bfd_preserve
47.40754 ++{
47.40755 ++  void *marker;
47.40756 ++  void *tdata;
47.40757 ++  flagword flags;
47.40758 ++  const struct bfd_arch_info *arch_info;
47.40759 ++  struct bfd_section *sections;
47.40760 ++  struct bfd_section *section_last;
47.40761 ++  unsigned int section_count;
47.40762 ++  struct bfd_hash_table section_htab;
47.40763 ++};
47.40764 ++
47.40765 ++bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
47.40766 ++
47.40767 ++void bfd_preserve_restore (bfd *, struct bfd_preserve *);
47.40768 ++
47.40769 ++void bfd_preserve_finish (bfd *, struct bfd_preserve *);
47.40770 ++
47.40771 ++bfd_vma bfd_emul_get_maxpagesize (const char *);
47.40772 ++
47.40773 ++void bfd_emul_set_maxpagesize (const char *, bfd_vma);
47.40774 ++
47.40775 ++bfd_vma bfd_emul_get_commonpagesize (const char *);
47.40776 ++
47.40777 ++void bfd_emul_set_commonpagesize (const char *, bfd_vma);
47.40778 ++
47.40779 ++char *bfd_demangle (bfd *, const char *, int);
47.40780 ++
47.40781 ++/* Extracted from archive.c.  */
47.40782 ++symindex bfd_get_next_mapent
47.40783 ++   (bfd *abfd, symindex previous, carsym **sym);
47.40784 ++
47.40785 ++bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
47.40786 ++
47.40787 ++bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
47.40788 ++
47.40789 ++/* Extracted from corefile.c.  */
47.40790 ++const char *bfd_core_file_failing_command (bfd *abfd);
47.40791 ++
47.40792 ++int bfd_core_file_failing_signal (bfd *abfd);
47.40793 ++
47.40794 ++bfd_boolean core_file_matches_executable_p
47.40795 ++   (bfd *core_bfd, bfd *exec_bfd);
47.40796 ++
47.40797 ++bfd_boolean generic_core_file_matches_executable_p
47.40798 ++   (bfd *core_bfd, bfd *exec_bfd);
47.40799 ++
47.40800 ++/* Extracted from targets.c.  */
47.40801 ++#define BFD_SEND(bfd, message, arglist) \
47.40802 ++  ((*((bfd)->xvec->message)) arglist)
47.40803 ++
47.40804 ++#ifdef DEBUG_BFD_SEND
47.40805 ++#undef BFD_SEND
47.40806 ++#define BFD_SEND(bfd, message, arglist) \
47.40807 ++  (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
47.40808 ++    ((*((bfd)->xvec->message)) arglist) : \
47.40809 ++    (bfd_assert (__FILE__,__LINE__), NULL))
47.40810 ++#endif
47.40811 ++#define BFD_SEND_FMT(bfd, message, arglist) \
47.40812 ++  (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
47.40813 ++
47.40814 ++#ifdef DEBUG_BFD_SEND
47.40815 ++#undef BFD_SEND_FMT
47.40816 ++#define BFD_SEND_FMT(bfd, message, arglist) \
47.40817 ++  (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
47.40818 ++   (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
47.40819 ++   (bfd_assert (__FILE__,__LINE__), NULL))
47.40820 ++#endif
47.40821 ++
47.40822 ++enum bfd_flavour
47.40823 ++{
47.40824 ++  bfd_target_unknown_flavour,
47.40825 ++  bfd_target_aout_flavour,
47.40826 ++  bfd_target_coff_flavour,
47.40827 ++  bfd_target_ecoff_flavour,
47.40828 ++  bfd_target_xcoff_flavour,
47.40829 ++  bfd_target_elf_flavour,
47.40830 ++  bfd_target_ieee_flavour,
47.40831 ++  bfd_target_nlm_flavour,
47.40832 ++  bfd_target_oasys_flavour,
47.40833 ++  bfd_target_tekhex_flavour,
47.40834 ++  bfd_target_srec_flavour,
47.40835 ++  bfd_target_ihex_flavour,
47.40836 ++  bfd_target_som_flavour,
47.40837 ++  bfd_target_os9k_flavour,
47.40838 ++  bfd_target_versados_flavour,
47.40839 ++  bfd_target_msdos_flavour,
47.40840 ++  bfd_target_ovax_flavour,
47.40841 ++  bfd_target_evax_flavour,
47.40842 ++  bfd_target_mmo_flavour,
47.40843 ++  bfd_target_mach_o_flavour,
47.40844 ++  bfd_target_pef_flavour,
47.40845 ++  bfd_target_pef_xlib_flavour,
47.40846 ++  bfd_target_sym_flavour
47.40847 ++};
47.40848 ++
47.40849 ++enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
47.40850 ++
47.40851 ++/* Forward declaration.  */
47.40852 ++typedef struct bfd_link_info _bfd_link_info;
47.40853 ++
47.40854 ++typedef struct bfd_target
47.40855 ++{
47.40856 ++  /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
47.40857 ++  char *name;
47.40858 ++
47.40859 ++ /* The "flavour" of a back end is a general indication about
47.40860 ++    the contents of a file.  */
47.40861 ++  enum bfd_flavour flavour;
47.40862 ++
47.40863 ++  /* The order of bytes within the data area of a file.  */
47.40864 ++  enum bfd_endian byteorder;
47.40865 ++
47.40866 ++ /* The order of bytes within the header parts of a file.  */
47.40867 ++  enum bfd_endian header_byteorder;
47.40868 ++
47.40869 ++  /* A mask of all the flags which an executable may have set -
47.40870 ++     from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>.  */
47.40871 ++  flagword object_flags;
47.40872 ++
47.40873 ++ /* A mask of all the flags which a section may have set - from
47.40874 ++    the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>.  */
47.40875 ++  flagword section_flags;
47.40876 ++
47.40877 ++ /* The character normally found at the front of a symbol.
47.40878 ++    (if any), perhaps `_'.  */
47.40879 ++  char symbol_leading_char;
47.40880 ++
47.40881 ++ /* The pad character for file names within an archive header.  */
47.40882 ++  char ar_pad_char;
47.40883 ++
47.40884 ++  /* The maximum number of characters in an archive header.  */
47.40885 ++  unsigned short ar_max_namelen;
47.40886 ++
47.40887 ++  /* Entries for byte swapping for data. These are different from the
47.40888 ++     other entry points, since they don't take a BFD as the first argument.
47.40889 ++     Certain other handlers could do the same.  */
47.40890 ++  bfd_uint64_t   (*bfd_getx64) (const void *);
47.40891 ++  bfd_int64_t    (*bfd_getx_signed_64) (const void *);
47.40892 ++  void           (*bfd_putx64) (bfd_uint64_t, void *);
47.40893 ++  bfd_vma        (*bfd_getx32) (const void *);
47.40894 ++  bfd_signed_vma (*bfd_getx_signed_32) (const void *);
47.40895 ++  void           (*bfd_putx32) (bfd_vma, void *);
47.40896 ++  bfd_vma        (*bfd_getx16) (const void *);
47.40897 ++  bfd_signed_vma (*bfd_getx_signed_16) (const void *);
47.40898 ++  void           (*bfd_putx16) (bfd_vma, void *);
47.40899 ++
47.40900 ++  /* Byte swapping for the headers.  */
47.40901 ++  bfd_uint64_t   (*bfd_h_getx64) (const void *);
47.40902 ++  bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
47.40903 ++  void           (*bfd_h_putx64) (bfd_uint64_t, void *);
47.40904 ++  bfd_vma        (*bfd_h_getx32) (const void *);
47.40905 ++  bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
47.40906 ++  void           (*bfd_h_putx32) (bfd_vma, void *);
47.40907 ++  bfd_vma        (*bfd_h_getx16) (const void *);
47.40908 ++  bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
47.40909 ++  void           (*bfd_h_putx16) (bfd_vma, void *);
47.40910 ++
47.40911 ++  /* Format dependent routines: these are vectors of entry points
47.40912 ++     within the target vector structure, one for each format to check.  */
47.40913 ++
47.40914 ++  /* Check the format of a file being read.  Return a <<bfd_target *>> or zero.  */
47.40915 ++  const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
47.40916 ++
47.40917 ++  /* Set the format of a file being written.  */
47.40918 ++  bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
47.40919 ++
47.40920 ++  /* Write cached information into a file being written, at <<bfd_close>>.  */
47.40921 ++  bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
47.40922 ++
47.40923 ++
47.40924 ++  /* Generic entry points.  */
47.40925 ++#define BFD_JUMP_TABLE_GENERIC(NAME) \
47.40926 ++  NAME##_close_and_cleanup, \
47.40927 ++  NAME##_bfd_free_cached_info, \
47.40928 ++  NAME##_new_section_hook, \
47.40929 ++  NAME##_get_section_contents, \
47.40930 ++  NAME##_get_section_contents_in_window
47.40931 ++
47.40932 ++  /* Called when the BFD is being closed to do any necessary cleanup.  */
47.40933 ++  bfd_boolean (*_close_and_cleanup) (bfd *);
47.40934 ++  /* Ask the BFD to free all cached information.  */
47.40935 ++  bfd_boolean (*_bfd_free_cached_info) (bfd *);
47.40936 ++  /* Called when a new section is created.  */
47.40937 ++  bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
47.40938 ++  /* Read the contents of a section.  */
47.40939 ++  bfd_boolean (*_bfd_get_section_contents)
47.40940 ++    (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
47.40941 ++  bfd_boolean (*_bfd_get_section_contents_in_window)
47.40942 ++    (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
47.40943 ++
47.40944 ++  /* Entry points to copy private data.  */
47.40945 ++#define BFD_JUMP_TABLE_COPY(NAME) \
47.40946 ++  NAME##_bfd_copy_private_bfd_data, \
47.40947 ++  NAME##_bfd_merge_private_bfd_data, \
47.40948 ++  _bfd_generic_init_private_section_data, \
47.40949 ++  NAME##_bfd_copy_private_section_data, \
47.40950 ++  NAME##_bfd_copy_private_symbol_data, \
47.40951 ++  NAME##_bfd_copy_private_header_data, \
47.40952 ++  NAME##_bfd_set_private_flags, \
47.40953 ++  NAME##_bfd_print_private_bfd_data
47.40954 ++
47.40955 ++  /* Called to copy BFD general private data from one object file
47.40956 ++     to another.  */
47.40957 ++  bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
47.40958 ++  /* Called to merge BFD general private data from one object file
47.40959 ++     to a common output file when linking.  */
47.40960 ++  bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
47.40961 ++  /* Called to initialize BFD private section data from one object file
47.40962 ++     to another.  */
47.40963 ++#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
47.40964 ++  BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
47.40965 ++  bfd_boolean (*_bfd_init_private_section_data)
47.40966 ++    (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
47.40967 ++  /* Called to copy BFD private section data from one object file
47.40968 ++     to another.  */
47.40969 ++  bfd_boolean (*_bfd_copy_private_section_data)
47.40970 ++    (bfd *, sec_ptr, bfd *, sec_ptr);
47.40971 ++  /* Called to copy BFD private symbol data from one symbol
47.40972 ++     to another.  */
47.40973 ++  bfd_boolean (*_bfd_copy_private_symbol_data)
47.40974 ++    (bfd *, asymbol *, bfd *, asymbol *);
47.40975 ++  /* Called to copy BFD private header data from one object file
47.40976 ++     to another.  */
47.40977 ++  bfd_boolean (*_bfd_copy_private_header_data)
47.40978 ++    (bfd *, bfd *);
47.40979 ++  /* Called to set private backend flags.  */
47.40980 ++  bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
47.40981 ++
47.40982 ++  /* Called to print private BFD data.  */
47.40983 ++  bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
47.40984 ++
47.40985 ++  /* Core file entry points.  */
47.40986 ++#define BFD_JUMP_TABLE_CORE(NAME) \
47.40987 ++  NAME##_core_file_failing_command, \
47.40988 ++  NAME##_core_file_failing_signal, \
47.40989 ++  NAME##_core_file_matches_executable_p
47.40990 ++
47.40991 ++  char *      (*_core_file_failing_command) (bfd *);
47.40992 ++  int         (*_core_file_failing_signal) (bfd *);
47.40993 ++  bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
47.40994 ++
47.40995 ++  /* Archive entry points.  */
47.40996 ++#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
47.40997 ++  NAME##_slurp_armap, \
47.40998 ++  NAME##_slurp_extended_name_table, \
47.40999 ++  NAME##_construct_extended_name_table, \
47.41000 ++  NAME##_truncate_arname, \
47.41001 ++  NAME##_write_armap, \
47.41002 ++  NAME##_read_ar_hdr, \
47.41003 ++  NAME##_openr_next_archived_file, \
47.41004 ++  NAME##_get_elt_at_index, \
47.41005 ++  NAME##_generic_stat_arch_elt, \
47.41006 ++  NAME##_update_armap_timestamp
47.41007 ++
47.41008 ++  bfd_boolean (*_bfd_slurp_armap) (bfd *);
47.41009 ++  bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
47.41010 ++  bfd_boolean (*_bfd_construct_extended_name_table)
47.41011 ++    (bfd *, char **, bfd_size_type *, const char **);
47.41012 ++  void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
47.41013 ++  bfd_boolean (*write_armap)
47.41014 ++    (bfd *, unsigned int, struct orl *, unsigned int, int);
47.41015 ++  void *      (*_bfd_read_ar_hdr_fn) (bfd *);
47.41016 ++  bfd *       (*openr_next_archived_file) (bfd *, bfd *);
47.41017 ++#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
47.41018 ++  bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
47.41019 ++  int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
47.41020 ++  bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
47.41021 ++
47.41022 ++  /* Entry points used for symbols.  */
47.41023 ++#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
47.41024 ++  NAME##_get_symtab_upper_bound, \
47.41025 ++  NAME##_canonicalize_symtab, \
47.41026 ++  NAME##_make_empty_symbol, \
47.41027 ++  NAME##_print_symbol, \
47.41028 ++  NAME##_get_symbol_info, \
47.41029 ++  NAME##_bfd_is_local_label_name, \
47.41030 ++  NAME##_bfd_is_target_special_symbol, \
47.41031 ++  NAME##_get_lineno, \
47.41032 ++  NAME##_find_nearest_line, \
47.41033 ++  _bfd_generic_find_line, \
47.41034 ++  NAME##_find_inliner_info, \
47.41035 ++  NAME##_bfd_make_debug_symbol, \
47.41036 ++  NAME##_read_minisymbols, \
47.41037 ++  NAME##_minisymbol_to_symbol
47.41038 ++
47.41039 ++  long        (*_bfd_get_symtab_upper_bound) (bfd *);
47.41040 ++  long        (*_bfd_canonicalize_symtab)
47.41041 ++    (bfd *, struct bfd_symbol **);
47.41042 ++  struct bfd_symbol *
47.41043 ++              (*_bfd_make_empty_symbol) (bfd *);
47.41044 ++  void        (*_bfd_print_symbol)
47.41045 ++    (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
47.41046 ++#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
47.41047 ++  void        (*_bfd_get_symbol_info)
47.41048 ++    (bfd *, struct bfd_symbol *, symbol_info *);
47.41049 ++#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
47.41050 ++  bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
47.41051 ++  bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
47.41052 ++  alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
47.41053 ++  bfd_boolean (*_bfd_find_nearest_line)
47.41054 ++    (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
47.41055 ++     const char **, const char **, unsigned int *);
47.41056 ++  bfd_boolean (*_bfd_find_line)
47.41057 ++    (bfd *, struct bfd_symbol **, struct bfd_symbol *,
47.41058 ++     const char **, unsigned int *);
47.41059 ++  bfd_boolean (*_bfd_find_inliner_info)
47.41060 ++    (bfd *, const char **, const char **, unsigned int *);
47.41061 ++ /* Back-door to allow format-aware applications to create debug symbols
47.41062 ++    while using BFD for everything else.  Currently used by the assembler
47.41063 ++    when creating COFF files.  */
47.41064 ++  asymbol *   (*_bfd_make_debug_symbol)
47.41065 ++    (bfd *, void *, unsigned long size);
47.41066 ++#define bfd_read_minisymbols(b, d, m, s) \
47.41067 ++  BFD_SEND (b, _read_minisymbols, (b, d, m, s))
47.41068 ++  long        (*_read_minisymbols)
47.41069 ++    (bfd *, bfd_boolean, void **, unsigned int *);
47.41070 ++#define bfd_minisymbol_to_symbol(b, d, m, f) \
47.41071 ++  BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
47.41072 ++  asymbol *   (*_minisymbol_to_symbol)
47.41073 ++    (bfd *, bfd_boolean, const void *, asymbol *);
47.41074 ++
47.41075 ++  /* Routines for relocs.  */
47.41076 ++#define BFD_JUMP_TABLE_RELOCS(NAME) \
47.41077 ++  NAME##_get_reloc_upper_bound, \
47.41078 ++  NAME##_canonicalize_reloc, \
47.41079 ++  NAME##_bfd_reloc_type_lookup, \
47.41080 ++  NAME##_bfd_reloc_name_lookup
47.41081 ++
47.41082 ++  long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
47.41083 ++  long        (*_bfd_canonicalize_reloc)
47.41084 ++    (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
47.41085 ++  /* See documentation on reloc types.  */
47.41086 ++  reloc_howto_type *
47.41087 ++              (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
47.41088 ++  reloc_howto_type *
47.41089 ++              (*reloc_name_lookup) (bfd *, const char *);
47.41090 ++
47.41091 ++
47.41092 ++  /* Routines used when writing an object file.  */
47.41093 ++#define BFD_JUMP_TABLE_WRITE(NAME) \
47.41094 ++  NAME##_set_arch_mach, \
47.41095 ++  NAME##_set_section_contents
47.41096 ++
47.41097 ++  bfd_boolean (*_bfd_set_arch_mach)
47.41098 ++    (bfd *, enum bfd_architecture, unsigned long);
47.41099 ++  bfd_boolean (*_bfd_set_section_contents)
47.41100 ++    (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
47.41101 ++
47.41102 ++  /* Routines used by the linker.  */
47.41103 ++#define BFD_JUMP_TABLE_LINK(NAME) \
47.41104 ++  NAME##_sizeof_headers, \
47.41105 ++  NAME##_bfd_get_relocated_section_contents, \
47.41106 ++  NAME##_bfd_relax_section, \
47.41107 ++  NAME##_bfd_link_hash_table_create, \
47.41108 ++  NAME##_bfd_link_hash_table_free, \
47.41109 ++  NAME##_bfd_link_add_symbols, \
47.41110 ++  NAME##_bfd_link_just_syms, \
47.41111 ++  NAME##_bfd_final_link, \
47.41112 ++  NAME##_bfd_link_split_section, \
47.41113 ++  NAME##_bfd_gc_sections, \
47.41114 ++  NAME##_bfd_merge_sections, \
47.41115 ++  NAME##_bfd_is_group_section, \
47.41116 ++  NAME##_bfd_discard_group, \
47.41117 ++  NAME##_section_already_linked \
47.41118 ++
47.41119 ++  int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
47.41120 ++  bfd_byte *  (*_bfd_get_relocated_section_contents)
47.41121 ++    (bfd *, struct bfd_link_info *, struct bfd_link_order *,
47.41122 ++     bfd_byte *, bfd_boolean, struct bfd_symbol **);
47.41123 ++
47.41124 ++  bfd_boolean (*_bfd_relax_section)
47.41125 ++    (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
47.41126 ++
47.41127 ++  /* Create a hash table for the linker.  Different backends store
47.41128 ++     different information in this table.  */
47.41129 ++  struct bfd_link_hash_table *
47.41130 ++              (*_bfd_link_hash_table_create) (bfd *);
47.41131 ++
47.41132 ++  /* Release the memory associated with the linker hash table.  */
47.41133 ++  void        (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
47.41134 ++
47.41135 ++  /* Add symbols from this object file into the hash table.  */
47.41136 ++  bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
47.41137 ++
47.41138 ++  /* Indicate that we are only retrieving symbol values from this section.  */
47.41139 ++  void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
47.41140 ++
47.41141 ++  /* Do a link based on the link_order structures attached to each
47.41142 ++     section of the BFD.  */
47.41143 ++  bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
47.41144 ++
47.41145 ++  /* Should this section be split up into smaller pieces during linking.  */
47.41146 ++  bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
47.41147 ++
47.41148 ++  /* Remove sections that are not referenced from the output.  */
47.41149 ++  bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
47.41150 ++
47.41151 ++  /* Attempt to merge SEC_MERGE sections.  */
47.41152 ++  bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
47.41153 ++
47.41154 ++  /* Is this section a member of a group?  */
47.41155 ++  bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
47.41156 ++
47.41157 ++  /* Discard members of a group.  */
47.41158 ++  bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
47.41159 ++
47.41160 ++  /* Check if SEC has been already linked during a reloceatable or
47.41161 ++     final link.  */
47.41162 ++  void (*_section_already_linked) (bfd *, struct bfd_section *,
47.41163 ++                                   struct bfd_link_info *);
47.41164 ++
47.41165 ++  /* Routines to handle dynamic symbols and relocs.  */
47.41166 ++#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
47.41167 ++  NAME##_get_dynamic_symtab_upper_bound, \
47.41168 ++  NAME##_canonicalize_dynamic_symtab, \
47.41169 ++  NAME##_get_synthetic_symtab, \
47.41170 ++  NAME##_get_dynamic_reloc_upper_bound, \
47.41171 ++  NAME##_canonicalize_dynamic_reloc
47.41172 ++
47.41173 ++  /* Get the amount of memory required to hold the dynamic symbols.  */
47.41174 ++  long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
47.41175 ++  /* Read in the dynamic symbols.  */
47.41176 ++  long        (*_bfd_canonicalize_dynamic_symtab)
47.41177 ++    (bfd *, struct bfd_symbol **);
47.41178 ++  /* Create synthetized symbols.  */
47.41179 ++  long        (*_bfd_get_synthetic_symtab)
47.41180 ++    (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
47.41181 ++     struct bfd_symbol **);
47.41182 ++  /* Get the amount of memory required to hold the dynamic relocs.  */
47.41183 ++  long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
47.41184 ++  /* Read in the dynamic relocs.  */
47.41185 ++  long        (*_bfd_canonicalize_dynamic_reloc)
47.41186 ++    (bfd *, arelent **, struct bfd_symbol **);
47.41187 ++
47.41188 ++  /* Opposite endian version of this target.  */
47.41189 ++  const struct bfd_target * alternative_target;
47.41190 ++
47.41191 ++  /* Data for use by back-end routines, which isn't
47.41192 ++     generic enough to belong in this structure.  */
47.41193 ++  const void *backend_data;
47.41194 ++
47.41195 ++} bfd_target;
47.41196 ++
47.41197 ++bfd_boolean bfd_set_default_target (const char *name);
47.41198 ++
47.41199 ++const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
47.41200 ++
47.41201 ++const char ** bfd_target_list (void);
47.41202 ++
47.41203 ++const bfd_target *bfd_search_for_target
47.41204 ++   (int (*search_func) (const bfd_target *, void *),
47.41205 ++    void *);
47.41206 ++
47.41207 ++/* Extracted from format.c.  */
47.41208 ++bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
47.41209 ++
47.41210 ++bfd_boolean bfd_check_format_matches
47.41211 ++   (bfd *abfd, bfd_format format, char ***matching);
47.41212 ++
47.41213 ++bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
47.41214 ++
47.41215 ++const char *bfd_format_string (bfd_format format);
47.41216 ++
47.41217 ++/* Extracted from linker.c.  */
47.41218 ++bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
47.41219 ++
47.41220 ++#define bfd_link_split_section(abfd, sec) \
47.41221 ++       BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
47.41222 ++
47.41223 ++void bfd_section_already_linked (bfd *abfd, asection *sec,
47.41224 ++    struct bfd_link_info *info);
47.41225 ++
47.41226 ++#define bfd_section_already_linked(abfd, sec, info) \
47.41227 ++       BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
47.41228 ++
47.41229 ++/* Extracted from simple.c.  */
47.41230 ++bfd_byte *bfd_simple_get_relocated_section_contents
47.41231 ++   (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
47.41232 ++
47.41233 ++#ifdef __cplusplus
47.41234 ++}
47.41235 ++#endif
47.41236 ++#endif
47.41237 +--- /dev/null
47.41238 ++++ b/bfd/doc/libbfd.h
47.41239 +@@ -0,0 +1,2074 @@
47.41240 ++/* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically 
47.41241 ++   generated from "libbfd-in.h", "init.c", "libbfd.c", "bfdio.c", 
47.41242 ++   "bfdwin.c", "cache.c", "reloc.c", "archures.c" and "elf.c".
47.41243 ++   Run "make headers" in your build bfd/ to regenerate.  */
47.41244 ++
47.41245 ++/* libbfd.h -- Declarations used by bfd library *implementation*.
47.41246 ++   (This include file is not for users of the library.)
47.41247 ++
47.41248 ++   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
47.41249 ++   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
47.41250 ++   Free Software Foundation, Inc.
47.41251 ++
47.41252 ++   Written by Cygnus Support.
47.41253 ++
47.41254 ++   This file is part of BFD, the Binary File Descriptor library.
47.41255 ++
47.41256 ++   This program is free software; you can redistribute it and/or modify
47.41257 ++   it under the terms of the GNU General Public License as published by
47.41258 ++   the Free Software Foundation; either version 3 of the License, or
47.41259 ++   (at your option) any later version.
47.41260 ++
47.41261 ++   This program is distributed in the hope that it will be useful,
47.41262 ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
47.41263 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
47.41264 ++   GNU General Public License for more details.
47.41265 ++
47.41266 ++   You should have received a copy of the GNU General Public License
47.41267 ++   along with this program; if not, write to the Free Software
47.41268 ++   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
47.41269 ++   MA 02110-1301, USA.  */
47.41270 ++
47.41271 ++#include "hashtab.h"
47.41272 ++
47.41273 ++/* Align an address upward to a boundary, expressed as a number of bytes.
47.41274 ++   E.g. align to an 8-byte boundary with argument of 8.  Take care never
47.41275 ++   to wrap around if the address is within boundary-1 of the end of the
47.41276 ++   address space.  */
47.41277 ++#define BFD_ALIGN(this, boundary)					  \
47.41278 ++  ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this))		  \
47.41279 ++   ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
47.41280 ++   : ~ (bfd_vma) 0)
47.41281 ++
47.41282 ++/* If you want to read and write large blocks, you might want to do it
47.41283 ++   in quanta of this amount */
47.41284 ++#define DEFAULT_BUFFERSIZE 8192
47.41285 ++
47.41286 ++/* Set a tdata field.  Can't use the other macros for this, since they
47.41287 ++   do casts, and casting to the left of assignment isn't portable.  */
47.41288 ++#define set_tdata(bfd, v) ((bfd)->tdata.any = (v))
47.41289 ++
47.41290 ++/* If BFD_IN_MEMORY is set for a BFD, then the iostream fields points
47.41291 ++   to an instance of this structure.  */
47.41292 ++
47.41293 ++struct bfd_in_memory
47.41294 ++{
47.41295 ++  /* Size of buffer.  */
47.41296 ++  bfd_size_type size;
47.41297 ++  /* Buffer holding contents of BFD.  */
47.41298 ++  bfd_byte *buffer;
47.41299 ++};
47.41300 ++
47.41301 ++struct section_hash_entry
47.41302 ++{
47.41303 ++  struct bfd_hash_entry root;
47.41304 ++  asection section;
47.41305 ++};
47.41306 ++
47.41307 ++/* tdata for an archive.  For an input archive, cache
47.41308 ++   needs to be free()'d.  For an output archive, symdefs do.  */
47.41309 ++
47.41310 ++struct artdata {
47.41311 ++  file_ptr first_file_filepos;
47.41312 ++  /* Speed up searching the armap */
47.41313 ++  htab_t cache;
47.41314 ++  bfd *archive_head;		/* Only interesting in output routines */
47.41315 ++  carsym *symdefs;		/* the symdef entries */
47.41316 ++  symindex symdef_count;	/* how many there are */
47.41317 ++  char *extended_names;		/* clever intel extension */
47.41318 ++  bfd_size_type extended_names_size; /* Size of extended names */
47.41319 ++  /* when more compilers are standard C, this can be a time_t */
47.41320 ++  long  armap_timestamp;	/* Timestamp value written into armap.
47.41321 ++				   This is used for BSD archives to check
47.41322 ++				   that the timestamp is recent enough
47.41323 ++				   for the BSD linker to not complain,
47.41324 ++				   just before we finish writing an
47.41325 ++				   archive.  */
47.41326 ++  file_ptr armap_datepos;	/* Position within archive to seek to
47.41327 ++				   rewrite the date field.  */
47.41328 ++  void *tdata;			/* Backend specific information.  */
47.41329 ++};
47.41330 ++
47.41331 ++#define bfd_ardata(bfd) ((bfd)->tdata.aout_ar_data)
47.41332 ++
47.41333 ++/* Goes in bfd's arelt_data slot */
47.41334 ++struct areltdata {
47.41335 ++  char * arch_header;		/* it's actually a string */
47.41336 ++  unsigned int parsed_size;	/* octets of filesize not including ar_hdr */
47.41337 ++  char *filename;		/* null-terminated */
47.41338 ++};
47.41339 ++
47.41340 ++#define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
47.41341 ++
47.41342 ++extern void *bfd_malloc
47.41343 ++  (bfd_size_type);
47.41344 ++extern void *bfd_realloc
47.41345 ++  (void *, bfd_size_type);
47.41346 ++extern void *bfd_zmalloc
47.41347 ++  (bfd_size_type);
47.41348 ++extern void *bfd_malloc2
47.41349 ++  (bfd_size_type, bfd_size_type);
47.41350 ++extern void *bfd_realloc2
47.41351 ++  (void *, bfd_size_type, bfd_size_type);
47.41352 ++extern void *bfd_zmalloc2
47.41353 ++  (bfd_size_type, bfd_size_type);
47.41354 ++
47.41355 ++extern void _bfd_default_error_handler (const char *s, ...);
47.41356 ++extern bfd_error_handler_type _bfd_error_handler;
47.41357 ++
47.41358 ++/* These routines allocate and free things on the BFD's objalloc.  */
47.41359 ++
47.41360 ++extern void *bfd_alloc
47.41361 ++  (bfd *, bfd_size_type);
47.41362 ++extern void *bfd_zalloc
47.41363 ++  (bfd *, bfd_size_type);
47.41364 ++extern void *bfd_alloc2
47.41365 ++  (bfd *, bfd_size_type, bfd_size_type);
47.41366 ++extern void *bfd_zalloc2
47.41367 ++  (bfd *, bfd_size_type, bfd_size_type);
47.41368 ++extern void bfd_release
47.41369 ++  (bfd *, void *);
47.41370 ++
47.41371 ++bfd * _bfd_create_empty_archive_element_shell
47.41372 ++  (bfd *obfd);
47.41373 ++bfd * _bfd_look_for_bfd_in_cache
47.41374 ++  (bfd *, file_ptr);
47.41375 ++bfd_boolean _bfd_add_bfd_to_archive_cache
47.41376 ++  (bfd *, file_ptr, bfd *);
47.41377 ++bfd_boolean _bfd_generic_mkarchive
47.41378 ++  (bfd *abfd);
47.41379 ++const bfd_target *bfd_generic_archive_p
47.41380 ++  (bfd *abfd);
47.41381 ++bfd_boolean bfd_slurp_armap
47.41382 ++  (bfd *abfd);
47.41383 ++bfd_boolean bfd_slurp_bsd_armap_f2
47.41384 ++  (bfd *abfd);
47.41385 ++#define bfd_slurp_bsd_armap bfd_slurp_armap
47.41386 ++#define bfd_slurp_coff_armap bfd_slurp_armap
47.41387 ++bfd_boolean _bfd_slurp_extended_name_table
47.41388 ++  (bfd *abfd);
47.41389 ++extern bfd_boolean _bfd_construct_extended_name_table
47.41390 ++  (bfd *, bfd_boolean, char **, bfd_size_type *);
47.41391 ++bfd_boolean _bfd_write_archive_contents
47.41392 ++  (bfd *abfd);
47.41393 ++bfd_boolean _bfd_compute_and_write_armap
47.41394 ++  (bfd *, unsigned int elength);
47.41395 ++bfd *_bfd_get_elt_at_filepos
47.41396 ++  (bfd *archive, file_ptr filepos);
47.41397 ++extern bfd *_bfd_generic_get_elt_at_index
47.41398 ++  (bfd *, symindex);
47.41399 ++bfd * _bfd_new_bfd
47.41400 ++  (void);
47.41401 ++void _bfd_delete_bfd
47.41402 ++  (bfd *);
47.41403 ++bfd_boolean _bfd_free_cached_info
47.41404 ++  (bfd *);
47.41405 ++
47.41406 ++bfd_boolean bfd_false
47.41407 ++  (bfd *ignore);
47.41408 ++bfd_boolean bfd_true
47.41409 ++  (bfd *ignore);
47.41410 ++void *bfd_nullvoidptr
47.41411 ++  (bfd *ignore);
47.41412 ++int bfd_0
47.41413 ++  (bfd *ignore);
47.41414 ++unsigned int bfd_0u
47.41415 ++  (bfd *ignore);
47.41416 ++long bfd_0l
47.41417 ++  (bfd *ignore);
47.41418 ++long _bfd_n1
47.41419 ++  (bfd *ignore);
47.41420 ++void bfd_void
47.41421 ++  (bfd *ignore);
47.41422 ++
47.41423 ++bfd *_bfd_new_bfd_contained_in
47.41424 ++  (bfd *);
47.41425 ++const bfd_target *_bfd_dummy_target
47.41426 ++  (bfd *abfd);
47.41427 ++
47.41428 ++void bfd_dont_truncate_arname
47.41429 ++  (bfd *abfd, const char *filename, char *hdr);
47.41430 ++void bfd_bsd_truncate_arname
47.41431 ++  (bfd *abfd, const char *filename, char *hdr);
47.41432 ++void bfd_gnu_truncate_arname
47.41433 ++  (bfd *abfd, const char *filename, char *hdr);
47.41434 ++
47.41435 ++bfd_boolean bsd_write_armap
47.41436 ++  (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
47.41437 ++   int stridx);
47.41438 ++
47.41439 ++bfd_boolean coff_write_armap
47.41440 ++  (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
47.41441 ++   int stridx);
47.41442 ++
47.41443 ++extern void *_bfd_generic_read_ar_hdr
47.41444 ++  (bfd *);
47.41445 ++extern void _bfd_ar_spacepad
47.41446 ++  (char *, size_t, const char *, long);
47.41447 ++
47.41448 ++extern void *_bfd_generic_read_ar_hdr_mag
47.41449 ++  (bfd *, const char *);
47.41450 ++
47.41451 ++bfd * bfd_generic_openr_next_archived_file
47.41452 ++  (bfd *archive, bfd *last_file);
47.41453 ++
47.41454 ++int bfd_generic_stat_arch_elt
47.41455 ++  (bfd *, struct stat *);
47.41456 ++
47.41457 ++#define _bfd_read_ar_hdr(abfd) \
47.41458 ++  BFD_SEND (abfd, _bfd_read_ar_hdr_fn, (abfd))
47.41459 ++
47.41460 ++/* Generic routines to use for BFD_JUMP_TABLE_GENERIC.  Use
47.41461 ++   BFD_JUMP_TABLE_GENERIC (_bfd_generic).  */
47.41462 ++
47.41463 ++#define _bfd_generic_close_and_cleanup bfd_true
47.41464 ++#define _bfd_generic_bfd_free_cached_info bfd_true
47.41465 ++extern bfd_boolean _bfd_generic_new_section_hook
47.41466 ++  (bfd *, asection *);
47.41467 ++extern bfd_boolean _bfd_generic_get_section_contents
47.41468 ++  (bfd *, asection *, void *, file_ptr, bfd_size_type);
47.41469 ++extern bfd_boolean _bfd_generic_get_section_contents_in_window
47.41470 ++  (bfd *, asection *, bfd_window *, file_ptr, bfd_size_type);
47.41471 ++
47.41472 ++/* Generic routines to use for BFD_JUMP_TABLE_COPY.  Use
47.41473 ++   BFD_JUMP_TABLE_COPY (_bfd_generic).  */
47.41474 ++
47.41475 ++#define _bfd_generic_bfd_copy_private_bfd_data \
47.41476 ++  ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
47.41477 ++#define _bfd_generic_bfd_merge_private_bfd_data \
47.41478 ++  ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
47.41479 ++#define _bfd_generic_bfd_set_private_flags \
47.41480 ++  ((bfd_boolean (*) (bfd *, flagword)) bfd_true)
47.41481 ++#define _bfd_generic_bfd_copy_private_section_data \
47.41482 ++  ((bfd_boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true)
47.41483 ++#define _bfd_generic_bfd_copy_private_symbol_data \
47.41484 ++  ((bfd_boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true)
47.41485 ++#define _bfd_generic_bfd_copy_private_header_data \
47.41486 ++  ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
47.41487 ++#define _bfd_generic_bfd_print_private_bfd_data \
47.41488 ++  ((bfd_boolean (*) (bfd *, void *)) bfd_true)
47.41489 ++
47.41490 ++extern bfd_boolean _bfd_generic_init_private_section_data
47.41491 ++  (bfd *, asection *, bfd *, asection *, struct bfd_link_info *);
47.41492 ++
47.41493 ++/* Routines to use for BFD_JUMP_TABLE_CORE when there is no core file
47.41494 ++   support.  Use BFD_JUMP_TABLE_CORE (_bfd_nocore).  */
47.41495 ++
47.41496 ++extern char *_bfd_nocore_core_file_failing_command
47.41497 ++  (bfd *);
47.41498 ++extern int _bfd_nocore_core_file_failing_signal
47.41499 ++  (bfd *);
47.41500 ++extern bfd_boolean _bfd_nocore_core_file_matches_executable_p
47.41501 ++  (bfd *, bfd *);
47.41502 ++
47.41503 ++/* Routines to use for BFD_JUMP_TABLE_ARCHIVE when there is no archive
47.41504 ++   file support.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive).  */
47.41505 ++
47.41506 ++#define _bfd_noarchive_slurp_armap bfd_false
47.41507 ++#define _bfd_noarchive_slurp_extended_name_table bfd_false
47.41508 ++#define _bfd_noarchive_construct_extended_name_table \
47.41509 ++  ((bfd_boolean (*) (bfd *, char **, bfd_size_type *, const char **)) \
47.41510 ++   bfd_false)
47.41511 ++#define _bfd_noarchive_truncate_arname \
47.41512 ++  ((void (*) (bfd *, const char *, char *)) bfd_void)
47.41513 ++#define _bfd_noarchive_write_armap \
47.41514 ++  ((bfd_boolean (*) (bfd *, unsigned int, struct orl *, unsigned int, int)) \
47.41515 ++   bfd_false)
47.41516 ++#define _bfd_noarchive_read_ar_hdr bfd_nullvoidptr
47.41517 ++#define _bfd_noarchive_openr_next_archived_file \
47.41518 ++  ((bfd *(*) (bfd *, bfd *)) bfd_nullvoidptr)
47.41519 ++#define _bfd_noarchive_get_elt_at_index \
47.41520 ++  ((bfd *(*) (bfd *, symindex)) bfd_nullvoidptr)
47.41521 ++#define _bfd_noarchive_generic_stat_arch_elt bfd_generic_stat_arch_elt
47.41522 ++#define _bfd_noarchive_update_armap_timestamp bfd_false
47.41523 ++
47.41524 ++/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD style
47.41525 ++   archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd).  */
47.41526 ++
47.41527 ++#define _bfd_archive_bsd_slurp_armap bfd_slurp_bsd_armap
47.41528 ++#define _bfd_archive_bsd_slurp_extended_name_table \
47.41529 ++  _bfd_slurp_extended_name_table
47.41530 ++extern bfd_boolean _bfd_archive_bsd_construct_extended_name_table
47.41531 ++  (bfd *, char **, bfd_size_type *, const char **);
47.41532 ++#define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname
47.41533 ++#define _bfd_archive_bsd_write_armap bsd_write_armap
47.41534 ++#define _bfd_archive_bsd_read_ar_hdr _bfd_generic_read_ar_hdr
47.41535 ++#define _bfd_archive_bsd_openr_next_archived_file \
47.41536 ++  bfd_generic_openr_next_archived_file
47.41537 ++#define _bfd_archive_bsd_get_elt_at_index _bfd_generic_get_elt_at_index
47.41538 ++#define _bfd_archive_bsd_generic_stat_arch_elt \
47.41539 ++  bfd_generic_stat_arch_elt
47.41540 ++extern bfd_boolean _bfd_archive_bsd_update_armap_timestamp
47.41541 ++  (bfd *);
47.41542 ++
47.41543 ++/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get COFF style
47.41544 ++   archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff).  */
47.41545 ++
47.41546 ++#define _bfd_archive_coff_slurp_armap bfd_slurp_coff_armap
47.41547 ++#define _bfd_archive_coff_slurp_extended_name_table \
47.41548 ++  _bfd_slurp_extended_name_table
47.41549 ++extern bfd_boolean _bfd_archive_coff_construct_extended_name_table
47.41550 ++  (bfd *, char **, bfd_size_type *, const char **);
47.41551 ++#define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname
47.41552 ++#define _bfd_archive_coff_write_armap coff_write_armap
47.41553 ++#define _bfd_archive_coff_read_ar_hdr _bfd_generic_read_ar_hdr
47.41554 ++#define _bfd_archive_coff_openr_next_archived_file \
47.41555 ++  bfd_generic_openr_next_archived_file
47.41556 ++#define _bfd_archive_coff_get_elt_at_index _bfd_generic_get_elt_at_index
47.41557 ++#define _bfd_archive_coff_generic_stat_arch_elt \
47.41558 ++  bfd_generic_stat_arch_elt
47.41559 ++#define _bfd_archive_coff_update_armap_timestamp bfd_true
47.41560 ++
47.41561 ++/* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol
47.41562 ++   support.  Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols).  */
47.41563 ++
47.41564 ++#define _bfd_nosymbols_get_symtab_upper_bound _bfd_n1
47.41565 ++#define _bfd_nosymbols_canonicalize_symtab \
47.41566 ++  ((long (*) (bfd *, asymbol **)) _bfd_n1)
47.41567 ++#define _bfd_nosymbols_make_empty_symbol _bfd_generic_make_empty_symbol
47.41568 ++#define _bfd_nosymbols_print_symbol \
47.41569 ++  ((void (*) (bfd *, void *, asymbol *, bfd_print_symbol_type)) bfd_void)
47.41570 ++#define _bfd_nosymbols_get_symbol_info \
47.41571 ++  ((void (*) (bfd *, asymbol *, symbol_info *)) bfd_void)
47.41572 ++#define _bfd_nosymbols_bfd_is_local_label_name \
47.41573 ++  ((bfd_boolean (*) (bfd *, const char *)) bfd_false)
47.41574 ++#define _bfd_nosymbols_bfd_is_target_special_symbol \
47.41575 ++  ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
47.41576 ++#define _bfd_nosymbols_get_lineno \
47.41577 ++  ((alent *(*) (bfd *, asymbol *)) bfd_nullvoidptr)
47.41578 ++#define _bfd_nosymbols_find_nearest_line \
47.41579 ++  ((bfd_boolean (*) (bfd *, asection *, asymbol **, bfd_vma, const char **, \
47.41580 ++		     const char **, unsigned int *)) \
47.41581 ++   bfd_false)
47.41582 ++#define _bfd_nosymbols_find_inliner_info \
47.41583 ++  ((bfd_boolean (*) (bfd *, const char **, const char **, unsigned int *)) \
47.41584 ++   bfd_false)
47.41585 ++#define _bfd_nosymbols_bfd_make_debug_symbol \
47.41586 ++  ((asymbol *(*) (bfd *, void *, unsigned long)) bfd_nullvoidptr)
47.41587 ++#define _bfd_nosymbols_read_minisymbols \
47.41588 ++  ((long (*) (bfd *, bfd_boolean, void **, unsigned int *)) _bfd_n1)
47.41589 ++#define _bfd_nosymbols_minisymbol_to_symbol \
47.41590 ++  ((asymbol *(*) (bfd *, bfd_boolean, const void *, asymbol *)) \
47.41591 ++   bfd_nullvoidptr)
47.41592 ++
47.41593 ++/* Routines to use for BFD_JUMP_TABLE_RELOCS when there is no reloc
47.41594 ++   support.  Use BFD_JUMP_TABLE_RELOCS (_bfd_norelocs).  */
47.41595 ++
47.41596 ++extern long _bfd_norelocs_get_reloc_upper_bound (bfd *, asection *);
47.41597 ++extern long _bfd_norelocs_canonicalize_reloc (bfd *, asection *,
47.41598 ++					      arelent **, asymbol **);
47.41599 ++#define _bfd_norelocs_bfd_reloc_type_lookup \
47.41600 ++  ((reloc_howto_type *(*) (bfd *, bfd_reloc_code_real_type)) bfd_nullvoidptr)
47.41601 ++#define _bfd_norelocs_bfd_reloc_name_lookup \
47.41602 ++  ((reloc_howto_type *(*) (bfd *, const char *)) bfd_nullvoidptr)
47.41603 ++
47.41604 ++/* Routines to use for BFD_JUMP_TABLE_WRITE for targets which may not
47.41605 ++   be written.  Use BFD_JUMP_TABLE_WRITE (_bfd_nowrite).  */
47.41606 ++
47.41607 ++#define _bfd_nowrite_set_arch_mach \
47.41608 ++  ((bfd_boolean (*) (bfd *, enum bfd_architecture, unsigned long)) \
47.41609 ++   bfd_false)
47.41610 ++#define _bfd_nowrite_set_section_contents \
47.41611 ++  ((bfd_boolean (*) (bfd *, asection *, const void *, file_ptr, bfd_size_type)) \
47.41612 ++   bfd_false)
47.41613 ++
47.41614 ++/* Generic routines to use for BFD_JUMP_TABLE_WRITE.  Use
47.41615 ++   BFD_JUMP_TABLE_WRITE (_bfd_generic).  */
47.41616 ++
47.41617 ++#define _bfd_generic_set_arch_mach bfd_default_set_arch_mach
47.41618 ++extern bfd_boolean _bfd_generic_set_section_contents
47.41619 ++  (bfd *, asection *, const void *, file_ptr, bfd_size_type);
47.41620 ++
47.41621 ++/* Routines to use for BFD_JUMP_TABLE_LINK for targets which do not
47.41622 ++   support linking.  Use BFD_JUMP_TABLE_LINK (_bfd_nolink).  */
47.41623 ++
47.41624 ++#define _bfd_nolink_sizeof_headers \
47.41625 ++  ((int (*) (bfd *, struct bfd_link_info *)) bfd_0)
47.41626 ++#define _bfd_nolink_bfd_get_relocated_section_contents \
47.41627 ++  ((bfd_byte *(*) (bfd *, struct bfd_link_info *, struct bfd_link_order *, \
47.41628 ++		   bfd_byte *, bfd_boolean, asymbol **)) \
47.41629 ++   bfd_nullvoidptr)
47.41630 ++#define _bfd_nolink_bfd_relax_section \
47.41631 ++  ((bfd_boolean (*) \
47.41632 ++    (bfd *, asection *, struct bfd_link_info *, bfd_boolean *)) \
47.41633 ++   bfd_false)
47.41634 ++#define _bfd_nolink_bfd_gc_sections \
47.41635 ++  ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
47.41636 ++   bfd_false)
47.41637 ++#define _bfd_nolink_bfd_merge_sections \
47.41638 ++  ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
47.41639 ++   bfd_false)
47.41640 ++#define _bfd_nolink_bfd_is_group_section \
47.41641 ++  ((bfd_boolean (*) (bfd *, const struct bfd_section *)) \
47.41642 ++   bfd_false)
47.41643 ++#define _bfd_nolink_bfd_discard_group \
47.41644 ++  ((bfd_boolean (*) (bfd *, struct bfd_section *)) \
47.41645 ++   bfd_false)
47.41646 ++#define _bfd_nolink_bfd_link_hash_table_create \
47.41647 ++  ((struct bfd_link_hash_table *(*) (bfd *)) bfd_nullvoidptr)
47.41648 ++#define _bfd_nolink_bfd_link_hash_table_free \
47.41649 ++  ((void (*) (struct bfd_link_hash_table *)) bfd_void)
47.41650 ++#define _bfd_nolink_bfd_link_add_symbols \
47.41651 ++  ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
47.41652 ++#define _bfd_nolink_bfd_link_just_syms \
47.41653 ++  ((void (*) (asection *, struct bfd_link_info *)) bfd_void)
47.41654 ++#define _bfd_nolink_bfd_final_link \
47.41655 ++  ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
47.41656 ++#define _bfd_nolink_bfd_link_split_section \
47.41657 ++  ((bfd_boolean (*) (bfd *, struct bfd_section *)) bfd_false)
47.41658 ++#define _bfd_nolink_section_already_linked \
47.41659 ++  ((void (*) (bfd *, struct bfd_section *, struct bfd_link_info *)) bfd_void)
47.41660 ++
47.41661 ++/* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
47.41662 ++   have dynamic symbols or relocs.  Use BFD_JUMP_TABLE_DYNAMIC
47.41663 ++   (_bfd_nodynamic).  */
47.41664 ++
47.41665 ++#define _bfd_nodynamic_get_dynamic_symtab_upper_bound _bfd_n1
47.41666 ++#define _bfd_nodynamic_canonicalize_dynamic_symtab \
47.41667 ++  ((long (*) (bfd *, asymbol **)) _bfd_n1)
47.41668 ++#define _bfd_nodynamic_get_synthetic_symtab \
47.41669 ++  ((long (*) (bfd *, long, asymbol **, long, asymbol **, asymbol **)) _bfd_n1)
47.41670 ++#define _bfd_nodynamic_get_dynamic_reloc_upper_bound _bfd_n1
47.41671 ++#define _bfd_nodynamic_canonicalize_dynamic_reloc \
47.41672 ++  ((long (*) (bfd *, arelent **, asymbol **)) _bfd_n1)
47.41673 ++
47.41674 ++/* Generic routine to determine of the given symbol is a local
47.41675 ++   label.  */
47.41676 ++extern bfd_boolean bfd_generic_is_local_label_name
47.41677 ++  (bfd *, const char *);
47.41678 ++
47.41679 ++/* Generic minisymbol routines.  */
47.41680 ++extern long _bfd_generic_read_minisymbols
47.41681 ++  (bfd *, bfd_boolean, void **, unsigned int *);
47.41682 ++extern asymbol *_bfd_generic_minisymbol_to_symbol
47.41683 ++  (bfd *, bfd_boolean, const void *, asymbol *);
47.41684 ++
47.41685 ++/* Find the nearest line using .stab/.stabstr sections.  */
47.41686 ++extern bfd_boolean _bfd_stab_section_find_nearest_line
47.41687 ++  (bfd *, asymbol **, asection *, bfd_vma, bfd_boolean *,
47.41688 ++   const char **, const char **, unsigned int *, void **);
47.41689 ++
47.41690 ++/* Find the nearest line using DWARF 1 debugging information.  */
47.41691 ++extern bfd_boolean _bfd_dwarf1_find_nearest_line
47.41692 ++  (bfd *, asection *, asymbol **, bfd_vma, const char **,
47.41693 ++   const char **, unsigned int *);
47.41694 ++
47.41695 ++/* Find the nearest line using DWARF 2 debugging information.  */
47.41696 ++extern bfd_boolean _bfd_dwarf2_find_nearest_line
47.41697 ++  (bfd *, asection *, asymbol **, bfd_vma, const char **, const char **,
47.41698 ++   unsigned int *, unsigned int, void **);
47.41699 ++
47.41700 ++/* Find the line using DWARF 2 debugging information.  */
47.41701 ++extern bfd_boolean _bfd_dwarf2_find_line
47.41702 ++  (bfd *, asymbol **, asymbol *, const char **,
47.41703 ++   unsigned int *, unsigned int, void **);
47.41704 ++
47.41705 ++bfd_boolean _bfd_generic_find_line
47.41706 ++  (bfd *, asymbol **, asymbol *, const char **, unsigned int *);
47.41707 ++
47.41708 ++/* Find inliner info after calling bfd_find_nearest_line. */
47.41709 ++extern bfd_boolean _bfd_dwarf2_find_inliner_info
47.41710 ++  (bfd *, const char **, const char **, unsigned int *, void **);
47.41711 ++  
47.41712 ++/* Create a new section entry.  */
47.41713 ++extern struct bfd_hash_entry *bfd_section_hash_newfunc
47.41714 ++  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
47.41715 ++
47.41716 ++/* A routine to create entries for a bfd_link_hash_table.  */
47.41717 ++extern struct bfd_hash_entry *_bfd_link_hash_newfunc
47.41718 ++  (struct bfd_hash_entry *entry, struct bfd_hash_table *table,
47.41719 ++   const char *string);
47.41720 ++
47.41721 ++/* Initialize a bfd_link_hash_table.  */
47.41722 ++extern bfd_boolean _bfd_link_hash_table_init
47.41723 ++  (struct bfd_link_hash_table *, bfd *,
47.41724 ++   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
47.41725 ++			       struct bfd_hash_table *,
47.41726 ++			       const char *),
47.41727 ++   unsigned int);
47.41728 ++
47.41729 ++/* Generic link hash table creation routine.  */
47.41730 ++extern struct bfd_link_hash_table *_bfd_generic_link_hash_table_create
47.41731 ++  (bfd *);
47.41732 ++
47.41733 ++/* Generic link hash table destruction routine.  */
47.41734 ++extern void _bfd_generic_link_hash_table_free
47.41735 ++  (struct bfd_link_hash_table *);
47.41736 ++
47.41737 ++/* Generic add symbol routine.  */
47.41738 ++extern bfd_boolean _bfd_generic_link_add_symbols
47.41739 ++  (bfd *, struct bfd_link_info *);
47.41740 ++
47.41741 ++/* Generic add symbol routine.  This version is used by targets for
47.41742 ++   which the linker must collect constructors and destructors by name,
47.41743 ++   as the collect2 program does.  */
47.41744 ++extern bfd_boolean _bfd_generic_link_add_symbols_collect
47.41745 ++  (bfd *, struct bfd_link_info *);
47.41746 ++
47.41747 ++/* Generic archive add symbol routine.  */
47.41748 ++extern bfd_boolean _bfd_generic_link_add_archive_symbols
47.41749 ++  (bfd *, struct bfd_link_info *,
47.41750 ++   bfd_boolean (*) (bfd *, struct bfd_link_info *, bfd_boolean *));
47.41751 ++
47.41752 ++/* Forward declaration to avoid prototype errors.  */
47.41753 ++typedef struct bfd_link_hash_entry _bfd_link_hash_entry;
47.41754 ++
47.41755 ++/* Generic routine to add a single symbol.  */
47.41756 ++extern bfd_boolean _bfd_generic_link_add_one_symbol
47.41757 ++  (struct bfd_link_info *, bfd *, const char *name, flagword,
47.41758 ++   asection *, bfd_vma, const char *, bfd_boolean copy,
47.41759 ++   bfd_boolean constructor, struct bfd_link_hash_entry **);
47.41760 ++
47.41761 ++/* Generic routine to mark section as supplying symbols only.  */
47.41762 ++extern void _bfd_generic_link_just_syms
47.41763 ++  (asection *, struct bfd_link_info *);
47.41764 ++
47.41765 ++/* Generic link routine.  */
47.41766 ++extern bfd_boolean _bfd_generic_final_link
47.41767 ++  (bfd *, struct bfd_link_info *);
47.41768 ++
47.41769 ++extern bfd_boolean _bfd_generic_link_split_section
47.41770 ++  (bfd *, struct bfd_section *);
47.41771 ++
47.41772 ++extern void _bfd_generic_section_already_linked
47.41773 ++  (bfd *, struct bfd_section *, struct bfd_link_info *);
47.41774 ++
47.41775 ++/* Generic reloc_link_order processing routine.  */
47.41776 ++extern bfd_boolean _bfd_generic_reloc_link_order
47.41777 ++  (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
47.41778 ++
47.41779 ++/* Default link order processing routine.  */
47.41780 ++extern bfd_boolean _bfd_default_link_order
47.41781 ++  (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
47.41782 ++
47.41783 ++/* Count the number of reloc entries in a link order list.  */
47.41784 ++extern unsigned int _bfd_count_link_order_relocs
47.41785 ++  (struct bfd_link_order *);
47.41786 ++
47.41787 ++/* Final link relocation routine.  */
47.41788 ++extern bfd_reloc_status_type _bfd_final_link_relocate
47.41789 ++  (reloc_howto_type *, bfd *, asection *, bfd_byte *,
47.41790 ++   bfd_vma, bfd_vma, bfd_vma);
47.41791 ++
47.41792 ++/* Relocate a particular location by a howto and a value.  */
47.41793 ++extern bfd_reloc_status_type _bfd_relocate_contents
47.41794 ++  (reloc_howto_type *, bfd *, bfd_vma, bfd_byte *);
47.41795 ++
47.41796 ++/* Clear a given location using a given howto.  */
47.41797 ++extern void _bfd_clear_contents (reloc_howto_type *howto, bfd *input_bfd,
47.41798 ++				 bfd_byte *location);
47.41799 ++
47.41800 ++/* Link stabs in sections in the first pass.  */
47.41801 ++
47.41802 ++extern bfd_boolean _bfd_link_section_stabs
47.41803 ++  (bfd *, struct stab_info *, asection *, asection *, void **,
47.41804 ++   bfd_size_type *);
47.41805 ++
47.41806 ++/* Eliminate stabs for discarded functions and symbols.  */
47.41807 ++extern bfd_boolean _bfd_discard_section_stabs
47.41808 ++  (bfd *, asection *, void *, bfd_boolean (*) (bfd_vma, void *), void *);
47.41809 ++
47.41810 ++/* Write out the .stab section when linking stabs in sections.  */
47.41811 ++
47.41812 ++extern bfd_boolean _bfd_write_section_stabs
47.41813 ++  (bfd *, struct stab_info *, asection *, void **, bfd_byte *);
47.41814 ++
47.41815 ++/* Write out the .stabstr string table when linking stabs in sections.  */
47.41816 ++
47.41817 ++extern bfd_boolean _bfd_write_stab_strings
47.41818 ++  (bfd *, struct stab_info *);
47.41819 ++
47.41820 ++/* Find an offset within a .stab section when linking stabs in
47.41821 ++   sections.  */
47.41822 ++
47.41823 ++extern bfd_vma _bfd_stab_section_offset
47.41824 ++  (asection *, void *, bfd_vma);
47.41825 ++
47.41826 ++/* Register a SEC_MERGE section as a candidate for merging.  */
47.41827 ++
47.41828 ++extern bfd_boolean _bfd_add_merge_section
47.41829 ++  (bfd *, void **, asection *, void **);
47.41830 ++
47.41831 ++/* Attempt to merge SEC_MERGE sections.  */
47.41832 ++
47.41833 ++extern bfd_boolean _bfd_merge_sections
47.41834 ++  (bfd *, struct bfd_link_info *, void *, void (*) (bfd *, asection *));
47.41835 ++
47.41836 ++/* Write out a merged section.  */
47.41837 ++
47.41838 ++extern bfd_boolean _bfd_write_merged_section
47.41839 ++  (bfd *, asection *, void *);
47.41840 ++
47.41841 ++/* Find an offset within a modified SEC_MERGE section.  */
47.41842 ++
47.41843 ++extern bfd_vma _bfd_merged_section_offset
47.41844 ++  (bfd *, asection **, void *, bfd_vma);
47.41845 ++
47.41846 ++/* Create a string table.  */
47.41847 ++extern struct bfd_strtab_hash *_bfd_stringtab_init
47.41848 ++  (void);
47.41849 ++
47.41850 ++/* Create an XCOFF .debug section style string table.  */
47.41851 ++extern struct bfd_strtab_hash *_bfd_xcoff_stringtab_init
47.41852 ++  (void);
47.41853 ++
47.41854 ++/* Free a string table.  */
47.41855 ++extern void _bfd_stringtab_free
47.41856 ++  (struct bfd_strtab_hash *);
47.41857 ++
47.41858 ++/* Get the size of a string table.  */
47.41859 ++extern bfd_size_type _bfd_stringtab_size
47.41860 ++  (struct bfd_strtab_hash *);
47.41861 ++
47.41862 ++/* Add a string to a string table.  */
47.41863 ++extern bfd_size_type _bfd_stringtab_add
47.41864 ++  (struct bfd_strtab_hash *, const char *, bfd_boolean hash, bfd_boolean copy);
47.41865 ++
47.41866 ++/* Write out a string table.  */
47.41867 ++extern bfd_boolean _bfd_stringtab_emit
47.41868 ++  (bfd *, struct bfd_strtab_hash *);
47.41869 ++
47.41870 ++/* Check that endianness of input and output file match.  */
47.41871 ++extern bfd_boolean _bfd_generic_verify_endian_match
47.41872 ++  (bfd *, bfd *);
47.41873 ++
47.41874 ++/* Macros to tell if bfds are read or write enabled.
47.41875 ++
47.41876 ++   Note that bfds open for read may be scribbled into if the fd passed
47.41877 ++   to bfd_fdopenr is actually open both for read and write
47.41878 ++   simultaneously.  However an output bfd will never be open for
47.41879 ++   read.  Therefore sometimes you want to check bfd_read_p or
47.41880 ++   !bfd_read_p, and only sometimes bfd_write_p.
47.41881 ++*/
47.41882 ++
47.41883 ++#define	bfd_read_p(abfd) \
47.41884 ++  ((abfd)->direction == read_direction || (abfd)->direction == both_direction)
47.41885 ++#define	bfd_write_p(abfd) \
47.41886 ++  ((abfd)->direction == write_direction || (abfd)->direction == both_direction)
47.41887 ++
47.41888 ++void bfd_assert
47.41889 ++  (const char*,int);
47.41890 ++
47.41891 ++#define BFD_ASSERT(x) \
47.41892 ++  do { if (!(x)) bfd_assert(__FILE__,__LINE__); } while (0)
47.41893 ++
47.41894 ++#define BFD_FAIL() \
47.41895 ++  do { bfd_assert(__FILE__,__LINE__); } while (0)
47.41896 ++
47.41897 ++extern void _bfd_abort
47.41898 ++  (const char *, int, const char *) ATTRIBUTE_NORETURN;
47.41899 ++
47.41900 ++/* if gcc >= 2.6, we can give a function name, too */
47.41901 ++#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
47.41902 ++#define __PRETTY_FUNCTION__  ((char *) NULL)
47.41903 ++#endif
47.41904 ++
47.41905 ++#undef abort
47.41906 ++#define abort() _bfd_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
47.41907 ++
47.41908 ++/* Manipulate a system FILE but using BFD's "file_ptr", rather than
47.41909 ++   the system "off_t" or "off64_t", as the offset.  */
47.41910 ++extern file_ptr real_ftell (FILE *file);
47.41911 ++extern int real_fseek (FILE *file, file_ptr offset, int whence);
47.41912 ++extern FILE *real_fopen (const char *filename, const char *modes);
47.41913 ++
47.41914 ++/* List of supported target vectors, and the default vector (if
47.41915 ++   bfd_default_vector[0] is NULL, there is no default).  */
47.41916 ++extern const bfd_target * const *bfd_target_vector;
47.41917 ++extern const bfd_target *bfd_default_vector[];
47.41918 ++
47.41919 ++/* List of associated target vectors.  */
47.41920 ++extern const bfd_target * const *bfd_associated_vector;
47.41921 ++
47.41922 ++/* Functions shared by the ECOFF and MIPS ELF backends, which have no
47.41923 ++   other common header files.  */
47.41924 ++
47.41925 ++#if defined(__STDC__) || defined(ALMOST_STDC)
47.41926 ++struct ecoff_find_line;
47.41927 ++#endif
47.41928 ++
47.41929 ++extern bfd_boolean _bfd_ecoff_locate_line
47.41930 ++  (bfd *, asection *, bfd_vma, struct ecoff_debug_info * const,
47.41931 ++   const struct ecoff_debug_swap * const, struct ecoff_find_line *,
47.41932 ++   const char **, const char **, unsigned int *);
47.41933 ++extern bfd_boolean _bfd_ecoff_get_accumulated_pdr
47.41934 ++  (void *, bfd_byte *);
47.41935 ++extern bfd_boolean _bfd_ecoff_get_accumulated_sym
47.41936 ++  (void *, bfd_byte *);
47.41937 ++extern bfd_boolean _bfd_ecoff_get_accumulated_ss
47.41938 ++  (void *, bfd_byte *);
47.41939 ++
47.41940 ++extern bfd_vma _bfd_get_gp_value
47.41941 ++  (bfd *);
47.41942 ++extern void _bfd_set_gp_value
47.41943 ++  (bfd *, bfd_vma);
47.41944 ++
47.41945 ++/* Function shared by the COFF and ELF SH backends, which have no
47.41946 ++   other common header files.  */
47.41947 ++
47.41948 ++#ifndef _bfd_sh_align_load_span
47.41949 ++extern bfd_boolean _bfd_sh_align_load_span
47.41950 ++  (bfd *, asection *, bfd_byte *,
47.41951 ++   bfd_boolean (*) (bfd *, asection *, void *, bfd_byte *, bfd_vma),
47.41952 ++   void *, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, bfd_boolean *);
47.41953 ++#endif
47.41954 ++
47.41955 ++/* This is the shape of the elements inside the already_linked hash
47.41956 ++   table. It maps a name onto a list of already_linked elements with
47.41957 ++   the same name.  */
47.41958 ++
47.41959 ++struct bfd_section_already_linked_hash_entry
47.41960 ++{
47.41961 ++  struct bfd_hash_entry root;
47.41962 ++  struct bfd_section_already_linked *entry;
47.41963 ++};
47.41964 ++
47.41965 ++struct bfd_section_already_linked
47.41966 ++{
47.41967 ++  struct bfd_section_already_linked *next;
47.41968 ++  asection *sec;
47.41969 ++};
47.41970 ++
47.41971 ++extern struct bfd_section_already_linked_hash_entry *
47.41972 ++  bfd_section_already_linked_table_lookup (const char *);
47.41973 ++extern bfd_boolean bfd_section_already_linked_table_insert
47.41974 ++  (struct bfd_section_already_linked_hash_entry *, asection *);
47.41975 ++extern void bfd_section_already_linked_table_traverse
47.41976 ++  (bfd_boolean (*) (struct bfd_section_already_linked_hash_entry *,
47.41977 ++		    void *), void *);
47.41978 ++
47.41979 ++extern bfd_vma read_unsigned_leb128 (bfd *, bfd_byte *, unsigned int *);
47.41980 ++extern bfd_signed_vma read_signed_leb128 (bfd *, bfd_byte *, unsigned int *);
47.41981 ++
47.41982 ++/* Extracted from init.c.  */
47.41983 ++/* Extracted from libbfd.c.  */
47.41984 ++bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
47.41985 ++
47.41986 ++unsigned int bfd_log2 (bfd_vma x);
47.41987 ++
47.41988 ++/* Extracted from bfdio.c.  */
47.41989 ++struct bfd_iovec
47.41990 ++{
47.41991 ++  /* To avoid problems with macros, a "b" rather than "f"
47.41992 ++     prefix is prepended to each method name.  */
47.41993 ++  /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
47.41994 ++     bytes starting at PTR.  Return the number of bytes actually
47.41995 ++     transfered (a read past end-of-file returns less than NBYTES),
47.41996 ++     or -1 (setting <<bfd_error>>) if an error occurs.  */
47.41997 ++  file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
47.41998 ++  file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
47.41999 ++                      file_ptr nbytes);
47.42000 ++  /* Return the current IOSTREAM file offset, or -1 (setting <<bfd_error>>
47.42001 ++     if an error occurs.  */
47.42002 ++  file_ptr (*btell) (struct bfd *abfd);
47.42003 ++  /* For the following, on successful completion a value of 0 is returned.
47.42004 ++     Otherwise, a value of -1 is returned (and  <<bfd_error>> is set).  */
47.42005 ++  int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
47.42006 ++  int (*bclose) (struct bfd *abfd);
47.42007 ++  int (*bflush) (struct bfd *abfd);
47.42008 ++  int (*bstat) (struct bfd *abfd, struct stat *sb);
47.42009 ++};
47.42010 ++/* Extracted from bfdwin.c.  */
47.42011 ++struct _bfd_window_internal {
47.42012 ++  struct _bfd_window_internal *next;
47.42013 ++  void *data;
47.42014 ++  bfd_size_type size;
47.42015 ++  int refcount : 31;           /* should be enough...  */
47.42016 ++  unsigned mapped : 1;         /* 1 = mmap, 0 = malloc */
47.42017 ++};
47.42018 ++/* Extracted from cache.c.  */
47.42019 ++bfd_boolean bfd_cache_init (bfd *abfd);
47.42020 ++
47.42021 ++bfd_boolean bfd_cache_close (bfd *abfd);
47.42022 ++
47.42023 ++FILE* bfd_open_file (bfd *abfd);
47.42024 ++
47.42025 ++/* Extracted from reloc.c.  */
47.42026 ++#ifdef _BFD_MAKE_TABLE_bfd_reloc_code_real
47.42027 ++
47.42028 ++static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
47.42029 ++
47.42030 ++  "BFD_RELOC_64",
47.42031 ++  "BFD_RELOC_32",
47.42032 ++  "BFD_RELOC_26",
47.42033 ++  "BFD_RELOC_24",
47.42034 ++  "BFD_RELOC_16",
47.42035 ++  "BFD_RELOC_14",
47.42036 ++  "BFD_RELOC_8",
47.42037 ++  "BFD_RELOC_64_PCREL",
47.42038 ++  "BFD_RELOC_32_PCREL",
47.42039 ++  "BFD_RELOC_24_PCREL",
47.42040 ++  "BFD_RELOC_16_PCREL",
47.42041 ++  "BFD_RELOC_12_PCREL",
47.42042 ++  "BFD_RELOC_8_PCREL",
47.42043 ++  "BFD_RELOC_32_SECREL",
47.42044 ++  "BFD_RELOC_32_GOT_PCREL",
47.42045 ++  "BFD_RELOC_16_GOT_PCREL",
47.42046 ++  "BFD_RELOC_8_GOT_PCREL",
47.42047 ++  "BFD_RELOC_32_GOTOFF",
47.42048 ++  "BFD_RELOC_16_GOTOFF",
47.42049 ++  "BFD_RELOC_LO16_GOTOFF",
47.42050 ++  "BFD_RELOC_HI16_GOTOFF",
47.42051 ++  "BFD_RELOC_HI16_S_GOTOFF",
47.42052 ++  "BFD_RELOC_8_GOTOFF",
47.42053 ++  "BFD_RELOC_64_PLT_PCREL",
47.42054 ++  "BFD_RELOC_32_PLT_PCREL",
47.42055 ++  "BFD_RELOC_24_PLT_PCREL",
47.42056 ++  "BFD_RELOC_16_PLT_PCREL",
47.42057 ++  "BFD_RELOC_8_PLT_PCREL",
47.42058 ++  "BFD_RELOC_64_PLTOFF",
47.42059 ++  "BFD_RELOC_32_PLTOFF",
47.42060 ++  "BFD_RELOC_16_PLTOFF",
47.42061 ++  "BFD_RELOC_LO16_PLTOFF",
47.42062 ++  "BFD_RELOC_HI16_PLTOFF",
47.42063 ++  "BFD_RELOC_HI16_S_PLTOFF",
47.42064 ++  "BFD_RELOC_8_PLTOFF",
47.42065 ++  "BFD_RELOC_68K_GLOB_DAT",
47.42066 ++  "BFD_RELOC_68K_JMP_SLOT",
47.42067 ++  "BFD_RELOC_68K_RELATIVE",
47.42068 ++  "BFD_RELOC_32_BASEREL",
47.42069 ++  "BFD_RELOC_16_BASEREL",
47.42070 ++  "BFD_RELOC_LO16_BASEREL",
47.42071 ++  "BFD_RELOC_HI16_BASEREL",
47.42072 ++  "BFD_RELOC_HI16_S_BASEREL",
47.42073 ++  "BFD_RELOC_8_BASEREL",
47.42074 ++  "BFD_RELOC_RVA",
47.42075 ++  "BFD_RELOC_8_FFnn",
47.42076 ++  "BFD_RELOC_32_PCREL_S2",
47.42077 ++  "BFD_RELOC_16_PCREL_S2",
47.42078 ++  "BFD_RELOC_23_PCREL_S2",
47.42079 ++  "BFD_RELOC_HI22",
47.42080 ++  "BFD_RELOC_LO10",
47.42081 ++  "BFD_RELOC_GPREL16",
47.42082 ++  "BFD_RELOC_GPREL32",
47.42083 ++  "BFD_RELOC_I960_CALLJ",
47.42084 ++  "BFD_RELOC_NONE",
47.42085 ++  "BFD_RELOC_SPARC_WDISP22",
47.42086 ++  "BFD_RELOC_SPARC22",
47.42087 ++  "BFD_RELOC_SPARC13",
47.42088 ++  "BFD_RELOC_SPARC_GOT10",
47.42089 ++  "BFD_RELOC_SPARC_GOT13",
47.42090 ++  "BFD_RELOC_SPARC_GOT22",
47.42091 ++  "BFD_RELOC_SPARC_PC10",
47.42092 ++  "BFD_RELOC_SPARC_PC22",
47.42093 ++  "BFD_RELOC_SPARC_WPLT30",
47.42094 ++  "BFD_RELOC_SPARC_COPY",
47.42095 ++  "BFD_RELOC_SPARC_GLOB_DAT",
47.42096 ++  "BFD_RELOC_SPARC_JMP_SLOT",
47.42097 ++  "BFD_RELOC_SPARC_RELATIVE",
47.42098 ++  "BFD_RELOC_SPARC_UA16",
47.42099 ++  "BFD_RELOC_SPARC_UA32",
47.42100 ++  "BFD_RELOC_SPARC_UA64",
47.42101 ++  "BFD_RELOC_SPARC_BASE13",
47.42102 ++  "BFD_RELOC_SPARC_BASE22",
47.42103 ++  "BFD_RELOC_SPARC_10",
47.42104 ++  "BFD_RELOC_SPARC_11",
47.42105 ++  "BFD_RELOC_SPARC_OLO10",
47.42106 ++  "BFD_RELOC_SPARC_HH22",
47.42107 ++  "BFD_RELOC_SPARC_HM10",
47.42108 ++  "BFD_RELOC_SPARC_LM22",
47.42109 ++  "BFD_RELOC_SPARC_PC_HH22",
47.42110 ++  "BFD_RELOC_SPARC_PC_HM10",
47.42111 ++  "BFD_RELOC_SPARC_PC_LM22",
47.42112 ++  "BFD_RELOC_SPARC_WDISP16",
47.42113 ++  "BFD_RELOC_SPARC_WDISP19",
47.42114 ++  "BFD_RELOC_SPARC_7",
47.42115 ++  "BFD_RELOC_SPARC_6",
47.42116 ++  "BFD_RELOC_SPARC_5",
47.42117 ++  "BFD_RELOC_SPARC_PLT32",
47.42118 ++  "BFD_RELOC_SPARC_PLT64",
47.42119 ++  "BFD_RELOC_SPARC_HIX22",
47.42120 ++  "BFD_RELOC_SPARC_LOX10",
47.42121 ++  "BFD_RELOC_SPARC_H44",
47.42122 ++  "BFD_RELOC_SPARC_M44",
47.42123 ++  "BFD_RELOC_SPARC_L44",
47.42124 ++  "BFD_RELOC_SPARC_REGISTER",
47.42125 ++  "BFD_RELOC_SPARC_REV32",
47.42126 ++  "BFD_RELOC_SPARC_TLS_GD_HI22",
47.42127 ++  "BFD_RELOC_SPARC_TLS_GD_LO10",
47.42128 ++  "BFD_RELOC_SPARC_TLS_GD_ADD",
47.42129 ++  "BFD_RELOC_SPARC_TLS_GD_CALL",
47.42130 ++  "BFD_RELOC_SPARC_TLS_LDM_HI22",
47.42131 ++  "BFD_RELOC_SPARC_TLS_LDM_LO10",
47.42132 ++  "BFD_RELOC_SPARC_TLS_LDM_ADD",
47.42133 ++  "BFD_RELOC_SPARC_TLS_LDM_CALL",
47.42134 ++  "BFD_RELOC_SPARC_TLS_LDO_HIX22",
47.42135 ++  "BFD_RELOC_SPARC_TLS_LDO_LOX10",
47.42136 ++  "BFD_RELOC_SPARC_TLS_LDO_ADD",
47.42137 ++  "BFD_RELOC_SPARC_TLS_IE_HI22",
47.42138 ++  "BFD_RELOC_SPARC_TLS_IE_LO10",
47.42139 ++  "BFD_RELOC_SPARC_TLS_IE_LD",
47.42140 ++  "BFD_RELOC_SPARC_TLS_IE_LDX",
47.42141 ++  "BFD_RELOC_SPARC_TLS_IE_ADD",
47.42142 ++  "BFD_RELOC_SPARC_TLS_LE_HIX22",
47.42143 ++  "BFD_RELOC_SPARC_TLS_LE_LOX10",
47.42144 ++  "BFD_RELOC_SPARC_TLS_DTPMOD32",
47.42145 ++  "BFD_RELOC_SPARC_TLS_DTPMOD64",
47.42146 ++  "BFD_RELOC_SPARC_TLS_DTPOFF32",
47.42147 ++  "BFD_RELOC_SPARC_TLS_DTPOFF64",
47.42148 ++  "BFD_RELOC_SPARC_TLS_TPOFF32",
47.42149 ++  "BFD_RELOC_SPARC_TLS_TPOFF64",
47.42150 ++  "BFD_RELOC_SPU_IMM7",
47.42151 ++  "BFD_RELOC_SPU_IMM8",
47.42152 ++  "BFD_RELOC_SPU_IMM10",
47.42153 ++  "BFD_RELOC_SPU_IMM10W",
47.42154 ++  "BFD_RELOC_SPU_IMM16",
47.42155 ++  "BFD_RELOC_SPU_IMM16W",
47.42156 ++  "BFD_RELOC_SPU_IMM18",
47.42157 ++  "BFD_RELOC_SPU_PCREL9a",
47.42158 ++  "BFD_RELOC_SPU_PCREL9b",
47.42159 ++  "BFD_RELOC_SPU_PCREL16",
47.42160 ++  "BFD_RELOC_SPU_LO16",
47.42161 ++  "BFD_RELOC_SPU_HI16",
47.42162 ++  "BFD_RELOC_SPU_PPU32",
47.42163 ++  "BFD_RELOC_SPU_PPU64",
47.42164 ++  "BFD_RELOC_ALPHA_GPDISP_HI16",
47.42165 ++  "BFD_RELOC_ALPHA_GPDISP_LO16",
47.42166 ++  "BFD_RELOC_ALPHA_GPDISP",
47.42167 ++  "BFD_RELOC_ALPHA_LITERAL",
47.42168 ++  "BFD_RELOC_ALPHA_ELF_LITERAL",
47.42169 ++  "BFD_RELOC_ALPHA_LITUSE",
47.42170 ++  "BFD_RELOC_ALPHA_HINT",
47.42171 ++  "BFD_RELOC_ALPHA_LINKAGE",
47.42172 ++  "BFD_RELOC_ALPHA_CODEADDR",
47.42173 ++  "BFD_RELOC_ALPHA_GPREL_HI16",
47.42174 ++  "BFD_RELOC_ALPHA_GPREL_LO16",
47.42175 ++  "BFD_RELOC_ALPHA_BRSGP",
47.42176 ++  "BFD_RELOC_ALPHA_TLSGD",
47.42177 ++  "BFD_RELOC_ALPHA_TLSLDM",
47.42178 ++  "BFD_RELOC_ALPHA_DTPMOD64",
47.42179 ++  "BFD_RELOC_ALPHA_GOTDTPREL16",
47.42180 ++  "BFD_RELOC_ALPHA_DTPREL64",
47.42181 ++  "BFD_RELOC_ALPHA_DTPREL_HI16",
47.42182 ++  "BFD_RELOC_ALPHA_DTPREL_LO16",
47.42183 ++  "BFD_RELOC_ALPHA_DTPREL16",
47.42184 ++  "BFD_RELOC_ALPHA_GOTTPREL16",
47.42185 ++  "BFD_RELOC_ALPHA_TPREL64",
47.42186 ++  "BFD_RELOC_ALPHA_TPREL_HI16",
47.42187 ++  "BFD_RELOC_ALPHA_TPREL_LO16",
47.42188 ++  "BFD_RELOC_ALPHA_TPREL16",
47.42189 ++  "BFD_RELOC_MIPS_JMP",
47.42190 ++  "BFD_RELOC_MIPS16_JMP",
47.42191 ++  "BFD_RELOC_MIPS16_GPREL",
47.42192 ++  "BFD_RELOC_HI16",
47.42193 ++  "BFD_RELOC_HI16_S",
47.42194 ++  "BFD_RELOC_LO16",
47.42195 ++  "BFD_RELOC_HI16_PCREL",
47.42196 ++  "BFD_RELOC_HI16_S_PCREL",
47.42197 ++  "BFD_RELOC_LO16_PCREL",
47.42198 ++  "BFD_RELOC_MIPS16_HI16",
47.42199 ++  "BFD_RELOC_MIPS16_HI16_S",
47.42200 ++  "BFD_RELOC_MIPS16_LO16",
47.42201 ++  "BFD_RELOC_MIPS_LITERAL",
47.42202 ++  "BFD_RELOC_MIPS_GOT16",
47.42203 ++  "BFD_RELOC_MIPS_CALL16",
47.42204 ++  "BFD_RELOC_MIPS_GOT_HI16",
47.42205 ++  "BFD_RELOC_MIPS_GOT_LO16",
47.42206 ++  "BFD_RELOC_MIPS_CALL_HI16",
47.42207 ++  "BFD_RELOC_MIPS_CALL_LO16",
47.42208 ++  "BFD_RELOC_MIPS_SUB",
47.42209 ++  "BFD_RELOC_MIPS_GOT_PAGE",
47.42210 ++  "BFD_RELOC_MIPS_GOT_OFST",
47.42211 ++  "BFD_RELOC_MIPS_GOT_DISP",
47.42212 ++  "BFD_RELOC_MIPS_SHIFT5",
47.42213 ++  "BFD_RELOC_MIPS_SHIFT6",
47.42214 ++  "BFD_RELOC_MIPS_INSERT_A",
47.42215 ++  "BFD_RELOC_MIPS_INSERT_B",
47.42216 ++  "BFD_RELOC_MIPS_DELETE",
47.42217 ++  "BFD_RELOC_MIPS_HIGHEST",
47.42218 ++  "BFD_RELOC_MIPS_HIGHER",
47.42219 ++  "BFD_RELOC_MIPS_SCN_DISP",
47.42220 ++  "BFD_RELOC_MIPS_REL16",
47.42221 ++  "BFD_RELOC_MIPS_RELGOT",
47.42222 ++  "BFD_RELOC_MIPS_JALR",
47.42223 ++  "BFD_RELOC_MIPS_TLS_DTPMOD32",
47.42224 ++  "BFD_RELOC_MIPS_TLS_DTPREL32",
47.42225 ++  "BFD_RELOC_MIPS_TLS_DTPMOD64",
47.42226 ++  "BFD_RELOC_MIPS_TLS_DTPREL64",
47.42227 ++  "BFD_RELOC_MIPS_TLS_GD",
47.42228 ++  "BFD_RELOC_MIPS_TLS_LDM",
47.42229 ++  "BFD_RELOC_MIPS_TLS_DTPREL_HI16",
47.42230 ++  "BFD_RELOC_MIPS_TLS_DTPREL_LO16",
47.42231 ++  "BFD_RELOC_MIPS_TLS_GOTTPREL",
47.42232 ++  "BFD_RELOC_MIPS_TLS_TPREL32",
47.42233 ++  "BFD_RELOC_MIPS_TLS_TPREL64",
47.42234 ++  "BFD_RELOC_MIPS_TLS_TPREL_HI16",
47.42235 ++  "BFD_RELOC_MIPS_TLS_TPREL_LO16",
47.42236 ++
47.42237 ++  "BFD_RELOC_MIPS_COPY",
47.42238 ++  "BFD_RELOC_MIPS_JUMP_SLOT",
47.42239 ++
47.42240 ++  "BFD_RELOC_FRV_LABEL16",
47.42241 ++  "BFD_RELOC_FRV_LABEL24",
47.42242 ++  "BFD_RELOC_FRV_LO16",
47.42243 ++  "BFD_RELOC_FRV_HI16",
47.42244 ++  "BFD_RELOC_FRV_GPREL12",
47.42245 ++  "BFD_RELOC_FRV_GPRELU12",
47.42246 ++  "BFD_RELOC_FRV_GPREL32",
47.42247 ++  "BFD_RELOC_FRV_GPRELHI",
47.42248 ++  "BFD_RELOC_FRV_GPRELLO",
47.42249 ++  "BFD_RELOC_FRV_GOT12",
47.42250 ++  "BFD_RELOC_FRV_GOTHI",
47.42251 ++  "BFD_RELOC_FRV_GOTLO",
47.42252 ++  "BFD_RELOC_FRV_FUNCDESC",
47.42253 ++  "BFD_RELOC_FRV_FUNCDESC_GOT12",
47.42254 ++  "BFD_RELOC_FRV_FUNCDESC_GOTHI",
47.42255 ++  "BFD_RELOC_FRV_FUNCDESC_GOTLO",
47.42256 ++  "BFD_RELOC_FRV_FUNCDESC_VALUE",
47.42257 ++  "BFD_RELOC_FRV_FUNCDESC_GOTOFF12",
47.42258 ++  "BFD_RELOC_FRV_FUNCDESC_GOTOFFHI",
47.42259 ++  "BFD_RELOC_FRV_FUNCDESC_GOTOFFLO",
47.42260 ++  "BFD_RELOC_FRV_GOTOFF12",
47.42261 ++  "BFD_RELOC_FRV_GOTOFFHI",
47.42262 ++  "BFD_RELOC_FRV_GOTOFFLO",
47.42263 ++  "BFD_RELOC_FRV_GETTLSOFF",
47.42264 ++  "BFD_RELOC_FRV_TLSDESC_VALUE",
47.42265 ++  "BFD_RELOC_FRV_GOTTLSDESC12",
47.42266 ++  "BFD_RELOC_FRV_GOTTLSDESCHI",
47.42267 ++  "BFD_RELOC_FRV_GOTTLSDESCLO",
47.42268 ++  "BFD_RELOC_FRV_TLSMOFF12",
47.42269 ++  "BFD_RELOC_FRV_TLSMOFFHI",
47.42270 ++  "BFD_RELOC_FRV_TLSMOFFLO",
47.42271 ++  "BFD_RELOC_FRV_GOTTLSOFF12",
47.42272 ++  "BFD_RELOC_FRV_GOTTLSOFFHI",
47.42273 ++  "BFD_RELOC_FRV_GOTTLSOFFLO",
47.42274 ++  "BFD_RELOC_FRV_TLSOFF",
47.42275 ++  "BFD_RELOC_FRV_TLSDESC_RELAX",
47.42276 ++  "BFD_RELOC_FRV_GETTLSOFF_RELAX",
47.42277 ++  "BFD_RELOC_FRV_TLSOFF_RELAX",
47.42278 ++  "BFD_RELOC_FRV_TLSMOFF",
47.42279 ++
47.42280 ++  "BFD_RELOC_MN10300_GOTOFF24",
47.42281 ++  "BFD_RELOC_MN10300_GOT32",
47.42282 ++  "BFD_RELOC_MN10300_GOT24",
47.42283 ++  "BFD_RELOC_MN10300_GOT16",
47.42284 ++  "BFD_RELOC_MN10300_COPY",
47.42285 ++  "BFD_RELOC_MN10300_GLOB_DAT",
47.42286 ++  "BFD_RELOC_MN10300_JMP_SLOT",
47.42287 ++  "BFD_RELOC_MN10300_RELATIVE",
47.42288 ++
47.42289 ++  "BFD_RELOC_386_GOT32",
47.42290 ++  "BFD_RELOC_386_PLT32",
47.42291 ++  "BFD_RELOC_386_COPY",
47.42292 ++  "BFD_RELOC_386_GLOB_DAT",
47.42293 ++  "BFD_RELOC_386_JUMP_SLOT",
47.42294 ++  "BFD_RELOC_386_RELATIVE",
47.42295 ++  "BFD_RELOC_386_GOTOFF",
47.42296 ++  "BFD_RELOC_386_GOTPC",
47.42297 ++  "BFD_RELOC_386_TLS_TPOFF",
47.42298 ++  "BFD_RELOC_386_TLS_IE",
47.42299 ++  "BFD_RELOC_386_TLS_GOTIE",
47.42300 ++  "BFD_RELOC_386_TLS_LE",
47.42301 ++  "BFD_RELOC_386_TLS_GD",
47.42302 ++  "BFD_RELOC_386_TLS_LDM",
47.42303 ++  "BFD_RELOC_386_TLS_LDO_32",
47.42304 ++  "BFD_RELOC_386_TLS_IE_32",
47.42305 ++  "BFD_RELOC_386_TLS_LE_32",
47.42306 ++  "BFD_RELOC_386_TLS_DTPMOD32",
47.42307 ++  "BFD_RELOC_386_TLS_DTPOFF32",
47.42308 ++  "BFD_RELOC_386_TLS_TPOFF32",
47.42309 ++  "BFD_RELOC_386_TLS_GOTDESC",
47.42310 ++  "BFD_RELOC_386_TLS_DESC_CALL",
47.42311 ++  "BFD_RELOC_386_TLS_DESC",
47.42312 ++  "BFD_RELOC_X86_64_GOT32",
47.42313 ++  "BFD_RELOC_X86_64_PLT32",
47.42314 ++  "BFD_RELOC_X86_64_COPY",
47.42315 ++  "BFD_RELOC_X86_64_GLOB_DAT",
47.42316 ++  "BFD_RELOC_X86_64_JUMP_SLOT",
47.42317 ++  "BFD_RELOC_X86_64_RELATIVE",
47.42318 ++  "BFD_RELOC_X86_64_GOTPCREL",
47.42319 ++  "BFD_RELOC_X86_64_32S",
47.42320 ++  "BFD_RELOC_X86_64_DTPMOD64",
47.42321 ++  "BFD_RELOC_X86_64_DTPOFF64",
47.42322 ++  "BFD_RELOC_X86_64_TPOFF64",
47.42323 ++  "BFD_RELOC_X86_64_TLSGD",
47.42324 ++  "BFD_RELOC_X86_64_TLSLD",
47.42325 ++  "BFD_RELOC_X86_64_DTPOFF32",
47.42326 ++  "BFD_RELOC_X86_64_GOTTPOFF",
47.42327 ++  "BFD_RELOC_X86_64_TPOFF32",
47.42328 ++  "BFD_RELOC_X86_64_GOTOFF64",
47.42329 ++  "BFD_RELOC_X86_64_GOTPC32",
47.42330 ++  "BFD_RELOC_X86_64_GOT64",
47.42331 ++  "BFD_RELOC_X86_64_GOTPCREL64",
47.42332 ++  "BFD_RELOC_X86_64_GOTPC64",
47.42333 ++  "BFD_RELOC_X86_64_GOTPLT64",
47.42334 ++  "BFD_RELOC_X86_64_PLTOFF64",
47.42335 ++  "BFD_RELOC_X86_64_GOTPC32_TLSDESC",
47.42336 ++  "BFD_RELOC_X86_64_TLSDESC_CALL",
47.42337 ++  "BFD_RELOC_X86_64_TLSDESC",
47.42338 ++  "BFD_RELOC_NS32K_IMM_8",
47.42339 ++  "BFD_RELOC_NS32K_IMM_16",
47.42340 ++  "BFD_RELOC_NS32K_IMM_32",
47.42341 ++  "BFD_RELOC_NS32K_IMM_8_PCREL",
47.42342 ++  "BFD_RELOC_NS32K_IMM_16_PCREL",
47.42343 ++  "BFD_RELOC_NS32K_IMM_32_PCREL",
47.42344 ++  "BFD_RELOC_NS32K_DISP_8",
47.42345 ++  "BFD_RELOC_NS32K_DISP_16",
47.42346 ++  "BFD_RELOC_NS32K_DISP_32",
47.42347 ++  "BFD_RELOC_NS32K_DISP_8_PCREL",
47.42348 ++  "BFD_RELOC_NS32K_DISP_16_PCREL",
47.42349 ++  "BFD_RELOC_NS32K_DISP_32_PCREL",
47.42350 ++  "BFD_RELOC_PDP11_DISP_8_PCREL",
47.42351 ++  "BFD_RELOC_PDP11_DISP_6_PCREL",
47.42352 ++  "BFD_RELOC_PJ_CODE_HI16",
47.42353 ++  "BFD_RELOC_PJ_CODE_LO16",
47.42354 ++  "BFD_RELOC_PJ_CODE_DIR16",
47.42355 ++  "BFD_RELOC_PJ_CODE_DIR32",
47.42356 ++  "BFD_RELOC_PJ_CODE_REL16",
47.42357 ++  "BFD_RELOC_PJ_CODE_REL32",
47.42358 ++  "BFD_RELOC_PPC_B26",
47.42359 ++  "BFD_RELOC_PPC_BA26",
47.42360 ++  "BFD_RELOC_PPC_TOC16",
47.42361 ++  "BFD_RELOC_PPC_B16",
47.42362 ++  "BFD_RELOC_PPC_B16_BRTAKEN",
47.42363 ++  "BFD_RELOC_PPC_B16_BRNTAKEN",
47.42364 ++  "BFD_RELOC_PPC_BA16",
47.42365 ++  "BFD_RELOC_PPC_BA16_BRTAKEN",
47.42366 ++  "BFD_RELOC_PPC_BA16_BRNTAKEN",
47.42367 ++  "BFD_RELOC_PPC_COPY",
47.42368 ++  "BFD_RELOC_PPC_GLOB_DAT",
47.42369 ++  "BFD_RELOC_PPC_JMP_SLOT",
47.42370 ++  "BFD_RELOC_PPC_RELATIVE",
47.42371 ++  "BFD_RELOC_PPC_LOCAL24PC",
47.42372 ++  "BFD_RELOC_PPC_EMB_NADDR32",
47.42373 ++  "BFD_RELOC_PPC_EMB_NADDR16",
47.42374 ++  "BFD_RELOC_PPC_EMB_NADDR16_LO",
47.42375 ++  "BFD_RELOC_PPC_EMB_NADDR16_HI",
47.42376 ++  "BFD_RELOC_PPC_EMB_NADDR16_HA",
47.42377 ++  "BFD_RELOC_PPC_EMB_SDAI16",
47.42378 ++  "BFD_RELOC_PPC_EMB_SDA2I16",
47.42379 ++  "BFD_RELOC_PPC_EMB_SDA2REL",
47.42380 ++  "BFD_RELOC_PPC_EMB_SDA21",
47.42381 ++  "BFD_RELOC_PPC_EMB_MRKREF",
47.42382 ++  "BFD_RELOC_PPC_EMB_RELSEC16",
47.42383 ++  "BFD_RELOC_PPC_EMB_RELST_LO",
47.42384 ++  "BFD_RELOC_PPC_EMB_RELST_HI",
47.42385 ++  "BFD_RELOC_PPC_EMB_RELST_HA",
47.42386 ++  "BFD_RELOC_PPC_EMB_BIT_FLD",
47.42387 ++  "BFD_RELOC_PPC_EMB_RELSDA",
47.42388 ++  "BFD_RELOC_PPC64_HIGHER",
47.42389 ++  "BFD_RELOC_PPC64_HIGHER_S",
47.42390 ++  "BFD_RELOC_PPC64_HIGHEST",
47.42391 ++  "BFD_RELOC_PPC64_HIGHEST_S",
47.42392 ++  "BFD_RELOC_PPC64_TOC16_LO",
47.42393 ++  "BFD_RELOC_PPC64_TOC16_HI",
47.42394 ++  "BFD_RELOC_PPC64_TOC16_HA",
47.42395 ++  "BFD_RELOC_PPC64_TOC",
47.42396 ++  "BFD_RELOC_PPC64_PLTGOT16",
47.42397 ++  "BFD_RELOC_PPC64_PLTGOT16_LO",
47.42398 ++  "BFD_RELOC_PPC64_PLTGOT16_HI",
47.42399 ++  "BFD_RELOC_PPC64_PLTGOT16_HA",
47.42400 ++  "BFD_RELOC_PPC64_ADDR16_DS",
47.42401 ++  "BFD_RELOC_PPC64_ADDR16_LO_DS",
47.42402 ++  "BFD_RELOC_PPC64_GOT16_DS",
47.42403 ++  "BFD_RELOC_PPC64_GOT16_LO_DS",
47.42404 ++  "BFD_RELOC_PPC64_PLT16_LO_DS",
47.42405 ++  "BFD_RELOC_PPC64_SECTOFF_DS",
47.42406 ++  "BFD_RELOC_PPC64_SECTOFF_LO_DS",
47.42407 ++  "BFD_RELOC_PPC64_TOC16_DS",
47.42408 ++  "BFD_RELOC_PPC64_TOC16_LO_DS",
47.42409 ++  "BFD_RELOC_PPC64_PLTGOT16_DS",
47.42410 ++  "BFD_RELOC_PPC64_PLTGOT16_LO_DS",
47.42411 ++  "BFD_RELOC_PPC_TLS",
47.42412 ++  "BFD_RELOC_PPC_DTPMOD",
47.42413 ++  "BFD_RELOC_PPC_TPREL16",
47.42414 ++  "BFD_RELOC_PPC_TPREL16_LO",
47.42415 ++  "BFD_RELOC_PPC_TPREL16_HI",
47.42416 ++  "BFD_RELOC_PPC_TPREL16_HA",
47.42417 ++  "BFD_RELOC_PPC_TPREL",
47.42418 ++  "BFD_RELOC_PPC_DTPREL16",
47.42419 ++  "BFD_RELOC_PPC_DTPREL16_LO",
47.42420 ++  "BFD_RELOC_PPC_DTPREL16_HI",
47.42421 ++  "BFD_RELOC_PPC_DTPREL16_HA",
47.42422 ++  "BFD_RELOC_PPC_DTPREL",
47.42423 ++  "BFD_RELOC_PPC_GOT_TLSGD16",
47.42424 ++  "BFD_RELOC_PPC_GOT_TLSGD16_LO",
47.42425 ++  "BFD_RELOC_PPC_GOT_TLSGD16_HI",
47.42426 ++  "BFD_RELOC_PPC_GOT_TLSGD16_HA",
47.42427 ++  "BFD_RELOC_PPC_GOT_TLSLD16",
47.42428 ++  "BFD_RELOC_PPC_GOT_TLSLD16_LO",
47.42429 ++  "BFD_RELOC_PPC_GOT_TLSLD16_HI",
47.42430 ++  "BFD_RELOC_PPC_GOT_TLSLD16_HA",
47.42431 ++  "BFD_RELOC_PPC_GOT_TPREL16",
47.42432 ++  "BFD_RELOC_PPC_GOT_TPREL16_LO",
47.42433 ++  "BFD_RELOC_PPC_GOT_TPREL16_HI",
47.42434 ++  "BFD_RELOC_PPC_GOT_TPREL16_HA",
47.42435 ++  "BFD_RELOC_PPC_GOT_DTPREL16",
47.42436 ++  "BFD_RELOC_PPC_GOT_DTPREL16_LO",
47.42437 ++  "BFD_RELOC_PPC_GOT_DTPREL16_HI",
47.42438 ++  "BFD_RELOC_PPC_GOT_DTPREL16_HA",
47.42439 ++  "BFD_RELOC_PPC64_TPREL16_DS",
47.42440 ++  "BFD_RELOC_PPC64_TPREL16_LO_DS",
47.42441 ++  "BFD_RELOC_PPC64_TPREL16_HIGHER",
47.42442 ++  "BFD_RELOC_PPC64_TPREL16_HIGHERA",
47.42443 ++  "BFD_RELOC_PPC64_TPREL16_HIGHEST",
47.42444 ++  "BFD_RELOC_PPC64_TPREL16_HIGHESTA",
47.42445 ++  "BFD_RELOC_PPC64_DTPREL16_DS",
47.42446 ++  "BFD_RELOC_PPC64_DTPREL16_LO_DS",
47.42447 ++  "BFD_RELOC_PPC64_DTPREL16_HIGHER",
47.42448 ++  "BFD_RELOC_PPC64_DTPREL16_HIGHERA",
47.42449 ++  "BFD_RELOC_PPC64_DTPREL16_HIGHEST",
47.42450 ++  "BFD_RELOC_PPC64_DTPREL16_HIGHESTA",
47.42451 ++  "BFD_RELOC_I370_D12",
47.42452 ++  "BFD_RELOC_CTOR",
47.42453 ++  "BFD_RELOC_ARM_PCREL_BRANCH",
47.42454 ++  "BFD_RELOC_ARM_PCREL_BLX",
47.42455 ++  "BFD_RELOC_THUMB_PCREL_BLX",
47.42456 ++  "BFD_RELOC_ARM_PCREL_CALL",
47.42457 ++  "BFD_RELOC_ARM_PCREL_JUMP",
47.42458 ++  "BFD_RELOC_THUMB_PCREL_BRANCH7",
47.42459 ++  "BFD_RELOC_THUMB_PCREL_BRANCH9",
47.42460 ++  "BFD_RELOC_THUMB_PCREL_BRANCH12",
47.42461 ++  "BFD_RELOC_THUMB_PCREL_BRANCH20",
47.42462 ++  "BFD_RELOC_THUMB_PCREL_BRANCH23",
47.42463 ++  "BFD_RELOC_THUMB_PCREL_BRANCH25",
47.42464 ++  "BFD_RELOC_ARM_OFFSET_IMM",
47.42465 ++  "BFD_RELOC_ARM_THUMB_OFFSET",
47.42466 ++  "BFD_RELOC_ARM_TARGET1",
47.42467 ++  "BFD_RELOC_ARM_ROSEGREL32",
47.42468 ++  "BFD_RELOC_ARM_SBREL32",
47.42469 ++  "BFD_RELOC_ARM_TARGET2",
47.42470 ++  "BFD_RELOC_ARM_PREL31",
47.42471 ++  "BFD_RELOC_ARM_MOVW",
47.42472 ++  "BFD_RELOC_ARM_MOVT",
47.42473 ++  "BFD_RELOC_ARM_MOVW_PCREL",
47.42474 ++  "BFD_RELOC_ARM_MOVT_PCREL",
47.42475 ++  "BFD_RELOC_ARM_THUMB_MOVW",
47.42476 ++  "BFD_RELOC_ARM_THUMB_MOVT",
47.42477 ++  "BFD_RELOC_ARM_THUMB_MOVW_PCREL",
47.42478 ++  "BFD_RELOC_ARM_THUMB_MOVT_PCREL",
47.42479 ++  "BFD_RELOC_ARM_JUMP_SLOT",
47.42480 ++  "BFD_RELOC_ARM_GLOB_DAT",
47.42481 ++  "BFD_RELOC_ARM_GOT32",
47.42482 ++  "BFD_RELOC_ARM_PLT32",
47.42483 ++  "BFD_RELOC_ARM_RELATIVE",
47.42484 ++  "BFD_RELOC_ARM_GOTOFF",
47.42485 ++  "BFD_RELOC_ARM_GOTPC",
47.42486 ++  "BFD_RELOC_ARM_TLS_GD32",
47.42487 ++  "BFD_RELOC_ARM_TLS_LDO32",
47.42488 ++  "BFD_RELOC_ARM_TLS_LDM32",
47.42489 ++  "BFD_RELOC_ARM_TLS_DTPOFF32",
47.42490 ++  "BFD_RELOC_ARM_TLS_DTPMOD32",
47.42491 ++  "BFD_RELOC_ARM_TLS_TPOFF32",
47.42492 ++  "BFD_RELOC_ARM_TLS_IE32",
47.42493 ++  "BFD_RELOC_ARM_TLS_LE32",
47.42494 ++  "BFD_RELOC_ARM_ALU_PC_G0_NC",
47.42495 ++  "BFD_RELOC_ARM_ALU_PC_G0",
47.42496 ++  "BFD_RELOC_ARM_ALU_PC_G1_NC",
47.42497 ++  "BFD_RELOC_ARM_ALU_PC_G1",
47.42498 ++  "BFD_RELOC_ARM_ALU_PC_G2",
47.42499 ++  "BFD_RELOC_ARM_LDR_PC_G0",
47.42500 ++  "BFD_RELOC_ARM_LDR_PC_G1",
47.42501 ++  "BFD_RELOC_ARM_LDR_PC_G2",
47.42502 ++  "BFD_RELOC_ARM_LDRS_PC_G0",
47.42503 ++  "BFD_RELOC_ARM_LDRS_PC_G1",
47.42504 ++  "BFD_RELOC_ARM_LDRS_PC_G2",
47.42505 ++  "BFD_RELOC_ARM_LDC_PC_G0",
47.42506 ++  "BFD_RELOC_ARM_LDC_PC_G1",
47.42507 ++  "BFD_RELOC_ARM_LDC_PC_G2",
47.42508 ++  "BFD_RELOC_ARM_ALU_SB_G0_NC",
47.42509 ++  "BFD_RELOC_ARM_ALU_SB_G0",
47.42510 ++  "BFD_RELOC_ARM_ALU_SB_G1_NC",
47.42511 ++  "BFD_RELOC_ARM_ALU_SB_G1",
47.42512 ++  "BFD_RELOC_ARM_ALU_SB_G2",
47.42513 ++  "BFD_RELOC_ARM_LDR_SB_G0",
47.42514 ++  "BFD_RELOC_ARM_LDR_SB_G1",
47.42515 ++  "BFD_RELOC_ARM_LDR_SB_G2",
47.42516 ++  "BFD_RELOC_ARM_LDRS_SB_G0",
47.42517 ++  "BFD_RELOC_ARM_LDRS_SB_G1",
47.42518 ++  "BFD_RELOC_ARM_LDRS_SB_G2",
47.42519 ++  "BFD_RELOC_ARM_LDC_SB_G0",
47.42520 ++  "BFD_RELOC_ARM_LDC_SB_G1",
47.42521 ++  "BFD_RELOC_ARM_LDC_SB_G2",
47.42522 ++  "BFD_RELOC_ARM_IMMEDIATE",
47.42523 ++  "BFD_RELOC_ARM_ADRL_IMMEDIATE",
47.42524 ++  "BFD_RELOC_ARM_T32_IMMEDIATE",
47.42525 ++  "BFD_RELOC_ARM_T32_ADD_IMM",
47.42526 ++  "BFD_RELOC_ARM_T32_IMM12",
47.42527 ++  "BFD_RELOC_ARM_T32_ADD_PC12",
47.42528 ++  "BFD_RELOC_ARM_SHIFT_IMM",
47.42529 ++  "BFD_RELOC_ARM_SMC",
47.42530 ++  "BFD_RELOC_ARM_SWI",
47.42531 ++  "BFD_RELOC_ARM_MULTI",
47.42532 ++  "BFD_RELOC_ARM_CP_OFF_IMM",
47.42533 ++  "BFD_RELOC_ARM_CP_OFF_IMM_S2",
47.42534 ++  "BFD_RELOC_ARM_T32_CP_OFF_IMM",
47.42535 ++  "BFD_RELOC_ARM_T32_CP_OFF_IMM_S2",
47.42536 ++  "BFD_RELOC_ARM_ADR_IMM",
47.42537 ++  "BFD_RELOC_ARM_LDR_IMM",
47.42538 ++  "BFD_RELOC_ARM_LITERAL",
47.42539 ++  "BFD_RELOC_ARM_IN_POOL",
47.42540 ++  "BFD_RELOC_ARM_OFFSET_IMM8",
47.42541 ++  "BFD_RELOC_ARM_T32_OFFSET_U8",
47.42542 ++  "BFD_RELOC_ARM_T32_OFFSET_IMM",
47.42543 ++  "BFD_RELOC_ARM_HWLITERAL",
47.42544 ++  "BFD_RELOC_ARM_THUMB_ADD",
47.42545 ++  "BFD_RELOC_ARM_THUMB_IMM",
47.42546 ++  "BFD_RELOC_ARM_THUMB_SHIFT",
47.42547 ++  "BFD_RELOC_SH_PCDISP8BY2",
47.42548 ++  "BFD_RELOC_SH_PCDISP12BY2",
47.42549 ++  "BFD_RELOC_SH_IMM3",
47.42550 ++  "BFD_RELOC_SH_IMM3U",
47.42551 ++  "BFD_RELOC_SH_DISP12",
47.42552 ++  "BFD_RELOC_SH_DISP12BY2",
47.42553 ++  "BFD_RELOC_SH_DISP12BY4",
47.42554 ++  "BFD_RELOC_SH_DISP12BY8",
47.42555 ++  "BFD_RELOC_SH_DISP20",
47.42556 ++  "BFD_RELOC_SH_DISP20BY8",
47.42557 ++  "BFD_RELOC_SH_IMM4",
47.42558 ++  "BFD_RELOC_SH_IMM4BY2",
47.42559 ++  "BFD_RELOC_SH_IMM4BY4",
47.42560 ++  "BFD_RELOC_SH_IMM8",
47.42561 ++  "BFD_RELOC_SH_IMM8BY2",
47.42562 ++  "BFD_RELOC_SH_IMM8BY4",
47.42563 ++  "BFD_RELOC_SH_PCRELIMM8BY2",
47.42564 ++  "BFD_RELOC_SH_PCRELIMM8BY4",
47.42565 ++  "BFD_RELOC_SH_SWITCH16",
47.42566 ++  "BFD_RELOC_SH_SWITCH32",
47.42567 ++  "BFD_RELOC_SH_USES",
47.42568 ++  "BFD_RELOC_SH_COUNT",
47.42569 ++  "BFD_RELOC_SH_ALIGN",
47.42570 ++  "BFD_RELOC_SH_CODE",
47.42571 ++  "BFD_RELOC_SH_DATA",
47.42572 ++  "BFD_RELOC_SH_LABEL",
47.42573 ++  "BFD_RELOC_SH_LOOP_START",
47.42574 ++  "BFD_RELOC_SH_LOOP_END",
47.42575 ++  "BFD_RELOC_SH_COPY",
47.42576 ++  "BFD_RELOC_SH_GLOB_DAT",
47.42577 ++  "BFD_RELOC_SH_JMP_SLOT",
47.42578 ++  "BFD_RELOC_SH_RELATIVE",
47.42579 ++  "BFD_RELOC_SH_GOTPC",
47.42580 ++  "BFD_RELOC_SH_GOT_LOW16",
47.42581 ++  "BFD_RELOC_SH_GOT_MEDLOW16",
47.42582 ++  "BFD_RELOC_SH_GOT_MEDHI16",
47.42583 ++  "BFD_RELOC_SH_GOT_HI16",
47.42584 ++  "BFD_RELOC_SH_GOTPLT_LOW16",
47.42585 ++  "BFD_RELOC_SH_GOTPLT_MEDLOW16",
47.42586 ++  "BFD_RELOC_SH_GOTPLT_MEDHI16",
47.42587 ++  "BFD_RELOC_SH_GOTPLT_HI16",
47.42588 ++  "BFD_RELOC_SH_PLT_LOW16",
47.42589 ++  "BFD_RELOC_SH_PLT_MEDLOW16",
47.42590 ++  "BFD_RELOC_SH_PLT_MEDHI16",
47.42591 ++  "BFD_RELOC_SH_PLT_HI16",
47.42592 ++  "BFD_RELOC_SH_GOTOFF_LOW16",
47.42593 ++  "BFD_RELOC_SH_GOTOFF_MEDLOW16",
47.42594 ++  "BFD_RELOC_SH_GOTOFF_MEDHI16",
47.42595 ++  "BFD_RELOC_SH_GOTOFF_HI16",
47.42596 ++  "BFD_RELOC_SH_GOTPC_LOW16",
47.42597 ++  "BFD_RELOC_SH_GOTPC_MEDLOW16",
47.42598 ++  "BFD_RELOC_SH_GOTPC_MEDHI16",
47.42599 ++  "BFD_RELOC_SH_GOTPC_HI16",
47.42600 ++  "BFD_RELOC_SH_COPY64",
47.42601 ++  "BFD_RELOC_SH_GLOB_DAT64",
47.42602 ++  "BFD_RELOC_SH_JMP_SLOT64",
47.42603 ++  "BFD_RELOC_SH_RELATIVE64",
47.42604 ++  "BFD_RELOC_SH_GOT10BY4",
47.42605 ++  "BFD_RELOC_SH_GOT10BY8",
47.42606 ++  "BFD_RELOC_SH_GOTPLT10BY4",
47.42607 ++  "BFD_RELOC_SH_GOTPLT10BY8",
47.42608 ++  "BFD_RELOC_SH_GOTPLT32",
47.42609 ++  "BFD_RELOC_SH_SHMEDIA_CODE",
47.42610 ++  "BFD_RELOC_SH_IMMU5",
47.42611 ++  "BFD_RELOC_SH_IMMS6",
47.42612 ++  "BFD_RELOC_SH_IMMS6BY32",
47.42613 ++  "BFD_RELOC_SH_IMMU6",
47.42614 ++  "BFD_RELOC_SH_IMMS10",
47.42615 ++  "BFD_RELOC_SH_IMMS10BY2",
47.42616 ++  "BFD_RELOC_SH_IMMS10BY4",
47.42617 ++  "BFD_RELOC_SH_IMMS10BY8",
47.42618 ++  "BFD_RELOC_SH_IMMS16",
47.42619 ++  "BFD_RELOC_SH_IMMU16",
47.42620 ++  "BFD_RELOC_SH_IMM_LOW16",
47.42621 ++  "BFD_RELOC_SH_IMM_LOW16_PCREL",
47.42622 ++  "BFD_RELOC_SH_IMM_MEDLOW16",
47.42623 ++  "BFD_RELOC_SH_IMM_MEDLOW16_PCREL",
47.42624 ++  "BFD_RELOC_SH_IMM_MEDHI16",
47.42625 ++  "BFD_RELOC_SH_IMM_MEDHI16_PCREL",
47.42626 ++  "BFD_RELOC_SH_IMM_HI16",
47.42627 ++  "BFD_RELOC_SH_IMM_HI16_PCREL",
47.42628 ++  "BFD_RELOC_SH_PT_16",
47.42629 ++  "BFD_RELOC_SH_TLS_GD_32",
47.42630 ++  "BFD_RELOC_SH_TLS_LD_32",
47.42631 ++  "BFD_RELOC_SH_TLS_LDO_32",
47.42632 ++  "BFD_RELOC_SH_TLS_IE_32",
47.42633 ++  "BFD_RELOC_SH_TLS_LE_32",
47.42634 ++  "BFD_RELOC_SH_TLS_DTPMOD32",
47.42635 ++  "BFD_RELOC_SH_TLS_DTPOFF32",
47.42636 ++  "BFD_RELOC_SH_TLS_TPOFF32",
47.42637 ++  "BFD_RELOC_ARC_B22_PCREL",
47.42638 ++  "BFD_RELOC_ARC_B26",
47.42639 ++  "BFD_RELOC_BFIN_16_IMM",
47.42640 ++  "BFD_RELOC_BFIN_16_HIGH",
47.42641 ++  "BFD_RELOC_BFIN_4_PCREL",
47.42642 ++  "BFD_RELOC_BFIN_5_PCREL",
47.42643 ++  "BFD_RELOC_BFIN_16_LOW",
47.42644 ++  "BFD_RELOC_BFIN_10_PCREL",
47.42645 ++  "BFD_RELOC_BFIN_11_PCREL",
47.42646 ++  "BFD_RELOC_BFIN_12_PCREL_JUMP",
47.42647 ++  "BFD_RELOC_BFIN_12_PCREL_JUMP_S",
47.42648 ++  "BFD_RELOC_BFIN_24_PCREL_CALL_X",
47.42649 ++  "BFD_RELOC_BFIN_24_PCREL_JUMP_L",
47.42650 ++  "BFD_RELOC_BFIN_GOT17M4",
47.42651 ++  "BFD_RELOC_BFIN_GOTHI",
47.42652 ++  "BFD_RELOC_BFIN_GOTLO",
47.42653 ++  "BFD_RELOC_BFIN_FUNCDESC",
47.42654 ++  "BFD_RELOC_BFIN_FUNCDESC_GOT17M4",
47.42655 ++  "BFD_RELOC_BFIN_FUNCDESC_GOTHI",
47.42656 ++  "BFD_RELOC_BFIN_FUNCDESC_GOTLO",
47.42657 ++  "BFD_RELOC_BFIN_FUNCDESC_VALUE",
47.42658 ++  "BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4",
47.42659 ++  "BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI",
47.42660 ++  "BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO",
47.42661 ++  "BFD_RELOC_BFIN_GOTOFF17M4",
47.42662 ++  "BFD_RELOC_BFIN_GOTOFFHI",
47.42663 ++  "BFD_RELOC_BFIN_GOTOFFLO",
47.42664 ++  "BFD_RELOC_BFIN_GOT",
47.42665 ++  "BFD_RELOC_BFIN_PLTPC",
47.42666 ++  "BFD_ARELOC_BFIN_PUSH",
47.42667 ++  "BFD_ARELOC_BFIN_CONST",
47.42668 ++  "BFD_ARELOC_BFIN_ADD",
47.42669 ++  "BFD_ARELOC_BFIN_SUB",
47.42670 ++  "BFD_ARELOC_BFIN_MULT",
47.42671 ++  "BFD_ARELOC_BFIN_DIV",
47.42672 ++  "BFD_ARELOC_BFIN_MOD",
47.42673 ++  "BFD_ARELOC_BFIN_LSHIFT",
47.42674 ++  "BFD_ARELOC_BFIN_RSHIFT",
47.42675 ++  "BFD_ARELOC_BFIN_AND",
47.42676 ++  "BFD_ARELOC_BFIN_OR",
47.42677 ++  "BFD_ARELOC_BFIN_XOR",
47.42678 ++  "BFD_ARELOC_BFIN_LAND",
47.42679 ++  "BFD_ARELOC_BFIN_LOR",
47.42680 ++  "BFD_ARELOC_BFIN_LEN",
47.42681 ++  "BFD_ARELOC_BFIN_NEG",
47.42682 ++  "BFD_ARELOC_BFIN_COMP",
47.42683 ++  "BFD_ARELOC_BFIN_PAGE",
47.42684 ++  "BFD_ARELOC_BFIN_HWPAGE",
47.42685 ++  "BFD_ARELOC_BFIN_ADDR",
47.42686 ++  "BFD_RELOC_D10V_10_PCREL_R",
47.42687 ++  "BFD_RELOC_D10V_10_PCREL_L",
47.42688 ++  "BFD_RELOC_D10V_18",
47.42689 ++  "BFD_RELOC_D10V_18_PCREL",
47.42690 ++  "BFD_RELOC_D30V_6",
47.42691 ++  "BFD_RELOC_D30V_9_PCREL",
47.42692 ++  "BFD_RELOC_D30V_9_PCREL_R",
47.42693 ++  "BFD_RELOC_D30V_15",
47.42694 ++  "BFD_RELOC_D30V_15_PCREL",
47.42695 ++  "BFD_RELOC_D30V_15_PCREL_R",
47.42696 ++  "BFD_RELOC_D30V_21",
47.42697 ++  "BFD_RELOC_D30V_21_PCREL",
47.42698 ++  "BFD_RELOC_D30V_21_PCREL_R",
47.42699 ++  "BFD_RELOC_D30V_32",
47.42700 ++  "BFD_RELOC_D30V_32_PCREL",
47.42701 ++  "BFD_RELOC_DLX_HI16_S",
47.42702 ++  "BFD_RELOC_DLX_LO16",
47.42703 ++  "BFD_RELOC_DLX_JMP26",
47.42704 ++  "BFD_RELOC_M32C_HI8",
47.42705 ++  "BFD_RELOC_M32C_RL_JUMP",
47.42706 ++  "BFD_RELOC_M32C_RL_1ADDR",
47.42707 ++  "BFD_RELOC_M32C_RL_2ADDR",
47.42708 ++  "BFD_RELOC_M32R_24",
47.42709 ++  "BFD_RELOC_M32R_10_PCREL",
47.42710 ++  "BFD_RELOC_M32R_18_PCREL",
47.42711 ++  "BFD_RELOC_M32R_26_PCREL",
47.42712 ++  "BFD_RELOC_M32R_HI16_ULO",
47.42713 ++  "BFD_RELOC_M32R_HI16_SLO",
47.42714 ++  "BFD_RELOC_M32R_LO16",
47.42715 ++  "BFD_RELOC_M32R_SDA16",
47.42716 ++  "BFD_RELOC_M32R_GOT24",
47.42717 ++  "BFD_RELOC_M32R_26_PLTREL",
47.42718 ++  "BFD_RELOC_M32R_COPY",
47.42719 ++  "BFD_RELOC_M32R_GLOB_DAT",
47.42720 ++  "BFD_RELOC_M32R_JMP_SLOT",
47.42721 ++  "BFD_RELOC_M32R_RELATIVE",
47.42722 ++  "BFD_RELOC_M32R_GOTOFF",
47.42723 ++  "BFD_RELOC_M32R_GOTOFF_HI_ULO",
47.42724 ++  "BFD_RELOC_M32R_GOTOFF_HI_SLO",
47.42725 ++  "BFD_RELOC_M32R_GOTOFF_LO",
47.42726 ++  "BFD_RELOC_M32R_GOTPC24",
47.42727 ++  "BFD_RELOC_M32R_GOT16_HI_ULO",
47.42728 ++  "BFD_RELOC_M32R_GOT16_HI_SLO",
47.42729 ++  "BFD_RELOC_M32R_GOT16_LO",
47.42730 ++  "BFD_RELOC_M32R_GOTPC_HI_ULO",
47.42731 ++  "BFD_RELOC_M32R_GOTPC_HI_SLO",
47.42732 ++  "BFD_RELOC_M32R_GOTPC_LO",
47.42733 ++  "BFD_RELOC_V850_9_PCREL",
47.42734 ++  "BFD_RELOC_V850_22_PCREL",
47.42735 ++  "BFD_RELOC_V850_SDA_16_16_OFFSET",
47.42736 ++  "BFD_RELOC_V850_SDA_15_16_OFFSET",
47.42737 ++  "BFD_RELOC_V850_ZDA_16_16_OFFSET",
47.42738 ++  "BFD_RELOC_V850_ZDA_15_16_OFFSET",
47.42739 ++  "BFD_RELOC_V850_TDA_6_8_OFFSET",
47.42740 ++  "BFD_RELOC_V850_TDA_7_8_OFFSET",
47.42741 ++  "BFD_RELOC_V850_TDA_7_7_OFFSET",
47.42742 ++  "BFD_RELOC_V850_TDA_16_16_OFFSET",
47.42743 ++  "BFD_RELOC_V850_TDA_4_5_OFFSET",
47.42744 ++  "BFD_RELOC_V850_TDA_4_4_OFFSET",
47.42745 ++  "BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET",
47.42746 ++  "BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET",
47.42747 ++  "BFD_RELOC_V850_CALLT_6_7_OFFSET",
47.42748 ++  "BFD_RELOC_V850_CALLT_16_16_OFFSET",
47.42749 ++  "BFD_RELOC_V850_LONGCALL",
47.42750 ++  "BFD_RELOC_V850_LONGJUMP",
47.42751 ++  "BFD_RELOC_V850_ALIGN",
47.42752 ++  "BFD_RELOC_V850_LO16_SPLIT_OFFSET",
47.42753 ++  "BFD_RELOC_MN10300_32_PCREL",
47.42754 ++  "BFD_RELOC_MN10300_16_PCREL",
47.42755 ++  "BFD_RELOC_TIC30_LDP",
47.42756 ++  "BFD_RELOC_TIC54X_PARTLS7",
47.42757 ++  "BFD_RELOC_TIC54X_PARTMS9",
47.42758 ++  "BFD_RELOC_TIC54X_23",
47.42759 ++  "BFD_RELOC_TIC54X_16_OF_23",
47.42760 ++  "BFD_RELOC_TIC54X_MS7_OF_23",
47.42761 ++  "BFD_RELOC_FR30_48",
47.42762 ++  "BFD_RELOC_FR30_20",
47.42763 ++  "BFD_RELOC_FR30_6_IN_4",
47.42764 ++  "BFD_RELOC_FR30_8_IN_8",
47.42765 ++  "BFD_RELOC_FR30_9_IN_8",
47.42766 ++  "BFD_RELOC_FR30_10_IN_8",
47.42767 ++  "BFD_RELOC_FR30_9_PCREL",
47.42768 ++  "BFD_RELOC_FR30_12_PCREL",
47.42769 ++  "BFD_RELOC_MCORE_PCREL_IMM8BY4",
47.42770 ++  "BFD_RELOC_MCORE_PCREL_IMM11BY2",
47.42771 ++  "BFD_RELOC_MCORE_PCREL_IMM4BY2",
47.42772 ++  "BFD_RELOC_MCORE_PCREL_32",
47.42773 ++  "BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2",
47.42774 ++  "BFD_RELOC_MCORE_RVA",
47.42775 ++  "BFD_RELOC_MEP_8",
47.42776 ++  "BFD_RELOC_MEP_16",
47.42777 ++  "BFD_RELOC_MEP_32",
47.42778 ++  "BFD_RELOC_MEP_PCREL8A2",
47.42779 ++  "BFD_RELOC_MEP_PCREL12A2",
47.42780 ++  "BFD_RELOC_MEP_PCREL17A2",
47.42781 ++  "BFD_RELOC_MEP_PCREL24A2",
47.42782 ++  "BFD_RELOC_MEP_PCABS24A2",
47.42783 ++  "BFD_RELOC_MEP_LOW16",
47.42784 ++  "BFD_RELOC_MEP_HI16U",
47.42785 ++  "BFD_RELOC_MEP_HI16S",
47.42786 ++  "BFD_RELOC_MEP_GPREL",
47.42787 ++  "BFD_RELOC_MEP_TPREL",
47.42788 ++  "BFD_RELOC_MEP_TPREL7",
47.42789 ++  "BFD_RELOC_MEP_TPREL7A2",
47.42790 ++  "BFD_RELOC_MEP_TPREL7A4",
47.42791 ++  "BFD_RELOC_MEP_UIMM24",
47.42792 ++  "BFD_RELOC_MEP_ADDR24A4",
47.42793 ++  "BFD_RELOC_MEP_GNU_VTINHERIT",
47.42794 ++  "BFD_RELOC_MEP_GNU_VTENTRY",
47.42795 ++
47.42796 ++  "BFD_RELOC_MMIX_GETA",
47.42797 ++  "BFD_RELOC_MMIX_GETA_1",
47.42798 ++  "BFD_RELOC_MMIX_GETA_2",
47.42799 ++  "BFD_RELOC_MMIX_GETA_3",
47.42800 ++  "BFD_RELOC_MMIX_CBRANCH",
47.42801 ++  "BFD_RELOC_MMIX_CBRANCH_J",
47.42802 ++  "BFD_RELOC_MMIX_CBRANCH_1",
47.42803 ++  "BFD_RELOC_MMIX_CBRANCH_2",
47.42804 ++  "BFD_RELOC_MMIX_CBRANCH_3",
47.42805 ++  "BFD_RELOC_MMIX_PUSHJ",
47.42806 ++  "BFD_RELOC_MMIX_PUSHJ_1",
47.42807 ++  "BFD_RELOC_MMIX_PUSHJ_2",
47.42808 ++  "BFD_RELOC_MMIX_PUSHJ_3",
47.42809 ++  "BFD_RELOC_MMIX_PUSHJ_STUBBABLE",
47.42810 ++  "BFD_RELOC_MMIX_JMP",
47.42811 ++  "BFD_RELOC_MMIX_JMP_1",
47.42812 ++  "BFD_RELOC_MMIX_JMP_2",
47.42813 ++  "BFD_RELOC_MMIX_JMP_3",
47.42814 ++  "BFD_RELOC_MMIX_ADDR19",
47.42815 ++  "BFD_RELOC_MMIX_ADDR27",
47.42816 ++  "BFD_RELOC_MMIX_REG_OR_BYTE",
47.42817 ++  "BFD_RELOC_MMIX_REG",
47.42818 ++  "BFD_RELOC_MMIX_BASE_PLUS_OFFSET",
47.42819 ++  "BFD_RELOC_MMIX_LOCAL",
47.42820 ++  "BFD_RELOC_AVR_7_PCREL",
47.42821 ++  "BFD_RELOC_AVR_13_PCREL",
47.42822 ++  "BFD_RELOC_AVR_16_PM",
47.42823 ++  "BFD_RELOC_AVR_LO8_LDI",
47.42824 ++  "BFD_RELOC_AVR_HI8_LDI",
47.42825 ++  "BFD_RELOC_AVR_HH8_LDI",
47.42826 ++  "BFD_RELOC_AVR_MS8_LDI",
47.42827 ++  "BFD_RELOC_AVR_LO8_LDI_NEG",
47.42828 ++  "BFD_RELOC_AVR_HI8_LDI_NEG",
47.42829 ++  "BFD_RELOC_AVR_HH8_LDI_NEG",
47.42830 ++  "BFD_RELOC_AVR_MS8_LDI_NEG",
47.42831 ++  "BFD_RELOC_AVR_LO8_LDI_PM",
47.42832 ++  "BFD_RELOC_AVR_LO8_LDI_GS",
47.42833 ++  "BFD_RELOC_AVR_HI8_LDI_PM",
47.42834 ++  "BFD_RELOC_AVR_HI8_LDI_GS",
47.42835 ++  "BFD_RELOC_AVR_HH8_LDI_PM",
47.42836 ++  "BFD_RELOC_AVR_LO8_LDI_PM_NEG",
47.42837 ++  "BFD_RELOC_AVR_HI8_LDI_PM_NEG",
47.42838 ++  "BFD_RELOC_AVR_HH8_LDI_PM_NEG",
47.42839 ++  "BFD_RELOC_AVR_CALL",
47.42840 ++  "BFD_RELOC_AVR_LDI",
47.42841 ++  "BFD_RELOC_AVR_6",
47.42842 ++  "BFD_RELOC_AVR_6_ADIW",
47.42843 ++  "BFD_RELOC_AVR32_DIFF32",
47.42844 ++  "BFD_RELOC_AVR32_DIFF16",
47.42845 ++  "BFD_RELOC_AVR32_DIFF8",
47.42846 ++  "BFD_RELOC_AVR32_GOT32",
47.42847 ++  "BFD_RELOC_AVR32_GOT16",
47.42848 ++  "BFD_RELOC_AVR32_GOT8",
47.42849 ++  "BFD_RELOC_AVR32_21S",
47.42850 ++  "BFD_RELOC_AVR32_16U",
47.42851 ++  "BFD_RELOC_AVR32_16S",
47.42852 ++  "BFD_RELOC_AVR32_SUB5",
47.42853 ++  "BFD_RELOC_AVR32_8S_EXT",
47.42854 ++  "BFD_RELOC_AVR32_8S",
47.42855 ++  "BFD_RELOC_AVR32_15S",
47.42856 ++  "BFD_RELOC_AVR32_22H_PCREL",
47.42857 ++  "BFD_RELOC_AVR32_18W_PCREL",
47.42858 ++  "BFD_RELOC_AVR32_16B_PCREL",
47.42859 ++  "BFD_RELOC_AVR32_16N_PCREL",
47.42860 ++  "BFD_RELOC_AVR32_14UW_PCREL",
47.42861 ++  "BFD_RELOC_AVR32_11H_PCREL",
47.42862 ++  "BFD_RELOC_AVR32_10UW_PCREL",
47.42863 ++  "BFD_RELOC_AVR32_9H_PCREL",
47.42864 ++  "BFD_RELOC_AVR32_9UW_PCREL",
47.42865 ++  "BFD_RELOC_AVR32_GOTPC",
47.42866 ++  "BFD_RELOC_AVR32_GOTCALL",
47.42867 ++  "BFD_RELOC_AVR32_LDA_GOT",
47.42868 ++  "BFD_RELOC_AVR32_GOT21S",
47.42869 ++  "BFD_RELOC_AVR32_GOT18SW",
47.42870 ++  "BFD_RELOC_AVR32_GOT16S",
47.42871 ++  "BFD_RELOC_AVR32_32_CPENT",
47.42872 ++  "BFD_RELOC_AVR32_CPCALL",
47.42873 ++  "BFD_RELOC_AVR32_16_CP",
47.42874 ++  "BFD_RELOC_AVR32_9W_CP",
47.42875 ++  "BFD_RELOC_AVR32_ALIGN",
47.42876 ++  "BFD_RELOC_AVR32_14UW",
47.42877 ++  "BFD_RELOC_AVR32_10UW",
47.42878 ++  "BFD_RELOC_AVR32_10SW",
47.42879 ++  "BFD_RELOC_AVR32_STHH_W",
47.42880 ++  "BFD_RELOC_AVR32_7UW",
47.42881 ++  "BFD_RELOC_AVR32_6S",
47.42882 ++  "BFD_RELOC_AVR32_6UW",
47.42883 ++  "BFD_RELOC_AVR32_4UH",
47.42884 ++  "BFD_RELOC_AVR32_3U",
47.42885 ++  "BFD_RELOC_390_12",
47.42886 ++  "BFD_RELOC_390_GOT12",
47.42887 ++  "BFD_RELOC_390_PLT32",
47.42888 ++  "BFD_RELOC_390_COPY",
47.42889 ++  "BFD_RELOC_390_GLOB_DAT",
47.42890 ++  "BFD_RELOC_390_JMP_SLOT",
47.42891 ++  "BFD_RELOC_390_RELATIVE",
47.42892 ++  "BFD_RELOC_390_GOTPC",
47.42893 ++  "BFD_RELOC_390_GOT16",
47.42894 ++  "BFD_RELOC_390_PC16DBL",
47.42895 ++  "BFD_RELOC_390_PLT16DBL",
47.42896 ++  "BFD_RELOC_390_PC32DBL",
47.42897 ++  "BFD_RELOC_390_PLT32DBL",
47.42898 ++  "BFD_RELOC_390_GOTPCDBL",
47.42899 ++  "BFD_RELOC_390_GOT64",
47.42900 ++  "BFD_RELOC_390_PLT64",
47.42901 ++  "BFD_RELOC_390_GOTENT",
47.42902 ++  "BFD_RELOC_390_GOTOFF64",
47.42903 ++  "BFD_RELOC_390_GOTPLT12",
47.42904 ++  "BFD_RELOC_390_GOTPLT16",
47.42905 ++  "BFD_RELOC_390_GOTPLT32",
47.42906 ++  "BFD_RELOC_390_GOTPLT64",
47.42907 ++  "BFD_RELOC_390_GOTPLTENT",
47.42908 ++  "BFD_RELOC_390_PLTOFF16",
47.42909 ++  "BFD_RELOC_390_PLTOFF32",
47.42910 ++  "BFD_RELOC_390_PLTOFF64",
47.42911 ++  "BFD_RELOC_390_TLS_LOAD",
47.42912 ++  "BFD_RELOC_390_TLS_GDCALL",
47.42913 ++  "BFD_RELOC_390_TLS_LDCALL",
47.42914 ++  "BFD_RELOC_390_TLS_GD32",
47.42915 ++  "BFD_RELOC_390_TLS_GD64",
47.42916 ++  "BFD_RELOC_390_TLS_GOTIE12",
47.42917 ++  "BFD_RELOC_390_TLS_GOTIE32",
47.42918 ++  "BFD_RELOC_390_TLS_GOTIE64",
47.42919 ++  "BFD_RELOC_390_TLS_LDM32",
47.42920 ++  "BFD_RELOC_390_TLS_LDM64",
47.42921 ++  "BFD_RELOC_390_TLS_IE32",
47.42922 ++  "BFD_RELOC_390_TLS_IE64",
47.42923 ++  "BFD_RELOC_390_TLS_IEENT",
47.42924 ++  "BFD_RELOC_390_TLS_LE32",
47.42925 ++  "BFD_RELOC_390_TLS_LE64",
47.42926 ++  "BFD_RELOC_390_TLS_LDO32",
47.42927 ++  "BFD_RELOC_390_TLS_LDO64",
47.42928 ++  "BFD_RELOC_390_TLS_DTPMOD",
47.42929 ++  "BFD_RELOC_390_TLS_DTPOFF",
47.42930 ++  "BFD_RELOC_390_TLS_TPOFF",
47.42931 ++  "BFD_RELOC_390_20",
47.42932 ++  "BFD_RELOC_390_GOT20",
47.42933 ++  "BFD_RELOC_390_GOTPLT20",
47.42934 ++  "BFD_RELOC_390_TLS_GOTIE20",
47.42935 ++  "BFD_RELOC_SCORE_DUMMY1",
47.42936 ++  "BFD_RELOC_SCORE_GPREL15",
47.42937 ++  "BFD_RELOC_SCORE_DUMMY2",
47.42938 ++  "BFD_RELOC_SCORE_JMP",
47.42939 ++  "BFD_RELOC_SCORE_BRANCH",
47.42940 ++  "BFD_RELOC_SCORE16_JMP",
47.42941 ++  "BFD_RELOC_SCORE16_BRANCH",
47.42942 ++  "BFD_RELOC_SCORE_GOT15",
47.42943 ++  "BFD_RELOC_SCORE_GOT_LO16",
47.42944 ++  "BFD_RELOC_SCORE_CALL15",
47.42945 ++  "BFD_RELOC_SCORE_DUMMY_HI16",
47.42946 ++  "BFD_RELOC_IP2K_FR9",
47.42947 ++  "BFD_RELOC_IP2K_BANK",
47.42948 ++  "BFD_RELOC_IP2K_ADDR16CJP",
47.42949 ++  "BFD_RELOC_IP2K_PAGE3",
47.42950 ++  "BFD_RELOC_IP2K_LO8DATA",
47.42951 ++  "BFD_RELOC_IP2K_HI8DATA",
47.42952 ++  "BFD_RELOC_IP2K_EX8DATA",
47.42953 ++  "BFD_RELOC_IP2K_LO8INSN",
47.42954 ++  "BFD_RELOC_IP2K_HI8INSN",
47.42955 ++  "BFD_RELOC_IP2K_PC_SKIP",
47.42956 ++  "BFD_RELOC_IP2K_TEXT",
47.42957 ++  "BFD_RELOC_IP2K_FR_OFFSET",
47.42958 ++  "BFD_RELOC_VPE4KMATH_DATA",
47.42959 ++  "BFD_RELOC_VPE4KMATH_INSN",
47.42960 ++  "BFD_RELOC_VTABLE_INHERIT",
47.42961 ++  "BFD_RELOC_VTABLE_ENTRY",
47.42962 ++  "BFD_RELOC_IA64_IMM14",
47.42963 ++  "BFD_RELOC_IA64_IMM22",
47.42964 ++  "BFD_RELOC_IA64_IMM64",
47.42965 ++  "BFD_RELOC_IA64_DIR32MSB",
47.42966 ++  "BFD_RELOC_IA64_DIR32LSB",
47.42967 ++  "BFD_RELOC_IA64_DIR64MSB",
47.42968 ++  "BFD_RELOC_IA64_DIR64LSB",
47.42969 ++  "BFD_RELOC_IA64_GPREL22",
47.42970 ++  "BFD_RELOC_IA64_GPREL64I",
47.42971 ++  "BFD_RELOC_IA64_GPREL32MSB",
47.42972 ++  "BFD_RELOC_IA64_GPREL32LSB",
47.42973 ++  "BFD_RELOC_IA64_GPREL64MSB",
47.42974 ++  "BFD_RELOC_IA64_GPREL64LSB",
47.42975 ++  "BFD_RELOC_IA64_LTOFF22",
47.42976 ++  "BFD_RELOC_IA64_LTOFF64I",
47.42977 ++  "BFD_RELOC_IA64_PLTOFF22",
47.42978 ++  "BFD_RELOC_IA64_PLTOFF64I",
47.42979 ++  "BFD_RELOC_IA64_PLTOFF64MSB",
47.42980 ++  "BFD_RELOC_IA64_PLTOFF64LSB",
47.42981 ++  "BFD_RELOC_IA64_FPTR64I",
47.42982 ++  "BFD_RELOC_IA64_FPTR32MSB",
47.42983 ++  "BFD_RELOC_IA64_FPTR32LSB",
47.42984 ++  "BFD_RELOC_IA64_FPTR64MSB",
47.42985 ++  "BFD_RELOC_IA64_FPTR64LSB",
47.42986 ++  "BFD_RELOC_IA64_PCREL21B",
47.42987 ++  "BFD_RELOC_IA64_PCREL21BI",
47.42988 ++  "BFD_RELOC_IA64_PCREL21M",
47.42989 ++  "BFD_RELOC_IA64_PCREL21F",
47.42990 ++  "BFD_RELOC_IA64_PCREL22",
47.42991 ++  "BFD_RELOC_IA64_PCREL60B",
47.42992 ++  "BFD_RELOC_IA64_PCREL64I",
47.42993 ++  "BFD_RELOC_IA64_PCREL32MSB",
47.42994 ++  "BFD_RELOC_IA64_PCREL32LSB",
47.42995 ++  "BFD_RELOC_IA64_PCREL64MSB",
47.42996 ++  "BFD_RELOC_IA64_PCREL64LSB",
47.42997 ++  "BFD_RELOC_IA64_LTOFF_FPTR22",
47.42998 ++  "BFD_RELOC_IA64_LTOFF_FPTR64I",
47.42999 ++  "BFD_RELOC_IA64_LTOFF_FPTR32MSB",
47.43000 ++  "BFD_RELOC_IA64_LTOFF_FPTR32LSB",
47.43001 ++  "BFD_RELOC_IA64_LTOFF_FPTR64MSB",
47.43002 ++  "BFD_RELOC_IA64_LTOFF_FPTR64LSB",
47.43003 ++  "BFD_RELOC_IA64_SEGREL32MSB",
47.43004 ++  "BFD_RELOC_IA64_SEGREL32LSB",
47.43005 ++  "BFD_RELOC_IA64_SEGREL64MSB",
47.43006 ++  "BFD_RELOC_IA64_SEGREL64LSB",
47.43007 ++  "BFD_RELOC_IA64_SECREL32MSB",
47.43008 ++  "BFD_RELOC_IA64_SECREL32LSB",
47.43009 ++  "BFD_RELOC_IA64_SECREL64MSB",
47.43010 ++  "BFD_RELOC_IA64_SECREL64LSB",
47.43011 ++  "BFD_RELOC_IA64_REL32MSB",
47.43012 ++  "BFD_RELOC_IA64_REL32LSB",
47.43013 ++  "BFD_RELOC_IA64_REL64MSB",
47.43014 ++  "BFD_RELOC_IA64_REL64LSB",
47.43015 ++  "BFD_RELOC_IA64_LTV32MSB",
47.43016 ++  "BFD_RELOC_IA64_LTV32LSB",
47.43017 ++  "BFD_RELOC_IA64_LTV64MSB",
47.43018 ++  "BFD_RELOC_IA64_LTV64LSB",
47.43019 ++  "BFD_RELOC_IA64_IPLTMSB",
47.43020 ++  "BFD_RELOC_IA64_IPLTLSB",
47.43021 ++  "BFD_RELOC_IA64_COPY",
47.43022 ++  "BFD_RELOC_IA64_LTOFF22X",
47.43023 ++  "BFD_RELOC_IA64_LDXMOV",
47.43024 ++  "BFD_RELOC_IA64_TPREL14",
47.43025 ++  "BFD_RELOC_IA64_TPREL22",
47.43026 ++  "BFD_RELOC_IA64_TPREL64I",
47.43027 ++  "BFD_RELOC_IA64_TPREL64MSB",
47.43028 ++  "BFD_RELOC_IA64_TPREL64LSB",
47.43029 ++  "BFD_RELOC_IA64_LTOFF_TPREL22",
47.43030 ++  "BFD_RELOC_IA64_DTPMOD64MSB",
47.43031 ++  "BFD_RELOC_IA64_DTPMOD64LSB",
47.43032 ++  "BFD_RELOC_IA64_LTOFF_DTPMOD22",
47.43033 ++  "BFD_RELOC_IA64_DTPREL14",
47.43034 ++  "BFD_RELOC_IA64_DTPREL22",
47.43035 ++  "BFD_RELOC_IA64_DTPREL64I",
47.43036 ++  "BFD_RELOC_IA64_DTPREL32MSB",
47.43037 ++  "BFD_RELOC_IA64_DTPREL32LSB",
47.43038 ++  "BFD_RELOC_IA64_DTPREL64MSB",
47.43039 ++  "BFD_RELOC_IA64_DTPREL64LSB",
47.43040 ++  "BFD_RELOC_IA64_LTOFF_DTPREL22",
47.43041 ++  "BFD_RELOC_M68HC11_HI8",
47.43042 ++  "BFD_RELOC_M68HC11_LO8",
47.43043 ++  "BFD_RELOC_M68HC11_3B",
47.43044 ++  "BFD_RELOC_M68HC11_RL_JUMP",
47.43045 ++  "BFD_RELOC_M68HC11_RL_GROUP",
47.43046 ++  "BFD_RELOC_M68HC11_LO16",
47.43047 ++  "BFD_RELOC_M68HC11_PAGE",
47.43048 ++  "BFD_RELOC_M68HC11_24",
47.43049 ++  "BFD_RELOC_M68HC12_5B",
47.43050 ++  "BFD_RELOC_16C_NUM08",
47.43051 ++  "BFD_RELOC_16C_NUM08_C",
47.43052 ++  "BFD_RELOC_16C_NUM16",
47.43053 ++  "BFD_RELOC_16C_NUM16_C",
47.43054 ++  "BFD_RELOC_16C_NUM32",
47.43055 ++  "BFD_RELOC_16C_NUM32_C",
47.43056 ++  "BFD_RELOC_16C_DISP04",
47.43057 ++  "BFD_RELOC_16C_DISP04_C",
47.43058 ++  "BFD_RELOC_16C_DISP08",
47.43059 ++  "BFD_RELOC_16C_DISP08_C",
47.43060 ++  "BFD_RELOC_16C_DISP16",
47.43061 ++  "BFD_RELOC_16C_DISP16_C",
47.43062 ++  "BFD_RELOC_16C_DISP24",
47.43063 ++  "BFD_RELOC_16C_DISP24_C",
47.43064 ++  "BFD_RELOC_16C_DISP24a",
47.43065 ++  "BFD_RELOC_16C_DISP24a_C",
47.43066 ++  "BFD_RELOC_16C_REG04",
47.43067 ++  "BFD_RELOC_16C_REG04_C",
47.43068 ++  "BFD_RELOC_16C_REG04a",
47.43069 ++  "BFD_RELOC_16C_REG04a_C",
47.43070 ++  "BFD_RELOC_16C_REG14",
47.43071 ++  "BFD_RELOC_16C_REG14_C",
47.43072 ++  "BFD_RELOC_16C_REG16",
47.43073 ++  "BFD_RELOC_16C_REG16_C",
47.43074 ++  "BFD_RELOC_16C_REG20",
47.43075 ++  "BFD_RELOC_16C_REG20_C",
47.43076 ++  "BFD_RELOC_16C_ABS20",
47.43077 ++  "BFD_RELOC_16C_ABS20_C",
47.43078 ++  "BFD_RELOC_16C_ABS24",
47.43079 ++  "BFD_RELOC_16C_ABS24_C",
47.43080 ++  "BFD_RELOC_16C_IMM04",
47.43081 ++  "BFD_RELOC_16C_IMM04_C",
47.43082 ++  "BFD_RELOC_16C_IMM16",
47.43083 ++  "BFD_RELOC_16C_IMM16_C",
47.43084 ++  "BFD_RELOC_16C_IMM20",
47.43085 ++  "BFD_RELOC_16C_IMM20_C",
47.43086 ++  "BFD_RELOC_16C_IMM24",
47.43087 ++  "BFD_RELOC_16C_IMM24_C",
47.43088 ++  "BFD_RELOC_16C_IMM32",
47.43089 ++  "BFD_RELOC_16C_IMM32_C",
47.43090 ++  "BFD_RELOC_CR16_NUM8",
47.43091 ++  "BFD_RELOC_CR16_NUM16",
47.43092 ++  "BFD_RELOC_CR16_NUM32",
47.43093 ++  "BFD_RELOC_CR16_NUM32a",
47.43094 ++  "BFD_RELOC_CR16_REGREL0",
47.43095 ++  "BFD_RELOC_CR16_REGREL4",
47.43096 ++  "BFD_RELOC_CR16_REGREL4a",
47.43097 ++  "BFD_RELOC_CR16_REGREL14",
47.43098 ++  "BFD_RELOC_CR16_REGREL14a",
47.43099 ++  "BFD_RELOC_CR16_REGREL16",
47.43100 ++  "BFD_RELOC_CR16_REGREL20",
47.43101 ++  "BFD_RELOC_CR16_REGREL20a",
47.43102 ++  "BFD_RELOC_CR16_ABS20",
47.43103 ++  "BFD_RELOC_CR16_ABS24",
47.43104 ++  "BFD_RELOC_CR16_IMM4",
47.43105 ++  "BFD_RELOC_CR16_IMM8",
47.43106 ++  "BFD_RELOC_CR16_IMM16",
47.43107 ++  "BFD_RELOC_CR16_IMM20",
47.43108 ++  "BFD_RELOC_CR16_IMM24",
47.43109 ++  "BFD_RELOC_CR16_IMM32",
47.43110 ++  "BFD_RELOC_CR16_IMM32a",
47.43111 ++  "BFD_RELOC_CR16_DISP4",
47.43112 ++  "BFD_RELOC_CR16_DISP8",
47.43113 ++  "BFD_RELOC_CR16_DISP16",
47.43114 ++  "BFD_RELOC_CR16_DISP20",
47.43115 ++  "BFD_RELOC_CR16_DISP24",
47.43116 ++  "BFD_RELOC_CR16_DISP24a",
47.43117 ++  "BFD_RELOC_CRX_REL4",
47.43118 ++  "BFD_RELOC_CRX_REL8",
47.43119 ++  "BFD_RELOC_CRX_REL8_CMP",
47.43120 ++  "BFD_RELOC_CRX_REL16",
47.43121 ++  "BFD_RELOC_CRX_REL24",
47.43122 ++  "BFD_RELOC_CRX_REL32",
47.43123 ++  "BFD_RELOC_CRX_REGREL12",
47.43124 ++  "BFD_RELOC_CRX_REGREL22",
47.43125 ++  "BFD_RELOC_CRX_REGREL28",
47.43126 ++  "BFD_RELOC_CRX_REGREL32",
47.43127 ++  "BFD_RELOC_CRX_ABS16",
47.43128 ++  "BFD_RELOC_CRX_ABS32",
47.43129 ++  "BFD_RELOC_CRX_NUM8",
47.43130 ++  "BFD_RELOC_CRX_NUM16",
47.43131 ++  "BFD_RELOC_CRX_NUM32",
47.43132 ++  "BFD_RELOC_CRX_IMM16",
47.43133 ++  "BFD_RELOC_CRX_IMM32",
47.43134 ++  "BFD_RELOC_CRX_SWITCH8",
47.43135 ++  "BFD_RELOC_CRX_SWITCH16",
47.43136 ++  "BFD_RELOC_CRX_SWITCH32",
47.43137 ++  "BFD_RELOC_CRIS_BDISP8",
47.43138 ++  "BFD_RELOC_CRIS_UNSIGNED_5",
47.43139 ++  "BFD_RELOC_CRIS_SIGNED_6",
47.43140 ++  "BFD_RELOC_CRIS_UNSIGNED_6",
47.43141 ++  "BFD_RELOC_CRIS_SIGNED_8",
47.43142 ++  "BFD_RELOC_CRIS_UNSIGNED_8",
47.43143 ++  "BFD_RELOC_CRIS_SIGNED_16",
47.43144 ++  "BFD_RELOC_CRIS_UNSIGNED_16",
47.43145 ++  "BFD_RELOC_CRIS_LAPCQ_OFFSET",
47.43146 ++  "BFD_RELOC_CRIS_UNSIGNED_4",
47.43147 ++  "BFD_RELOC_CRIS_COPY",
47.43148 ++  "BFD_RELOC_CRIS_GLOB_DAT",
47.43149 ++  "BFD_RELOC_CRIS_JUMP_SLOT",
47.43150 ++  "BFD_RELOC_CRIS_RELATIVE",
47.43151 ++  "BFD_RELOC_CRIS_32_GOT",
47.43152 ++  "BFD_RELOC_CRIS_16_GOT",
47.43153 ++  "BFD_RELOC_CRIS_32_GOTPLT",
47.43154 ++  "BFD_RELOC_CRIS_16_GOTPLT",
47.43155 ++  "BFD_RELOC_CRIS_32_GOTREL",
47.43156 ++  "BFD_RELOC_CRIS_32_PLT_GOTREL",
47.43157 ++  "BFD_RELOC_CRIS_32_PLT_PCREL",
47.43158 ++  "BFD_RELOC_860_COPY",
47.43159 ++  "BFD_RELOC_860_GLOB_DAT",
47.43160 ++  "BFD_RELOC_860_JUMP_SLOT",
47.43161 ++  "BFD_RELOC_860_RELATIVE",
47.43162 ++  "BFD_RELOC_860_PC26",
47.43163 ++  "BFD_RELOC_860_PLT26",
47.43164 ++  "BFD_RELOC_860_PC16",
47.43165 ++  "BFD_RELOC_860_LOW0",
47.43166 ++  "BFD_RELOC_860_SPLIT0",
47.43167 ++  "BFD_RELOC_860_LOW1",
47.43168 ++  "BFD_RELOC_860_SPLIT1",
47.43169 ++  "BFD_RELOC_860_LOW2",
47.43170 ++  "BFD_RELOC_860_SPLIT2",
47.43171 ++  "BFD_RELOC_860_LOW3",
47.43172 ++  "BFD_RELOC_860_LOGOT0",
47.43173 ++  "BFD_RELOC_860_SPGOT0",
47.43174 ++  "BFD_RELOC_860_LOGOT1",
47.43175 ++  "BFD_RELOC_860_SPGOT1",
47.43176 ++  "BFD_RELOC_860_LOGOTOFF0",
47.43177 ++  "BFD_RELOC_860_SPGOTOFF0",
47.43178 ++  "BFD_RELOC_860_LOGOTOFF1",
47.43179 ++  "BFD_RELOC_860_SPGOTOFF1",
47.43180 ++  "BFD_RELOC_860_LOGOTOFF2",
47.43181 ++  "BFD_RELOC_860_LOGOTOFF3",
47.43182 ++  "BFD_RELOC_860_LOPC",
47.43183 ++  "BFD_RELOC_860_HIGHADJ",
47.43184 ++  "BFD_RELOC_860_HAGOT",
47.43185 ++  "BFD_RELOC_860_HAGOTOFF",
47.43186 ++  "BFD_RELOC_860_HAPC",
47.43187 ++  "BFD_RELOC_860_HIGH",
47.43188 ++  "BFD_RELOC_860_HIGOT",
47.43189 ++  "BFD_RELOC_860_HIGOTOFF",
47.43190 ++  "BFD_RELOC_OPENRISC_ABS_26",
47.43191 ++  "BFD_RELOC_OPENRISC_REL_26",
47.43192 ++  "BFD_RELOC_H8_DIR16A8",
47.43193 ++  "BFD_RELOC_H8_DIR16R8",
47.43194 ++  "BFD_RELOC_H8_DIR24A8",
47.43195 ++  "BFD_RELOC_H8_DIR24R8",
47.43196 ++  "BFD_RELOC_H8_DIR32A16",
47.43197 ++  "BFD_RELOC_XSTORMY16_REL_12",
47.43198 ++  "BFD_RELOC_XSTORMY16_12",
47.43199 ++  "BFD_RELOC_XSTORMY16_24",
47.43200 ++  "BFD_RELOC_XSTORMY16_FPTR16",
47.43201 ++  "BFD_RELOC_RELC",
47.43202 ++
47.43203 ++  "BFD_RELOC_XC16X_PAG",
47.43204 ++  "BFD_RELOC_XC16X_POF",
47.43205 ++  "BFD_RELOC_XC16X_SEG",
47.43206 ++  "BFD_RELOC_XC16X_SOF",
47.43207 ++  "BFD_RELOC_VAX_GLOB_DAT",
47.43208 ++  "BFD_RELOC_VAX_JMP_SLOT",
47.43209 ++  "BFD_RELOC_VAX_RELATIVE",
47.43210 ++  "BFD_RELOC_MT_PC16",
47.43211 ++  "BFD_RELOC_MT_HI16",
47.43212 ++  "BFD_RELOC_MT_LO16",
47.43213 ++  "BFD_RELOC_MT_GNU_VTINHERIT",
47.43214 ++  "BFD_RELOC_MT_GNU_VTENTRY",
47.43215 ++  "BFD_RELOC_MT_PCINSN8",
47.43216 ++  "BFD_RELOC_MSP430_10_PCREL",
47.43217 ++  "BFD_RELOC_MSP430_16_PCREL",
47.43218 ++  "BFD_RELOC_MSP430_16",
47.43219 ++  "BFD_RELOC_MSP430_16_PCREL_BYTE",
47.43220 ++  "BFD_RELOC_MSP430_16_BYTE",
47.43221 ++  "BFD_RELOC_MSP430_2X_PCREL",
47.43222 ++  "BFD_RELOC_MSP430_RL_PCREL",
47.43223 ++  "BFD_RELOC_IQ2000_OFFSET_16",
47.43224 ++  "BFD_RELOC_IQ2000_OFFSET_21",
47.43225 ++  "BFD_RELOC_IQ2000_UHI16",
47.43226 ++  "BFD_RELOC_XTENSA_RTLD",
47.43227 ++  "BFD_RELOC_XTENSA_GLOB_DAT",
47.43228 ++  "BFD_RELOC_XTENSA_JMP_SLOT",
47.43229 ++  "BFD_RELOC_XTENSA_RELATIVE",
47.43230 ++  "BFD_RELOC_XTENSA_PLT",
47.43231 ++  "BFD_RELOC_XTENSA_DIFF8",
47.43232 ++  "BFD_RELOC_XTENSA_DIFF16",
47.43233 ++  "BFD_RELOC_XTENSA_DIFF32",
47.43234 ++  "BFD_RELOC_XTENSA_SLOT0_OP",
47.43235 ++  "BFD_RELOC_XTENSA_SLOT1_OP",
47.43236 ++  "BFD_RELOC_XTENSA_SLOT2_OP",
47.43237 ++  "BFD_RELOC_XTENSA_SLOT3_OP",
47.43238 ++  "BFD_RELOC_XTENSA_SLOT4_OP",
47.43239 ++  "BFD_RELOC_XTENSA_SLOT5_OP",
47.43240 ++  "BFD_RELOC_XTENSA_SLOT6_OP",
47.43241 ++  "BFD_RELOC_XTENSA_SLOT7_OP",
47.43242 ++  "BFD_RELOC_XTENSA_SLOT8_OP",
47.43243 ++  "BFD_RELOC_XTENSA_SLOT9_OP",
47.43244 ++  "BFD_RELOC_XTENSA_SLOT10_OP",
47.43245 ++  "BFD_RELOC_XTENSA_SLOT11_OP",
47.43246 ++  "BFD_RELOC_XTENSA_SLOT12_OP",
47.43247 ++  "BFD_RELOC_XTENSA_SLOT13_OP",
47.43248 ++  "BFD_RELOC_XTENSA_SLOT14_OP",
47.43249 ++  "BFD_RELOC_XTENSA_SLOT0_ALT",
47.43250 ++  "BFD_RELOC_XTENSA_SLOT1_ALT",
47.43251 ++  "BFD_RELOC_XTENSA_SLOT2_ALT",
47.43252 ++  "BFD_RELOC_XTENSA_SLOT3_ALT",
47.43253 ++  "BFD_RELOC_XTENSA_SLOT4_ALT",
47.43254 ++  "BFD_RELOC_XTENSA_SLOT5_ALT",
47.43255 ++  "BFD_RELOC_XTENSA_SLOT6_ALT",
47.43256 ++  "BFD_RELOC_XTENSA_SLOT7_ALT",
47.43257 ++  "BFD_RELOC_XTENSA_SLOT8_ALT",
47.43258 ++  "BFD_RELOC_XTENSA_SLOT9_ALT",
47.43259 ++  "BFD_RELOC_XTENSA_SLOT10_ALT",
47.43260 ++  "BFD_RELOC_XTENSA_SLOT11_ALT",
47.43261 ++  "BFD_RELOC_XTENSA_SLOT12_ALT",
47.43262 ++  "BFD_RELOC_XTENSA_SLOT13_ALT",
47.43263 ++  "BFD_RELOC_XTENSA_SLOT14_ALT",
47.43264 ++  "BFD_RELOC_XTENSA_OP0",
47.43265 ++  "BFD_RELOC_XTENSA_OP1",
47.43266 ++  "BFD_RELOC_XTENSA_OP2",
47.43267 ++  "BFD_RELOC_XTENSA_ASM_EXPAND",
47.43268 ++  "BFD_RELOC_XTENSA_ASM_SIMPLIFY",
47.43269 ++  "BFD_RELOC_Z80_DISP8",
47.43270 ++  "BFD_RELOC_Z8K_DISP7",
47.43271 ++  "BFD_RELOC_Z8K_CALLR",
47.43272 ++  "BFD_RELOC_Z8K_IMM4L",
47.43273 ++ "@@overflow: BFD_RELOC_UNUSED@@",
47.43274 ++};
47.43275 ++#endif
47.43276 ++
47.43277 ++reloc_howto_type *bfd_default_reloc_type_lookup
47.43278 ++   (bfd *abfd, bfd_reloc_code_real_type  code);
47.43279 ++
47.43280 ++bfd_boolean bfd_generic_relax_section
47.43281 ++   (bfd *abfd,
47.43282 ++    asection *section,
47.43283 ++    struct bfd_link_info *,
47.43284 ++    bfd_boolean *);
47.43285 ++
47.43286 ++bfd_boolean bfd_generic_gc_sections
47.43287 ++   (bfd *, struct bfd_link_info *);
47.43288 ++
47.43289 ++bfd_boolean bfd_generic_merge_sections
47.43290 ++   (bfd *, struct bfd_link_info *);
47.43291 ++
47.43292 ++bfd_byte *bfd_generic_get_relocated_section_contents
47.43293 ++   (bfd *abfd,
47.43294 ++    struct bfd_link_info *link_info,
47.43295 ++    struct bfd_link_order *link_order,
47.43296 ++    bfd_byte *data,
47.43297 ++    bfd_boolean relocatable,
47.43298 ++    asymbol **symbols);
47.43299 ++
47.43300 ++/* Extracted from archures.c.  */
47.43301 ++extern const bfd_arch_info_type bfd_default_arch_struct;
47.43302 ++bfd_boolean bfd_default_set_arch_mach
47.43303 ++   (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
47.43304 ++
47.43305 ++const bfd_arch_info_type *bfd_default_compatible
47.43306 ++   (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
47.43307 ++
47.43308 ++bfd_boolean bfd_default_scan
47.43309 ++   (const struct bfd_arch_info *info, const char *string);
47.43310 ++
47.43311 ++/* Extracted from elf.c.  */
47.43312 ++struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
47.43313 ++
47.43314 +--- /dev/null
47.43315 ++++ b/bfd/doc/libcoff.h
47.43316 +@@ -0,0 +1,936 @@
47.43317 ++/* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically 
47.43318 ++   generated from "libcoff-in.h" and "coffcode.h".
47.43319 ++   Run "make headers" in your build bfd/ to regenerate.  */
47.43320 ++
47.43321 ++/* BFD COFF object file private structure.
47.43322 ++   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
47.43323 ++   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
47.43324 ++   Free Software Foundation, Inc.
47.43325 ++   Written by Cygnus Support.
47.43326 ++
47.43327 ++   This file is part of BFD, the Binary File Descriptor library.
47.43328 ++
47.43329 ++   This program is free software; you can redistribute it and/or modify
47.43330 ++   it under the terms of the GNU General Public License as published by
47.43331 ++   the Free Software Foundation; either version 3 of the License, or
47.43332 ++   (at your option) any later version.
47.43333 ++
47.43334 ++   This program is distributed in the hope that it will be useful,
47.43335 ++   but WITHOUT ANY WARRANTY; without even the implied warranty of
47.43336 ++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
47.43337 ++   GNU General Public License for more details.
47.43338 ++
47.43339 ++   You should have received a copy of the GNU General Public License
47.43340 ++   along with this program; if not, write to the Free Software
47.43341 ++   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
47.43342 ++   MA 02110-1301, USA.  */
47.43343 ++
47.43344 ++#include "bfdlink.h"
47.43345 ++
47.43346 ++/* Object file tdata; access macros.  */
47.43347 ++
47.43348 ++#define coff_data(bfd)		      ((bfd)->tdata.coff_obj_data)
47.43349 ++#define exec_hdr(bfd)		      (coff_data (bfd)->hdr)
47.43350 ++#define obj_pe(bfd)                   (coff_data (bfd)->pe)
47.43351 ++#define obj_symbols(bfd)	      (coff_data (bfd)->symbols)
47.43352 ++#define	obj_sym_filepos(bfd)	      (coff_data (bfd)->sym_filepos)
47.43353 ++#define obj_relocbase(bfd)	      (coff_data (bfd)->relocbase)
47.43354 ++#define obj_raw_syments(bfd)	      (coff_data (bfd)->raw_syments)
47.43355 ++#define obj_raw_syment_count(bfd)     (coff_data (bfd)->raw_syment_count)
47.43356 ++#define obj_convert(bfd)	      (coff_data (bfd)->conversion_table)
47.43357 ++#define obj_conv_table_size(bfd)      (coff_data (bfd)->conv_table_size)
47.43358 ++#define obj_coff_external_syms(bfd)   (coff_data (bfd)->external_syms)
47.43359 ++#define obj_coff_keep_syms(bfd)	      (coff_data (bfd)->keep_syms)
47.43360 ++#define obj_coff_strings(bfd)	      (coff_data (bfd)->strings)
47.43361 ++#define obj_coff_keep_strings(bfd)    (coff_data (bfd)->keep_strings)
47.43362 ++#define obj_coff_sym_hashes(bfd)      (coff_data (bfd)->sym_hashes)
47.43363 ++#define obj_coff_strings_written(bfd) (coff_data (bfd)->strings_written)
47.43364 ++#define obj_coff_local_toc_table(bfd) (coff_data (bfd)->local_toc_sym_map)
47.43365 ++
47.43366 ++/* `Tdata' information kept for COFF files.  */
47.43367 ++
47.43368 ++typedef struct coff_tdata
47.43369 ++{
47.43370 ++  struct coff_symbol_struct *symbols;	/* Symtab for input bfd.  */
47.43371 ++  unsigned int *conversion_table;
47.43372 ++  int conv_table_size;
47.43373 ++  file_ptr sym_filepos;
47.43374 ++
47.43375 ++  struct coff_ptr_struct *raw_syments;
47.43376 ++  unsigned long raw_syment_count;
47.43377 ++
47.43378 ++  /* These are only valid once writing has begun.  */
47.43379 ++  long int relocbase;
47.43380 ++
47.43381 ++  /* These members communicate important constants about the symbol table
47.43382 ++     to GDB's symbol-reading code.  These `constants' unfortunately vary
47.43383 ++     from coff implementation to implementation...  */
47.43384 ++  unsigned local_n_btmask;
47.43385 ++  unsigned local_n_btshft;
47.43386 ++  unsigned local_n_tmask;
47.43387 ++  unsigned local_n_tshift;
47.43388 ++  unsigned local_symesz;
47.43389 ++  unsigned local_auxesz;
47.43390 ++  unsigned local_linesz;
47.43391 ++
47.43392 ++  /* The unswapped external symbols.  May be NULL.  Read by
47.43393 ++     _bfd_coff_get_external_symbols.  */
47.43394 ++  void * external_syms;
47.43395 ++  /* If this is TRUE, the external_syms may not be freed.  */
47.43396 ++  bfd_boolean keep_syms;
47.43397 ++
47.43398 ++  /* The string table.  May be NULL.  Read by
47.43399 ++     _bfd_coff_read_string_table.  */
47.43400 ++  char *strings;
47.43401 ++  /* If this is TRUE, the strings may not be freed.  */
47.43402 ++  bfd_boolean keep_strings;
47.43403 ++  /* If this is TRUE, the strings have been written out already.  */
47.43404 ++  bfd_boolean strings_written;
47.43405 ++
47.43406 ++  /* Is this a PE format coff file?  */
47.43407 ++  int pe;
47.43408 ++  /* Used by the COFF backend linker.  */
47.43409 ++  struct coff_link_hash_entry **sym_hashes;
47.43410 ++
47.43411 ++  /* Used by the pe linker for PowerPC.  */
47.43412 ++  int *local_toc_sym_map;
47.43413 ++
47.43414 ++  struct bfd_link_info *link_info;
47.43415 ++
47.43416 ++  /* Used by coff_find_nearest_line.  */
47.43417 ++  void * line_info;
47.43418 ++
47.43419 ++  /* A place to stash dwarf2 info for this bfd.  */
47.43420 ++  void * dwarf2_find_line_info;
47.43421 ++
47.43422 ++  /* The timestamp from the COFF file header.  */
47.43423 ++  long timestamp;
47.43424 ++
47.43425 ++  /* Copy of some of the f_flags bits in the COFF filehdr structure,
47.43426 ++     used by ARM code.  */
47.43427 ++  flagword flags;
47.43428 ++
47.43429 ++} coff_data_type;
47.43430 ++
47.43431 ++/* Tdata for pe image files.  */
47.43432 ++typedef struct pe_tdata
47.43433 ++{
47.43434 ++  coff_data_type coff;
47.43435 ++  struct internal_extra_pe_aouthdr pe_opthdr;
47.43436 ++  int dll;
47.43437 ++  int has_reloc_section;
47.43438 ++  bfd_boolean (*in_reloc_p) (bfd *, reloc_howto_type *);
47.43439 ++  flagword real_flags;
47.43440 ++  int target_subsystem;
47.43441 ++  bfd_boolean force_minimum_alignment;
47.43442 ++} pe_data_type;
47.43443 ++
47.43444 ++#define pe_data(bfd)		((bfd)->tdata.pe_obj_data)
47.43445 ++
47.43446 ++/* Tdata for XCOFF files.  */
47.43447 ++
47.43448 ++struct xcoff_tdata
47.43449 ++{
47.43450 ++  /* Basic COFF information.  */
47.43451 ++  coff_data_type coff;
47.43452 ++
47.43453 ++  /* TRUE if this is an XCOFF64 file. */
47.43454 ++  bfd_boolean xcoff64;
47.43455 ++
47.43456 ++  /* TRUE if a large a.out header should be generated.  */
47.43457 ++  bfd_boolean full_aouthdr;
47.43458 ++
47.43459 ++  /* TOC value.  */
47.43460 ++  bfd_vma toc;
47.43461 ++
47.43462 ++  /* Index of section holding TOC.  */
47.43463 ++  int sntoc;
47.43464 ++
47.43465 ++  /* Index of section holding entry point.  */
47.43466 ++  int snentry;
47.43467 ++
47.43468 ++  /* .text alignment from optional header.  */
47.43469 ++  int text_align_power;
47.43470 ++
47.43471 ++  /* .data alignment from optional header.  */
47.43472 ++  int data_align_power;
47.43473 ++
47.43474 ++  /* modtype from optional header.  */
47.43475 ++  short modtype;
47.43476 ++
47.43477 ++  /* cputype from optional header.  */
47.43478 ++  short cputype;
47.43479 ++
47.43480 ++  /* maxdata from optional header.  */
47.43481 ++  bfd_vma maxdata;
47.43482 ++
47.43483 ++  /* maxstack from optional header.  */
47.43484 ++  bfd_vma maxstack;
47.43485 ++
47.43486 ++  /* Used by the XCOFF backend linker.  */
47.43487 ++  asection **csects;
47.43488 ++  unsigned long *debug_indices;
47.43489 ++  unsigned int import_file_id;
47.43490 ++};
47.43491 ++
47.43492 ++#define xcoff_data(abfd) ((abfd)->tdata.xcoff_obj_data)
47.43493 ++
47.43494 ++/* We take the address of the first element of an asymbol to ensure that the
47.43495 ++   macro is only ever applied to an asymbol.  */
47.43496 ++#define coffsymbol(asymbol) ((coff_symbol_type *)(&((asymbol)->the_bfd)))
47.43497 ++
47.43498 ++/* The used_by_bfd field of a section may be set to a pointer to this
47.43499 ++   structure.  */
47.43500 ++
47.43501 ++struct coff_section_tdata
47.43502 ++{
47.43503 ++  /* The relocs, swapped into COFF internal form.  This may be NULL.  */
47.43504 ++  struct internal_reloc *relocs;
47.43505 ++  /* If this is TRUE, the relocs entry may not be freed.  */
47.43506 ++  bfd_boolean keep_relocs;
47.43507 ++  /* The section contents.  This may be NULL.  */
47.43508 ++  bfd_byte *contents;
47.43509 ++  /* If this is TRUE, the contents entry may not be freed.  */
47.43510 ++  bfd_boolean keep_contents;
47.43511 ++  /* Information cached by coff_find_nearest_line.  */
47.43512 ++  bfd_vma offset;
47.43513 ++  unsigned int i;
47.43514 ++  const char *function;
47.43515 ++  /* Optional information about a COMDAT entry; NULL if not COMDAT. */
47.43516 ++  struct coff_comdat_info *comdat;
47.43517 ++  int line_base;
47.43518 ++  /* A pointer used for .stab linking optimizations.  */
47.43519 ++  void * stab_info;
47.43520 ++  /* Available for individual backends.  */
47.43521 ++  void * tdata;
47.43522 ++};
47.43523 ++
47.43524 ++/* An accessor macro for the coff_section_tdata structure.  */
47.43525 ++#define coff_section_data(abfd, sec) \
47.43526 ++  ((struct coff_section_tdata *) (sec)->used_by_bfd)
47.43527 ++
47.43528 ++/* Tdata for sections in XCOFF files.  This is used by the linker.  */
47.43529 ++
47.43530 ++struct xcoff_section_tdata
47.43531 ++{
47.43532 ++  /* Used for XCOFF csects created by the linker; points to the real
47.43533 ++     XCOFF section which contains this csect.  */
47.43534 ++  asection *enclosing;
47.43535 ++  /* The lineno_count field for the enclosing section, because we are
47.43536 ++     going to clobber it there.  */
47.43537 ++  unsigned int lineno_count;
47.43538 ++  /* The first and one past the last symbol indices for symbols used
47.43539 ++     by this csect.  */
47.43540 ++  unsigned long first_symndx;
47.43541 ++  unsigned long last_symndx;
47.43542 ++};
47.43543 ++
47.43544 ++/* An accessor macro the xcoff_section_tdata structure.  */
47.43545 ++#define xcoff_section_data(abfd, sec) \
47.43546 ++  ((struct xcoff_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
47.43547 ++
47.43548 ++/* Tdata for sections in PE files.  */
47.43549 ++
47.43550 ++struct pei_section_tdata
47.43551 ++{
47.43552 ++  /* The virtual size of the section.  */
47.43553 ++  bfd_size_type virt_size;
47.43554 ++  /* The PE section flags.  */
47.43555 ++  long pe_flags;
47.43556 ++};
47.43557 ++
47.43558 ++/* An accessor macro for the pei_section_tdata structure.  */
47.43559 ++#define pei_section_data(abfd, sec) \
47.43560 ++  ((struct pei_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
47.43561 ++
47.43562 ++/* COFF linker hash table entries.  */
47.43563 ++
47.43564 ++struct coff_link_hash_entry
47.43565 ++{
47.43566 ++  struct bfd_link_hash_entry root;
47.43567 ++
47.43568 ++  /* Symbol index in output file.  Set to -1 initially.  Set to -2 if
47.43569 ++     there is a reloc against this symbol.  */
47.43570 ++  long indx;
47.43571 ++
47.43572 ++  /* Symbol type.  */
47.43573 ++  unsigned short type;
47.43574 ++
47.43575 ++  /* Symbol class.  */
47.43576 ++  unsigned char class;
47.43577 ++
47.43578 ++  /* Number of auxiliary entries.  */
47.43579 ++  char numaux;
47.43580 ++
47.43581 ++  /* BFD to take auxiliary entries from.  */
47.43582 ++  bfd *auxbfd;
47.43583 ++
47.43584 ++  /* Pointer to array of auxiliary entries, if any.  */
47.43585 ++  union internal_auxent *aux;
47.43586 ++
47.43587 ++  /* Flag word; legal values follow.  */
47.43588 ++  unsigned short coff_link_hash_flags;
47.43589 ++  /* Symbol is a PE section symbol.  */
47.43590 ++#define COFF_LINK_HASH_PE_SECTION_SYMBOL (01)
47.43591 ++};
47.43592 ++
47.43593 ++/* COFF linker hash table.  */
47.43594 ++
47.43595 ++struct coff_link_hash_table
47.43596 ++{
47.43597 ++  struct bfd_link_hash_table root;
47.43598 ++  /* A pointer to information used to link stabs in sections.  */
47.43599 ++  struct stab_info stab_info;
47.43600 ++};
47.43601 ++
47.43602 ++/* Look up an entry in a COFF linker hash table.  */
47.43603 ++
47.43604 ++#define coff_link_hash_lookup(table, string, create, copy, follow)	\
47.43605 ++  ((struct coff_link_hash_entry *)					\
47.43606 ++   bfd_link_hash_lookup (&(table)->root, (string), (create),		\
47.43607 ++			 (copy), (follow)))
47.43608 ++
47.43609 ++/* Traverse a COFF linker hash table.  */
47.43610 ++
47.43611 ++#define coff_link_hash_traverse(table, func, info)			\
47.43612 ++  (bfd_link_hash_traverse						\
47.43613 ++   (&(table)->root,							\
47.43614 ++    (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func), \
47.43615 ++    (info)))
47.43616 ++
47.43617 ++/* Get the COFF linker hash table from a link_info structure.  */
47.43618 ++
47.43619 ++#define coff_hash_table(p) ((struct coff_link_hash_table *) ((p)->hash))
47.43620 ++
47.43621 ++/* Functions in coffgen.c.  */
47.43622 ++extern const bfd_target *coff_object_p
47.43623 ++  (bfd *);
47.43624 ++extern struct bfd_section *coff_section_from_bfd_index
47.43625 ++  (bfd *, int);
47.43626 ++extern long coff_get_symtab_upper_bound
47.43627 ++  (bfd *);
47.43628 ++extern long coff_canonicalize_symtab
47.43629 ++  (bfd *, asymbol **);
47.43630 ++extern int coff_count_linenumbers
47.43631 ++  (bfd *);
47.43632 ++extern struct coff_symbol_struct *coff_symbol_from
47.43633 ++  (bfd *, asymbol *);
47.43634 ++extern bfd_boolean coff_renumber_symbols
47.43635 ++  (bfd *, int *);
47.43636 ++extern void coff_mangle_symbols
47.43637 ++  (bfd *);
47.43638 ++extern bfd_boolean coff_write_symbols
47.43639 ++  (bfd *);
47.43640 ++extern bfd_boolean coff_write_linenumbers
47.43641 ++  (bfd *);
47.43642 ++extern alent *coff_get_lineno
47.43643 ++  (bfd *, asymbol *);
47.43644 ++extern asymbol *coff_section_symbol
47.43645 ++  (bfd *, char *);
47.43646 ++extern bfd_boolean _bfd_coff_get_external_symbols
47.43647 ++  (bfd *);
47.43648 ++extern const char *_bfd_coff_read_string_table
47.43649 ++  (bfd *);
47.43650 ++extern bfd_boolean _bfd_coff_free_symbols
47.43651 ++  (bfd *);
47.43652 ++extern struct coff_ptr_struct *coff_get_normalized_symtab
47.43653 ++  (bfd *);
47.43654 ++extern long coff_get_reloc_upper_bound
47.43655 ++  (bfd *, sec_ptr);
47.43656 ++extern asymbol *coff_make_empty_symbol
47.43657 ++  (bfd *);
47.43658 ++extern void coff_print_symbol
47.43659 ++  (bfd *, void * filep, asymbol *, bfd_print_symbol_type);
47.43660 ++extern void coff_get_symbol_info
47.43661 ++  (bfd *, asymbol *, symbol_info *ret);
47.43662 ++extern bfd_boolean _bfd_coff_is_local_label_name
47.43663 ++  (bfd *, const char *);
47.43664 ++extern asymbol *coff_bfd_make_debug_symbol
47.43665 ++  (bfd *, void *, unsigned long);
47.43666 ++extern bfd_boolean coff_find_nearest_line
47.43667 ++  (bfd *, asection *, asymbol **, bfd_vma, const char **,
47.43668 ++   const char **, unsigned int *);
47.43669 ++extern bfd_boolean coff_find_inliner_info
47.43670 ++  (bfd *, const char **, const char **, unsigned int *);
47.43671 ++extern int coff_sizeof_headers
47.43672 ++  (bfd *, struct bfd_link_info *);
47.43673 ++extern bfd_boolean bfd_coff_reloc16_relax_section
47.43674 ++  (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
47.43675 ++extern bfd_byte *bfd_coff_reloc16_get_relocated_section_contents
47.43676 ++  (bfd *, struct bfd_link_info *, struct bfd_link_order *,
47.43677 ++   bfd_byte *, bfd_boolean, asymbol **);
47.43678 ++extern bfd_vma bfd_coff_reloc16_get_value
47.43679 ++  (arelent *, struct bfd_link_info *, asection *);
47.43680 ++extern void bfd_perform_slip
47.43681 ++  (bfd *, unsigned int, asection *, bfd_vma);
47.43682 ++
47.43683 ++/* Functions and types in cofflink.c.  */
47.43684 ++
47.43685 ++#define STRING_SIZE_SIZE 4
47.43686 ++
47.43687 ++/* We use a hash table to merge identical enum, struct, and union
47.43688 ++   definitions in the linker.  */
47.43689 ++
47.43690 ++/* Information we keep for a single element (an enum value, a
47.43691 ++   structure or union field) in the debug merge hash table.  */
47.43692 ++
47.43693 ++struct coff_debug_merge_element
47.43694 ++{
47.43695 ++  /* Next element.  */
47.43696 ++  struct coff_debug_merge_element *next;
47.43697 ++
47.43698 ++  /* Name.  */
47.43699 ++  const char *name;
47.43700 ++
47.43701 ++  /* Type.  */
47.43702 ++  unsigned int type;
47.43703 ++
47.43704 ++  /* Symbol index for complex type.  */
47.43705 ++  long tagndx;
47.43706 ++};
47.43707 ++
47.43708 ++/* A linked list of debug merge entries for a given name.  */
47.43709 ++
47.43710 ++struct coff_debug_merge_type
47.43711 ++{
47.43712 ++  /* Next type with the same name.  */
47.43713 ++  struct coff_debug_merge_type *next;
47.43714 ++
47.43715 ++  /* Class of type.  */
47.43716 ++  int class;
47.43717 ++
47.43718 ++  /* Symbol index where this type is defined.  */
47.43719 ++  long indx;
47.43720 ++
47.43721 ++  /* List of elements.  */
47.43722 ++  struct coff_debug_merge_element *elements;
47.43723 ++};
47.43724 ++
47.43725 ++/* Information we store in the debug merge hash table.  */
47.43726 ++
47.43727 ++struct coff_debug_merge_hash_entry
47.43728 ++{
47.43729 ++  struct bfd_hash_entry root;
47.43730 ++
47.43731 ++  /* A list of types with this name.  */
47.43732 ++  struct coff_debug_merge_type *types;
47.43733 ++};
47.43734 ++
47.43735 ++/* The debug merge hash table.  */
47.43736 ++
47.43737 ++struct coff_debug_merge_hash_table
47.43738 ++{
47.43739 ++  struct bfd_hash_table root;
47.43740 ++};
47.43741 ++
47.43742 ++/* Initialize a COFF debug merge hash table.  */
47.43743 ++
47.43744 ++#define coff_debug_merge_hash_table_init(table) \
47.43745 ++  (bfd_hash_table_init (&(table)->root, _bfd_coff_debug_merge_hash_newfunc, \
47.43746 ++			sizeof (struct coff_debug_merge_hash_entry)))
47.43747 ++
47.43748 ++/* Free a COFF debug merge hash table.  */
47.43749 ++
47.43750 ++#define coff_debug_merge_hash_table_free(table) \
47.43751 ++  (bfd_hash_table_free (&(table)->root))
47.43752 ++
47.43753 ++/* Look up an entry in a COFF debug merge hash table.  */
47.43754 ++
47.43755 ++#define coff_debug_merge_hash_lookup(table, string, create, copy) \
47.43756 ++  ((struct coff_debug_merge_hash_entry *) \
47.43757 ++   bfd_hash_lookup (&(table)->root, (string), (create), (copy)))
47.43758 ++
47.43759 ++/* Information we keep for each section in the output file when doing
47.43760 ++   a relocatable link.  */
47.43761 ++
47.43762 ++struct coff_link_section_info
47.43763 ++{
47.43764 ++  /* The relocs to be output.  */
47.43765 ++  struct internal_reloc *relocs;
47.43766 ++  /* For each reloc against a global symbol whose index was not known
47.43767 ++     when the reloc was handled, the global hash table entry.  */
47.43768 ++  struct coff_link_hash_entry **rel_hashes;
47.43769 ++};
47.43770 ++
47.43771 ++/* Information that we pass around while doing the final link step.  */
47.43772 ++
47.43773 ++struct coff_final_link_info
47.43774 ++{
47.43775 ++  /* General link information.  */
47.43776 ++  struct bfd_link_info *info;
47.43777 ++  /* Output BFD.  */
47.43778 ++  bfd *output_bfd;
47.43779 ++  /* Used to indicate failure in traversal routine.  */
47.43780 ++  bfd_boolean failed;
47.43781 ++  /* If doing "task linking" set only during the time when we want the
47.43782 ++     global symbol writer to convert the storage class of defined global
47.43783 ++     symbols from global to static. */
47.43784 ++  bfd_boolean global_to_static;
47.43785 ++  /* Hash table for long symbol names.  */
47.43786 ++  struct bfd_strtab_hash *strtab;
47.43787 ++  /* When doing a relocatable link, an array of information kept for
47.43788 ++     each output section, indexed by the target_index field.  */
47.43789 ++  struct coff_link_section_info *section_info;
47.43790 ++  /* Symbol index of last C_FILE symbol (-1 if none).  */
47.43791 ++  long last_file_index;
47.43792 ++  /* Contents of last C_FILE symbol.  */
47.43793 ++  struct internal_syment last_file;
47.43794 ++  /* Symbol index of first aux entry of last .bf symbol with an empty
47.43795 ++     endndx field (-1 if none).  */
47.43796 ++  long last_bf_index;
47.43797 ++  /* Contents of last_bf_index aux entry.  */
47.43798 ++  union internal_auxent last_bf;
47.43799 ++  /* Hash table used to merge debug information.  */
47.43800 ++  struct coff_debug_merge_hash_table debug_merge;
47.43801 ++  /* Buffer large enough to hold swapped symbols of any input file.  */
47.43802 ++  struct internal_syment *internal_syms;
47.43803 ++  /* Buffer large enough to hold sections of symbols of any input file.  */
47.43804 ++  asection **sec_ptrs;
47.43805 ++  /* Buffer large enough to hold output indices of symbols of any
47.43806 ++     input file.  */
47.43807 ++  long *sym_indices;
47.43808 ++  /* Buffer large enough to hold output symbols for any input file.  */
47.43809 ++  bfd_byte *outsyms;
47.43810 ++  /* Buffer large enough to hold external line numbers for any input
47.43811 ++     section.  */
47.43812 ++  bfd_byte *linenos;
47.43813 ++  /* Buffer large enough to hold any input section.  */
47.43814 ++  bfd_byte *contents;
47.43815 ++  /* Buffer large enough to hold external relocs of any input section.  */
47.43816 ++  bfd_byte *external_relocs;
47.43817 ++  /* Buffer large enough to hold swapped relocs of any input section.  */
47.43818 ++  struct internal_reloc *internal_relocs;
47.43819 ++};
47.43820 ++
47.43821 ++/* Most COFF variants have no way to record the alignment of a
47.43822 ++   section.  This struct is used to set a specific alignment based on
47.43823 ++   the name of the section.  */
47.43824 ++
47.43825 ++struct coff_section_alignment_entry
47.43826 ++{
47.43827 ++  /* The section name.  */
47.43828 ++  const char *name;
47.43829 ++
47.43830 ++  /* This is either (unsigned int) -1, indicating that the section
47.43831 ++     name must match exactly, or it is the number of letters which
47.43832 ++     must match at the start of the name.  */
47.43833 ++  unsigned int comparison_length;
47.43834 ++
47.43835 ++  /* These macros may be used to fill in the first two fields in a
47.43836 ++     structure initialization.  */
47.43837 ++#define COFF_SECTION_NAME_EXACT_MATCH(name) (name), ((unsigned int) -1)
47.43838 ++#define COFF_SECTION_NAME_PARTIAL_MATCH(name) (name), (sizeof (name) - 1)
47.43839 ++
47.43840 ++  /* Only use this entry if the default section alignment for this
47.43841 ++     target is at least that much (as a power of two).  If this field
47.43842 ++     is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored.  */
47.43843 ++  unsigned int default_alignment_min;
47.43844 ++
47.43845 ++  /* Only use this entry if the default section alignment for this
47.43846 ++     target is no greater than this (as a power of two).  If this
47.43847 ++     field is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored.  */
47.43848 ++  unsigned int default_alignment_max;
47.43849 ++
47.43850 ++#define COFF_ALIGNMENT_FIELD_EMPTY ((unsigned int) -1)
47.43851 ++
47.43852 ++  /* The desired alignment for this section (as a power of two).  */
47.43853 ++  unsigned int alignment_power;
47.43854 ++};
47.43855 ++
47.43856 ++extern struct bfd_hash_entry *_bfd_coff_link_hash_newfunc
47.43857 ++  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
47.43858 ++extern bfd_boolean _bfd_coff_link_hash_table_init
47.43859 ++  (struct coff_link_hash_table *, bfd *,
47.43860 ++   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
47.43861 ++			       struct bfd_hash_table *,
47.43862 ++			       const char *),
47.43863 ++   unsigned int);
47.43864 ++extern struct bfd_link_hash_table *_bfd_coff_link_hash_table_create
47.43865 ++  (bfd *);
47.43866 ++extern const char *_bfd_coff_internal_syment_name
47.43867 ++  (bfd *, const struct internal_syment *, char *);
47.43868 ++extern bfd_boolean _bfd_coff_link_add_symbols
47.43869 ++  (bfd *, struct bfd_link_info *);
47.43870 ++extern bfd_boolean _bfd_coff_final_link
47.43871 ++  (bfd *, struct bfd_link_info *);
47.43872 ++extern struct internal_reloc *_bfd_coff_read_internal_relocs
47.43873 ++  (bfd *, asection *, bfd_boolean, bfd_byte *, bfd_boolean,
47.43874 ++   struct internal_reloc *);
47.43875 ++extern bfd_boolean _bfd_coff_generic_relocate_section
47.43876 ++  (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
47.43877 ++   struct internal_reloc *, struct internal_syment *, asection **);
47.43878 ++extern struct bfd_hash_entry *_bfd_coff_debug_merge_hash_newfunc
47.43879 ++  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
47.43880 ++extern bfd_boolean _bfd_coff_write_global_sym
47.43881 ++  (struct coff_link_hash_entry *, void *);
47.43882 ++extern bfd_boolean _bfd_coff_write_task_globals
47.43883 ++  (struct coff_link_hash_entry *, void *);
47.43884 ++extern bfd_boolean _bfd_coff_link_input_bfd
47.43885 ++  (struct coff_final_link_info *, bfd *);
47.43886 ++extern bfd_boolean _bfd_coff_reloc_link_order
47.43887 ++  (bfd *, struct coff_final_link_info *, asection *,
47.43888 ++   struct bfd_link_order *);
47.43889 ++
47.43890 ++
47.43891 ++#define coff_get_section_contents_in_window \
47.43892 ++  _bfd_generic_get_section_contents_in_window
47.43893 ++
47.43894 ++/* Functions in xcofflink.c.  */
47.43895 ++
47.43896 ++extern long _bfd_xcoff_get_dynamic_symtab_upper_bound
47.43897 ++  (bfd *);
47.43898 ++extern long _bfd_xcoff_canonicalize_dynamic_symtab
47.43899 ++  (bfd *, asymbol **);
47.43900 ++extern long _bfd_xcoff_get_dynamic_reloc_upper_bound
47.43901 ++  (bfd *);
47.43902 ++extern long _bfd_xcoff_canonicalize_dynamic_reloc
47.43903 ++  (bfd *, arelent **, asymbol **);
47.43904 ++extern struct bfd_link_hash_table *_bfd_xcoff_bfd_link_hash_table_create
47.43905 ++  (bfd *);
47.43906 ++extern void _bfd_xcoff_bfd_link_hash_table_free
47.43907 ++  (struct bfd_link_hash_table *);
47.43908 ++extern bfd_boolean _bfd_xcoff_bfd_link_add_symbols
47.43909 ++  (bfd *, struct bfd_link_info *);
47.43910 ++extern bfd_boolean _bfd_xcoff_bfd_final_link
47.43911 ++  (bfd *, struct bfd_link_info *);
47.43912 ++extern bfd_boolean _bfd_ppc_xcoff_relocate_section
47.43913 ++  (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
47.43914 ++   struct internal_reloc *, struct internal_syment *, asection **);
47.43915 ++
47.43916 ++/* Functions in coff-ppc.c.  FIXME: These are called be pe.em in the
47.43917 ++   linker, and so should start with bfd and be declared in bfd.h.  */
47.43918 ++
47.43919 ++extern bfd_boolean ppc_allocate_toc_section
47.43920 ++  (struct bfd_link_info *);
47.43921 ++extern bfd_boolean ppc_process_before_allocation
47.43922 ++  (bfd *, struct bfd_link_info *);
47.43923 ++
47.43924 ++/* Extracted from coffcode.h.  */
47.43925 ++typedef struct coff_ptr_struct
47.43926 ++{
47.43927 ++  /* Remembers the offset from the first symbol in the file for
47.43928 ++     this symbol. Generated by coff_renumber_symbols. */
47.43929 ++  unsigned int offset;
47.43930 ++
47.43931 ++  /* Should the value of this symbol be renumbered.  Used for
47.43932 ++     XCOFF C_BSTAT symbols.  Set by coff_slurp_symbol_table.  */
47.43933 ++  unsigned int fix_value : 1;
47.43934 ++
47.43935 ++  /* Should the tag field of this symbol be renumbered.
47.43936 ++     Created by coff_pointerize_aux. */
47.43937 ++  unsigned int fix_tag : 1;
47.43938 ++
47.43939 ++  /* Should the endidx field of this symbol be renumbered.
47.43940 ++     Created by coff_pointerize_aux. */
47.43941 ++  unsigned int fix_end : 1;
47.43942 ++
47.43943 ++  /* Should the x_csect.x_scnlen field be renumbered.
47.43944 ++     Created by coff_pointerize_aux. */
47.43945 ++  unsigned int fix_scnlen : 1;
47.43946 ++
47.43947 ++  /* Fix up an XCOFF C_BINCL/C_EINCL symbol.  The value is the
47.43948 ++     index into the line number entries.  Set by coff_slurp_symbol_table.  */
47.43949 ++  unsigned int fix_line : 1;
47.43950 ++
47.43951 ++  /* The container for the symbol structure as read and translated
47.43952 ++     from the file. */
47.43953 ++  union
47.43954 ++  {
47.43955 ++    union internal_auxent auxent;
47.43956 ++    struct internal_syment syment;
47.43957 ++  } u;
47.43958 ++} combined_entry_type;
47.43959 ++
47.43960 ++
47.43961 ++/* Each canonical asymbol really looks like this: */
47.43962 ++
47.43963 ++typedef struct coff_symbol_struct
47.43964 ++{
47.43965 ++  /* The actual symbol which the rest of BFD works with */
47.43966 ++  asymbol symbol;
47.43967 ++
47.43968 ++  /* A pointer to the hidden information for this symbol */
47.43969 ++  combined_entry_type *native;
47.43970 ++
47.43971 ++  /* A pointer to the linenumber information for this symbol */
47.43972 ++  struct lineno_cache_entry *lineno;
47.43973 ++
47.43974 ++  /* Have the line numbers been relocated yet ? */
47.43975 ++  bfd_boolean done_lineno;
47.43976 ++} coff_symbol_type;
47.43977 ++/* COFF symbol classifications.  */
47.43978 ++
47.43979 ++enum coff_symbol_classification
47.43980 ++{
47.43981 ++  /* Global symbol.  */
47.43982 ++  COFF_SYMBOL_GLOBAL,
47.43983 ++  /* Common symbol.  */
47.43984 ++  COFF_SYMBOL_COMMON,
47.43985 ++  /* Undefined symbol.  */
47.43986 ++  COFF_SYMBOL_UNDEFINED,
47.43987 ++  /* Local symbol.  */
47.43988 ++  COFF_SYMBOL_LOCAL,
47.43989 ++  /* PE section symbol.  */
47.43990 ++  COFF_SYMBOL_PE_SECTION
47.43991 ++};
47.43992 ++
47.43993 ++typedef struct
47.43994 ++{
47.43995 ++  void (*_bfd_coff_swap_aux_in)
47.43996 ++    (bfd *, void *, int, int, int, int, void *);
47.43997 ++
47.43998 ++  void (*_bfd_coff_swap_sym_in)
47.43999 ++    (bfd *, void *, void *);
47.44000 ++
47.44001 ++  void (*_bfd_coff_swap_lineno_in)
47.44002 ++    (bfd *, void *, void *);
47.44003 ++
47.44004 ++  unsigned int (*_bfd_coff_swap_aux_out)
47.44005 ++    (bfd *, void *, int, int, int, int, void *);
47.44006 ++
47.44007 ++  unsigned int (*_bfd_coff_swap_sym_out)
47.44008 ++    (bfd *, void *, void *);
47.44009 ++
47.44010 ++  unsigned int (*_bfd_coff_swap_lineno_out)
47.44011 ++    (bfd *, void *, void *);
47.44012 ++
47.44013 ++  unsigned int (*_bfd_coff_swap_reloc_out)
47.44014 ++    (bfd *, void *, void *);
47.44015 ++
47.44016 ++  unsigned int (*_bfd_coff_swap_filehdr_out)
47.44017 ++    (bfd *, void *, void *);
47.44018 ++
47.44019 ++  unsigned int (*_bfd_coff_swap_aouthdr_out)
47.44020 ++    (bfd *, void *, void *);
47.44021 ++
47.44022 ++  unsigned int (*_bfd_coff_swap_scnhdr_out)
47.44023 ++    (bfd *, void *, void *);
47.44024 ++
47.44025 ++  unsigned int _bfd_filhsz;
47.44026 ++  unsigned int _bfd_aoutsz;
47.44027 ++  unsigned int _bfd_scnhsz;
47.44028 ++  unsigned int _bfd_symesz;
47.44029 ++  unsigned int _bfd_auxesz;
47.44030 ++  unsigned int _bfd_relsz;
47.44031 ++  unsigned int _bfd_linesz;
47.44032 ++  unsigned int _bfd_filnmlen;
47.44033 ++  bfd_boolean _bfd_coff_long_filenames;
47.44034 ++  bfd_boolean _bfd_coff_long_section_names;
47.44035 ++  unsigned int _bfd_coff_default_section_alignment_power;
47.44036 ++  bfd_boolean _bfd_coff_force_symnames_in_strings;
47.44037 ++  unsigned int _bfd_coff_debug_string_prefix_length;
47.44038 ++
47.44039 ++  void (*_bfd_coff_swap_filehdr_in)
47.44040 ++    (bfd *, void *, void *);
47.44041 ++
47.44042 ++  void (*_bfd_coff_swap_aouthdr_in)
47.44043 ++    (bfd *, void *, void *);
47.44044 ++
47.44045 ++  void (*_bfd_coff_swap_scnhdr_in)
47.44046 ++    (bfd *, void *, void *);
47.44047 ++
47.44048 ++  void (*_bfd_coff_swap_reloc_in)
47.44049 ++    (bfd *abfd, void *, void *);
47.44050 ++
47.44051 ++  bfd_boolean (*_bfd_coff_bad_format_hook)
47.44052 ++    (bfd *, void *);
47.44053 ++
47.44054 ++  bfd_boolean (*_bfd_coff_set_arch_mach_hook)
47.44055 ++    (bfd *, void *);
47.44056 ++
47.44057 ++  void * (*_bfd_coff_mkobject_hook)
47.44058 ++    (bfd *, void *, void *);
47.44059 ++
47.44060 ++  bfd_boolean (*_bfd_styp_to_sec_flags_hook)
47.44061 ++    (bfd *, void *, const char *, asection *, flagword *);
47.44062 ++
47.44063 ++  void (*_bfd_set_alignment_hook)
47.44064 ++    (bfd *, asection *, void *);
47.44065 ++
47.44066 ++  bfd_boolean (*_bfd_coff_slurp_symbol_table)
47.44067 ++    (bfd *);
47.44068 ++
47.44069 ++  bfd_boolean (*_bfd_coff_symname_in_debug)
47.44070 ++    (bfd *, struct internal_syment *);
47.44071 ++
47.44072 ++  bfd_boolean (*_bfd_coff_pointerize_aux_hook)
47.44073 ++    (bfd *, combined_entry_type *, combined_entry_type *,
47.44074 ++            unsigned int, combined_entry_type *);
47.44075 ++
47.44076 ++  bfd_boolean (*_bfd_coff_print_aux)
47.44077 ++    (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
47.44078 ++            combined_entry_type *, unsigned int);
47.44079 ++
47.44080 ++  void (*_bfd_coff_reloc16_extra_cases)
47.44081 ++    (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
47.44082 ++           bfd_byte *, unsigned int *, unsigned int *);
47.44083 ++
47.44084 ++  int (*_bfd_coff_reloc16_estimate)
47.44085 ++    (bfd *, asection *, arelent *, unsigned int,
47.44086 ++            struct bfd_link_info *);
47.44087 ++
47.44088 ++  enum coff_symbol_classification (*_bfd_coff_classify_symbol)
47.44089 ++    (bfd *, struct internal_syment *);
47.44090 ++
47.44091 ++  bfd_boolean (*_bfd_coff_compute_section_file_positions)
47.44092 ++    (bfd *);
47.44093 ++
47.44094 ++  bfd_boolean (*_bfd_coff_start_final_link)
47.44095 ++    (bfd *, struct bfd_link_info *);
47.44096 ++
47.44097 ++  bfd_boolean (*_bfd_coff_relocate_section)
47.44098 ++    (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
47.44099 ++            struct internal_reloc *, struct internal_syment *, asection **);
47.44100 ++
47.44101 ++  reloc_howto_type *(*_bfd_coff_rtype_to_howto)
47.44102 ++    (bfd *, asection *, struct internal_reloc *,
47.44103 ++            struct coff_link_hash_entry *, struct internal_syment *,
47.44104 ++            bfd_vma *);
47.44105 ++
47.44106 ++  bfd_boolean (*_bfd_coff_adjust_symndx)
47.44107 ++    (bfd *, struct bfd_link_info *, bfd *, asection *,
47.44108 ++            struct internal_reloc *, bfd_boolean *);
47.44109 ++
47.44110 ++  bfd_boolean (*_bfd_coff_link_add_one_symbol)
47.44111 ++    (struct bfd_link_info *, bfd *, const char *, flagword,
47.44112 ++            asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
47.44113 ++            struct bfd_link_hash_entry **);
47.44114 ++
47.44115 ++  bfd_boolean (*_bfd_coff_link_output_has_begun)
47.44116 ++    (bfd *, struct coff_final_link_info *);
47.44117 ++
47.44118 ++  bfd_boolean (*_bfd_coff_final_link_postscript)
47.44119 ++    (bfd *, struct coff_final_link_info *);
47.44120 ++
47.44121 ++} bfd_coff_backend_data;
47.44122 ++
47.44123 ++#define coff_backend_info(abfd) \
47.44124 ++  ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
47.44125 ++
47.44126 ++#define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
47.44127 ++  ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
47.44128 ++
47.44129 ++#define bfd_coff_swap_sym_in(a,e,i) \
47.44130 ++  ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))
47.44131 ++
47.44132 ++#define bfd_coff_swap_lineno_in(a,e,i) \
47.44133 ++  ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))
47.44134 ++
47.44135 ++#define bfd_coff_swap_reloc_out(abfd, i, o) \
47.44136 ++  ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))
47.44137 ++
47.44138 ++#define bfd_coff_swap_lineno_out(abfd, i, o) \
47.44139 ++  ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))
47.44140 ++
47.44141 ++#define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
47.44142 ++  ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))
47.44143 ++
47.44144 ++#define bfd_coff_swap_sym_out(abfd, i,o) \
47.44145 ++  ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))
47.44146 ++
47.44147 ++#define bfd_coff_swap_scnhdr_out(abfd, i,o) \
47.44148 ++  ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))
47.44149 ++
47.44150 ++#define bfd_coff_swap_filehdr_out(abfd, i,o) \
47.44151 ++  ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))
47.44152 ++
47.44153 ++#define bfd_coff_swap_aouthdr_out(abfd, i,o) \
47.44154 ++  ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))
47.44155 ++
47.44156 ++#define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
47.44157 ++#define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
47.44158 ++#define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
47.44159 ++#define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
47.44160 ++#define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
47.44161 ++#define bfd_coff_relsz(abfd)  (coff_backend_info (abfd)->_bfd_relsz)
47.44162 ++#define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
47.44163 ++#define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
47.44164 ++#define bfd_coff_long_filenames(abfd) \
47.44165 ++  (coff_backend_info (abfd)->_bfd_coff_long_filenames)
47.44166 ++#define bfd_coff_long_section_names(abfd) \
47.44167 ++  (coff_backend_info (abfd)->_bfd_coff_long_section_names)
47.44168 ++#define bfd_coff_default_section_alignment_power(abfd) \
47.44169 ++  (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
47.44170 ++#define bfd_coff_swap_filehdr_in(abfd, i,o) \
47.44171 ++  ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
47.44172 ++
47.44173 ++#define bfd_coff_swap_aouthdr_in(abfd, i,o) \
47.44174 ++  ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))
47.44175 ++
47.44176 ++#define bfd_coff_swap_scnhdr_in(abfd, i,o) \
47.44177 ++  ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))
47.44178 ++
47.44179 ++#define bfd_coff_swap_reloc_in(abfd, i, o) \
47.44180 ++  ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))
47.44181 ++
47.44182 ++#define bfd_coff_bad_format_hook(abfd, filehdr) \
47.44183 ++  ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))
47.44184 ++
47.44185 ++#define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
47.44186 ++  ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
47.44187 ++#define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
47.44188 ++  ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
47.44189 ++   (abfd, filehdr, aouthdr))
47.44190 ++
47.44191 ++#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
47.44192 ++  ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
47.44193 ++   (abfd, scnhdr, name, section, flags_ptr))
47.44194 ++
47.44195 ++#define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
47.44196 ++  ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
47.44197 ++
47.44198 ++#define bfd_coff_slurp_symbol_table(abfd)\
47.44199 ++  ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))
47.44200 ++
47.44201 ++#define bfd_coff_symname_in_debug(abfd, sym)\
47.44202 ++  ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
47.44203 ++
47.44204 ++#define bfd_coff_force_symnames_in_strings(abfd)\
47.44205 ++  (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
47.44206 ++
47.44207 ++#define bfd_coff_debug_string_prefix_length(abfd)\
47.44208 ++  (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
47.44209 ++
47.44210 ++#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
47.44211 ++  ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
47.44212 ++   (abfd, file, base, symbol, aux, indaux))
47.44213 ++
47.44214 ++#define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
47.44215 ++                                     reloc, data, src_ptr, dst_ptr)\
47.44216 ++  ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
47.44217 ++   (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
47.44218 ++
47.44219 ++#define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
47.44220 ++  ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
47.44221 ++   (abfd, section, reloc, shrink, link_info))
47.44222 ++
47.44223 ++#define bfd_coff_classify_symbol(abfd, sym)\
47.44224 ++  ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
47.44225 ++   (abfd, sym))
47.44226 ++
47.44227 ++#define bfd_coff_compute_section_file_positions(abfd)\
47.44228 ++  ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
47.44229 ++   (abfd))
47.44230 ++
47.44231 ++#define bfd_coff_start_final_link(obfd, info)\
47.44232 ++  ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
47.44233 ++   (obfd, info))
47.44234 ++#define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
47.44235 ++  ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
47.44236 ++   (obfd, info, ibfd, o, con, rel, isyms, secs))
47.44237 ++#define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
47.44238 ++  ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
47.44239 ++   (abfd, sec, rel, h, sym, addendp))
47.44240 ++#define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
47.44241 ++  ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
47.44242 ++   (obfd, info, ibfd, sec, rel, adjustedp))
47.44243 ++#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
47.44244 ++                                     value, string, cp, coll, hashp)\
47.44245 ++  ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
47.44246 ++   (info, abfd, name, flags, section, value, string, cp, coll, hashp))
47.44247 ++
47.44248 ++#define bfd_coff_link_output_has_begun(a,p) \
47.44249 ++  ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
47.44250 ++#define bfd_coff_final_link_postscript(a,p) \
47.44251 ++  ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))
47.44252 ++
47.44253 +--- a/bfd/libbfd.h
47.44254 ++++ b/bfd/libbfd.h
47.44255 +@@ -1601,6 +1601,48 @@ static const char *const bfd_reloc_code_
47.44256 +   "BFD_RELOC_AVR_LDI",
47.44257 +   "BFD_RELOC_AVR_6",
47.44258 +   "BFD_RELOC_AVR_6_ADIW",
47.44259 ++  "BFD_RELOC_AVR32_DIFF32",
47.44260 ++  "BFD_RELOC_AVR32_DIFF16",
47.44261 ++  "BFD_RELOC_AVR32_DIFF8",
47.44262 ++  "BFD_RELOC_AVR32_GOT32",
47.44263 ++  "BFD_RELOC_AVR32_GOT16",
47.44264 ++  "BFD_RELOC_AVR32_GOT8",
47.44265 ++  "BFD_RELOC_AVR32_21S",
47.44266 ++  "BFD_RELOC_AVR32_16U",
47.44267 ++  "BFD_RELOC_AVR32_16S",
47.44268 ++  "BFD_RELOC_AVR32_SUB5",
47.44269 ++  "BFD_RELOC_AVR32_8S_EXT",
47.44270 ++  "BFD_RELOC_AVR32_8S",
47.44271 ++  "BFD_RELOC_AVR32_15S",
47.44272 ++  "BFD_RELOC_AVR32_22H_PCREL",
47.44273 ++  "BFD_RELOC_AVR32_18W_PCREL",
47.44274 ++  "BFD_RELOC_AVR32_16B_PCREL",
47.44275 ++  "BFD_RELOC_AVR32_16N_PCREL",
47.44276 ++  "BFD_RELOC_AVR32_14UW_PCREL",
47.44277 ++  "BFD_RELOC_AVR32_11H_PCREL",
47.44278 ++  "BFD_RELOC_AVR32_10UW_PCREL",
47.44279 ++  "BFD_RELOC_AVR32_9H_PCREL",
47.44280 ++  "BFD_RELOC_AVR32_9UW_PCREL",
47.44281 ++  "BFD_RELOC_AVR32_GOTPC",
47.44282 ++  "BFD_RELOC_AVR32_GOTCALL",
47.44283 ++  "BFD_RELOC_AVR32_LDA_GOT",
47.44284 ++  "BFD_RELOC_AVR32_GOT21S",
47.44285 ++  "BFD_RELOC_AVR32_GOT18SW",
47.44286 ++  "BFD_RELOC_AVR32_GOT16S",
47.44287 ++  "BFD_RELOC_AVR32_32_CPENT",
47.44288 ++  "BFD_RELOC_AVR32_CPCALL",
47.44289 ++  "BFD_RELOC_AVR32_16_CP",
47.44290 ++  "BFD_RELOC_AVR32_9W_CP",
47.44291 ++  "BFD_RELOC_AVR32_ALIGN",
47.44292 ++  "BFD_RELOC_AVR32_14UW",
47.44293 ++  "BFD_RELOC_AVR32_10UW",
47.44294 ++  "BFD_RELOC_AVR32_10SW",
47.44295 ++  "BFD_RELOC_AVR32_STHH_W",
47.44296 ++  "BFD_RELOC_AVR32_7UW",
47.44297 ++  "BFD_RELOC_AVR32_6S",
47.44298 ++  "BFD_RELOC_AVR32_6UW",
47.44299 ++  "BFD_RELOC_AVR32_4UH",
47.44300 ++  "BFD_RELOC_AVR32_3U",
47.44301 +   "BFD_RELOC_390_12",
47.44302 +   "BFD_RELOC_390_GOT12",
47.44303 +   "BFD_RELOC_390_PLT32",
47.44304 +--- /dev/null
47.44305 ++++ b/bfd/libtool
47.44306 +@@ -0,0 +1,7871 @@
47.44307 ++#! /bin/bash
47.44308 ++
47.44309 ++# libtool - Provide generalized library-building support services.
47.44310 ++# Generated automatically by config.status (bfd) 2.18.atmel.1.0.1
47.44311 ++# Libtool was configured on host hcegtvedt:
47.44312 ++# NOTE: Changes made to this file will be lost: look at ltmain.sh.
47.44313 ++#
47.44314 ++#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
47.44315 ++#                 2006, 2007, 2008 Free Software Foundation, Inc.
47.44316 ++#   Written by Gordon Matzigkeit, 1996
47.44317 ++#
47.44318 ++#   This file is part of GNU Libtool.
47.44319 ++#
47.44320 ++# GNU Libtool is free software; you can redistribute it and/or
47.44321 ++# modify it under the terms of the GNU General Public License as
47.44322 ++# published by the Free Software Foundation; either version 2 of
47.44323 ++# the License, or (at your option) any later version.
47.44324 ++#
47.44325 ++# As a special exception to the GNU General Public License,
47.44326 ++# if you distribute this file as part of a program or library that
47.44327 ++# is built using GNU Libtool, you may include this file under the
47.44328 ++# same distribution terms that you use for the rest of that program.
47.44329 ++#
47.44330 ++# GNU Libtool is distributed in the hope that it will be useful,
47.44331 ++# but WITHOUT ANY WARRANTY; without even the implied warranty of
47.44332 ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
47.44333 ++# GNU General Public License for more details.
47.44334 ++#
47.44335 ++# You should have received a copy of the GNU General Public License
47.44336 ++# along with GNU Libtool; see the file COPYING.  If not, a copy
47.44337 ++# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
47.44338 ++# obtained by writing to the Free Software Foundation, Inc.,
47.44339 ++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
47.44340 ++
47.44341 ++
47.44342 ++# The names of the tagged configurations supported by this script.
47.44343 ++available_tags=""
47.44344 ++
47.44345 ++# ### BEGIN LIBTOOL CONFIG
47.44346 ++
47.44347 ++# Whether or not to build shared libraries.
47.44348 ++build_libtool_libs=no
47.44349 ++
47.44350 ++# Which release of libtool.m4 was used?
47.44351 ++macro_version=2.2.4
47.44352 ++macro_revision=1.2976
47.44353 ++
47.44354 ++# Whether or not to build static libraries.
47.44355 ++build_old_libs=yes
47.44356 ++
47.44357 ++# What type of objects to build.
47.44358 ++pic_mode=default
47.44359 ++
47.44360 ++# Whether or not to optimize for fast installation.
47.44361 ++fast_install=needless
47.44362 ++
47.44363 ++# The host system.
47.44364 ++host_alias=i686-pc-linux-gnu
47.44365 ++host=i686-pc-linux-gnu
47.44366 ++host_os=linux-gnu
47.44367 ++
47.44368 ++# The build system.
47.44369 ++build_alias=i686-pc-linux-gnu
47.44370 ++build=i686-pc-linux-gnu
47.44371 ++build_os=linux-gnu
47.44372 ++
47.44373 ++# A sed program that does not truncate output.
47.44374 ++SED="/bin/sed"
47.44375 ++
47.44376 ++# Sed that helps us avoid accidentally triggering echo(1) options like -n.
47.44377 ++Xsed="$SED -e 1s/^X//"
47.44378 ++
47.44379 ++# A grep program that handles long lines.
47.44380 ++GREP="/bin/grep"
47.44381 ++
47.44382 ++# An ERE matcher.
47.44383 ++EGREP="/bin/grep -E"
47.44384 ++
47.44385 ++# A literal string matcher.
47.44386 ++FGREP="/bin/grep -F"
47.44387 ++
47.44388 ++# A BSD- or MS-compatible name lister.
47.44389 ++NM="nm"
47.44390 ++
47.44391 ++# Whether we need soft or hard links.
47.44392 ++LN_S="ln -s"
47.44393 ++
47.44394 ++# What is the maximum length of a command?
47.44395 ++max_cmd_len=805306365
47.44396 ++
47.44397 ++# Object file suffix (normally "o").
47.44398 ++objext=o
47.44399 ++
47.44400 ++# Executable file suffix (normally "").
47.44401 ++exeext=
47.44402 ++
47.44403 ++# whether the shell understands "unset".
47.44404 ++lt_unset=unset
47.44405 ++
47.44406 ++# turn spaces into newlines.
47.44407 ++SP2NL="tr \\040 \\012"
47.44408 ++
47.44409 ++# turn newlines into spaces.
47.44410 ++NL2SP="tr \\015\\012 \\040\\040"
47.44411 ++
47.44412 ++# How to create reloadable object files.
47.44413 ++reload_flag=" -r"
47.44414 ++reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
47.44415 ++
47.44416 ++# Method to check whether dependent libraries are shared objects.
47.44417 ++deplibs_check_method="pass_all"
47.44418 ++
47.44419 ++# Command to use when deplibs_check_method == "file_magic".
47.44420 ++file_magic_cmd="\$MAGIC_CMD"
47.44421 ++
47.44422 ++# The archiver.
47.44423 ++AR="ar"
47.44424 ++AR_FLAGS="cru"
47.44425 ++
47.44426 ++# A symbol stripping program.
47.44427 ++STRIP="strip"
47.44428 ++
47.44429 ++# Commands used to install an old-style archive.
47.44430 ++RANLIB="ranlib"
47.44431 ++old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
47.44432 ++old_postuninstall_cmds=""
47.44433 ++
47.44434 ++# A C compiler.
47.44435 ++LTCC="gcc"
47.44436 ++
47.44437 ++# LTCC compiler flags.
47.44438 ++LTCFLAGS="-g -O2"
47.44439 ++
47.44440 ++# Take the output of nm and produce a listing of raw symbols and C names.
47.44441 ++global_symbol_pipe="sed -n -e 's/^.*[	 ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[	 ][	 ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
47.44442 ++
47.44443 ++# Transform the output of nm in a proper C declaration.
47.44444 ++global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'"
47.44445 ++
47.44446 ++# Transform the output of nm in a C name address pair.
47.44447 ++global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/  {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/  {\"\\2\", (void *) \\&\\2},/p'"
47.44448 ++
47.44449 ++# Transform the output of nm in a C name address pair when lib prefix is needed.
47.44450 ++global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\) \$/  {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/  {\"\\2\", (void *) \\&\\2},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/  {\"lib\\2\", (void *) \\&\\2},/p'"
47.44451 ++
47.44452 ++# The name of the directory that contains temporary libtool files.
47.44453 ++objdir=.libs
47.44454 ++
47.44455 ++# Shell to use when invoking shell scripts.
47.44456 ++SHELL="/bin/bash"
47.44457 ++
47.44458 ++# An echo program that does not interpret backslashes.
47.44459 ++ECHO="echo"
47.44460 ++
47.44461 ++# Used to examine libraries when file_magic_cmd begins with "file".
47.44462 ++MAGIC_CMD=file
47.44463 ++
47.44464 ++# Must we lock files when doing compilation?
47.44465 ++need_locks="no"
47.44466 ++
47.44467 ++# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
47.44468 ++DSYMUTIL=""
47.44469 ++
47.44470 ++# Tool to change global to local symbols on Mac OS X.
47.44471 ++NMEDIT=""
47.44472 ++
47.44473 ++# Tool to manipulate fat objects and archives on Mac OS X.
47.44474 ++LIPO=""
47.44475 ++
47.44476 ++# ldd/readelf like tool for Mach-O binaries on Mac OS X.
47.44477 ++OTOOL=""
47.44478 ++
47.44479 ++# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
47.44480 ++OTOOL64=""
47.44481 ++
47.44482 ++# Old archive suffix (normally "a").
47.44483 ++libext=a
47.44484 ++
47.44485 ++# Shared library suffix (normally ".so").
47.44486 ++shrext_cmds=".so"
47.44487 ++
47.44488 ++# The commands to extract the exported symbol list from a shared archive.
47.44489 ++extract_expsyms_cmds=""
47.44490 ++
47.44491 ++# Variables whose values should be saved in libtool wrapper scripts and
47.44492 ++# restored at link time.
47.44493 ++variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
47.44494 ++
47.44495 ++# Do we need the "lib" prefix for modules?
47.44496 ++need_lib_prefix=no
47.44497 ++
47.44498 ++# Do we need a version for libraries?
47.44499 ++need_version=no
47.44500 ++
47.44501 ++# Library versioning type.
47.44502 ++version_type=linux
47.44503 ++
47.44504 ++# Shared library runtime path variable.
47.44505 ++runpath_var=LD_RUN_PATH
47.44506 ++
47.44507 ++# Shared library path variable.
47.44508 ++shlibpath_var=LD_LIBRARY_PATH
47.44509 ++
47.44510 ++# Is shlibpath searched before the hard-coded library search path?
47.44511 ++shlibpath_overrides_runpath=no
47.44512 ++
47.44513 ++# Format of library name prefix.
47.44514 ++libname_spec="lib\$name"
47.44515 ++
47.44516 ++# List of archive names.  First name is the real one, the rest are links.
47.44517 ++# The last name is the one that the linker finds with -lNAME
47.44518 ++library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
47.44519 ++
47.44520 ++# The coded name of the library, if different from the real name.
47.44521 ++soname_spec="\${libname}\${release}\${shared_ext}\$major"
47.44522 ++
47.44523 ++# Command to use after installation of a shared archive.
47.44524 ++postinstall_cmds=""
47.44525 ++
47.44526 ++# Command to use after uninstallation of a shared archive.
47.44527 ++postuninstall_cmds=""
47.44528 ++
47.44529 ++# Commands used to finish a libtool library installation in a directory.
47.44530 ++finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
47.44531 ++
47.44532 ++# As "finish_cmds", except a single script fragment to be evaled but
47.44533 ++# not shown.
47.44534 ++finish_eval=""
47.44535 ++
47.44536 ++# Whether we should hardcode library paths into libraries.
47.44537 ++hardcode_into_libs=yes
47.44538 ++
47.44539 ++# Compile-time system search path for libraries.
47.44540 ++sys_lib_search_path_spec="/usr/lib/gcc/i486-linux-gnu/4.2.4 /usr/lib /lib"
47.44541 ++
47.44542 ++# Run-time system search path for libraries.
47.44543 ++sys_lib_dlsearch_path_spec="/lib /usr/lib /lib/i486-linux-gnu /usr/lib/i486-linux-gnu /usr/lib/alsa-lib /usr/local/lib "
47.44544 ++
47.44545 ++# Whether dlopen is supported.
47.44546 ++dlopen_support=unknown
47.44547 ++
47.44548 ++# Whether dlopen of programs is supported.
47.44549 ++dlopen_self=unknown
47.44550 ++
47.44551 ++# Whether dlopen of statically linked programs is supported.
47.44552 ++dlopen_self_static=unknown
47.44553 ++
47.44554 ++# Commands to strip libraries.
47.44555 ++old_striplib="strip --strip-debug"
47.44556 ++striplib="strip --strip-unneeded"
47.44557 ++
47.44558 ++
47.44559 ++# The linker used to build libraries.
47.44560 ++LD="ld"
47.44561 ++
47.44562 ++# Commands used to build an old-style archive.
47.44563 ++old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
47.44564 ++
47.44565 ++# A language specific compiler.
47.44566 ++CC="gcc"
47.44567 ++
47.44568 ++# Is the compiler the GNU compiler?
47.44569 ++with_gcc=yes
47.44570 ++
47.44571 ++# Compiler flag to turn off builtin functions.
47.44572 ++no_builtin_flag=" -fno-builtin"
47.44573 ++
47.44574 ++# How to pass a linker flag through the compiler.
47.44575 ++wl="-Wl,"
47.44576 ++
47.44577 ++# Additional compiler flags for building library objects.
47.44578 ++pic_flag=" -fPIC -DPIC"
47.44579 ++
47.44580 ++# Compiler flag to prevent dynamic linking.
47.44581 ++link_static_flag="-static"
47.44582 ++
47.44583 ++# Does compiler simultaneously support -c and -o options?
47.44584 ++compiler_c_o="yes"
47.44585 ++
47.44586 ++# Whether or not to add -lc for building shared libraries.
47.44587 ++build_libtool_need_lc=yes
47.44588 ++
47.44589 ++# Whether or not to disallow shared libs when runtime libs are static.
47.44590 ++allow_libtool_libs_with_static_runtimes=no
47.44591 ++
47.44592 ++# Compiler flag to allow reflexive dlopens.
47.44593 ++export_dynamic_flag_spec="\${wl}--export-dynamic"
47.44594 ++
47.44595 ++# Compiler flag to generate shared objects directly from archives.
47.44596 ++whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
47.44597 ++
47.44598 ++# Whether the compiler copes with passing no objects directly.
47.44599 ++compiler_needs_object="no"
47.44600 ++
47.44601 ++# Create an old-style archive from a shared archive.
47.44602 ++old_archive_from_new_cmds=""
47.44603 ++
47.44604 ++# Create a temporary old-style archive to link instead of a shared archive.
47.44605 ++old_archive_from_expsyms_cmds=""
47.44606 ++
47.44607 ++# Commands used to build a shared archive.
47.44608 ++archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
47.44609 ++archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
47.44610 ++	    cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
47.44611 ++	    echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
47.44612 ++	    \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
47.44613 ++
47.44614 ++# Commands used to build a loadable module if different from building
47.44615 ++# a shared archive.
47.44616 ++module_cmds=""
47.44617 ++module_expsym_cmds=""
47.44618 ++
47.44619 ++# Whether we are building with GNU ld or not.
47.44620 ++with_gnu_ld="yes"
47.44621 ++
47.44622 ++# Flag that allows shared libraries with undefined symbols to be built.
47.44623 ++allow_undefined_flag=""
47.44624 ++
47.44625 ++# Flag that enforces no undefined symbols.
47.44626 ++no_undefined_flag=""
47.44627 ++
47.44628 ++# Flag to hardcode $libdir into a binary during linking.
47.44629 ++# This must work even if $libdir does not exist
47.44630 ++hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
47.44631 ++
47.44632 ++# If ld is used when linking, flag to hardcode $libdir into a binary
47.44633 ++# during linking.  This must work even if $libdir does not exist.
47.44634 ++hardcode_libdir_flag_spec_ld=""
47.44635 ++
47.44636 ++# Whether we need a single "-rpath" flag with a separated argument.
47.44637 ++hardcode_libdir_separator=""
47.44638 ++
47.44639 ++# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
47.44640 ++# DIR into the resulting binary.
47.44641 ++hardcode_direct=no
47.44642 ++
47.44643 ++# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
47.44644 ++# DIR into the resulting binary and the resulting library dependency is
47.44645 ++# "absolute",i.e impossible to change by setting ${shlibpath_var} if the
47.44646 ++# library is relocated.
47.44647 ++hardcode_direct_absolute=no
47.44648 ++
47.44649 ++# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
47.44650 ++# into the resulting binary.
47.44651 ++hardcode_minus_L=no
47.44652 ++
47.44653 ++# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
47.44654 ++# into the resulting binary.
47.44655 ++hardcode_shlibpath_var=unsupported
47.44656 ++
47.44657 ++# Set to "yes" if building a shared library automatically hardcodes DIR
47.44658 ++# into the library and all subsequent libraries and executables linked
47.44659 ++# against it.
47.44660 ++hardcode_automatic=no
47.44661 ++
47.44662 ++# Set to yes if linker adds runtime paths of dependent libraries
47.44663 ++# to runtime path list.
47.44664 ++inherit_rpath=no
47.44665 ++
47.44666 ++# Whether libtool must link a program against all its dependency libraries.
47.44667 ++link_all_deplibs=unknown
47.44668 ++
47.44669 ++# Fix the shell variable $srcfile for the compiler.
47.44670 ++fix_srcfile_path=""
47.44671 ++
47.44672 ++# Set to "yes" if exported symbols are required.
47.44673 ++always_export_symbols=no
47.44674 ++
47.44675 ++# The commands to list exported symbols.
47.44676 ++export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
47.44677 ++
47.44678 ++# Symbols that should not be listed in the preloaded symbols.
47.44679 ++exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
47.44680 ++
47.44681 ++# Symbols that must always be exported.
47.44682 ++include_expsyms=""
47.44683 ++
47.44684 ++# Commands necessary for linking programs (against libraries) with templates.
47.44685 ++prelink_cmds=""
47.44686 ++
47.44687 ++# Specify filename containing input files.
47.44688 ++file_list_spec=""
47.44689 ++
47.44690 ++# How to hardcode a shared library path into an executable.
47.44691 ++hardcode_action=immediate
47.44692 ++
47.44693 ++# ### END LIBTOOL CONFIG
47.44694 ++
47.44695 ++# Generated from ltmain.m4sh; do not edit by hand
47.44696 ++
47.44697 ++# ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a
47.44698 ++# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
47.44699 ++
47.44700 ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
47.44701 ++# This is free software; see the source for copying conditions.  There is NO
47.44702 ++# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
47.44703 ++
47.44704 ++# This program is free software; you can redistribute it and/or modify
47.44705 ++# it under the terms of the GNU General Public License as published by
47.44706 ++# the Free Software Foundation; either version 2 of the License, or
47.44707 ++# (at your option) any later version.
47.44708 ++#
47.44709 ++# This program is distributed in the hope that it will be useful, but
47.44710 ++# WITHOUT ANY WARRANTY; without even the implied warranty of
47.44711 ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
47.44712 ++# General Public License for more details.
47.44713 ++#
47.44714 ++# You should have received a copy of the GNU General Public License
47.44715 ++# along with this program; if not, write to the Free Software
47.44716 ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
47.44717 ++#
47.44718 ++# As a special exception to the GNU General Public License, if you
47.44719 ++# distribute this file as part of a program that contains a
47.44720 ++# configuration script generated by Autoconf, you may include it under
47.44721 ++# the same distribution terms that you use for the rest of that program.
47.44722 ++
47.44723 ++# Usage: $progname [OPTION]... [MODE-ARG]...
47.44724 ++#
47.44725 ++# Provide generalized library-building support services.
47.44726 ++#
47.44727 ++#     --config             show all configuration variables
47.44728 ++#     --debug              enable verbose shell tracing
47.44729 ++# -n, --dry-run            display commands without modifying any files
47.44730 ++#     --features           display basic configuration information and exit
47.44731 ++#     --mode=MODE          use operation mode MODE
47.44732 ++#     --preserve-dup-deps  don't remove duplicate dependency libraries
47.44733 ++#     --quiet, --silent    don't print informational messages
47.44734 ++#     --tag=TAG            use configuration variables from tag TAG
47.44735 ++# -v, --verbose            print informational messages (default)
47.44736 ++#     --version            print version information
47.44737 ++# -h, --help               print short or long help message
47.44738 ++#
47.44739 ++# MODE must be one of the following:
47.44740 ++#
47.44741 ++#       clean              remove files from the build directory
47.44742 ++#       compile            compile a source file into a libtool object
47.44743 ++#       execute            automatically set library path, then run a program
47.44744 ++#       finish             complete the installation of libtool libraries
47.44745 ++#       install            install libraries or executables
47.44746 ++#       link               create a library or an executable
47.44747 ++#       uninstall          remove libraries from an installed directory
47.44748 ++#
47.44749 ++# MODE-ARGS vary depending on the MODE.
47.44750 ++# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
47.44751 ++#
47.44752 ++# When reporting a bug, please describe a test case to reproduce it and
47.44753 ++# include the following information:
47.44754 ++#
47.44755 ++#       host-triplet:	$host
47.44756 ++#       shell:		$SHELL
47.44757 ++#       compiler:		$LTCC
47.44758 ++#       compiler flags:		$LTCFLAGS
47.44759 ++#       linker:		$LD (gnu? $with_gnu_ld)
47.44760 ++#       $progname:		(GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a
47.44761 ++#       automake:		$automake_version
47.44762 ++#       autoconf:		$autoconf_version
47.44763 ++#
47.44764 ++# Report bugs to <bug-libtool@gnu.org>.
47.44765 ++
47.44766 ++PROGRAM=ltmain.sh
47.44767 ++PACKAGE=libtool
47.44768 ++VERSION=2.1a
47.44769 ++TIMESTAMP=" 1.2435 2007/03/18 18:44:42"
47.44770 ++package_revision=1.2435
47.44771 ++
47.44772 ++# Be Bourne compatible
47.44773 ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
47.44774 ++  emulate sh
47.44775 ++  NULLCMD=:
47.44776 ++  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
47.44777 ++  # is contrary to our usage.  Disable this feature.
47.44778 ++  alias -g '${1+"$@"}'='"$@"'
47.44779 ++  setopt NO_GLOB_SUBST
47.44780 ++else
47.44781 ++  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
47.44782 ++fi
47.44783 ++BIN_SH=xpg4; export BIN_SH # for Tru64
47.44784 ++DUALCASE=1; export DUALCASE # for MKS sh
47.44785 ++
47.44786 ++# NLS nuisances: We save the old values to restore during execute mode.
47.44787 ++# Only set LANG and LC_ALL to C if already set.
47.44788 ++# These must not be set unconditionally because not all systems understand
47.44789 ++# e.g. LANG=C (notably SCO).
47.44790 ++for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
47.44791 ++do
47.44792 ++  eval "if test \"\${$lt_var+set}\" = set; then
47.44793 ++          save_$lt_var=\$$lt_var
47.44794 ++          $lt_var=C
47.44795 ++	  export $lt_var
47.44796 ++	fi"
47.44797 ++done
47.44798 ++
47.44799 ++$lt_unset CDPATH
47.44800 ++
47.44801 ++
47.44802 ++
47.44803 ++
47.44804 ++
47.44805 ++: ${CP="cp -f"}
47.44806 ++: ${ECHO="echo"}
47.44807 ++: ${EGREP="/bin/grep -E"}
47.44808 ++: ${FGREP="/bin/grep -F"}
47.44809 ++: ${GREP="/bin/grep"}
47.44810 ++: ${LN_S="ln -s"}
47.44811 ++: ${MAKE="make"}
47.44812 ++: ${MKDIR="mkdir"}
47.44813 ++: ${MV="mv -f"}
47.44814 ++: ${RM="rm -f"}
47.44815 ++: ${SED="/bin/sed"}
47.44816 ++: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
47.44817 ++: ${Xsed="$SED -e 1s/^X//"}
47.44818 ++
47.44819 ++# Global variables:
47.44820 ++EXIT_SUCCESS=0
47.44821 ++EXIT_FAILURE=1
47.44822 ++EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
47.44823 ++EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
47.44824 ++
47.44825 ++exit_status=$EXIT_SUCCESS
47.44826 ++
47.44827 ++# Make sure IFS has a sensible default
47.44828 ++lt_nl='
47.44829 ++'
47.44830 ++IFS=" 	$lt_nl"
47.44831 ++
47.44832 ++dirname="s,/[^/]*$,,"
47.44833 ++basename="s,^.*/,,"
47.44834 ++
47.44835 ++# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
47.44836 ++# is ksh but when the shell is invoked as "sh" and the current value of
47.44837 ++# the _XPG environment variable is not equal to 1 (one), the special
47.44838 ++# positional parameter $0, within a function call, is the name of the
47.44839 ++# function.
47.44840 ++progpath="$0"
47.44841 ++
47.44842 ++# The name of this program:
47.44843 ++# In the unlikely event $progname began with a '-', it would play havoc with
47.44844 ++# func_echo (imagine progname=-n), so we prepend ./ in that case:
47.44845 ++progname=`$ECHO "X$progpath" | $Xsed -e "$basename" -e 's,^-,./-,'`
47.44846 ++
47.44847 ++# Make sure we have an absolute path for reexecution:
47.44848 ++case $progpath in
47.44849 ++  [\\/]*|[A-Za-z]:\\*) ;;
47.44850 ++  *[\\/]*)
47.44851 ++     progdir=`$ECHO "X$progpath" | $Xsed -e "$dirname"`
47.44852 ++     progdir=`cd "$progdir" && pwd`
47.44853 ++     progpath="$progdir/$progname"
47.44854 ++     ;;
47.44855 ++  *)
47.44856 ++     save_IFS="$IFS"
47.44857 ++     IFS=:
47.44858 ++     for progdir in $PATH; do
47.44859 ++       IFS="$save_IFS"
47.44860 ++       test -x "$progdir/$progname" && break
47.44861 ++     done
47.44862 ++     IFS="$save_IFS"
47.44863 ++     test -n "$progdir" || progdir=`pwd`
47.44864 ++     progpath="$progdir/$progname"
47.44865 ++     ;;
47.44866 ++esac
47.44867 ++
47.44868 ++# Sed substitution that helps us do robust quoting.  It backslashifies
47.44869 ++# metacharacters that are still active within double-quoted strings.
47.44870 ++Xsed="${SED}"' -e 1s/^X//'
47.44871 ++sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
47.44872 ++
47.44873 ++# Same as above, but do not quote variable references.
47.44874 ++double_quote_subst='s/\(["`\\]\)/\\\1/g'
47.44875 ++
47.44876 ++# Re-`\' parameter expansions in output of double_quote_subst that were
47.44877 ++# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
47.44878 ++# in input to double_quote_subst, that '$' was protected from expansion.
47.44879 ++# Since each input `\' is now two `\'s, look for any number of runs of
47.44880 ++# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
47.44881 ++bs='\\'
47.44882 ++bs2='\\\\'
47.44883 ++bs4='\\\\\\\\'
47.44884 ++dollar='\$'
47.44885 ++sed_double_backslash="\
47.44886 ++  s/$bs4/&\\
47.44887 ++/g
47.44888 ++  s/^$bs2$dollar/$bs&/
47.44889 ++  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
47.44890 ++  s/\n//g"
47.44891 ++
47.44892 ++# Standard options:
47.44893 ++opt_dry_run=false
47.44894 ++opt_help=false
47.44895 ++opt_quiet=false
47.44896 ++opt_verbose=false
47.44897 ++
47.44898 ++# func_echo arg...
47.44899 ++# Echo program name prefixed message, along with the current mode
47.44900 ++# name if it has been set yet.
47.44901 ++func_echo ()
47.44902 ++{
47.44903 ++    $ECHO "$progname${mode+: }$mode: "${1+"$@"}
47.44904 ++}
47.44905 ++
47.44906 ++# func_verbose arg...
47.44907 ++# Echo program name prefixed message in verbose mode only.
47.44908 ++func_verbose ()
47.44909 ++{
47.44910 ++    $opt_verbose && func_echo ${1+"$@"}
47.44911 ++
47.44912 ++    # A bug in bash halts the script if the last line of a function
47.44913 ++    # fails when set -e is in force, so we need another command to
47.44914 ++    # work around that:
47.44915 ++    :
47.44916 ++}
47.44917 ++
47.44918 ++# func_error arg...
47.44919 ++# Echo program name prefixed message to standard error.
47.44920 ++func_error ()
47.44921 ++{
47.44922 ++    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
47.44923 ++}
47.44924 ++
47.44925 ++# func_warning arg...
47.44926 ++# Echo program name prefixed warning message to standard error.
47.44927 ++func_warning ()
47.44928 ++{
47.44929 ++    $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
47.44930 ++}
47.44931 ++
47.44932 ++# func_fatal_error arg...
47.44933 ++# Echo program name prefixed message to standard error, and exit.
47.44934 ++func_fatal_error ()
47.44935 ++{
47.44936 ++    func_error ${1+"$@"}
47.44937 ++    exit $EXIT_FAILURE
47.44938 ++}
47.44939 ++
47.44940 ++# func_fatal_help arg...
47.44941 ++# Echo program name prefixed message to standard error, followed by
47.44942 ++# a help hint, and exit.
47.44943 ++func_fatal_help ()
47.44944 ++{
47.44945 ++    func_error ${1+"$@"}
47.44946 ++    func_fatal_error "$help"
47.44947 ++}
47.44948 ++help="Try \`$progname --help' for more information."  ## default
47.44949 ++
47.44950 ++
47.44951 ++# func_grep expression filename
47.44952 ++# Check whether EXPRESSION matches any line of FILENAME, without output.
47.44953 ++func_grep ()
47.44954 ++{
47.44955 ++    $GREP "$1" "$2" >/dev/null 2>&1
47.44956 ++}
47.44957 ++
47.44958 ++
47.44959 ++# func_mkdir_p directory-path
47.44960 ++# Make sure the entire path to DIRECTORY-PATH is available.
47.44961 ++func_mkdir_p ()
47.44962 ++{
47.44963 ++    my_directory_path="$1"
47.44964 ++    my_dir_list=
47.44965 ++
47.44966 ++    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
47.44967 ++
47.44968 ++      # Protect directory names starting with `-'
47.44969 ++      case $my_directory_path in
47.44970 ++        -*) my_directory_path="./$my_directory_path" ;;
47.44971 ++      esac
47.44972 ++
47.44973 ++      # While some portion of DIR does not yet exist...
47.44974 ++      while test ! -d "$my_directory_path"; do
47.44975 ++        # ...make a list in topmost first order.  Use a colon delimited
47.44976 ++	# list incase some portion of path contains whitespace.
47.44977 ++        my_dir_list="$my_directory_path:$my_dir_list"
47.44978 ++
47.44979 ++        # If the last portion added has no slash in it, the list is done
47.44980 ++        case $my_directory_path in */*) ;; *) break ;; esac
47.44981 ++
47.44982 ++        # ...otherwise throw away the child directory and loop
47.44983 ++        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
47.44984 ++      done
47.44985 ++      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
47.44986 ++
47.44987 ++      save_mkdir_p_IFS="$IFS"; IFS=':'
47.44988 ++      for my_dir in $my_dir_list; do
47.44989 ++	IFS="$save_mkdir_p_IFS"
47.44990 ++        # mkdir can fail with a `File exist' error if two processes
47.44991 ++        # try to create one of the directories concurrently.  Don't
47.44992 ++        # stop in that case!
47.44993 ++        $MKDIR "$my_dir" 2>/dev/null || :
47.44994 ++      done
47.44995 ++      IFS="$save_mkdir_p_IFS"
47.44996 ++
47.44997 ++      # Bail out if we (or some other process) failed to create a directory.
47.44998 ++      test -d "$my_directory_path" || \
47.44999 ++        func_fatal_error "Failed to create \`$1'"
47.45000 ++    fi
47.45001 ++}
47.45002 ++
47.45003 ++
47.45004 ++# func_mktempdir [string]
47.45005 ++# Make a temporary directory that won't clash with other running
47.45006 ++# libtool processes, and avoids race conditions if possible.  If
47.45007 ++# given, STRING is the basename for that directory.
47.45008 ++func_mktempdir ()
47.45009 ++{
47.45010 ++    my_template="${TMPDIR-/tmp}/${1-$progname}"
47.45011 ++
47.45012 ++    if test "$opt_dry_run" = ":"; then
47.45013 ++      # Return a directory name, but don't create it in dry-run mode
47.45014 ++      my_tmpdir="${my_template}-$$"
47.45015 ++    else
47.45016 ++
47.45017 ++      # If mktemp works, use that first and foremost
47.45018 ++      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
47.45019 ++
47.45020 ++      if test ! -d "$my_tmpdir"; then
47.45021 ++        # Failing that, at least try and use $RANDOM to avoid a race
47.45022 ++        my_tmpdir="${my_template}-${RANDOM-0}$$"
47.45023 ++
47.45024 ++        save_mktempdir_umask=`umask`
47.45025 ++        umask 0077
47.45026 ++        $MKDIR "$my_tmpdir"
47.45027 ++        umask $save_mktempdir_umask
47.45028 ++      fi
47.45029 ++
47.45030 ++      # If we're not in dry-run mode, bomb out on failure
47.45031 ++      test -d "$my_tmpdir" || \
47.45032 ++        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
47.45033 ++    fi
47.45034 ++
47.45035 ++    $ECHO "X$my_tmpdir" | $Xsed
47.45036 ++}
47.45037 ++
47.45038 ++
47.45039 ++# func_quote_for_eval arg
47.45040 ++# Aesthetically quote ARG to be evaled later.
47.45041 ++# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
47.45042 ++# is double-quoted, suitable for a subsequent eval, whereas
47.45043 ++# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
47.45044 ++# which are still active within double quotes backslashified.
47.45045 ++func_quote_for_eval ()
47.45046 ++{
47.45047 ++    case $1 in
47.45048 ++      *[\\\`\"\$]*)
47.45049 ++	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
47.45050 ++      *)
47.45051 ++        func_quote_for_eval_unquoted_result="$1" ;;
47.45052 ++    esac
47.45053 ++
47.45054 ++    case $func_quote_for_eval_unquoted_result in
47.45055 ++      # Double-quote args containing shell metacharacters to delay
47.45056 ++      # word splitting, command substitution and and variable
47.45057 ++      # expansion for a subsequent eval.
47.45058 ++      # Many Bourne shells cannot handle close brackets correctly
47.45059 ++      # in scan sets, so we specify it separately.
47.45060 ++      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
47.45061 ++        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
47.45062 ++        ;;
47.45063 ++      *)
47.45064 ++        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
47.45065 ++    esac
47.45066 ++}
47.45067 ++
47.45068 ++
47.45069 ++# func_quote_for_expand arg
47.45070 ++# Aesthetically quote ARG to be evaled later; same as above,
47.45071 ++# but do not quote variable references.
47.45072 ++func_quote_for_expand ()
47.45073 ++{
47.45074 ++    case $1 in
47.45075 ++      *[\\\`\"]*)
47.45076 ++	my_arg=`$ECHO "X$1" | $Xsed \
47.45077 ++	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
47.45078 ++      *)
47.45079 ++        my_arg="$1" ;;
47.45080 ++    esac
47.45081 ++
47.45082 ++    case $my_arg in
47.45083 ++      # Double-quote args containing shell metacharacters to delay
47.45084 ++      # word splitting and command substitution for a subsequent eval.
47.45085 ++      # Many Bourne shells cannot handle close brackets correctly
47.45086 ++      # in scan sets, so we specify it separately.
47.45087 ++      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
47.45088 ++        my_arg="\"$my_arg\""
47.45089 ++        ;;
47.45090 ++    esac
47.45091 ++
47.45092 ++    func_quote_for_expand_result="$my_arg"
47.45093 ++}
47.45094 ++
47.45095 ++
47.45096 ++# func_show_eval cmd [fail_exp]
47.45097 ++# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
47.45098 ++# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
47.45099 ++# is given, then evaluate it.
47.45100 ++func_show_eval ()
47.45101 ++{
47.45102 ++    my_cmd="$1"
47.45103 ++    my_fail_exp="${2-:}"
47.45104 ++
47.45105 ++    ${opt_silent-false} || {
47.45106 ++      func_quote_for_expand "$my_cmd"
47.45107 ++      eval "func_echo $func_quote_for_expand_result"
47.45108 ++    }
47.45109 ++
47.45110 ++    if ${opt_dry_run-false}; then :; else
47.45111 ++      eval "$my_cmd"
47.45112 ++      my_status=$?
47.45113 ++      if test "$my_status" -eq 0; then :; else
47.45114 ++	eval "(exit $my_status); $my_fail_exp"
47.45115 ++      fi
47.45116 ++    fi
47.45117 ++}
47.45118 ++
47.45119 ++
47.45120 ++
47.45121 ++
47.45122 ++
47.45123 ++# func_version
47.45124 ++# Echo version message to standard output and exit.
47.45125 ++func_version ()
47.45126 ++{
47.45127 ++    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
47.45128 ++        s/^# //
47.45129 ++	s/^# *$//
47.45130 ++        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
47.45131 ++        p
47.45132 ++     }' < "$progpath"
47.45133 ++     exit $?
47.45134 ++}
47.45135 ++
47.45136 ++# func_usage
47.45137 ++# Echo short help message to standard output and exit.
47.45138 ++func_usage ()
47.45139 ++{
47.45140 ++    $SED -n '/^# Usage:/,/# -h/ {
47.45141 ++        s/^# //
47.45142 ++	s/^# *$//
47.45143 ++	s/\$progname/'$progname'/
47.45144 ++	p
47.45145 ++    }' < "$progpath"
47.45146 ++    $ECHO
47.45147 ++    $ECHO "run \`$progname --help | more' for full usage"
47.45148 ++    exit $?
47.45149 ++}
47.45150 ++
47.45151 ++# func_help
47.45152 ++# Echo long help message to standard output and exit.
47.45153 ++func_help ()
47.45154 ++{
47.45155 ++    $SED -n '/^# Usage:/,/# Report bugs to/ {
47.45156 ++        s/^# //
47.45157 ++	s/^# *$//
47.45158 ++	s*\$progname*'$progname'*
47.45159 ++	s*\$host*'"$host"'*
47.45160 ++	s*\$SHELL*'"$SHELL"'*
47.45161 ++	s*\$LTCC*'"$LTCC"'*
47.45162 ++	s*\$LTCFLAGS*'"$LTCFLAGS"'*
47.45163 ++	s*\$LD*'"$LD"'*
47.45164 ++	s/\$with_gnu_ld/'"$with_gnu_ld"'/
47.45165 ++	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
47.45166 ++	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
47.45167 ++	p
47.45168 ++     }' < "$progpath"
47.45169 ++    exit $?
47.45170 ++}
47.45171 ++
47.45172 ++# func_missing_arg argname
47.45173 ++# Echo program name prefixed message to standard error and set global
47.45174 ++# exit_cmd.
47.45175 ++func_missing_arg ()
47.45176 ++{
47.45177 ++    func_error "missing argument for $1"
47.45178 ++    exit_cmd=exit
47.45179 ++}
47.45180 ++
47.45181 ++exit_cmd=:
47.45182 ++
47.45183 ++
47.45184 ++
47.45185 ++
47.45186 ++
47.45187 ++# Check that we have a working $ECHO.
47.45188 ++if test "X$1" = X--no-reexec; then
47.45189 ++  # Discard the --no-reexec flag, and continue.
47.45190 ++  shift
47.45191 ++elif test "X$1" = X--fallback-echo; then
47.45192 ++  # Avoid inline document here, it may be left over
47.45193 ++  :
47.45194 ++elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
47.45195 ++  # Yippee, $ECHO works!
47.45196 ++  :
47.45197 ++else
47.45198 ++  # Restart under the correct shell, and then maybe $ECHO will work.
47.45199 ++  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
47.45200 ++fi
47.45201 ++
47.45202 ++if test "X$1" = X--fallback-echo; then
47.45203 ++  # used as fallback echo
47.45204 ++  shift
47.45205 ++  cat <<EOF
47.45206 ++$*
47.45207 ++EOF
47.45208 ++  exit $EXIT_SUCCESS
47.45209 ++fi
47.45210 ++
47.45211 ++magic="%%%MAGIC variable%%%"
47.45212 ++
47.45213 ++
47.45214 ++# Global variables.
47.45215 ++# $mode is unset
47.45216 ++nonopt=
47.45217 ++execute_dlfiles=
47.45218 ++preserve_args=
47.45219 ++lo2o="s/\\.lo\$/.${objext}/"
47.45220 ++o2lo="s/\\.${objext}\$/.lo/"
47.45221 ++extracted_archives=
47.45222 ++extracted_serial=0
47.45223 ++
47.45224 ++opt_dry_run=false
47.45225 ++opt_duplicate_deps=false
47.45226 ++opt_silent=false
47.45227 ++opt_debug=:
47.45228 ++
47.45229 ++# If this variable is set in any of the actions, the command in it
47.45230 ++# will be execed at the end.  This prevents here-documents from being
47.45231 ++# left over by shells.
47.45232 ++exec_cmd=
47.45233 ++
47.45234 ++# func_fatal_configuration arg...
47.45235 ++# Echo program name prefixed message to standard error, followed by
47.45236 ++# a configuration failure hint, and exit.
47.45237 ++func_fatal_configuration ()
47.45238 ++{
47.45239 ++    func_error ${1+"$@"}
47.45240 ++    func_error "See the $PACKAGE documentation for more information."
47.45241 ++    func_fatal_error "Fatal configuration error."
47.45242 ++}
47.45243 ++
47.45244 ++
47.45245 ++# func_config
47.45246 ++# Display the configuration for all the tags in this script.
47.45247 ++func_config ()
47.45248 ++{
47.45249 ++    re_begincf='^# ### BEGIN LIBTOOL'
47.45250 ++    re_endcf='^# ### END LIBTOOL'
47.45251 ++
47.45252 ++    # Default configuration.
47.45253 ++    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
47.45254 ++
47.45255 ++    # Now print the configurations for the tags.
47.45256 ++    for tagname in $taglist; do
47.45257 ++      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
47.45258 ++    done
47.45259 ++
47.45260 ++    exit $?
47.45261 ++}
47.45262 ++
47.45263 ++# func_features
47.45264 ++# Display the features supported by this script.
47.45265 ++func_features ()
47.45266 ++{
47.45267 ++    $ECHO "host: $host"
47.45268 ++    if test "$build_libtool_libs" = yes; then
47.45269 ++      $ECHO "enable shared libraries"
47.45270 ++    else
47.45271 ++      $ECHO "disable shared libraries"
47.45272 ++    fi
47.45273 ++    if test "$build_old_libs" = yes; then
47.45274 ++      $ECHO "enable static libraries"
47.45275 ++    else
47.45276 ++      $ECHO "disable static libraries"
47.45277 ++    fi
47.45278 ++
47.45279 ++    exit $?
47.45280 ++}
47.45281 ++
47.45282 ++# func_enable_tag tagname
47.45283 ++# Verify that TAGNAME is valid, and either flag an error and exit, or
47.45284 ++# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
47.45285 ++# variable here.
47.45286 ++func_enable_tag ()
47.45287 ++{
47.45288 ++  # Global variable:
47.45289 ++  tagname="$1"
47.45290 ++
47.45291 ++  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
47.45292 ++  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
47.45293 ++  sed_extractcf="/$re_begincf/,/$re_endcf/p"
47.45294 ++
47.45295 ++  # Validate tagname.
47.45296 ++  case $tagname in
47.45297 ++    *[!-_A-Za-z0-9,/]*)
47.45298 ++      func_fatal_error "invalid tag name: $tagname"
47.45299 ++      ;;
47.45300 ++  esac
47.45301 ++
47.45302 ++  # Don't test for the "default" C tag, as we know it's
47.45303 ++  # there but not specially marked.
47.45304 ++  case $tagname in
47.45305 ++    CC) ;;
47.45306 ++    *)
47.45307 ++      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
47.45308 ++	taglist="$taglist $tagname"
47.45309 ++
47.45310 ++	# Evaluate the configuration.  Be careful to quote the path
47.45311 ++	# and the sed script, to avoid splitting on whitespace, but
47.45312 ++	# also don't use non-portable quotes within backquotes within
47.45313 ++	# quotes we have to do it in 2 steps:
47.45314 ++	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
47.45315 ++	eval "$extractedcf"
47.45316 ++      else
47.45317 ++	func_error "ignoring unknown tag $tagname"
47.45318 ++      fi
47.45319 ++      ;;
47.45320 ++  esac
47.45321 ++}
47.45322 ++
47.45323 ++
47.45324 ++func_mode_help ()
47.45325 ++{
47.45326 ++    # We need to display help for each of the modes.
47.45327 ++    case $mode in
47.45328 ++      "")
47.45329 ++        # Generic help is extracted from the usage comments
47.45330 ++        # at the start of this file.
47.45331 ++        func_help
47.45332 ++        ;;
47.45333 ++
47.45334 ++      clean)
47.45335 ++        $ECHO \
47.45336 ++"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
47.45337 ++
47.45338 ++Remove files from the build directory.
47.45339 ++
47.45340 ++RM is the name of the program to use to delete files associated with each FILE
47.45341 ++(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
47.45342 ++to RM.
47.45343 ++
47.45344 ++If FILE is a libtool library, object or program, all the files associated
47.45345 ++with it are deleted. Otherwise, only FILE itself is deleted using RM."
47.45346 ++        ;;
47.45347 ++
47.45348 ++      compile)
47.45349 ++      $ECHO \
47.45350 ++"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
47.45351 ++
47.45352 ++Compile a source file into a libtool library object.
47.45353 ++
47.45354 ++This mode accepts the following additional options:
47.45355 ++
47.45356 ++  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
47.45357 ++  -no-suppress      do not suppress compiler output for multiple passes
47.45358 ++  -prefer-pic       try to building PIC objects only
47.45359 ++  -prefer-non-pic   try to building non-PIC objects only
47.45360 ++  -shared           do not build a \`.o' file suitable for static linking
47.45361 ++  -static           only build a \`.o' file suitable for static linking
47.45362 ++
47.45363 ++COMPILE-COMMAND is a command to be used in creating a \`standard' object file
47.45364 ++from the given SOURCEFILE.
47.45365 ++
47.45366 ++The output file name is determined by removing the directory component from
47.45367 ++SOURCEFILE, then substituting the C source code suffix \`.c' with the
47.45368 ++library object suffix, \`.lo'."
47.45369 ++        ;;
47.45370 ++
47.45371 ++      execute)
47.45372 ++        $ECHO \
47.45373 ++"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
47.45374 ++
47.45375 ++Automatically set library path, then run a program.
47.45376 ++
47.45377 ++This mode accepts the following additional options:
47.45378 ++
47.45379 ++  -dlopen FILE      add the directory containing FILE to the library path
47.45380 ++
47.45381 ++This mode sets the library path environment variable according to \`-dlopen'
47.45382 ++flags.
47.45383 ++
47.45384 ++If any of the ARGS are libtool executable wrappers, then they are translated
47.45385 ++into their corresponding uninstalled binary, and any of their required library
47.45386 ++directories are added to the library path.
47.45387 ++
47.45388 ++Then, COMMAND is executed, with ARGS as arguments."
47.45389 ++        ;;
47.45390 ++
47.45391 ++      finish)
47.45392 ++        $ECHO \
47.45393 ++"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
47.45394 ++
47.45395 ++Complete the installation of libtool libraries.
47.45396 ++
47.45397 ++Each LIBDIR is a directory that contains libtool libraries.
47.45398 ++
47.45399 ++The commands that this mode executes may require superuser privileges.  Use
47.45400 ++the \`--dry-run' option if you just want to see what would be executed."
47.45401 ++        ;;
47.45402 ++
47.45403 ++      install)
47.45404 ++        $ECHO \
47.45405 ++"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
47.45406 ++
47.45407 ++Install executables or libraries.
47.45408 ++
47.45409 ++INSTALL-COMMAND is the installation command.  The first component should be
47.45410 ++either the \`install' or \`cp' program.
47.45411 ++
47.45412 ++The following components of INSTALL-COMMAND are treated specially:
47.45413 ++
47.45414 ++  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
47.45415 ++
47.45416 ++The rest of the components are interpreted as arguments to that command (only
47.45417 ++BSD-compatible install options are recognized)."
47.45418 ++        ;;
47.45419 ++
47.45420 ++      link)
47.45421 ++        $ECHO \
47.45422 ++"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
47.45423 ++
47.45424 ++Link object files or libraries together to form another library, or to
47.45425 ++create an executable program.
47.45426 ++
47.45427 ++LINK-COMMAND is a command using the C compiler that you would use to create
47.45428 ++a program from several object files.
47.45429 ++
47.45430 ++The following components of LINK-COMMAND are treated specially:
47.45431 ++
47.45432 ++  -all-static       do not do any dynamic linking at all
47.45433 ++  -avoid-version    do not add a version suffix if possible
47.45434 ++  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
47.45435 ++  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
47.45436 ++  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
47.45437 ++  -export-symbols SYMFILE
47.45438 ++                    try to export only the symbols listed in SYMFILE
47.45439 ++  -export-symbols-regex REGEX
47.45440 ++                    try to export only the symbols matching REGEX
47.45441 ++  -LLIBDIR          search LIBDIR for required installed libraries
47.45442 ++  -lNAME            OUTPUT-FILE requires the installed library libNAME
47.45443 ++  -module           build a library that can dlopened
47.45444 ++  -no-fast-install  disable the fast-install mode
47.45445 ++  -no-install       link a not-installable executable
47.45446 ++  -no-undefined     declare that a library does not refer to external symbols
47.45447 ++  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
47.45448 ++  -objectlist FILE  Use a list of object files found in FILE to specify objects
47.45449 ++  -precious-files-regex REGEX
47.45450 ++                    don't remove output files matching REGEX
47.45451 ++  -release RELEASE  specify package release information
47.45452 ++  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
47.45453 ++  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
47.45454 ++  -shared           only do dynamic linking of libtool libraries
47.45455 ++  -shrext SUFFIX    override the standard shared library file extension
47.45456 ++  -static           do not do any dynamic linking of uninstalled libtool libraries
47.45457 ++  -static-libtool-libs
47.45458 ++                    do not do any dynamic linking of libtool libraries
47.45459 ++  -version-info CURRENT[:REVISION[:AGE]]
47.45460 ++                    specify library version info [each variable defaults to 0]
47.45461 ++  -weak LIBNAME     declare that the target provides the LIBNAME interface
47.45462 ++
47.45463 ++All other options (arguments beginning with \`-') are ignored.
47.45464 ++
47.45465 ++Every other argument is treated as a filename.  Files ending in \`.la' are
47.45466 ++treated as uninstalled libtool libraries, other files are standard or library
47.45467 ++object files.
47.45468 ++
47.45469 ++If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
47.45470 ++only library objects (\`.lo' files) may be specified, and \`-rpath' is
47.45471 ++required, except when creating a convenience library.
47.45472 ++
47.45473 ++If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
47.45474 ++using \`ar' and \`ranlib', or on Windows using \`lib'.
47.45475 ++
47.45476 ++If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
47.45477 ++is created, otherwise an executable program is created."
47.45478 ++        ;;
47.45479 ++
47.45480 ++      uninstall)
47.45481 ++        $ECHO \
47.45482 ++"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
47.45483 ++
47.45484 ++Remove libraries from an installation directory.
47.45485 ++
47.45486 ++RM is the name of the program to use to delete files associated with each FILE
47.45487 ++(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
47.45488 ++to RM.
47.45489 ++
47.45490 ++If FILE is a libtool library, all the files associated with it are deleted.
47.45491 ++Otherwise, only FILE itself is deleted using RM."
47.45492 ++        ;;
47.45493 ++
47.45494 ++      *)
47.45495 ++        func_fatal_help "invalid operation mode \`$mode'"
47.45496 ++        ;;
47.45497 ++    esac
47.45498 ++
47.45499 ++    $ECHO
47.45500 ++    $ECHO "Try \`$progname --help' for more information about other modes."
47.45501 ++
47.45502 ++    exit $?
47.45503 ++}
47.45504 ++
47.45505 ++# Generated shell functions inserted here.
47.45506 ++
47.45507 ++# func_dirname file append nondir_replacement
47.45508 ++# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
47.45509 ++# otherwise set result to NONDIR_REPLACEMENT.
47.45510 ++func_dirname ()
47.45511 ++{
47.45512 ++  case ${1} in
47.45513 ++    */*) func_dirname_result="${1%/*}${2}" ;;
47.45514 ++    *  ) func_dirname_result="${3}" ;;
47.45515 ++  esac
47.45516 ++}
47.45517 ++
47.45518 ++# func_basename file
47.45519 ++func_basename ()
47.45520 ++{
47.45521 ++  func_basename_result="${1##*/}"
47.45522 ++}
47.45523 ++
47.45524 ++# func_dirname_and_basename file append nondir_replacement
47.45525 ++# perform func_basename and func_dirname in a single function
47.45526 ++# call:
47.45527 ++#   dirname:  Compute the dirname of FILE.  If nonempty,
47.45528 ++#             add APPEND to the result, otherwise set result
47.45529 ++#             to NONDIR_REPLACEMENT.
47.45530 ++#             value returned in "$func_dirname_result"
47.45531 ++#   basename: Compute filename of FILE.
47.45532 ++#             value retuned in "$func_basename_result"
47.45533 ++# Implementation must be kept synchronized with func_dirname
47.45534 ++# and func_basename. For efficiency, we do not delegate to
47.45535 ++# those functions but instead duplicate the functionality here.
47.45536 ++func_dirname_and_basename ()
47.45537 ++{
47.45538 ++  case ${1} in
47.45539 ++    */*) func_dirname_result="${1%/*}${2}" ;;
47.45540 ++    *  ) func_dirname_result="${3}" ;;
47.45541 ++  esac
47.45542 ++  func_basename_result="${1##*/}"
47.45543 ++}
47.45544 ++
47.45545 ++# func_stripname prefix suffix name
47.45546 ++# strip PREFIX and SUFFIX off of NAME.
47.45547 ++# PREFIX and SUFFIX must not contain globbing or regex special
47.45548 ++# characters, hashes, percent signs, but SUFFIX may contain a leading
47.45549 ++# dot (in which case that matches only a dot).
47.45550 ++func_stripname ()
47.45551 ++{
47.45552 ++  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
47.45553 ++  # positional parameters, so assign one to ordinary parameter first.
47.45554 ++  func_stripname_result=${3}
47.45555 ++  func_stripname_result=${func_stripname_result#"${1}"}
47.45556 ++  func_stripname_result=${func_stripname_result%"${2}"}
47.45557 ++}
47.45558 ++
47.45559 ++# func_opt_split
47.45560 ++func_opt_split ()
47.45561 ++{
47.45562 ++  func_opt_split_opt=${1%%=*}
47.45563 ++  func_opt_split_arg=${1#*=}
47.45564 ++}
47.45565 ++
47.45566 ++# func_lo2o object
47.45567 ++func_lo2o ()
47.45568 ++{
47.45569 ++  case ${1} in
47.45570 ++    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
47.45571 ++    *)    func_lo2o_result=${1} ;;
47.45572 ++  esac
47.45573 ++}
47.45574 ++
47.45575 ++# func_xform libobj-or-source
47.45576 ++func_xform ()
47.45577 ++{
47.45578 ++  func_xform_result=${1%.*}.lo
47.45579 ++}
47.45580 ++
47.45581 ++# func_arith arithmetic-term...
47.45582 ++func_arith ()
47.45583 ++{
47.45584 ++  func_arith_result=$(( $* ))
47.45585 ++}
47.45586 ++
47.45587 ++# func_len string
47.45588 ++# STRING may not start with a hyphen.
47.45589 ++func_len ()
47.45590 ++{
47.45591 ++  func_len_result=${#1}
47.45592 ++}
47.45593 ++
47.45594 ++
47.45595 ++# func_append var value
47.45596 ++# Append VALUE to the end of shell variable VAR.
47.45597 ++func_append ()
47.45598 ++{
47.45599 ++  eval "$1+=\$2"
47.45600 ++}
47.45601 ++# Generated shell functions inserted here.
47.45602 ++
47.45603 ++
47.45604 ++# Parse options once, thoroughly.  This comes as soon as possible in
47.45605 ++# the script to make things like `libtool --version' happen quickly.
47.45606 ++{
47.45607 ++
47.45608 ++  # Shorthand for --mode=foo, only valid as the first argument
47.45609 ++  case $1 in
47.45610 ++  clean|clea|cle|cl)
47.45611 ++    shift; set dummy --mode clean ${1+"$@"}; shift
47.45612 ++    ;;
47.45613 ++  compile|compil|compi|comp|com|co|c)
47.45614 ++    shift; set dummy --mode compile ${1+"$@"}; shift
47.45615 ++    ;;
47.45616 ++  execute|execut|execu|exec|exe|ex|e)
47.45617 ++    shift; set dummy --mode execute ${1+"$@"}; shift
47.45618 ++    ;;
47.45619 ++  finish|finis|fini|fin|fi|f)
47.45620 ++    shift; set dummy --mode finish ${1+"$@"}; shift
47.45621 ++    ;;
47.45622 ++  install|instal|insta|inst|ins|in|i)
47.45623 ++    shift; set dummy --mode install ${1+"$@"}; shift
47.45624 ++    ;;
47.45625 ++  link|lin|li|l)
47.45626 ++    shift; set dummy --mode link ${1+"$@"}; shift
47.45627 ++    ;;
47.45628 ++  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
47.45629 ++    shift; set dummy --mode uninstall ${1+"$@"}; shift
47.45630 ++    ;;
47.45631 ++  esac
47.45632 ++
47.45633 ++  # Parse non-mode specific arguments:
47.45634 ++  while test "$#" -gt 0; do
47.45635 ++    opt="$1"
47.45636 ++    shift
47.45637 ++
47.45638 ++    case $opt in
47.45639 ++      --config)		func_config 					;;
47.45640 ++
47.45641 ++      --debug)		preserve_args="$preserve_args $opt"
47.45642 ++	    		func_echo "enabling shell trace mode"
47.45643 ++	    		opt_debug='set -x'
47.45644 ++			$opt_debug
47.45645 ++			;;
47.45646 ++
47.45647 ++      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
47.45648 ++			execute_dlfiles="$execute_dlfiles $1"
47.45649 ++			shift
47.45650 ++			;;
47.45651 ++
47.45652 ++      --dry-run | -n)	opt_dry_run=:					;;
47.45653 ++      --features)       func_features					;;
47.45654 ++      --finish)		mode="finish"					;;
47.45655 ++
47.45656 ++      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
47.45657 ++	    		case $1 in
47.45658 ++			  # Valid mode arguments:
47.45659 ++			  clean)	;;
47.45660 ++			  compile)	;;
47.45661 ++			  execute)	;;
47.45662 ++			  finish)	;;
47.45663 ++			  install)	;;
47.45664 ++			  link)		;;
47.45665 ++			  relink)	;;
47.45666 ++			  uninstall)	;;
47.45667 ++
47.45668 ++			  # Catch anything else as an error
47.45669 ++			  *) func_error "invalid argument for $opt"
47.45670 ++			     exit_cmd=exit
47.45671 ++			     break
47.45672 ++			     ;;
47.45673 ++		        esac
47.45674 ++
47.45675 ++	    		mode="$1"
47.45676 ++			shift
47.45677 ++			;;
47.45678 ++
47.45679 ++      --preserve-dup-deps)
47.45680 ++      			opt_duplicate_deps=:				;;
47.45681 ++
47.45682 ++      --quiet|--silent)	preserve_args="$preserve_args $opt"
47.45683 ++	    		opt_silent=:
47.45684 ++			;;
47.45685 ++
47.45686 ++      --verbose| -v)	preserve_args="$preserve_args $opt"
47.45687 ++	    		opt_silent=false
47.45688 ++			;;
47.45689 ++
47.45690 ++      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
47.45691 ++			preserve_args="$preserve_args $opt $1"
47.45692 ++			func_enable_tag "$1"	# tagname is set here
47.45693 ++			shift
47.45694 ++			;;
47.45695 ++
47.45696 ++      # Separate optargs to long options:
47.45697 ++      -dlopen=*|--mode=*|--tag=*)
47.45698 ++			func_opt_split "$opt"
47.45699 ++			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
47.45700 ++			shift
47.45701 ++			;;
47.45702 ++
47.45703 ++      -\?|-h)		func_usage					;;
47.45704 ++      --help)		opt_help=:					;;
47.45705 ++      --version)	func_version					;;
47.45706 ++
47.45707 ++      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
47.45708 ++
47.45709 ++      *)		nonopt="$opt"
47.45710 ++      			break
47.45711 ++			;;
47.45712 ++    esac
47.45713 ++  done
47.45714 ++
47.45715 ++  # Now that we've collected a possible --mode arg, show help if necessary
47.45716 ++  $opt_help && func_mode_help
47.45717 ++
47.45718 ++  case $host in
47.45719 ++    *cygwin* | *mingw* | *pw32*)
47.45720 ++      # don't eliminate duplications in $postdeps and $predeps
47.45721 ++      opt_duplicate_compiler_generated_deps=:
47.45722 ++      ;;
47.45723 ++    *)
47.45724 ++      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
47.45725 ++      ;;
47.45726 ++  esac
47.45727 ++
47.45728 ++  # Having warned about all mis-specified options, bail out if
47.45729 ++  # anything was wrong.
47.45730 ++  $exit_cmd $EXIT_FAILURE
47.45731 ++}
47.45732 ++
47.45733 ++# func_check_version_match
47.45734 ++# Ensure that we are using m4 macros, and libtool script from the same
47.45735 ++# release of libtool.
47.45736 ++func_check_version_match ()
47.45737 ++{
47.45738 ++  if test "$package_revision" != "$macro_revision"; then
47.45739 ++    if test "$VERSION" != "$macro_version"; then
47.45740 ++      if test -z "$macro_version"; then
47.45741 ++        cat >&2 <<_LT_EOF
47.45742 ++$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
47.45743 ++$progname: definition of this LT_INIT comes from an older release.
47.45744 ++$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
47.45745 ++$progname: and run autoconf again.
47.45746 ++_LT_EOF
47.45747 ++      else
47.45748 ++        cat >&2 <<_LT_EOF
47.45749 ++$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
47.45750 ++$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
47.45751 ++$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
47.45752 ++$progname: and run autoconf again.
47.45753 ++_LT_EOF
47.45754 ++      fi
47.45755 ++    else
47.45756 ++      cat >&2 <<_LT_EOF
47.45757 ++$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
47.45758 ++$progname: but the definition of this LT_INIT comes from revision $macro_revision.
47.45759 ++$progname: You should recreate aclocal.m4 with macros from revision $package_revision
47.45760 ++$progname: of $PACKAGE $VERSION and run autoconf again.
47.45761 ++_LT_EOF
47.45762 ++    fi
47.45763 ++
47.45764 ++    exit $EXIT_MISMATCH
47.45765 ++  fi
47.45766 ++}
47.45767 ++
47.45768 ++
47.45769 ++## ----------- ##
47.45770 ++##    Main.    ##
47.45771 ++## ----------- ##
47.45772 ++
47.45773 ++{
47.45774 ++  # Sanity checks first:
47.45775 ++  func_check_version_match
47.45776 ++
47.45777 ++  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
47.45778 ++    func_fatal_configuration "not configured to build any kind of library"
47.45779 ++  fi
47.45780 ++
47.45781 ++  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
47.45782 ++
47.45783 ++
47.45784 ++  # Darwin sucks
47.45785 ++  eval std_shrext=\"$shrext_cmds\"
47.45786 ++
47.45787 ++
47.45788 ++  # Only execute mode is allowed to have -dlopen flags.
47.45789 ++  if test -n "$execute_dlfiles" && test "$mode" != execute; then
47.45790 ++    func_error "unrecognized option \`-dlopen'"
47.45791 ++    $ECHO "$help" 1>&2
47.45792 ++    exit $EXIT_FAILURE
47.45793 ++  fi
47.45794 ++
47.45795 ++  # Change the help message to a mode-specific one.
47.45796 ++  generic_help="$help"
47.45797 ++  help="Try \`$progname --help --mode=$mode' for more information."
47.45798 ++}
47.45799 ++
47.45800 ++
47.45801 ++# func_lalib_p file
47.45802 ++# True iff FILE is a libtool `.la' library or `.lo' object file.
47.45803 ++# This function is only a basic sanity check; it will hardly flush out
47.45804 ++# determined imposters.
47.45805 ++func_lalib_p ()
47.45806 ++{
47.45807 ++    $SED -e 4q "$1" 2>/dev/null \
47.45808 ++      | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
47.45809 ++}
47.45810 ++
47.45811 ++# func_lalib_unsafe_p file
47.45812 ++# True iff FILE is a libtool `.la' library or `.lo' object file.
47.45813 ++# This function implements the same check as func_lalib_p without
47.45814 ++# resorting to external programs.  To this end, it redirects stdin and
47.45815 ++# closes it afterwards, without saving the original file descriptor.
47.45816 ++# As a safety measure, use it only where a negative result would be
47.45817 ++# fatal anyway.  Works if `file' does not exist.
47.45818 ++func_lalib_unsafe_p ()
47.45819 ++{
47.45820 ++    lalib_p=no
47.45821 ++    if test -r "$1" && exec 5<&1 <"$1"; then
47.45822 ++	for lalib_p_l in 1 2 3 4
47.45823 ++	do
47.45824 ++	    read lalib_p_line
47.45825 ++	    case "$lalib_p_line" in
47.45826 ++		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
47.45827 ++	    esac
47.45828 ++	done
47.45829 ++	exec 1<&5 5<&-
47.45830 ++    fi
47.45831 ++    test "$lalib_p" = yes
47.45832 ++}
47.45833 ++
47.45834 ++# func_ltwrapper_p file
47.45835 ++# True iff FILE is a libtool wrapper script.
47.45836 ++# This function is only a basic sanity check; it will hardly flush out
47.45837 ++# determined imposters.
47.45838 ++func_ltwrapper_p ()
47.45839 ++{
47.45840 ++    func_lalib_p "$1"
47.45841 ++}
47.45842 ++
47.45843 ++
47.45844 ++# func_execute_cmds commands fail_cmd
47.45845 ++# Execute tilde-delimited COMMANDS.
47.45846 ++# If FAIL_CMD is given, eval that upon failure.
47.45847 ++# FAIL_CMD may read-access the current command in variable CMD!
47.45848 ++func_execute_cmds ()
47.45849 ++{
47.45850 ++    $opt_debug
47.45851 ++    save_ifs=$IFS; IFS='~'
47.45852 ++    for cmd in $1; do
47.45853 ++      IFS=$save_ifs
47.45854 ++      eval cmd=\"$cmd\"
47.45855 ++      func_show_eval "$cmd" "${2-:}"
47.45856 ++    done
47.45857 ++    IFS=$save_ifs
47.45858 ++}
47.45859 ++
47.45860 ++
47.45861 ++# func_source file
47.45862 ++# Source FILE, adding directory component if necessary.
47.45863 ++# Note that it is not necessary on cygwin/mingw to append a dot to
47.45864 ++# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
47.45865 ++# behavior happens only for exec(3), not for open(2)!  Also, sourcing
47.45866 ++# `FILE.' does not work on cygwin managed mounts.
47.45867 ++func_source ()
47.45868 ++{
47.45869 ++    $opt_debug
47.45870 ++    case $1 in
47.45871 ++    */* | *\\*)	. "$1" ;;
47.45872 ++    *)		. "./$1" ;;
47.45873 ++    esac
47.45874 ++}
47.45875 ++
47.45876 ++
47.45877 ++# func_win32_libid arg
47.45878 ++# return the library type of file 'arg'
47.45879 ++#
47.45880 ++# Need a lot of goo to handle *both* DLLs and import libs
47.45881 ++# Has to be a shell function in order to 'eat' the argument
47.45882 ++# that is supplied when $file_magic_command is called.
47.45883 ++func_win32_libid ()
47.45884 ++{
47.45885 ++  $opt_debug
47.45886 ++  win32_libid_type="unknown"
47.45887 ++  win32_fileres=`file -L $1 2>/dev/null`
47.45888 ++  case $win32_fileres in
47.45889 ++  *ar\ archive\ import\ library*) # definitely import
47.45890 ++    win32_libid_type="x86 archive import"
47.45891 ++    ;;
47.45892 ++  *ar\ archive*) # could be an import, or static
47.45893 ++    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
47.45894 ++       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
47.45895 ++      win32_nmres=`eval $NM -f posix -A $1 |
47.45896 ++	$SED -n -e '
47.45897 ++	    1,100{
47.45898 ++		/ I /{
47.45899 ++		    s,.*,import,
47.45900 ++		    p
47.45901 ++		    q
47.45902 ++		}
47.45903 ++	    }'`
47.45904 ++      case $win32_nmres in
47.45905 ++      import*)  win32_libid_type="x86 archive import";;
47.45906 ++      *)        win32_libid_type="x86 archive static";;
47.45907 ++      esac
47.45908 ++    fi
47.45909 ++    ;;
47.45910 ++  *DLL*)
47.45911 ++    win32_libid_type="x86 DLL"
47.45912 ++    ;;
47.45913 ++  *executable*) # but shell scripts are "executable" too...
47.45914 ++    case $win32_fileres in
47.45915 ++    *MS\ Windows\ PE\ Intel*)
47.45916 ++      win32_libid_type="x86 DLL"
47.45917 ++      ;;
47.45918 ++    esac
47.45919 ++    ;;
47.45920 ++  esac
47.45921 ++  $ECHO "$win32_libid_type"
47.45922 ++}
47.45923 ++
47.45924 ++
47.45925 ++
47.45926 ++# func_infer_tag arg
47.45927 ++# Infer tagged configuration to use if any are available and
47.45928 ++# if one wasn't chosen via the "--tag" command line option.
47.45929 ++# Only attempt this if the compiler in the base compile
47.45930 ++# command doesn't match the default compiler.
47.45931 ++# arg is usually of the form 'gcc ...'
47.45932 ++func_infer_tag ()
47.45933 ++{
47.45934 ++    $opt_debug
47.45935 ++    if test -n "$available_tags" && test -z "$tagname"; then
47.45936 ++      CC_quoted=
47.45937 ++      for arg in $CC; do
47.45938 ++        func_quote_for_eval "$arg"
47.45939 ++	CC_quoted="$CC_quoted $func_quote_for_eval_result"
47.45940 ++      done
47.45941 ++      case $@ in
47.45942 ++      # Blanks in the command may have been stripped by the calling shell,
47.45943 ++      # but not from the CC environment variable when configure was run.
47.45944 ++      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
47.45945 ++      # Blanks at the start of $base_compile will cause this to fail
47.45946 ++      # if we don't check for them as well.
47.45947 ++      *)
47.45948 ++	for z in $available_tags; do
47.45949 ++	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
47.45950 ++	    # Evaluate the configuration.
47.45951 ++	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
47.45952 ++	    CC_quoted=
47.45953 ++	    for arg in $CC; do
47.45954 ++	      # Double-quote args containing other shell metacharacters.
47.45955 ++	      func_quote_for_eval "$arg"
47.45956 ++	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
47.45957 ++	    done
47.45958 ++	    case "$@ " in
47.45959 ++	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
47.45960 ++	      # The compiler in the base compile command matches
47.45961 ++	      # the one in the tagged configuration.
47.45962 ++	      # Assume this is the tagged configuration we want.
47.45963 ++	      tagname=$z
47.45964 ++	      break
47.45965 ++	      ;;
47.45966 ++	    esac
47.45967 ++	  fi
47.45968 ++	done
47.45969 ++	# If $tagname still isn't set, then no tagged configuration
47.45970 ++	# was found and let the user know that the "--tag" command
47.45971 ++	# line option must be used.
47.45972 ++	if test -z "$tagname"; then
47.45973 ++	  func_echo "unable to infer tagged configuration"
47.45974 ++	  func_fatal_error "specify a tag with \`--tag'"
47.45975 ++#	else
47.45976 ++#	  func_verbose "using $tagname tagged configuration"
47.45977 ++	fi
47.45978 ++	;;
47.45979 ++      esac
47.45980 ++    fi
47.45981 ++}
47.45982 ++
47.45983 ++
47.45984 ++
47.45985 ++# func_generate_dlsyms outputname originator pic_p
47.45986 ++# Extract symbols from dlprefiles and create ${outputname}S.o with
47.45987 ++# a dlpreopen symbol table.
47.45988 ++func_generate_dlsyms ()
47.45989 ++{
47.45990 ++    $opt_debug
47.45991 ++    my_outputname="$1"
47.45992 ++    my_originator="$2"
47.45993 ++    my_pic_p="${3-no}"
47.45994 ++    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
47.45995 ++    my_dlsyms=
47.45996 ++
47.45997 ++    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
47.45998 ++      if test -n "$NM" && test -n "$global_symbol_pipe"; then
47.45999 ++	my_dlsyms="${my_outputname}S.c"
47.46000 ++      else
47.46001 ++	func_error "not configured to extract global symbols from dlpreopened files"
47.46002 ++      fi
47.46003 ++    fi
47.46004 ++
47.46005 ++    if test -n "$my_dlsyms"; then
47.46006 ++      case $my_dlsyms in
47.46007 ++      "") ;;
47.46008 ++      *.c)
47.46009 ++	# Discover the nlist of each of the dlfiles.
47.46010 ++	nlist="$output_objdir/${my_outputname}.nm"
47.46011 ++
47.46012 ++	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
47.46013 ++
47.46014 ++	# Parse the name list into a source file.
47.46015 ++	func_echo "creating $output_objdir/$my_dlsyms"
47.46016 ++
47.46017 ++	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
47.46018 ++/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
47.46019 ++/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
47.46020 ++
47.46021 ++#ifdef __cplusplus
47.46022 ++extern \"C\" {
47.46023 ++#endif
47.46024 ++
47.46025 ++/* External symbol declarations for the compiler. */\
47.46026 ++"
47.46027 ++
47.46028 ++	if test "$dlself" = yes; then
47.46029 ++	  func_echo "generating symbol list for \`$output'"
47.46030 ++
47.46031 ++	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
47.46032 ++
47.46033 ++	  # Add our own program objects to the symbol list.
47.46034 ++	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
47.46035 ++	  for progfile in $progfiles; do
47.46036 ++	    func_echo "extracting global C symbols from \`$progfile'"
47.46037 ++	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
47.46038 ++	  done
47.46039 ++
47.46040 ++	  if test -n "$exclude_expsyms"; then
47.46041 ++	    $opt_dry_run || {
47.46042 ++	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
47.46043 ++	      eval '$MV "$nlist"T "$nlist"'
47.46044 ++	    }
47.46045 ++	  fi
47.46046 ++
47.46047 ++	  if test -n "$export_symbols_regex"; then
47.46048 ++	    $opt_dry_run || {
47.46049 ++	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
47.46050 ++	      eval '$MV "$nlist"T "$nlist"'
47.46051 ++	    }
47.46052 ++	  fi
47.46053 ++
47.46054 ++	  # Prepare the list of exported symbols
47.46055 ++	  if test -z "$export_symbols"; then
47.46056 ++	    export_symbols="$output_objdir/$outputname.exp"
47.46057 ++	    $opt_dry_run || {
47.46058 ++	      $RM $export_symbols
47.46059 ++	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
47.46060 ++	      case $host in
47.46061 ++	      *cygwin* | *mingw* )
47.46062 ++                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
47.46063 ++                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
47.46064 ++	        ;;
47.46065 ++	      esac
47.46066 ++	    }
47.46067 ++	  else
47.46068 ++	    $opt_dry_run || {
47.46069 ++	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
47.46070 ++	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
47.46071 ++	      eval '$MV "$nlist"T "$nlist"'
47.46072 ++	      case $host in
47.46073 ++	        *cygwin | *mingw* )
47.46074 ++	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
47.46075 ++	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
47.46076 ++	          ;;
47.46077 ++	      esac
47.46078 ++	    }
47.46079 ++	  fi
47.46080 ++	fi
47.46081 ++
47.46082 ++	for dlprefile in $dlprefiles; do
47.46083 ++	  func_echo "extracting global C symbols from \`$dlprefile'"
47.46084 ++	  func_basename "$dlprefile"
47.46085 ++	  name="$func_basename_result"
47.46086 ++	  $opt_dry_run || {
47.46087 ++	    eval '$ECHO ": $name " >> "$nlist"'
47.46088 ++	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
47.46089 ++	  }
47.46090 ++	done
47.46091 ++
47.46092 ++	$opt_dry_run || {
47.46093 ++	  # Make sure we have at least an empty file.
47.46094 ++	  test -f "$nlist" || : > "$nlist"
47.46095 ++
47.46096 ++	  if test -n "$exclude_expsyms"; then
47.46097 ++	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
47.46098 ++	    $MV "$nlist"T "$nlist"
47.46099 ++	  fi
47.46100 ++
47.46101 ++	  # Try sorting and uniquifying the output.
47.46102 ++	  if $GREP -v "^: " < "$nlist" |
47.46103 ++	      if sort -k 3 </dev/null >/dev/null 2>&1; then
47.46104 ++		sort -k 3
47.46105 ++	      else
47.46106 ++		sort +2
47.46107 ++	      fi |
47.46108 ++	      uniq > "$nlist"S; then
47.46109 ++	    :
47.46110 ++	  else
47.46111 ++	    $GREP -v "^: " < "$nlist" > "$nlist"S
47.46112 ++	  fi
47.46113 ++
47.46114 ++	  if test -f "$nlist"S; then
47.46115 ++	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
47.46116 ++	  else
47.46117 ++	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
47.46118 ++	  fi
47.46119 ++
47.46120 ++	  $ECHO >> "$output_objdir/$my_dlsyms" "\
47.46121 ++
47.46122 ++/* The mapping between symbol names and symbols.  */
47.46123 ++typedef struct {
47.46124 ++  const char *name;
47.46125 ++  void *address;
47.46126 ++} lt_dlsymlist;
47.46127 ++"
47.46128 ++	  case $host in
47.46129 ++	  *cygwin* | *mingw* )
47.46130 ++	    $ECHO >> "$output_objdir/$my_dlsyms" "\
47.46131 ++/* DATA imports from DLLs on WIN32 con't be const, because
47.46132 ++   runtime relocations are performed -- see ld's documentation
47.46133 ++   on pseudo-relocs.  */"
47.46134 ++	    lt_dlsym_const= ;;
47.46135 ++	  *osf5*)
47.46136 ++	    echo >> "$output_objdir/$my_dlsyms" "\
47.46137 ++/* This system does not cope well with relocations in const data */"
47.46138 ++	    lt_dlsym_const= ;;
47.46139 ++	  *)
47.46140 ++	    lt_dlsym_const=const ;;
47.46141 ++	  esac
47.46142 ++
47.46143 ++	  $ECHO >> "$output_objdir/$my_dlsyms" "\
47.46144 ++extern $lt_dlsym_const lt_dlsymlist
47.46145 ++lt_${my_prefix}_LTX_preloaded_symbols[];
47.46146 ++$lt_dlsym_const lt_dlsymlist
47.46147 ++lt_${my_prefix}_LTX_preloaded_symbols[] =
47.46148 ++{\
47.46149 ++  { \"$my_originator\", (void *) 0 },"
47.46150 ++
47.46151 ++	  eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
47.46152 ++
47.46153 ++	  $ECHO >> "$output_objdir/$my_dlsyms" "\
47.46154 ++  {0, (void *) 0}
47.46155 ++};
47.46156 ++
47.46157 ++/* This works around a problem in FreeBSD linker */
47.46158 ++#ifdef FREEBSD_WORKAROUND
47.46159 ++static const void *lt_preloaded_setup() {
47.46160 ++  return lt_${my_prefix}_LTX_preloaded_symbols;
47.46161 ++}
47.46162 ++#endif
47.46163 ++
47.46164 ++#ifdef __cplusplus
47.46165 ++}
47.46166 ++#endif\
47.46167 ++"
47.46168 ++	} # !$opt_dry_run
47.46169 ++
47.46170 ++  	pic_flag_for_symtable=
47.46171 ++	case "$compile_command " in
47.46172 ++	*" -static "*) ;;
47.46173 ++	*)
47.46174 ++	  case $host in
47.46175 ++	  # compiling the symbol table file with pic_flag works around
47.46176 ++	  # a FreeBSD bug that causes programs to crash when -lm is
47.46177 ++	  # linked before any other PIC object.  But we must not use
47.46178 ++	  # pic_flag when linking with -static.  The problem exists in
47.46179 ++	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
47.46180 ++	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
47.46181 ++	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
47.46182 ++	  *-*-hpux*)
47.46183 ++	    pic_flag_for_symtable=" $pic_flag"  ;;
47.46184 ++	  *)
47.46185 ++	    if test "X$my_pic_p" != Xno; then
47.46186 ++	      pic_flag_for_symtable=" $pic_flag"
47.46187 ++	    fi
47.46188 ++	    ;;
47.46189 ++	  esac
47.46190 ++	  ;;
47.46191 ++	esac
47.46192 ++	symtab_cflags=
47.46193 ++	for arg in $LTCFLAGS; do
47.46194 ++	  case $arg in
47.46195 ++	  -pie | -fpie | -fPIE) ;;
47.46196 ++	  *) symtab_cflags="$symtab_cflags $arg" ;;
47.46197 ++	  esac
47.46198 ++	done
47.46199 ++
47.46200 ++	# Now compile the dynamic symbol file.
47.46201 ++	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
47.46202 ++
47.46203 ++	# Clean up the generated files.
47.46204 ++	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
47.46205 ++
47.46206 ++	# Transform the symbol file into the correct name.
47.46207 ++	symfileobj="$output_objdir/${my_outputname}S.$objext"
47.46208 ++	case $host in
47.46209 ++	*cygwin* | *mingw* )
47.46210 ++	  if test -f "$output_objdir/$my_outputname.def"; then
47.46211 ++	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
47.46212 ++	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
47.46213 ++	  else
47.46214 ++	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
47.46215 ++	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
47.46216 ++	  fi
47.46217 ++	  ;;
47.46218 ++	*)
47.46219 ++	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
47.46220 ++	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
47.46221 ++	  ;;
47.46222 ++	esac
47.46223 ++	;;
47.46224 ++      *)
47.46225 ++	func_fatal_error "unknown suffix for \`$my_dlsyms'"
47.46226 ++	;;
47.46227 ++      esac
47.46228 ++    else
47.46229 ++      # We keep going just in case the user didn't refer to
47.46230 ++      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
47.46231 ++      # really was required.
47.46232 ++
47.46233 ++      # Nullify the symbol file.
47.46234 ++      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
47.46235 ++      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
47.46236 ++    fi
47.46237 ++}
47.46238 ++
47.46239 ++# func_extract_an_archive dir oldlib
47.46240 ++func_extract_an_archive ()
47.46241 ++{
47.46242 ++    $opt_debug
47.46243 ++    f_ex_an_ar_dir="$1"; shift
47.46244 ++    f_ex_an_ar_oldlib="$1"
47.46245 ++    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" 'exit $?'
47.46246 ++    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
47.46247 ++     :
47.46248 ++    else
47.46249 ++      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
47.46250 ++    fi
47.46251 ++}
47.46252 ++
47.46253 ++
47.46254 ++# func_extract_archives gentop oldlib ...
47.46255 ++func_extract_archives ()
47.46256 ++{
47.46257 ++    $opt_debug
47.46258 ++    my_gentop="$1"; shift
47.46259 ++    my_oldlibs=${1+"$@"}
47.46260 ++    my_oldobjs=""
47.46261 ++    my_xlib=""
47.46262 ++    my_xabs=""
47.46263 ++    my_xdir=""
47.46264 ++
47.46265 ++    for my_xlib in $my_oldlibs; do
47.46266 ++      # Extract the objects.
47.46267 ++      case $my_xlib in
47.46268 ++	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
47.46269 ++	*) my_xabs=`pwd`"/$my_xlib" ;;
47.46270 ++      esac
47.46271 ++      func_basename "$my_xlib"
47.46272 ++      my_xlib="$func_basename_result"
47.46273 ++      my_xlib_u=$my_xlib
47.46274 ++      while :; do
47.46275 ++        case " $extracted_archives " in
47.46276 ++	*" $my_xlib_u "*)
47.46277 ++	  extracted_serial=`expr $extracted_serial + 1`
47.46278 ++	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
47.46279 ++	*) break ;;
47.46280 ++	esac
47.46281 ++      done
47.46282 ++      extracted_archives="$extracted_archives $my_xlib_u"
47.46283 ++      my_xdir="$my_gentop/$my_xlib_u"
47.46284 ++
47.46285 ++      func_mkdir_p "$my_xdir"
47.46286 ++
47.46287 ++      case $host in
47.46288 ++      *-darwin*)
47.46289 ++	func_echo "Extracting $my_xabs"
47.46290 ++	# Do not bother doing anything if just a dry run
47.46291 ++	$opt_dry_run || {
47.46292 ++	  darwin_orig_dir=`pwd`
47.46293 ++	  cd $my_xdir || exit $?
47.46294 ++	  darwin_archive=$my_xabs
47.46295 ++	  darwin_curdir=`pwd`
47.46296 ++	  darwin_base_archive=`basename $darwin_archive`
47.46297 ++	  darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
47.46298 ++	  if test -n "$darwin_arches"; then
47.46299 ++	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
47.46300 ++	    darwin_arch=
47.46301 ++	    func_echo "$darwin_base_archive has multiple architectures $darwin_arches"
47.46302 ++	    for darwin_arch in  $darwin_arches ; do
47.46303 ++	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
47.46304 ++	      lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
47.46305 ++	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
47.46306 ++	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
47.46307 ++	      cd "$darwin_curdir"
47.46308 ++	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
47.46309 ++	    done # $darwin_arches
47.46310 ++            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
47.46311 ++	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
47.46312 ++	    darwin_file=
47.46313 ++	    darwin_files=
47.46314 ++	    for darwin_file in $darwin_filelist; do
47.46315 ++	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
47.46316 ++	      lipo -create -output "$darwin_file" $darwin_files
47.46317 ++	    done # $darwin_filelist
47.46318 ++	    $RM -rf unfat-$$
47.46319 ++	    cd "$darwin_orig_dir"
47.46320 ++	  else
47.46321 ++	    cd $darwin_orig_dir
47.46322 ++	    func_extract_an_archive "$my_xdir" "$my_xabs"
47.46323 ++	  fi # $darwin_arches
47.46324 ++	} # !$opt_dry_run
47.46325 ++	;;
47.46326 ++      *)
47.46327 ++        func_extract_an_archive "$my_xdir" "$my_xabs"
47.46328 ++	;;
47.46329 ++      esac
47.46330 ++      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
47.46331 ++    done
47.46332 ++
47.46333 ++    func_extract_archives_result="$my_oldobjs"
47.46334 ++}
47.46335 ++
47.46336 ++
47.46337 ++
47.46338 ++# func_write_libtool_object output_name pic_name nonpic_name
47.46339 ++# Create a libtool object file (analogous to a ".la" file),
47.46340 ++# but don't create it if we're doing a dry run.
47.46341 ++func_write_libtool_object ()
47.46342 ++{
47.46343 ++    write_libobj=${1}
47.46344 ++    if test "$build_libtool_libs" = yes; then
47.46345 ++      write_lobj=\'${2}\'
47.46346 ++    else
47.46347 ++      write_lobj=none
47.46348 ++    fi
47.46349 ++
47.46350 ++    if test "$build_old_libs" = yes; then
47.46351 ++      write_oldobj=\'${3}\'
47.46352 ++    else
47.46353 ++      write_oldobj=none
47.46354 ++    fi
47.46355 ++
47.46356 ++    $opt_dry_run || {
47.46357 ++      cat >${write_libobj}T <<EOF
47.46358 ++# $write_libobj - a libtool object file
47.46359 ++# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
47.46360 ++#
47.46361 ++# Please DO NOT delete this file!
47.46362 ++# It is necessary for linking the library.
47.46363 ++
47.46364 ++# Name of the PIC object.
47.46365 ++pic_object=$write_lobj
47.46366 ++
47.46367 ++# Name of the non-PIC object
47.46368 ++non_pic_object=$write_oldobj
47.46369 ++
47.46370 ++EOF
47.46371 ++      mv -f "${write_libobj}T" "${write_libobj}"
47.46372 ++    }
47.46373 ++}
47.46374 ++
47.46375 ++# func_mode_compile arg...
47.46376 ++func_mode_compile ()
47.46377 ++{
47.46378 ++    $opt_debug
47.46379 ++    # Get the compilation command and the source file.
47.46380 ++    base_compile=
47.46381 ++    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
47.46382 ++    suppress_opt=yes
47.46383 ++    suppress_output=
47.46384 ++    arg_mode=normal
47.46385 ++    libobj=
47.46386 ++    later=
47.46387 ++    pie_flag=
47.46388 ++
47.46389 ++    for arg
47.46390 ++    do
47.46391 ++      case $arg_mode in
47.46392 ++      arg  )
47.46393 ++	# do not "continue".  Instead, add this to base_compile
47.46394 ++	lastarg="$arg"
47.46395 ++	arg_mode=normal
47.46396 ++	;;
47.46397 ++
47.46398 ++      target )
47.46399 ++	libobj="$arg"
47.46400 ++	arg_mode=normal
47.46401 ++	continue
47.46402 ++	;;
47.46403 ++
47.46404 ++      normal )
47.46405 ++	# Accept any command-line options.
47.46406 ++	case $arg in
47.46407 ++	-o)
47.46408 ++	  test -n "$libobj" && \
47.46409 ++	    func_fatal_error "you cannot specify \`-o' more than once"
47.46410 ++	  arg_mode=target
47.46411 ++	  continue
47.46412 ++	  ;;
47.46413 ++
47.46414 ++	-pie | -fpie | -fPIE)
47.46415 ++          pie_flag="$pie_flag $arg"
47.46416 ++	  continue
47.46417 ++	  ;;
47.46418 ++
47.46419 ++	-shared | -static | -prefer-pic | -prefer-non-pic)
47.46420 ++	  later="$later $arg"
47.46421 ++	  continue
47.46422 ++	  ;;
47.46423 ++
47.46424 ++	-no-suppress)
47.46425 ++	  suppress_opt=no
47.46426 ++	  continue
47.46427 ++	  ;;
47.46428 ++
47.46429 ++	-Xcompiler)
47.46430 ++	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
47.46431 ++	  continue      #  The current "srcfile" will either be retained or
47.46432 ++	  ;;            #  replaced later.  I would guess that would be a bug.
47.46433 ++
47.46434 ++	-Wc,*)
47.46435 ++	  func_stripname '-Wc,' '' "$arg"
47.46436 ++	  args=$func_stripname_result
47.46437 ++	  lastarg=
47.46438 ++	  save_ifs="$IFS"; IFS=','
47.46439 ++	  for arg in $args; do
47.46440 ++	    IFS="$save_ifs"
47.46441 ++	    func_quote_for_eval "$arg"
47.46442 ++	    lastarg="$lastarg $func_quote_for_eval_result"
47.46443 ++	  done
47.46444 ++	  IFS="$save_ifs"
47.46445 ++	  func_stripname ' ' '' "$lastarg"
47.46446 ++	  lastarg=$func_stripname_result
47.46447 ++
47.46448 ++	  # Add the arguments to base_compile.
47.46449 ++	  base_compile="$base_compile $lastarg"
47.46450 ++	  continue
47.46451 ++	  ;;
47.46452 ++
47.46453 ++	*)
47.46454 ++	  # Accept the current argument as the source file.
47.46455 ++	  # The previous "srcfile" becomes the current argument.
47.46456 ++	  #
47.46457 ++	  lastarg="$srcfile"
47.46458 ++	  srcfile="$arg"
47.46459 ++	  ;;
47.46460 ++	esac  #  case $arg
47.46461 ++	;;
47.46462 ++      esac    #  case $arg_mode
47.46463 ++
47.46464 ++      # Aesthetically quote the previous argument.
47.46465 ++      func_quote_for_eval "$lastarg"
47.46466 ++      base_compile="$base_compile $func_quote_for_eval_result"
47.46467 ++    done # for arg
47.46468 ++
47.46469 ++    case $arg_mode in
47.46470 ++    arg)
47.46471 ++      func_fatal_error "you must specify an argument for -Xcompile"
47.46472 ++      ;;
47.46473 ++    target)
47.46474 ++      func_fatal_error "you must specify a target with \`-o'"
47.46475 ++      ;;
47.46476 ++    *)
47.46477 ++      # Get the name of the library object.
47.46478 ++      test -z "$libobj" && {
47.46479 ++	func_basename "$srcfile"
47.46480 ++	libobj="$func_basename_result"
47.46481 ++      }
47.46482 ++      ;;
47.46483 ++    esac
47.46484 ++
47.46485 ++    # Recognize several different file suffixes.
47.46486 ++    # If the user specifies -o file.o, it is replaced with file.lo
47.46487 ++    xform='[cCFSifmso]'
47.46488 ++    case $libobj in
47.46489 ++    *.ada) xform=ada ;;
47.46490 ++    *.adb) xform=adb ;;
47.46491 ++    *.ads) xform=ads ;;
47.46492 ++    *.asm) xform=asm ;;
47.46493 ++    *.c++) xform=c++ ;;
47.46494 ++    *.cc) xform=cc ;;
47.46495 ++    *.ii) xform=ii ;;
47.46496 ++    *.class) xform=class ;;
47.46497 ++    *.cpp) xform=cpp ;;
47.46498 ++    *.cxx) xform=cxx ;;
47.46499 ++    *.[fF][09]?) xform='[fF][09].' ;;
47.46500 ++    *.for) xform=for ;;
47.46501 ++    *.java) xform=java ;;
47.46502 ++    *.obj) xform=obj ;;
47.46503 ++    esac
47.46504 ++
47.46505 ++    libobj=`$ECHO "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
47.46506 ++
47.46507 ++    case $libobj in
47.46508 ++    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
47.46509 ++    *)
47.46510 ++      func_fatal_error "cannot determine name of library object from \`$libobj'"
47.46511 ++      ;;
47.46512 ++    esac
47.46513 ++
47.46514 ++    func_infer_tag $base_compile
47.46515 ++
47.46516 ++    for arg in $later; do
47.46517 ++      case $arg in
47.46518 ++      -shared)
47.46519 ++	test "$build_libtool_libs" != yes && \
47.46520 ++	  func_fatal_configuration "can not build a shared library"
47.46521 ++	build_old_libs=no
47.46522 ++	continue
47.46523 ++	;;
47.46524 ++
47.46525 ++      -static)
47.46526 ++	build_libtool_libs=no
47.46527 ++	build_old_libs=yes
47.46528 ++	continue
47.46529 ++	;;
47.46530 ++
47.46531 ++      -prefer-pic)
47.46532 ++	pic_mode=yes
47.46533 ++	continue
47.46534 ++	;;
47.46535 ++
47.46536 ++      -prefer-non-pic)
47.46537 ++	pic_mode=no
47.46538 ++	continue
47.46539 ++	;;
47.46540 ++      esac
47.46541 ++    done
47.46542 ++
47.46543 ++    func_quote_for_eval "$libobj"
47.46544 ++    test "X$libobj" != "X$func_quote_for_eval_result" \
47.46545 ++      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' 	&()|`$[]' \
47.46546 ++      && func_warning "libobj name \`$libobj' may not contain shell special characters."
47.46547 ++    func_basename "$obj"
47.46548 ++    objname="$func_basename_result"
47.46549 ++    func_dirname "$obj" "/" ""
47.46550 ++    xdir="$func_dirname_result"
47.46551 ++    lobj=${xdir}$objdir/$objname
47.46552 ++
47.46553 ++    test -z "$base_compile" && \
47.46554 ++      func_fatal_help "you must specify a compilation command"
47.46555 ++
47.46556 ++    # Delete any leftover library objects.
47.46557 ++    if test "$build_old_libs" = yes; then
47.46558 ++      removelist="$obj $lobj $libobj ${libobj}T"
47.46559 ++    else
47.46560 ++      removelist="$lobj $libobj ${libobj}T"
47.46561 ++    fi
47.46562 ++
47.46563 ++    $opt_dry_run || $RM $removelist
47.46564 ++    trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
47.46565 ++
47.46566 ++    # On Cygwin there's no "real" PIC flag so we must build both object types
47.46567 ++    case $host_os in
47.46568 ++    cygwin* | mingw* | pw32* | os2*)
47.46569 ++      pic_mode=default
47.46570 ++      ;;
47.46571 ++    esac
47.46572 ++    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
47.46573 ++      # non-PIC code in shared libraries is not supported
47.46574 ++      pic_mode=default
47.46575 ++    fi
47.46576 ++
47.46577 ++    # Calculate the filename of the output object if compiler does
47.46578 ++    # not support -o with -c
47.46579 ++    if test "$compiler_c_o" = no; then
47.46580 ++      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
47.46581 ++      lockfile="$output_obj.lock"
47.46582 ++      removelist="$removelist $output_obj $lockfile"
47.46583 ++      trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
47.46584 ++    else
47.46585 ++      output_obj=
47.46586 ++      need_locks=no
47.46587 ++      lockfile=
47.46588 ++    fi
47.46589 ++
47.46590 ++    # Lock this critical section if it is needed
47.46591 ++    # We use this script file to make the link, it avoids creating a new file
47.46592 ++    if test "$need_locks" = yes; then
47.46593 ++      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
47.46594 ++	func_echo "Waiting for $lockfile to be removed"
47.46595 ++	sleep 2
47.46596 ++      done
47.46597 ++    elif test "$need_locks" = warn; then
47.46598 ++      if test -f "$lockfile"; then
47.46599 ++	$ECHO "\
47.46600 ++*** ERROR, $lockfile exists and contains:
47.46601 ++`cat $lockfile 2>/dev/null`
47.46602 ++
47.46603 ++This indicates that another process is trying to use the same
47.46604 ++temporary object file, and libtool could not work around it because
47.46605 ++your compiler does not support \`-c' and \`-o' together.  If you
47.46606 ++repeat this compilation, it may succeed, by chance, but you had better
47.46607 ++avoid parallel builds (make -j) in this platform, or get a better
47.46608 ++compiler."
47.46609 ++
47.46610 ++	$opt_dry_run || $RM $removelist
47.46611 ++	exit $EXIT_FAILURE
47.46612 ++      fi
47.46613 ++      $ECHO "$srcfile" > "$lockfile"
47.46614 ++    fi
47.46615 ++
47.46616 ++    if test -n "$fix_srcfile_path"; then
47.46617 ++      eval srcfile=\"$fix_srcfile_path\"
47.46618 ++    fi
47.46619 ++    func_quote_for_eval "$srcfile"
47.46620 ++    qsrcfile=$func_quote_for_eval_result
47.46621 ++
47.46622 ++    $opt_dry_run || $RM "$libobj" "${libobj}T"
47.46623 ++
47.46624 ++    # Only build a PIC object if we are building libtool libraries.
47.46625 ++    if test "$build_libtool_libs" = yes; then
47.46626 ++      # Without this assignment, base_compile gets emptied.
47.46627 ++      fbsd_hideous_sh_bug=$base_compile
47.46628 ++
47.46629 ++      if test "$pic_mode" != no; then
47.46630 ++	command="$base_compile $qsrcfile $pic_flag"
47.46631 ++      else
47.46632 ++	# Don't build PIC code
47.46633 ++	command="$base_compile $qsrcfile"
47.46634 ++      fi
47.46635 ++
47.46636 ++      func_mkdir_p "$xdir$objdir"
47.46637 ++
47.46638 ++      if test -z "$output_obj"; then
47.46639 ++	# Place PIC objects in $objdir
47.46640 ++	command="$command -o $lobj"
47.46641 ++      fi
47.46642 ++
47.46643 ++      $opt_dry_run || $RM "$lobj" "$output_obj"
47.46644 ++
47.46645 ++      func_show_eval "$command"	\
47.46646 ++          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
47.46647 ++
47.46648 ++      if test "$need_locks" = warn &&
47.46649 ++	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
47.46650 ++	$ECHO "\
47.46651 ++*** ERROR, $lockfile contains:
47.46652 ++`cat $lockfile 2>/dev/null`
47.46653 ++
47.46654 ++but it should contain:
47.46655 ++$srcfile
47.46656 ++
47.46657 ++This indicates that another process is trying to use the same
47.46658 ++temporary object file, and libtool could not work around it because
47.46659 ++your compiler does not support \`-c' and \`-o' together.  If you
47.46660 ++repeat this compilation, it may succeed, by chance, but you had better
47.46661 ++avoid parallel builds (make -j) in this platform, or get a better
47.46662 ++compiler."
47.46663 ++
47.46664 ++	$opt_dry_run || $RM $removelist
47.46665 ++	exit $EXIT_FAILURE
47.46666 ++      fi
47.46667 ++
47.46668 ++      # Just move the object if needed, then go on to compile the next one
47.46669 ++      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
47.46670 ++	func_show_eval '$MV "$output_obj" "$lobj"' \
47.46671 ++	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
47.46672 ++      fi
47.46673 ++
47.46674 ++      # Allow error messages only from the first compilation.
47.46675 ++      if test "$suppress_opt" = yes; then
47.46676 ++	suppress_output=' >/dev/null 2>&1'
47.46677 ++      fi
47.46678 ++    fi
47.46679 ++
47.46680 ++    # Only build a position-dependent object if we build old libraries.
47.46681 ++    if test "$build_old_libs" = yes; then
47.46682 ++      if test "$pic_mode" != yes; then
47.46683 ++	# Don't build PIC code
47.46684 ++	command="$base_compile $qsrcfile$pie_flag"
47.46685 ++      else
47.46686 ++	command="$base_compile $qsrcfile $pic_flag"
47.46687 ++      fi
47.46688 ++      if test "$compiler_c_o" = yes; then
47.46689 ++	command="$command -o $obj"
47.46690 ++      fi
47.46691 ++
47.46692 ++      # Suppress compiler output if we already did a PIC compilation.
47.46693 ++      command="$command$suppress_output"
47.46694 ++      $opt_dry_run || $RM "$obj" "$output_obj"
47.46695 ++      func_show_eval "$command" \
47.46696 ++        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
47.46697 ++
47.46698 ++      if test "$need_locks" = warn &&
47.46699 ++	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
47.46700 ++	$ECHO "\
47.46701 ++*** ERROR, $lockfile contains:
47.46702 ++`cat $lockfile 2>/dev/null`
47.46703 ++
47.46704 ++but it should contain:
47.46705 ++$srcfile
47.46706 ++
47.46707 ++This indicates that another process is trying to use the same
47.46708 ++temporary object file, and libtool could not work around it because
47.46709 ++your compiler does not support \`-c' and \`-o' together.  If you
47.46710 ++repeat this compilation, it may succeed, by chance, but you had better
47.46711 ++avoid parallel builds (make -j) in this platform, or get a better
47.46712 ++compiler."
47.46713 ++
47.46714 ++	$opt_dry_run || $RM $removelist
47.46715 ++	exit $EXIT_FAILURE
47.46716 ++      fi
47.46717 ++
47.46718 ++      # Just move the object if needed
47.46719 ++      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
47.46720 ++	func_show_eval '$MV "$output_obj" "$obj"' \
47.46721 ++	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
47.46722 ++      fi
47.46723 ++    fi
47.46724 ++
47.46725 ++    $opt_dry_run || {
47.46726 ++      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
47.46727 ++
47.46728 ++      # Unlock the critical section if it was locked
47.46729 ++      if test "$need_locks" != no; then
47.46730 ++        $RM "$lockfile"
47.46731 ++      fi
47.46732 ++    }
47.46733 ++
47.46734 ++    exit $EXIT_SUCCESS
47.46735 ++}
47.46736 ++
47.46737 ++test "$mode" = compile && func_mode_compile ${1+"$@"}
47.46738 ++
47.46739 ++
47.46740 ++# func_mode_execute arg...
47.46741 ++func_mode_execute ()
47.46742 ++{
47.46743 ++    $opt_debug
47.46744 ++    # The first argument is the command name.
47.46745 ++    cmd="$nonopt"
47.46746 ++    test -z "$cmd" && \
47.46747 ++      func_fatal_help "you must specify a COMMAND"
47.46748 ++
47.46749 ++    # Handle -dlopen flags immediately.
47.46750 ++    for file in $execute_dlfiles; do
47.46751 ++      test -f "$file" \
47.46752 ++	|| func_fatal_help "\`$file' is not a file"
47.46753 ++
47.46754 ++      dir=
47.46755 ++      case $file in
47.46756 ++      *.la)
47.46757 ++	# Check to see that this really is a libtool archive.
47.46758 ++	func_lalib_unsafe_p "$file" \
47.46759 ++	  || func_fatal_help "\`$lib' is not a valid libtool archive"
47.46760 ++
47.46761 ++	# Read the libtool library.
47.46762 ++	dlname=
47.46763 ++	library_names=
47.46764 ++	func_source "$file"
47.46765 ++
47.46766 ++	# Skip this library if it cannot be dlopened.
47.46767 ++	if test -z "$dlname"; then
47.46768 ++	  # Warn if it was a shared library.
47.46769 ++	  test -n "$library_names" && \
47.46770 ++	    func_warning "\`$file' was not linked with \`-export-dynamic'"
47.46771 ++	  continue
47.46772 ++	fi
47.46773 ++
47.46774 ++	func_dirname "$file" "" "."
47.46775 ++	dir="$func_dirname_result"
47.46776 ++
47.46777 ++	if test -f "$dir/$objdir/$dlname"; then
47.46778 ++	  dir="$dir/$objdir"
47.46779 ++	else
47.46780 ++	  if test ! -f "$dir/$dlname"; then
47.46781 ++	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
47.46782 ++	  fi
47.46783 ++	fi
47.46784 ++	;;
47.46785 ++
47.46786 ++      *.lo)
47.46787 ++	# Just add the directory containing the .lo file.
47.46788 ++	func_dirname "$file" "" "."
47.46789 ++	dir="$func_dirname_result"
47.46790 ++	;;
47.46791 ++
47.46792 ++      *)
47.46793 ++	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
47.46794 ++	continue
47.46795 ++	;;
47.46796 ++      esac
47.46797 ++
47.46798 ++      # Get the absolute pathname.
47.46799 ++      absdir=`cd "$dir" && pwd`
47.46800 ++      test -n "$absdir" && dir="$absdir"
47.46801 ++
47.46802 ++      # Now add the directory to shlibpath_var.
47.46803 ++      if eval "test -z \"\$$shlibpath_var\""; then
47.46804 ++	eval "$shlibpath_var=\"\$dir\""
47.46805 ++      else
47.46806 ++	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
47.46807 ++      fi
47.46808 ++    done
47.46809 ++
47.46810 ++    # This variable tells wrapper scripts just to set shlibpath_var
47.46811 ++    # rather than running their programs.
47.46812 ++    libtool_execute_magic="$magic"
47.46813 ++
47.46814 ++    # Check if any of the arguments is a wrapper script.
47.46815 ++    args=
47.46816 ++    for file
47.46817 ++    do
47.46818 ++      case $file in
47.46819 ++      -*) ;;
47.46820 ++      *)
47.46821 ++	# Do a test to see if this is really a libtool program.
47.46822 ++	if func_ltwrapper_p "$file"; then
47.46823 ++	  func_source "$file"
47.46824 ++
47.46825 ++	  # Transform arg to wrapped name.
47.46826 ++	  file="$progdir/$program"
47.46827 ++	fi
47.46828 ++	;;
47.46829 ++      esac
47.46830 ++      # Quote arguments (to preserve shell metacharacters).
47.46831 ++      func_quote_for_eval "$file"
47.46832 ++      args="$args $func_quote_for_eval_result"
47.46833 ++    done
47.46834 ++
47.46835 ++    if test "X$opt_dry_run" = Xfalse; then
47.46836 ++      if test -n "$shlibpath_var"; then
47.46837 ++	# Export the shlibpath_var.
47.46838 ++	eval "export $shlibpath_var"
47.46839 ++      fi
47.46840 ++
47.46841 ++      # Restore saved environment variables
47.46842 ++      for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
47.46843 ++      do
47.46844 ++	eval "if test \"\${save_$lt_var+set}\" = set; then
47.46845 ++                $lt_var=\$save_$lt_var; export $lt_var
47.46846 ++	      else
47.46847 ++		$lt_unset $lt_var
47.46848 ++	      fi"
47.46849 ++      done
47.46850 ++
47.46851 ++      # Now prepare to actually exec the command.
47.46852 ++      exec_cmd="\$cmd$args"
47.46853 ++    else
47.46854 ++      # Display what would be done.
47.46855 ++      if test -n "$shlibpath_var"; then
47.46856 ++	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
47.46857 ++	$ECHO "export $shlibpath_var"
47.46858 ++      fi
47.46859 ++      $ECHO "$cmd$args"
47.46860 ++      exit $EXIT_SUCCESS
47.46861 ++    fi
47.46862 ++}
47.46863 ++
47.46864 ++test "$mode" = execute && func_mode_execute ${1+"$@"}
47.46865 ++
47.46866 ++
47.46867 ++# func_mode_finish arg...
47.46868 ++func_mode_finish ()
47.46869 ++{
47.46870 ++    $opt_debug
47.46871 ++    libdirs="$nonopt"
47.46872 ++    admincmds=
47.46873 ++
47.46874 ++    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
47.46875 ++      for dir
47.46876 ++      do
47.46877 ++	libdirs="$libdirs $dir"
47.46878 ++      done
47.46879 ++
47.46880 ++      for libdir in $libdirs; do
47.46881 ++	if test -n "$finish_cmds"; then
47.46882 ++	  # Do each command in the finish commands.
47.46883 ++	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
47.46884 ++'"$cmd"'"'
47.46885 ++	fi
47.46886 ++	if test -n "$finish_eval"; then
47.46887 ++	  # Do the single finish_eval.
47.46888 ++	  eval cmds=\"$finish_eval\"
47.46889 ++	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
47.46890 ++       $cmds"
47.46891 ++	fi
47.46892 ++      done
47.46893 ++    fi
47.46894 ++
47.46895 ++    # Exit here if they wanted silent mode.
47.46896 ++    $opt_silent && exit $EXIT_SUCCESS
47.46897 ++
47.46898 ++    $ECHO "X----------------------------------------------------------------------" | $Xsed
47.46899 ++    $ECHO "Libraries have been installed in:"
47.46900 ++    for libdir in $libdirs; do
47.46901 ++      $ECHO "   $libdir"
47.46902 ++    done
47.46903 ++    $ECHO
47.46904 ++    $ECHO "If you ever happen to want to link against installed libraries"
47.46905 ++    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
47.46906 ++    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
47.46907 ++    $ECHO "flag during linking and do at least one of the following:"
47.46908 ++    if test -n "$shlibpath_var"; then
47.46909 ++      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
47.46910 ++      $ECHO "     during execution"
47.46911 ++    fi
47.46912 ++    if test -n "$runpath_var"; then
47.46913 ++      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
47.46914 ++      $ECHO "     during linking"
47.46915 ++    fi
47.46916 ++    if test -n "$hardcode_libdir_flag_spec"; then
47.46917 ++      libdir=LIBDIR
47.46918 ++      eval flag=\"$hardcode_libdir_flag_spec\"
47.46919 ++
47.46920 ++      $ECHO "   - use the \`$flag' linker flag"
47.46921 ++    fi
47.46922 ++    if test -n "$admincmds"; then
47.46923 ++      $ECHO "   - have your system administrator run these commands:$admincmds"
47.46924 ++    fi
47.46925 ++    if test -f /etc/ld.so.conf; then
47.46926 ++      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
47.46927 ++    fi
47.46928 ++    $ECHO
47.46929 ++
47.46930 ++    $ECHO "See any operating system documentation about shared libraries for"
47.46931 ++    case $host in
47.46932 ++      solaris2.[6789]|solaris2.1[0-9])
47.46933 ++        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
47.46934 ++	$ECHO "pages."
47.46935 ++	;;
47.46936 ++      *)
47.46937 ++        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
47.46938 ++        ;;
47.46939 ++    esac
47.46940 ++    $ECHO "X----------------------------------------------------------------------" | $Xsed
47.46941 ++    exit $EXIT_SUCCESS
47.46942 ++}
47.46943 ++
47.46944 ++test "$mode" = finish && func_mode_finish ${1+"$@"}
47.46945 ++
47.46946 ++
47.46947 ++# func_mode_install arg...
47.46948 ++func_mode_install ()
47.46949 ++{
47.46950 ++    $opt_debug
47.46951 ++    # There may be an optional sh(1) argument at the beginning of
47.46952 ++    # install_prog (especially on Windows NT).
47.46953 ++    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
47.46954 ++       # Allow the use of GNU shtool's install command.
47.46955 ++       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
47.46956 ++      # Aesthetically quote it.
47.46957 ++      func_quote_for_eval "$nonopt"
47.46958 ++      install_prog="$func_quote_for_eval_result "
47.46959 ++      arg=$1
47.46960 ++      shift
47.46961 ++    else
47.46962 ++      install_prog=
47.46963 ++      arg=$nonopt
47.46964 ++    fi
47.46965 ++
47.46966 ++    # The real first argument should be the name of the installation program.
47.46967 ++    # Aesthetically quote it.
47.46968 ++    func_quote_for_eval "$arg"
47.46969 ++    install_prog="$install_prog$func_quote_for_eval_result"
47.46970 ++
47.46971 ++    # We need to accept at least all the BSD install flags.
47.46972 ++    dest=
47.46973 ++    files=
47.46974 ++    opts=
47.46975 ++    prev=
47.46976 ++    install_type=
47.46977 ++    isdir=no
47.46978 ++    stripme=
47.46979 ++    for arg
47.46980 ++    do
47.46981 ++      if test -n "$dest"; then
47.46982 ++	files="$files $dest"
47.46983 ++	dest=$arg
47.46984 ++	continue
47.46985 ++      fi
47.46986 ++
47.46987 ++      case $arg in
47.46988 ++      -d) isdir=yes ;;
47.46989 ++      -f)
47.46990 ++      	case " $install_prog " in
47.46991 ++	*[\\\ /]cp\ *) ;;
47.46992 ++	*) prev=$arg ;;
47.46993 ++	esac
47.46994 ++	;;
47.46995 ++      -g | -m | -o)
47.46996 ++	prev=$arg
47.46997 ++	;;
47.46998 ++      -s)
47.46999 ++	stripme=" -s"
47.47000 ++	continue
47.47001 ++	;;
47.47002 ++      -*)
47.47003 ++	;;
47.47004 ++      *)
47.47005 ++	# If the previous option needed an argument, then skip it.
47.47006 ++	if test -n "$prev"; then
47.47007 ++	  prev=
47.47008 ++	else
47.47009 ++	  dest=$arg
47.47010 ++	  continue
47.47011 ++	fi
47.47012 ++	;;
47.47013 ++      esac
47.47014 ++
47.47015 ++      # Aesthetically quote the argument.
47.47016 ++      func_quote_for_eval "$arg"
47.47017 ++      install_prog="$install_prog $func_quote_for_eval_result"
47.47018 ++    done
47.47019 ++
47.47020 ++    test -z "$install_prog" && \
47.47021 ++      func_fatal_help "you must specify an install program"
47.47022 ++
47.47023 ++    test -n "$prev" && \
47.47024 ++      func_fatal_help "the \`$prev' option requires an argument"
47.47025 ++
47.47026 ++    if test -z "$files"; then
47.47027 ++      if test -z "$dest"; then
47.47028 ++	func_fatal_help "no file or destination specified"
47.47029 ++      else
47.47030 ++	func_fatal_help "you must specify a destination"
47.47031 ++      fi
47.47032 ++    fi
47.47033 ++
47.47034 ++    # Strip any trailing slash from the destination.
47.47035 ++    func_stripname '' '/' "$dest"
47.47036 ++    dest=$func_stripname_result
47.47037 ++
47.47038 ++    # Check to see that the destination is a directory.
47.47039 ++    test -d "$dest" && isdir=yes
47.47040 ++    if test "$isdir" = yes; then
47.47041 ++      destdir="$dest"
47.47042 ++      destname=
47.47043 ++    else
47.47044 ++      func_dirname "$dest" "" "."
47.47045 ++      destdir="$func_dirname_result"
47.47046 ++      func_basename "$dest"
47.47047 ++      destname="$func_basename_result"
47.47048 ++
47.47049 ++      # Not a directory, so check to see that there is only one file specified.
47.47050 ++      set dummy $files; shift
47.47051 ++      test "$#" -gt 1 && \
47.47052 ++	func_fatal_help "\`$dest' is not a directory"
47.47053 ++    fi
47.47054 ++    case $destdir in
47.47055 ++    [\\/]* | [A-Za-z]:[\\/]*) ;;
47.47056 ++    *)
47.47057 ++      for file in $files; do
47.47058 ++	case $file in
47.47059 ++	*.lo) ;;
47.47060 ++	*)
47.47061 ++	  func_fatal_help "\`$destdir' must be an absolute directory name"
47.47062 ++	  ;;
47.47063 ++	esac
47.47064 ++      done
47.47065 ++      ;;
47.47066 ++    esac
47.47067 ++
47.47068 ++    # This variable tells wrapper scripts just to set variables rather
47.47069 ++    # than running their programs.
47.47070 ++    libtool_install_magic="$magic"
47.47071 ++
47.47072 ++    staticlibs=
47.47073 ++    future_libdirs=
47.47074 ++    current_libdirs=
47.47075 ++    for file in $files; do
47.47076 ++
47.47077 ++      # Do each installation.
47.47078 ++      case $file in
47.47079 ++      *.$libext)
47.47080 ++	# Do the static libraries later.
47.47081 ++	staticlibs="$staticlibs $file"
47.47082 ++	;;
47.47083 ++
47.47084 ++      *.la)
47.47085 ++	# Check to see that this really is a libtool archive.
47.47086 ++	func_lalib_unsafe_p "$file" \
47.47087 ++	  || func_fatal_help "\`$file' is not a valid libtool archive"
47.47088 ++
47.47089 ++	library_names=
47.47090 ++	old_library=
47.47091 ++	relink_command=
47.47092 ++	func_source "$file"
47.47093 ++
47.47094 ++	# Add the libdir to current_libdirs if it is the destination.
47.47095 ++	if test "X$destdir" = "X$libdir"; then
47.47096 ++	  case "$current_libdirs " in
47.47097 ++	  *" $libdir "*) ;;
47.47098 ++	  *) current_libdirs="$current_libdirs $libdir" ;;
47.47099 ++	  esac
47.47100 ++	else
47.47101 ++	  # Note the libdir as a future libdir.
47.47102 ++	  case "$future_libdirs " in
47.47103 ++	  *" $libdir "*) ;;
47.47104 ++	  *) future_libdirs="$future_libdirs $libdir" ;;
47.47105 ++	  esac
47.47106 ++	fi
47.47107 ++
47.47108 ++	func_dirname "$file" "/" ""
47.47109 ++	dir="$func_dirname_result"
47.47110 ++	dir="$dir$objdir"
47.47111 ++
47.47112 ++	if test -n "$relink_command"; then
47.47113 ++	  # Determine the prefix the user has applied to our future dir.
47.47114 ++	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
47.47115 ++
47.47116 ++	  # Don't allow the user to place us outside of our expected
47.47117 ++	  # location b/c this prevents finding dependent libraries that
47.47118 ++	  # are installed to the same prefix.
47.47119 ++	  # At present, this check doesn't affect windows .dll's that
47.47120 ++	  # are installed into $libdir/../bin (currently, that works fine)
47.47121 ++	  # but it's something to keep an eye on.
47.47122 ++	  test "$inst_prefix_dir" = "$destdir" && \
47.47123 ++	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
47.47124 ++
47.47125 ++	  if test -n "$inst_prefix_dir"; then
47.47126 ++	    # Stick the inst_prefix_dir data into the link command.
47.47127 ++	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
47.47128 ++	  else
47.47129 ++	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
47.47130 ++	  fi
47.47131 ++
47.47132 ++	  func_warning "relinking \`$file'"
47.47133 ++	  func_show_eval "$relink_command" \
47.47134 ++	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
47.47135 ++	fi
47.47136 ++
47.47137 ++	# See the names of the shared library.
47.47138 ++	set dummy $library_names; shift
47.47139 ++	if test -n "$1"; then
47.47140 ++	  realname="$1"
47.47141 ++	  shift
47.47142 ++
47.47143 ++	  srcname="$realname"
47.47144 ++	  test -n "$relink_command" && srcname="$realname"T
47.47145 ++
47.47146 ++	  # Install the shared library and build the symlinks.
47.47147 ++	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
47.47148 ++	      'exit $?'
47.47149 ++	  tstripme="$stripme"
47.47150 ++	  case $host_os in
47.47151 ++	  cygwin* | mingw* | pw32*)
47.47152 ++	    case $realname in
47.47153 ++	    *.dll.a)
47.47154 ++	      tstripme=""
47.47155 ++	      ;;
47.47156 ++	    esac
47.47157 ++	    ;;
47.47158 ++	  esac
47.47159 ++	  if test -n "$tstripme" && test -n "$striplib"; then
47.47160 ++	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
47.47161 ++	  fi
47.47162 ++
47.47163 ++	  if test "$#" -gt 0; then
47.47164 ++	    # Delete the old symlinks, and create new ones.
47.47165 ++	    # Try `ln -sf' first, because the `ln' binary might depend on
47.47166 ++	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
47.47167 ++	    # so we also need to try rm && ln -s.
47.47168 ++	    for linkname
47.47169 ++	    do
47.47170 ++	      test "$linkname" != "$realname" \
47.47171 ++		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
47.47172 ++	    done
47.47173 ++	  fi
47.47174 ++
47.47175 ++	  # Do each command in the postinstall commands.
47.47176 ++	  lib="$destdir/$realname"
47.47177 ++	  func_execute_cmds "$postinstall_cmds" 'exit $?'
47.47178 ++	fi
47.47179 ++
47.47180 ++	# Install the pseudo-library for information purposes.
47.47181 ++	func_basename "$file"
47.47182 ++	name="$func_basename_result"
47.47183 ++	instname="$dir/$name"i
47.47184 ++	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
47.47185 ++
47.47186 ++	# Maybe install the static library, too.
47.47187 ++	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
47.47188 ++	;;
47.47189 ++
47.47190 ++      *.lo)
47.47191 ++	# Install (i.e. copy) a libtool object.
47.47192 ++
47.47193 ++	# Figure out destination file name, if it wasn't already specified.
47.47194 ++	if test -n "$destname"; then
47.47195 ++	  destfile="$destdir/$destname"
47.47196 ++	else
47.47197 ++	  func_basename "$file"
47.47198 ++	  destfile="$func_basename_result"
47.47199 ++	  destfile="$destdir/$destfile"
47.47200 ++	fi
47.47201 ++
47.47202 ++	# Deduce the name of the destination old-style object file.
47.47203 ++	case $destfile in
47.47204 ++	*.lo)
47.47205 ++	  func_lo2o "$destfile"
47.47206 ++	  staticdest=$func_lo2o_result
47.47207 ++	  ;;
47.47208 ++	*.$objext)
47.47209 ++	  staticdest="$destfile"
47.47210 ++	  destfile=
47.47211 ++	  ;;
47.47212 ++	*)
47.47213 ++	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
47.47214 ++	  ;;
47.47215 ++	esac
47.47216 ++
47.47217 ++	# Install the libtool object if requested.
47.47218 ++	test -n "$destfile" && \
47.47219 ++	  func_show_eval "$install_prog $file $destfile" 'exit $?'
47.47220 ++
47.47221 ++	# Install the old object if enabled.
47.47222 ++	if test "$build_old_libs" = yes; then
47.47223 ++	  # Deduce the name of the old-style object file.
47.47224 ++	  func_lo2o "$file"
47.47225 ++	  staticobj=$func_lo2o_result
47.47226 ++	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
47.47227 ++	fi
47.47228 ++	exit $EXIT_SUCCESS
47.47229 ++	;;
47.47230 ++
47.47231 ++      *)
47.47232 ++	# Figure out destination file name, if it wasn't already specified.
47.47233 ++	if test -n "$destname"; then
47.47234 ++	  destfile="$destdir/$destname"
47.47235 ++	else
47.47236 ++	  func_basename "$file"
47.47237 ++	  destfile="$func_basename_result"
47.47238 ++	  destfile="$destdir/$destfile"
47.47239 ++	fi
47.47240 ++
47.47241 ++	# If the file is missing, and there is a .exe on the end, strip it
47.47242 ++	# because it is most likely a libtool script we actually want to
47.47243 ++	# install
47.47244 ++	stripped_ext=""
47.47245 ++	case $file in
47.47246 ++	  *.exe)
47.47247 ++	    if test ! -f "$file"; then
47.47248 ++	      func_stripname '' '.exe' "$file"
47.47249 ++	      file=$func_stripname_result
47.47250 ++	      stripped_ext=".exe"
47.47251 ++	    fi
47.47252 ++	    ;;
47.47253 ++	esac
47.47254 ++
47.47255 ++	# Do a test to see if this is really a libtool program.
47.47256 ++	case $host in
47.47257 ++	*cygwin*|*mingw*)
47.47258 ++	    func_stripname '' '.exe' "$file"
47.47259 ++	    wrapper=$func_stripname_result
47.47260 ++	    ;;
47.47261 ++	*)
47.47262 ++	    wrapper=$file
47.47263 ++	    ;;
47.47264 ++	esac
47.47265 ++	if func_ltwrapper_p "$wrapper"; then
47.47266 ++	  notinst_deplibs=
47.47267 ++	  relink_command=
47.47268 ++
47.47269 ++	  func_source "$wrapper"
47.47270 ++
47.47271 ++	  # Check the variables that should have been set.
47.47272 ++	  test -z "$generated_by_libtool_version" && \
47.47273 ++	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
47.47274 ++
47.47275 ++	  finalize=yes
47.47276 ++	  for lib in $notinst_deplibs; do
47.47277 ++	    # Check to see that each library is installed.
47.47278 ++	    libdir=
47.47279 ++	    if test -f "$lib"; then
47.47280 ++	      func_source "$lib"
47.47281 ++	    fi
47.47282 ++	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
47.47283 ++	    if test -n "$libdir" && test ! -f "$libfile"; then
47.47284 ++	      func_warning "\`$lib' has not been installed in \`$libdir'"
47.47285 ++	      finalize=no
47.47286 ++	    fi
47.47287 ++	  done
47.47288 ++
47.47289 ++	  relink_command=
47.47290 ++	  func_source "$wrapper"
47.47291 ++
47.47292 ++	  outputname=
47.47293 ++	  if test "$fast_install" = no && test -n "$relink_command"; then
47.47294 ++	    $opt_dry_run || {
47.47295 ++	      if test "$finalize" = yes; then
47.47296 ++	        tmpdir=`func_mktempdir`
47.47297 ++		func_basename "$file$stripped_ext"
47.47298 ++		file="$func_basename_result"
47.47299 ++	        outputname="$tmpdir/$file"
47.47300 ++	        # Replace the output file specification.
47.47301 ++	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
47.47302 ++
47.47303 ++	        $opt_silent || {
47.47304 ++	          func_quote_for_expand "$relink_command"
47.47305 ++		  eval "func_echo $func_quote_for_expand_result"
47.47306 ++	        }
47.47307 ++	        if eval "$relink_command"; then :
47.47308 ++	          else
47.47309 ++		  func_error "error: relink \`$file' with the above command before installing it"
47.47310 ++		  $opt_dry_run || ${RM}r "$tmpdir"
47.47311 ++		  continue
47.47312 ++	        fi
47.47313 ++	        file="$outputname"
47.47314 ++	      else
47.47315 ++	        func_warning "cannot relink \`$file'"
47.47316 ++	      fi
47.47317 ++	    }
47.47318 ++	  else
47.47319 ++	    # Install the binary that we compiled earlier.
47.47320 ++	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
47.47321 ++	  fi
47.47322 ++	fi
47.47323 ++
47.47324 ++	# remove .exe since cygwin /usr/bin/install will append another
47.47325 ++	# one anyway
47.47326 ++	case $install_prog,$host in
47.47327 ++	*/usr/bin/install*,*cygwin*)
47.47328 ++	  case $file:$destfile in
47.47329 ++	  *.exe:*.exe)
47.47330 ++	    # this is ok
47.47331 ++	    ;;
47.47332 ++	  *.exe:*)
47.47333 ++	    destfile=$destfile.exe
47.47334 ++	    ;;
47.47335 ++	  *:*.exe)
47.47336 ++	    func_stripname '' '.exe' "$destfile"
47.47337 ++	    destfile=$func_stripname_result
47.47338 ++	    ;;
47.47339 ++	  esac
47.47340 ++	  ;;
47.47341 ++	esac
47.47342 ++	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
47.47343 ++	$opt_dry_run || if test -n "$outputname"; then
47.47344 ++	  ${RM}r "$tmpdir"
47.47345 ++	fi
47.47346 ++	;;
47.47347 ++      esac
47.47348 ++    done
47.47349 ++
47.47350 ++    for file in $staticlibs; do
47.47351 ++      func_basename "$file"
47.47352 ++      name="$func_basename_result"
47.47353 ++
47.47354 ++      # Set up the ranlib parameters.
47.47355 ++      oldlib="$destdir/$name"
47.47356 ++
47.47357 ++      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
47.47358 ++
47.47359 ++      if test -n "$stripme" && test -n "$old_striplib"; then
47.47360 ++	func_show_eval "$old_striplib $oldlib" 'exit $?'
47.47361 ++      fi
47.47362 ++
47.47363 ++      # Do each command in the postinstall commands.
47.47364 ++      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
47.47365 ++    done
47.47366 ++
47.47367 ++    test -n "$future_libdirs" && \
47.47368 ++      func_warning "remember to run \`$progname --finish$future_libdirs'"
47.47369 ++
47.47370 ++    if test -n "$current_libdirs"; then
47.47371 ++      # Maybe just do a dry run.
47.47372 ++      $opt_dry_run && current_libdirs=" -n$current_libdirs"
47.47373 ++      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
47.47374 ++    else
47.47375 ++      exit $EXIT_SUCCESS
47.47376 ++    fi
47.47377 ++}
47.47378 ++
47.47379 ++test "$mode" = install && func_mode_install ${1+"$@"}
47.47380 ++
47.47381 ++
47.47382 ++# func_mode_link arg...
47.47383 ++func_mode_link ()
47.47384 ++{
47.47385 ++    $opt_debug
47.47386 ++    case $host in
47.47387 ++    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
47.47388 ++      # It is impossible to link a dll without this setting, and
47.47389 ++      # we shouldn't force the makefile maintainer to figure out
47.47390 ++      # which system we are compiling for in order to pass an extra
47.47391 ++      # flag for every libtool invocation.
47.47392 ++      # allow_undefined=no
47.47393 ++
47.47394 ++      # FIXME: Unfortunately, there are problems with the above when trying
47.47395 ++      # to make a dll which has undefined symbols, in which case not
47.47396 ++      # even a static library is built.  For now, we need to specify
47.47397 ++      # -no-undefined on the libtool link line when we can be certain
47.47398 ++      # that all symbols are satisfied, otherwise we get a static library.
47.47399 ++      allow_undefined=yes
47.47400 ++      ;;
47.47401 ++    *)
47.47402 ++      allow_undefined=yes
47.47403 ++      ;;
47.47404 ++    esac
47.47405 ++    libtool_args=$nonopt
47.47406 ++    base_compile="$nonopt $@"
47.47407 ++    compile_command=$nonopt
47.47408 ++    finalize_command=$nonopt
47.47409 ++
47.47410 ++    compile_rpath=
47.47411 ++    finalize_rpath=
47.47412 ++    compile_shlibpath=
47.47413 ++    finalize_shlibpath=
47.47414 ++    convenience=
47.47415 ++    old_convenience=
47.47416 ++    deplibs=
47.47417 ++    old_deplibs=
47.47418 ++    compiler_flags=
47.47419 ++    linker_flags=
47.47420 ++    dllsearchpath=
47.47421 ++    lib_search_path=`pwd`
47.47422 ++    inst_prefix_dir=
47.47423 ++    new_inherited_linker_flags=
47.47424 ++
47.47425 ++    avoid_version=no
47.47426 ++    dlfiles=
47.47427 ++    dlprefiles=
47.47428 ++    dlself=no
47.47429 ++    export_dynamic=no
47.47430 ++    export_symbols=
47.47431 ++    export_symbols_regex=
47.47432 ++    generated=
47.47433 ++    libobjs=
47.47434 ++    ltlibs=
47.47435 ++    module=no
47.47436 ++    no_install=no
47.47437 ++    objs=
47.47438 ++    non_pic_objects=
47.47439 ++    precious_files_regex=
47.47440 ++    prefer_static_libs=no
47.47441 ++    preload=no
47.47442 ++    prev=
47.47443 ++    prevarg=
47.47444 ++    release=
47.47445 ++    rpath=
47.47446 ++    xrpath=
47.47447 ++    perm_rpath=
47.47448 ++    temp_rpath=
47.47449 ++    thread_safe=no
47.47450 ++    vinfo=
47.47451 ++    vinfo_number=no
47.47452 ++    weak_libs=
47.47453 ++    single_module="${wl}-single_module"
47.47454 ++    func_infer_tag $base_compile
47.47455 ++
47.47456 ++    # We need to know -static, to get the right output filenames.
47.47457 ++    for arg
47.47458 ++    do
47.47459 ++      case $arg in
47.47460 ++      -shared)
47.47461 ++	test "$build_libtool_libs" != yes && \
47.47462 ++	  func_fatal_configuration "can not build a shared library"
47.47463 ++	build_old_libs=no
47.47464 ++	break
47.47465 ++	;;
47.47466 ++      -all-static | -static | -static-libtool-libs)
47.47467 ++	case $arg in
47.47468 ++	-all-static)
47.47469 ++	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
47.47470 ++	    func_warning "complete static linking is impossible in this configuration"
47.47471 ++	  fi
47.47472 ++	  if test -n "$link_static_flag"; then
47.47473 ++	    dlopen_self=$dlopen_self_static
47.47474 ++	    # See comment for -static flag below, for more details.
47.47475 ++	    func_append compile_command " $link_static_flag"
47.47476 ++	    func_append finalize_command " $link_static_flag"
47.47477 ++	  fi
47.47478 ++	  prefer_static_libs=yes
47.47479 ++	  ;;
47.47480 ++	-static)
47.47481 ++	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
47.47482 ++	    dlopen_self=$dlopen_self_static
47.47483 ++	  fi
47.47484 ++	  prefer_static_libs=built
47.47485 ++	  ;;
47.47486 ++	-static-libtool-libs)
47.47487 ++	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
47.47488 ++	    dlopen_self=$dlopen_self_static
47.47489 ++	  fi
47.47490 ++	  prefer_static_libs=yes
47.47491 ++	  ;;
47.47492 ++	esac
47.47493 ++	build_libtool_libs=no
47.47494 ++	build_old_libs=yes
47.47495 ++	break
47.47496 ++	;;
47.47497 ++      esac
47.47498 ++    done
47.47499 ++
47.47500 ++    # See if our shared archives depend on static archives.
47.47501 ++    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
47.47502 ++
47.47503 ++    # Go through the arguments, transforming them on the way.
47.47504 ++    while test "$#" -gt 0; do
47.47505 ++      arg="$1"
47.47506 ++      shift
47.47507 ++      func_quote_for_eval "$arg"
47.47508 ++      qarg=$func_quote_for_eval_unquoted_result
47.47509 ++      func_append libtool_args " $func_quote_for_eval_result"
47.47510 ++
47.47511 ++      # If the previous option needs an argument, assign it.
47.47512 ++      if test -n "$prev"; then
47.47513 ++	case $prev in
47.47514 ++	output)
47.47515 ++	  func_append compile_command " @OUTPUT@"
47.47516 ++	  func_append finalize_command " @OUTPUT@"
47.47517 ++	  ;;
47.47518 ++	esac
47.47519 ++
47.47520 ++	case $prev in
47.47521 ++	dlfiles|dlprefiles)
47.47522 ++	  if test "$preload" = no; then
47.47523 ++	    # Add the symbol object into the linking commands.
47.47524 ++	    func_append compile_command " @SYMFILE@"
47.47525 ++	    func_append finalize_command " @SYMFILE@"
47.47526 ++	    preload=yes
47.47527 ++	  fi
47.47528 ++	  case $arg in
47.47529 ++	  *.la | *.lo) ;;  # We handle these cases below.
47.47530 ++	  force)
47.47531 ++	    if test "$dlself" = no; then
47.47532 ++	      dlself=needless
47.47533 ++	      export_dynamic=yes
47.47534 ++	    fi
47.47535 ++	    prev=
47.47536 ++	    continue
47.47537 ++	    ;;
47.47538 ++	  self)
47.47539 ++	    if test "$prev" = dlprefiles; then
47.47540 ++	      dlself=yes
47.47541 ++	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
47.47542 ++	      dlself=yes
47.47543 ++	    else
47.47544 ++	      dlself=needless
47.47545 ++	      export_dynamic=yes
47.47546 ++	    fi
47.47547 ++	    prev=
47.47548 ++	    continue
47.47549 ++	    ;;
47.47550 ++	  *)
47.47551 ++	    if test "$prev" = dlfiles; then
47.47552 ++	      dlfiles="$dlfiles $arg"
47.47553 ++	    else
47.47554 ++	      dlprefiles="$dlprefiles $arg"
47.47555 ++	    fi
47.47556 ++	    prev=
47.47557 ++	    continue
47.47558 ++	    ;;
47.47559 ++	  esac
47.47560 ++	  ;;
47.47561 ++	expsyms)
47.47562 ++	  export_symbols="$arg"
47.47563 ++	  test -f "$arg" \
47.47564 ++	    || func_fatal_error "symbol file \`$arg' does not exist"
47.47565 ++	  prev=
47.47566 ++	  continue
47.47567 ++	  ;;
47.47568 ++	expsyms_regex)
47.47569 ++	  export_symbols_regex="$arg"
47.47570 ++	  prev=
47.47571 ++	  continue
47.47572 ++	  ;;
47.47573 ++	framework)
47.47574 ++	  case $host in
47.47575 ++	    *-*-darwin*)
47.47576 ++	      case "$deplibs " in
47.47577 ++		*" $qarg.ltframework "*) ;;
47.47578 ++		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
47.47579 ++		   ;;
47.47580 ++	      esac
47.47581 ++	      ;;
47.47582 ++   	  esac
47.47583 ++	  prev=
47.47584 ++	  continue
47.47585 ++	  ;;
47.47586 ++	inst_prefix)
47.47587 ++	  inst_prefix_dir="$arg"
47.47588 ++	  prev=
47.47589 ++	  continue
47.47590 ++	  ;;
47.47591 ++	objectlist)
47.47592 ++	  if test -f "$arg"; then
47.47593 ++	    save_arg=$arg
47.47594 ++	    moreargs=
47.47595 ++	    for fil in `cat "$save_arg"`
47.47596 ++	    do
47.47597 ++#	      moreargs="$moreargs $fil"
47.47598 ++	      arg=$fil
47.47599 ++	      # A libtool-controlled object.
47.47600 ++
47.47601 ++	      # Check to see that this really is a libtool object.
47.47602 ++	      if func_lalib_unsafe_p "$arg"; then
47.47603 ++		pic_object=
47.47604 ++		non_pic_object=
47.47605 ++
47.47606 ++		# Read the .lo file
47.47607 ++		func_source "$arg"
47.47608 ++
47.47609 ++		if test -z "$pic_object" ||
47.47610 ++		   test -z "$non_pic_object" ||
47.47611 ++		   test "$pic_object" = none &&
47.47612 ++		   test "$non_pic_object" = none; then
47.47613 ++		  func_fatal_error "cannot find name of object for \`$arg'"
47.47614 ++		fi
47.47615 ++
47.47616 ++		# Extract subdirectory from the argument.
47.47617 ++		func_dirname "$arg" "/" ""
47.47618 ++		xdir="$func_dirname_result"
47.47619 ++
47.47620 ++		if test "$pic_object" != none; then
47.47621 ++		  # Prepend the subdirectory the object is found in.
47.47622 ++		  pic_object="$xdir$pic_object"
47.47623 ++
47.47624 ++		  if test "$prev" = dlfiles; then
47.47625 ++		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
47.47626 ++		      dlfiles="$dlfiles $pic_object"
47.47627 ++		      prev=
47.47628 ++		      continue
47.47629 ++		    else
47.47630 ++		      # If libtool objects are unsupported, then we need to preload.
47.47631 ++		      prev=dlprefiles
47.47632 ++		    fi
47.47633 ++		  fi
47.47634 ++
47.47635 ++		  # CHECK ME:  I think I busted this.  -Ossama
47.47636 ++		  if test "$prev" = dlprefiles; then
47.47637 ++		    # Preload the old-style object.
47.47638 ++		    dlprefiles="$dlprefiles $pic_object"
47.47639 ++		    prev=
47.47640 ++		  fi
47.47641 ++
47.47642 ++		  # A PIC object.
47.47643 ++		  func_append libobjs " $pic_object"
47.47644 ++		  arg="$pic_object"
47.47645 ++		fi
47.47646 ++
47.47647 ++		# Non-PIC object.
47.47648 ++		if test "$non_pic_object" != none; then
47.47649 ++		  # Prepend the subdirectory the object is found in.
47.47650 ++		  non_pic_object="$xdir$non_pic_object"
47.47651 ++
47.47652 ++		  # A standard non-PIC object
47.47653 ++		  func_append non_pic_objects " $non_pic_object"
47.47654 ++		  if test -z "$pic_object" || test "$pic_object" = none ; then
47.47655 ++		    arg="$non_pic_object"
47.47656 ++		  fi
47.47657 ++		else
47.47658 ++		  # If the PIC object exists, use it instead.
47.47659 ++		  # $xdir was prepended to $pic_object above.
47.47660 ++		  non_pic_object="$pic_object"
47.47661 ++		  func_append non_pic_objects " $non_pic_object"
47.47662 ++		fi
47.47663 ++	      else
47.47664 ++		# Only an error if not doing a dry-run.
47.47665 ++		if $opt_dry_run; then
47.47666 ++		  # Extract subdirectory from the argument.
47.47667 ++		  func_dirname "$arg" "/" ""
47.47668 ++		  xdir="$func_dirname_result"
47.47669 ++
47.47670 ++		  func_lo2o "$arg"
47.47671 ++		  pic_object=$xdir$objdir/$func_lo2o_result
47.47672 ++		  non_pic_object=$xdir$func_lo2o_result
47.47673 ++		  func_append libobjs " $pic_object"
47.47674 ++		  func_append non_pic_objects " $non_pic_object"
47.47675 ++	        else
47.47676 ++		  func_fatal_error "\`$arg' is not a valid libtool object"
47.47677 ++		fi
47.47678 ++	      fi
47.47679 ++	    done
47.47680 ++	  else
47.47681 ++	    func_fatal_error "link input file \`$arg' does not exist"
47.47682 ++	  fi
47.47683 ++	  arg=$save_arg
47.47684 ++	  prev=
47.47685 ++	  continue
47.47686 ++	  ;;
47.47687 ++	precious_regex)
47.47688 ++	  precious_files_regex="$arg"
47.47689 ++	  prev=
47.47690 ++	  continue
47.47691 ++	  ;;
47.47692 ++	release)
47.47693 ++	  release="-$arg"
47.47694 ++	  prev=
47.47695 ++	  continue
47.47696 ++	  ;;
47.47697 ++	rpath | xrpath)
47.47698 ++	  # We need an absolute path.
47.47699 ++	  case $arg in
47.47700 ++	  [\\/]* | [A-Za-z]:[\\/]*) ;;
47.47701 ++	  *)
47.47702 ++	    func_fatal_error "only absolute run-paths are allowed"
47.47703 ++	    ;;
47.47704 ++	  esac
47.47705 ++	  if test "$prev" = rpath; then
47.47706 ++	    case "$rpath " in
47.47707 ++	    *" $arg "*) ;;
47.47708 ++	    *) rpath="$rpath $arg" ;;
47.47709 ++	    esac
47.47710 ++	  else
47.47711 ++	    case "$xrpath " in
47.47712 ++	    *" $arg "*) ;;
47.47713 ++	    *) xrpath="$xrpath $arg" ;;
47.47714 ++	    esac
47.47715 ++	  fi
47.47716 ++	  prev=
47.47717 ++	  continue
47.47718 ++	  ;;
47.47719 ++	shrext)
47.47720 ++  	  shrext_cmds="$arg"
47.47721 ++	  prev=
47.47722 ++	  continue
47.47723 ++	  ;;
47.47724 ++	weak)
47.47725 ++	  weak_libs="$weak_libs $arg"
47.47726 ++	  prev=
47.47727 ++	  continue
47.47728 ++	  ;;
47.47729 ++	xcclinker)
47.47730 ++	  linker_flags="$linker_flags $qarg"
47.47731 ++	  compiler_flags="$compiler_flags $qarg"
47.47732 ++	  prev=
47.47733 ++	  func_append compile_command " $qarg"
47.47734 ++	  func_append finalize_command " $qarg"
47.47735 ++	  continue
47.47736 ++	  ;;
47.47737 ++	xcompiler)
47.47738 ++	  compiler_flags="$compiler_flags $qarg"
47.47739 ++	  prev=
47.47740 ++	  func_append compile_command " $qarg"
47.47741 ++	  func_append finalize_command " $qarg"
47.47742 ++	  continue
47.47743 ++	  ;;
47.47744 ++	xlinker)
47.47745 ++	  linker_flags="$linker_flags $qarg"
47.47746 ++	  compiler_flags="$compiler_flags $wl$qarg"
47.47747 ++	  prev=
47.47748 ++	  func_append compile_command " $wl$qarg"
47.47749 ++	  func_append finalize_command " $wl$qarg"
47.47750 ++	  continue
47.47751 ++	  ;;
47.47752 ++	*)
47.47753 ++	  eval "$prev=\"\$arg\""
47.47754 ++	  prev=
47.47755 ++	  continue
47.47756 ++	  ;;
47.47757 ++	esac
47.47758 ++      fi # test -n "$prev"
47.47759 ++
47.47760 ++      prevarg="$arg"
47.47761 ++
47.47762 ++      case $arg in
47.47763 ++      -all-static)
47.47764 ++	# The effects of -all-static are defined in a previous loop.
47.47765 ++	continue
47.47766 ++	;;
47.47767 ++
47.47768 ++      -allow-undefined)
47.47769 ++	# FIXME: remove this flag sometime in the future.
47.47770 ++	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
47.47771 ++	;;
47.47772 ++
47.47773 ++      -avoid-version)
47.47774 ++	avoid_version=yes
47.47775 ++	continue
47.47776 ++	;;
47.47777 ++
47.47778 ++      -dlopen)
47.47779 ++	prev=dlfiles
47.47780 ++	continue
47.47781 ++	;;
47.47782 ++
47.47783 ++      -dlpreopen)
47.47784 ++	prev=dlprefiles
47.47785 ++	continue
47.47786 ++	;;
47.47787 ++
47.47788 ++      -export-dynamic)
47.47789 ++	export_dynamic=yes
47.47790 ++	continue
47.47791 ++	;;
47.47792 ++
47.47793 ++      -export-symbols | -export-symbols-regex)
47.47794 ++	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
47.47795 ++	  func_fatal_error "more than one -exported-symbols argument is not allowed"
47.47796 ++	fi
47.47797 ++	if test "X$arg" = "X-export-symbols"; then
47.47798 ++	  prev=expsyms
47.47799 ++	else
47.47800 ++	  prev=expsyms_regex
47.47801 ++	fi
47.47802 ++	continue
47.47803 ++	;;
47.47804 ++
47.47805 ++      -framework)
47.47806 ++	prev=framework
47.47807 ++	continue
47.47808 ++	;;
47.47809 ++
47.47810 ++      -inst-prefix-dir)
47.47811 ++	prev=inst_prefix
47.47812 ++	continue
47.47813 ++	;;
47.47814 ++
47.47815 ++      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
47.47816 ++      # so, if we see these flags be careful not to treat them like -L
47.47817 ++      -L[A-Z][A-Z]*:*)
47.47818 ++	case $with_gcc/$host in
47.47819 ++	no/*-*-irix* | /*-*-irix*)
47.47820 ++	  func_append compile_command " $arg"
47.47821 ++	  func_append finalize_command " $arg"
47.47822 ++	  ;;
47.47823 ++	esac
47.47824 ++	continue
47.47825 ++	;;
47.47826 ++
47.47827 ++      -L*)
47.47828 ++	func_stripname '-L' '' "$arg"
47.47829 ++	dir=$func_stripname_result
47.47830 ++	# We need an absolute path.
47.47831 ++	case $dir in
47.47832 ++	[\\/]* | [A-Za-z]:[\\/]*) ;;
47.47833 ++	*)
47.47834 ++	  absdir=`cd "$dir" && pwd`
47.47835 ++	  test -z "$absdir" && \
47.47836 ++	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
47.47837 ++	  dir="$absdir"
47.47838 ++	  ;;
47.47839 ++	esac
47.47840 ++	case "$deplibs " in
47.47841 ++	*" -L$dir "*) ;;
47.47842 ++	*)
47.47843 ++	  deplibs="$deplibs -L$dir"
47.47844 ++	  lib_search_path="$lib_search_path $dir"
47.47845 ++	  ;;
47.47846 ++	esac
47.47847 ++	case $host in
47.47848 ++	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
47.47849 ++	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
47.47850 ++	  case :$dllsearchpath: in
47.47851 ++	  *":$dir:"*) ;;
47.47852 ++	  *) dllsearchpath="$dllsearchpath:$dir";;
47.47853 ++	  esac
47.47854 ++	  case :$dllsearchpath: in
47.47855 ++	  *":$testbindir:"*) ;;
47.47856 ++	  *) dllsearchpath="$dllsearchpath:$testbindir";;
47.47857 ++	  esac
47.47858 ++	  ;;
47.47859 ++	esac
47.47860 ++	continue
47.47861 ++	;;
47.47862 ++
47.47863 ++      -l*)
47.47864 ++	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
47.47865 ++	  case $host in
47.47866 ++	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
47.47867 ++	    # These systems don't actually have a C or math library (as such)
47.47868 ++	    continue
47.47869 ++	    ;;
47.47870 ++	  *-*-os2*)
47.47871 ++	    # These systems don't actually have a C library (as such)
47.47872 ++	    test "X$arg" = "X-lc" && continue
47.47873 ++	    ;;
47.47874 ++	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
47.47875 ++	    # Do not include libc due to us having libc/libc_r.
47.47876 ++	    test "X$arg" = "X-lc" && continue
47.47877 ++	    ;;
47.47878 ++	  *-*-rhapsody* | *-*-darwin1.[012])
47.47879 ++	    # Rhapsody C and math libraries are in the System framework
47.47880 ++	    deplibs="$deplibs System.ltframework"
47.47881 ++	    continue
47.47882 ++	    ;;
47.47883 ++	  *-*-sco3.2v5* | *-*-sco5v6*)
47.47884 ++	    # Causes problems with __ctype
47.47885 ++	    test "X$arg" = "X-lc" && continue
47.47886 ++	    ;;
47.47887 ++	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
47.47888 ++	    # Compiler inserts libc in the correct place for threads to work
47.47889 ++	    test "X$arg" = "X-lc" && continue
47.47890 ++	    ;;
47.47891 ++	  esac
47.47892 ++	elif test "X$arg" = "X-lc_r"; then
47.47893 ++	 case $host in
47.47894 ++	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
47.47895 ++	   # Do not include libc_r directly, use -pthread flag.
47.47896 ++	   continue
47.47897 ++	   ;;
47.47898 ++	 esac
47.47899 ++	fi
47.47900 ++	deplibs="$deplibs $arg"
47.47901 ++	continue
47.47902 ++	;;
47.47903 ++
47.47904 ++      -module)
47.47905 ++	module=yes
47.47906 ++	continue
47.47907 ++	;;
47.47908 ++
47.47909 ++      # Tru64 UNIX uses -model [arg] to determine the layout of C++
47.47910 ++      # classes, name mangling, and exception handling.
47.47911 ++      # Darwin uses the -arch flag to determine output architecture.
47.47912 ++      -model|-arch|-isysroot)
47.47913 ++	compiler_flags="$compiler_flags $arg"
47.47914 ++	func_append compile_command " $arg"
47.47915 ++	func_append finalize_command " $arg"
47.47916 ++	prev=xcompiler
47.47917 ++	continue
47.47918 ++	;;
47.47919 ++
47.47920 ++      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
47.47921 ++	compiler_flags="$compiler_flags $arg"
47.47922 ++	func_append compile_command " $arg"
47.47923 ++	func_append finalize_command " $arg"
47.47924 ++	case "$new_inherited_linker_flags " in
47.47925 ++	    *" $arg "*) ;;
47.47926 ++	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
47.47927 ++	esac
47.47928 ++	continue
47.47929 ++	;;
47.47930 ++
47.47931 ++      -multi_module)
47.47932 ++	single_module="${wl}-multi_module"
47.47933 ++	continue
47.47934 ++	;;
47.47935 ++
47.47936 ++      -no-fast-install)
47.47937 ++	fast_install=no
47.47938 ++	continue
47.47939 ++	;;
47.47940 ++
47.47941 ++      -no-install)
47.47942 ++	case $host in
47.47943 ++	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
47.47944 ++	  # The PATH hackery in wrapper scripts is required on Windows
47.47945 ++	  # in order for the loader to find any dlls it needs.
47.47946 ++	  func_warning "\`-no-install' is ignored for $host"
47.47947 ++	  func_warning "assuming \`-no-fast-install' instead"
47.47948 ++	  fast_install=no
47.47949 ++	  ;;
47.47950 ++	*) no_install=yes ;;
47.47951 ++	esac
47.47952 ++	continue
47.47953 ++	;;
47.47954 ++
47.47955 ++      -no-undefined)
47.47956 ++	allow_undefined=no
47.47957 ++	continue
47.47958 ++	;;
47.47959 ++
47.47960 ++      -objectlist)
47.47961 ++	prev=objectlist
47.47962 ++	continue
47.47963 ++	;;
47.47964 ++
47.47965 ++      -o) prev=output ;;
47.47966 ++
47.47967 ++      -precious-files-regex)
47.47968 ++	prev=precious_regex
47.47969 ++	continue
47.47970 ++	;;
47.47971 ++
47.47972 ++      -release)
47.47973 ++	prev=release
47.47974 ++	continue
47.47975 ++	;;
47.47976 ++
47.47977 ++      -rpath)
47.47978 ++	prev=rpath
47.47979 ++	continue
47.47980 ++	;;
47.47981 ++
47.47982 ++      -R)
47.47983 ++	prev=xrpath
47.47984 ++	continue
47.47985 ++	;;
47.47986 ++
47.47987 ++      -R*)
47.47988 ++	func_stripname '-R' '' "$arg"
47.47989 ++	dir=$func_stripname_result
47.47990 ++	# We need an absolute path.
47.47991 ++	case $dir in
47.47992 ++	[\\/]* | [A-Za-z]:[\\/]*) ;;
47.47993 ++	*)
47.47994 ++	  func_fatal_error "only absolute run-paths are allowed"
47.47995 ++	  ;;
47.47996 ++	esac
47.47997 ++	case "$xrpath " in
47.47998 ++	*" $dir "*) ;;
47.47999 ++	*) xrpath="$xrpath $dir" ;;
47.48000 ++	esac
47.48001 ++	continue
47.48002 ++	;;
47.48003 ++
47.48004 ++      -shared)
47.48005 ++	# The effects of -shared are defined in a previous loop.
47.48006 ++	continue
47.48007 ++	;;
47.48008 ++
47.48009 ++      -shrext)
47.48010 ++	prev=shrext
47.48011 ++	continue
47.48012 ++	;;
47.48013 ++
47.48014 ++      -static | -static-libtool-libs)
47.48015 ++	# The effects of -static are defined in a previous loop.
47.48016 ++	# We used to do the same as -all-static on platforms that
47.48017 ++	# didn't have a PIC flag, but the assumption that the effects
47.48018 ++	# would be equivalent was wrong.  It would break on at least
47.48019 ++	# Digital Unix and AIX.
47.48020 ++	continue
47.48021 ++	;;
47.48022 ++
47.48023 ++      -thread-safe)
47.48024 ++	thread_safe=yes
47.48025 ++	continue
47.48026 ++	;;
47.48027 ++
47.48028 ++      -version-info)
47.48029 ++	prev=vinfo
47.48030 ++	continue
47.48031 ++	;;
47.48032 ++
47.48033 ++      -version-number)
47.48034 ++	prev=vinfo
47.48035 ++	vinfo_number=yes
47.48036 ++	continue
47.48037 ++	;;
47.48038 ++
47.48039 ++      -weak)
47.48040 ++        prev=weak
47.48041 ++	continue
47.48042 ++	;;
47.48043 ++
47.48044 ++      -Wc,*)
47.48045 ++	func_stripname '-Wc,' '' "$arg"
47.48046 ++	args=$func_stripname_result
47.48047 ++	arg=
47.48048 ++	save_ifs="$IFS"; IFS=','
47.48049 ++	for flag in $args; do
47.48050 ++	  IFS="$save_ifs"
47.48051 ++          func_quote_for_eval "$flag"
47.48052 ++	  arg="$arg $wl$func_quote_for_eval_result"
47.48053 ++	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
47.48054 ++	done
47.48055 ++	IFS="$save_ifs"
47.48056 ++	func_stripname ' ' '' "$arg"
47.48057 ++	arg=$func_stripname_result
47.48058 ++	;;
47.48059 ++
47.48060 ++      -Wl,*)
47.48061 ++	func_stripname '-Wl,' '' "$arg"
47.48062 ++	args=$func_stripname_result
47.48063 ++	arg=
47.48064 ++	save_ifs="$IFS"; IFS=','
47.48065 ++	for flag in $args; do
47.48066 ++	  IFS="$save_ifs"
47.48067 ++          func_quote_for_eval "$flag"
47.48068 ++	  arg="$arg $wl$func_quote_for_eval_result"
47.48069 ++	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
47.48070 ++	  linker_flags="$linker_flags $func_quote_for_eval_result"
47.48071 ++	done
47.48072 ++	IFS="$save_ifs"
47.48073 ++	func_stripname ' ' '' "$arg"
47.48074 ++	arg=$func_stripname_result
47.48075 ++	;;
47.48076 ++
47.48077 ++      -Xcompiler)
47.48078 ++	prev=xcompiler
47.48079 ++	continue
47.48080 ++	;;
47.48081 ++
47.48082 ++      -Xlinker)
47.48083 ++	prev=xlinker
47.48084 ++	continue
47.48085 ++	;;
47.48086 ++
47.48087 ++      -XCClinker)
47.48088 ++	prev=xcclinker
47.48089 ++	continue
47.48090 ++	;;
47.48091 ++
47.48092 ++      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
47.48093 ++      # -r[0-9][0-9]* specifies the processor on the SGI compiler
47.48094 ++      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
47.48095 ++      # +DA*, +DD* enable 64-bit mode on the HP compiler
47.48096 ++      # -q* pass through compiler args for the IBM compiler
47.48097 ++      # -m*, -t[45]*, -txscale* pass through architecture-specific
47.48098 ++      # compiler args for GCC
47.48099 ++      # -F/path gives path to uninstalled frameworks, gcc on darwin
47.48100 ++      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
47.48101 ++      # @file GCC response files
47.48102 ++      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
47.48103 ++      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
47.48104 ++        func_quote_for_eval "$arg"
47.48105 ++	arg="$func_quote_for_eval_result"
47.48106 ++        func_append compile_command " $arg"
47.48107 ++        func_append finalize_command " $arg"
47.48108 ++        compiler_flags="$compiler_flags $arg"
47.48109 ++        continue
47.48110 ++        ;;
47.48111 ++
47.48112 ++      # Some other compiler flag.
47.48113 ++      -* | +*)
47.48114 ++        func_quote_for_eval "$arg"
47.48115 ++	arg="$func_quote_for_eval_result"
47.48116 ++	;;
47.48117 ++
47.48118 ++      *.$objext)
47.48119 ++	# A standard object.
47.48120 ++	objs="$objs $arg"
47.48121 ++	;;
47.48122 ++
47.48123 ++      *.lo)
47.48124 ++	# A libtool-controlled object.
47.48125 ++
47.48126 ++	# Check to see that this really is a libtool object.
47.48127 ++	if func_lalib_unsafe_p "$arg"; then
47.48128 ++	  pic_object=
47.48129 ++	  non_pic_object=
47.48130 ++
47.48131 ++	  # Read the .lo file
47.48132 ++	  func_source "$arg"
47.48133 ++
47.48134 ++	  if test -z "$pic_object" ||
47.48135 ++	     test -z "$non_pic_object" ||
47.48136 ++	     test "$pic_object" = none &&
47.48137 ++	     test "$non_pic_object" = none; then
47.48138 ++	    func_fatal_error "cannot find name of object for \`$arg'"
47.48139 ++	  fi
47.48140 ++
47.48141 ++	  # Extract subdirectory from the argument.
47.48142 ++	  func_dirname "$arg" "/" ""
47.48143 ++	  xdir="$func_dirname_result"
47.48144 ++
47.48145 ++	  if test "$pic_object" != none; then
47.48146 ++	    # Prepend the subdirectory the object is found in.
47.48147 ++	    pic_object="$xdir$pic_object"
47.48148 ++
47.48149 ++	    if test "$prev" = dlfiles; then
47.48150 ++	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
47.48151 ++		dlfiles="$dlfiles $pic_object"
47.48152 ++		prev=
47.48153 ++		continue
47.48154 ++	      else
47.48155 ++		# If libtool objects are unsupported, then we need to preload.
47.48156 ++		prev=dlprefiles
47.48157 ++	      fi
47.48158 ++	    fi
47.48159 ++
47.48160 ++	    # CHECK ME:  I think I busted this.  -Ossama
47.48161 ++	    if test "$prev" = dlprefiles; then
47.48162 ++	      # Preload the old-style object.
47.48163 ++	      dlprefiles="$dlprefiles $pic_object"
47.48164 ++	      prev=
47.48165 ++	    fi
47.48166 ++
47.48167 ++	    # A PIC object.
47.48168 ++	    func_append libobjs " $pic_object"
47.48169 ++	    arg="$pic_object"
47.48170 ++	  fi
47.48171 ++
47.48172 ++	  # Non-PIC object.
47.48173 ++	  if test "$non_pic_object" != none; then
47.48174 ++	    # Prepend the subdirectory the object is found in.
47.48175 ++	    non_pic_object="$xdir$non_pic_object"
47.48176 ++
47.48177 ++	    # A standard non-PIC object
47.48178 ++	    func_append non_pic_objects " $non_pic_object"
47.48179 ++	    if test -z "$pic_object" || test "$pic_object" = none ; then
47.48180 ++	      arg="$non_pic_object"
47.48181 ++	    fi
47.48182 ++	  else
47.48183 ++	    # If the PIC object exists, use it instead.
47.48184 ++	    # $xdir was prepended to $pic_object above.
47.48185 ++	    non_pic_object="$pic_object"
47.48186 ++	    func_append non_pic_objects " $non_pic_object"
47.48187 ++	  fi
47.48188 ++	else
47.48189 ++	  # Only an error if not doing a dry-run.
47.48190 ++	  if $opt_dry_run; then
47.48191 ++	    # Extract subdirectory from the argument.
47.48192 ++	    func_dirname "$arg" "/" ""
47.48193 ++	    xdir="$func_dirname_result"
47.48194 ++
47.48195 ++	    func_lo2o "$arg"
47.48196 ++	    pic_object=$xdir$objdir/$func_lo2o_result
47.48197 ++	    non_pic_object=$xdir$func_lo2o_result
47.48198 ++	    func_append libobjs " $pic_object"
47.48199 ++	    func_append non_pic_objects " $non_pic_object"
47.48200 ++	  else
47.48201 ++	    func_fatal_error "\`$arg' is not a valid libtool object"
47.48202 ++	  fi
47.48203 ++	fi
47.48204 ++	;;
47.48205 ++
47.48206 ++      *.$libext)
47.48207 ++	# An archive.
47.48208 ++	deplibs="$deplibs $arg"
47.48209 ++	old_deplibs="$old_deplibs $arg"
47.48210 ++	continue
47.48211 ++	;;
47.48212 ++
47.48213 ++      *.la)
47.48214 ++	# A libtool-controlled library.
47.48215 ++
47.48216 ++	if test "$prev" = dlfiles; then
47.48217 ++	  # This library was specified with -dlopen.
47.48218 ++	  dlfiles="$dlfiles $arg"
47.48219 ++	  prev=
47.48220 ++	elif test "$prev" = dlprefiles; then
47.48221 ++	  # The library was specified with -dlpreopen.
47.48222 ++	  dlprefiles="$dlprefiles $arg"
47.48223 ++	  prev=
47.48224 ++	else
47.48225 ++	  deplibs="$deplibs $arg"
47.48226 ++	fi
47.48227 ++	continue
47.48228 ++	;;
47.48229 ++
47.48230 ++      # Some other compiler argument.
47.48231 ++      *)
47.48232 ++	# Unknown arguments in both finalize_command and compile_command need
47.48233 ++	# to be aesthetically quoted because they are evaled later.
47.48234 ++	func_quote_for_eval "$arg"
47.48235 ++	arg="$func_quote_for_eval_result"
47.48236 ++	;;
47.48237 ++      esac # arg
47.48238 ++
47.48239 ++      # Now actually substitute the argument into the commands.
47.48240 ++      if test -n "$arg"; then
47.48241 ++	func_append compile_command " $arg"
47.48242 ++	func_append finalize_command " $arg"
47.48243 ++      fi
47.48244 ++    done # argument parsing loop
47.48245 ++
47.48246 ++    test -n "$prev" && \
47.48247 ++      func_fatal_help "the \`$prevarg' option requires an argument"
47.48248 ++
47.48249 ++    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
47.48250 ++      eval arg=\"$export_dynamic_flag_spec\"
47.48251 ++      func_append compile_command " $arg"
47.48252 ++      func_append finalize_command " $arg"
47.48253 ++    fi
47.48254 ++
47.48255 ++    oldlibs=
47.48256 ++    # calculate the name of the file, without its directory
47.48257 ++    func_basename "$output"
47.48258 ++    outputname="$func_basename_result"
47.48259 ++    libobjs_save="$libobjs"
47.48260 ++
47.48261 ++    if test -n "$shlibpath_var"; then
47.48262 ++      # get the directories listed in $shlibpath_var
47.48263 ++      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
47.48264 ++    else
47.48265 ++      shlib_search_path=
47.48266 ++    fi
47.48267 ++    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
47.48268 ++    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
47.48269 ++
47.48270 ++    func_dirname "$output" "/" ""
47.48271 ++    output_objdir="$func_dirname_result$objdir"
47.48272 ++    # Create the object directory.
47.48273 ++    func_mkdir_p "$output_objdir"
47.48274 ++
47.48275 ++    # Determine the type of output
47.48276 ++    case $output in
47.48277 ++    "")
47.48278 ++      func_fatal_help "you must specify an output file"
47.48279 ++      ;;
47.48280 ++    *.$libext) linkmode=oldlib ;;
47.48281 ++    *.lo | *.$objext) linkmode=obj ;;
47.48282 ++    *.la) linkmode=lib ;;
47.48283 ++    *) linkmode=prog ;; # Anything else should be a program.
47.48284 ++    esac
47.48285 ++
47.48286 ++    specialdeplibs=
47.48287 ++
47.48288 ++    libs=
47.48289 ++    # Find all interdependent deplibs by searching for libraries
47.48290 ++    # that are linked more than once (e.g. -la -lb -la)
47.48291 ++    for deplib in $deplibs; do
47.48292 ++      if $opt_duplicate_deps ; then
47.48293 ++	case "$libs " in
47.48294 ++	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
47.48295 ++	esac
47.48296 ++      fi
47.48297 ++      libs="$libs $deplib"
47.48298 ++    done
47.48299 ++
47.48300 ++    if test "$linkmode" = lib; then
47.48301 ++      libs="$predeps $libs $compiler_lib_search_path $postdeps"
47.48302 ++
47.48303 ++      # Compute libraries that are listed more than once in $predeps
47.48304 ++      # $postdeps and mark them as special (i.e., whose duplicates are
47.48305 ++      # not to be eliminated).
47.48306 ++      pre_post_deps=
47.48307 ++      if $opt_duplicate_compiler_generated_deps; then
47.48308 ++	for pre_post_dep in $predeps $postdeps; do
47.48309 ++	  case "$pre_post_deps " in
47.48310 ++	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
47.48311 ++	  esac
47.48312 ++	  pre_post_deps="$pre_post_deps $pre_post_dep"
47.48313 ++	done
47.48314 ++      fi
47.48315 ++      pre_post_deps=
47.48316 ++    fi
47.48317 ++
47.48318 ++    deplibs=
47.48319 ++    newdependency_libs=
47.48320 ++    newlib_search_path=
47.48321 ++    need_relink=no # whether we're linking any uninstalled libtool libraries
47.48322 ++    notinst_deplibs= # not-installed libtool libraries
47.48323 ++    notinst_path= # paths that contain not-installed libtool libraries
47.48324 ++
47.48325 ++    case $linkmode in
47.48326 ++    lib)
47.48327 ++	passes="conv dlpreopen link"
47.48328 ++	for file in $dlfiles $dlprefiles; do
47.48329 ++	  case $file in
47.48330 ++	  *.la) ;;
47.48331 ++	  *)
47.48332 ++	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
47.48333 ++	    ;;
47.48334 ++	  esac
47.48335 ++	done
47.48336 ++	;;
47.48337 ++    prog)
47.48338 ++	compile_deplibs=
47.48339 ++	finalize_deplibs=
47.48340 ++	alldeplibs=no
47.48341 ++	newdlfiles=
47.48342 ++	newdlprefiles=
47.48343 ++	passes="conv scan dlopen dlpreopen link"
47.48344 ++	;;
47.48345 ++    *)  passes="conv"
47.48346 ++	;;
47.48347 ++    esac
47.48348 ++
47.48349 ++    for pass in $passes; do
47.48350 ++      # The preopen pass in lib mode reverses $deplibs; put it back here
47.48351 ++      # so that -L comes before libs that need it for instance...
47.48352 ++      if test "$linkmode,$pass" = "lib,link"; then
47.48353 ++	## FIXME: Find the place where the list is rebuilt in the wrong
47.48354 ++	##        order, and fix it there properly
47.48355 ++        tmp_deplibs=
47.48356 ++	for deplib in $deplibs; do
47.48357 ++	  tmp_deplibs="$deplib $tmp_deplibs"
47.48358 ++	done
47.48359 ++	deplibs="$tmp_deplibs"
47.48360 ++      fi
47.48361 ++
47.48362 ++      if test "$linkmode,$pass" = "lib,link" ||
47.48363 ++	 test "$linkmode,$pass" = "prog,scan"; then
47.48364 ++	libs="$deplibs"
47.48365 ++	deplibs=
47.48366 ++      fi
47.48367 ++      if test "$linkmode" = prog; then
47.48368 ++	case $pass in
47.48369 ++	dlopen) libs="$dlfiles" ;;
47.48370 ++	dlpreopen) libs="$dlprefiles" ;;
47.48371 ++	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
47.48372 ++	esac
47.48373 ++      fi
47.48374 ++      if test "$linkmode,$pass" = "lib,dlpreopen"; then
47.48375 ++	# Collect and forward deplibs of preopened libtool libs
47.48376 ++	for lib in $dlprefiles; do
47.48377 ++	  # Ignore non-libtool-libs
47.48378 ++	  dependency_libs=
47.48379 ++	  case $lib in
47.48380 ++	  *.la)	func_source "$lib" ;;
47.48381 ++	  esac
47.48382 ++
47.48383 ++	  # Collect preopened libtool deplibs, except any this library
47.48384 ++	  # has declared as weak libs
47.48385 ++	  for deplib in $dependency_libs; do
47.48386 ++            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
47.48387 ++	    case " $weak_libs " in
47.48388 ++	    *" $deplib_base "*) ;;
47.48389 ++	    *) deplibs="$deplibs $deplib" ;;
47.48390 ++	    esac
47.48391 ++	  done
47.48392 ++	done
47.48393 ++	libs="$dlprefiles"
47.48394 ++      fi
47.48395 ++      if test "$pass" = dlopen; then
47.48396 ++	# Collect dlpreopened libraries
47.48397 ++	save_deplibs="$deplibs"
47.48398 ++	deplibs=
47.48399 ++      fi
47.48400 ++
47.48401 ++      for deplib in $libs; do
47.48402 ++	lib=
47.48403 ++	found=no
47.48404 ++	case $deplib in
47.48405 ++	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
47.48406 ++	  if test "$linkmode,$pass" = "prog,link"; then
47.48407 ++	    compile_deplibs="$deplib $compile_deplibs"
47.48408 ++	    finalize_deplibs="$deplib $finalize_deplibs"
47.48409 ++	  else
47.48410 ++	    compiler_flags="$compiler_flags $deplib"
47.48411 ++	    if test "$linkmode" = lib ; then
47.48412 ++		case "$new_inherited_linker_flags " in
47.48413 ++		    *" $deplib "*) ;;
47.48414 ++		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
47.48415 ++		esac
47.48416 ++	    fi
47.48417 ++	  fi
47.48418 ++	  continue
47.48419 ++	  ;;
47.48420 ++	-l*)
47.48421 ++	  if test "$linkmode" != lib && test "$linkmode" != prog; then
47.48422 ++	    func_warning "\`-l' is ignored for archives/objects"
47.48423 ++	    continue
47.48424 ++	  fi
47.48425 ++	  func_stripname '-l' '' "$deplib"
47.48426 ++	  name=$func_stripname_result
47.48427 ++	  for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
47.48428 ++	    for search_ext in .la $std_shrext .so .a; do
47.48429 ++	      # Search the libtool library
47.48430 ++	      lib="$searchdir/lib${name}${search_ext}"
47.48431 ++	      if test -f "$lib"; then
47.48432 ++		if test "$search_ext" = ".la"; then
47.48433 ++		  found=yes
47.48434 ++		else
47.48435 ++		  found=no
47.48436 ++		fi
47.48437 ++		break 2
47.48438 ++	      fi
47.48439 ++	    done
47.48440 ++	  done
47.48441 ++	  if test "$found" != yes; then
47.48442 ++	    # deplib doesn't seem to be a libtool library
47.48443 ++	    if test "$linkmode,$pass" = "prog,link"; then
47.48444 ++	      compile_deplibs="$deplib $compile_deplibs"
47.48445 ++	      finalize_deplibs="$deplib $finalize_deplibs"
47.48446 ++	    else
47.48447 ++	      deplibs="$deplib $deplibs"
47.48448 ++	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
47.48449 ++	    fi
47.48450 ++	    continue
47.48451 ++	  else # deplib is a libtool library
47.48452 ++	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
47.48453 ++	    # We need to do some special things here, and not later.
47.48454 ++	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
47.48455 ++	      case " $predeps $postdeps " in
47.48456 ++	      *" $deplib "*)
47.48457 ++		if func_lalib_p "$lib"; then
47.48458 ++		  library_names=
47.48459 ++		  old_library=
47.48460 ++		  func_source "$lib"
47.48461 ++		  for l in $old_library $library_names; do
47.48462 ++		    ll="$l"
47.48463 ++		  done
47.48464 ++		  if test "X$ll" = "X$old_library" ; then # only static version available
47.48465 ++		    found=no
47.48466 ++		    func_dirname "$lib" "" "."
47.48467 ++		    ladir="$func_dirname_result"
47.48468 ++		    lib=$ladir/$old_library
47.48469 ++		    if test "$linkmode,$pass" = "prog,link"; then
47.48470 ++		      compile_deplibs="$deplib $compile_deplibs"
47.48471 ++		      finalize_deplibs="$deplib $finalize_deplibs"
47.48472 ++		    else
47.48473 ++		      deplibs="$deplib $deplibs"
47.48474 ++		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
47.48475 ++		    fi
47.48476 ++		    continue
47.48477 ++		  fi
47.48478 ++		fi
47.48479 ++		;;
47.48480 ++	      *) ;;
47.48481 ++	      esac
47.48482 ++	    fi
47.48483 ++	  fi
47.48484 ++	  ;; # -l
47.48485 ++	*.ltframework)
47.48486 ++	  if test "$linkmode,$pass" = "prog,link"; then
47.48487 ++	    compile_deplibs="$deplib $compile_deplibs"
47.48488 ++	    finalize_deplibs="$deplib $finalize_deplibs"
47.48489 ++	  else
47.48490 ++	    deplibs="$deplib $deplibs"
47.48491 ++	    if test "$linkmode" = lib ; then
47.48492 ++		case "$new_inherited_linker_flags " in
47.48493 ++		    *" $deplib "*) ;;
47.48494 ++		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
47.48495 ++		esac
47.48496 ++	    fi
47.48497 ++	  fi
47.48498 ++	  continue
47.48499 ++	  ;;
47.48500 ++	-L*)
47.48501 ++	  case $linkmode in
47.48502 ++	  lib)
47.48503 ++	    deplibs="$deplib $deplibs"
47.48504 ++	    test "$pass" = conv && continue
47.48505 ++	    newdependency_libs="$deplib $newdependency_libs"
47.48506 ++	    func_stripname '-L' '' "$deplib"
47.48507 ++	    newlib_search_path="$newlib_search_path $func_stripname_result"
47.48508 ++	    ;;
47.48509 ++	  prog)
47.48510 ++	    if test "$pass" = conv; then
47.48511 ++	      deplibs="$deplib $deplibs"
47.48512 ++	      continue
47.48513 ++	    fi
47.48514 ++	    if test "$pass" = scan; then
47.48515 ++	      deplibs="$deplib $deplibs"
47.48516 ++	    else
47.48517 ++	      compile_deplibs="$deplib $compile_deplibs"
47.48518 ++	      finalize_deplibs="$deplib $finalize_deplibs"
47.48519 ++	    fi
47.48520 ++	    func_stripname '-L' '' "$deplib"
47.48521 ++	    newlib_search_path="$newlib_search_path $func_stripname_result"
47.48522 ++	    ;;
47.48523 ++	  *)
47.48524 ++	    func_warning "\`-L' is ignored for archives/objects"
47.48525 ++	    ;;
47.48526 ++	  esac # linkmode
47.48527 ++	  continue
47.48528 ++	  ;; # -L
47.48529 ++	-R*)
47.48530 ++	  if test "$pass" = link; then
47.48531 ++	    func_stripname '-R' '' "$deplib"
47.48532 ++	    dir=$func_stripname_result
47.48533 ++	    # Make sure the xrpath contains only unique directories.
47.48534 ++	    case "$xrpath " in
47.48535 ++	    *" $dir "*) ;;
47.48536 ++	    *) xrpath="$xrpath $dir" ;;
47.48537 ++	    esac
47.48538 ++	  fi
47.48539 ++	  deplibs="$deplib $deplibs"
47.48540 ++	  continue
47.48541 ++	  ;;
47.48542 ++	*.la) lib="$deplib" ;;
47.48543 ++	*.$libext)
47.48544 ++	  if test "$pass" = conv; then
47.48545 ++	    deplibs="$deplib $deplibs"
47.48546 ++	    continue
47.48547 ++	  fi
47.48548 ++	  case $linkmode in
47.48549 ++	  lib)
47.48550 ++	    # Linking convenience modules into shared libraries is allowed,
47.48551 ++	    # but linking other static libraries is non-portable.
47.48552 ++	    case " $dlpreconveniencelibs " in
47.48553 ++	    *" $deplib "*) ;;
47.48554 ++	    *)
47.48555 ++	      valid_a_lib=no
47.48556 ++	      case $deplibs_check_method in
47.48557 ++		match_pattern*)
47.48558 ++		  set dummy $deplibs_check_method; shift
47.48559 ++		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
47.48560 ++		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
47.48561 ++		    | $EGREP "$match_pattern_regex" > /dev/null; then
47.48562 ++		    valid_a_lib=yes
47.48563 ++		  fi
47.48564 ++		;;
47.48565 ++		pass_all)
47.48566 ++		  valid_a_lib=yes
47.48567 ++		;;
47.48568 ++	      esac
47.48569 ++	      if test "$valid_a_lib" != yes; then
47.48570 ++		$ECHO
47.48571 ++		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
47.48572 ++		$ECHO "*** I have the capability to make that library automatically link in when"
47.48573 ++		$ECHO "*** you link to this library.  But I can only do this if you have a"
47.48574 ++		$ECHO "*** shared version of the library, which you do not appear to have"
47.48575 ++		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
47.48576 ++		$ECHO "*** that it is just a static archive that I should not use here."
47.48577 ++	      else
47.48578 ++		$ECHO
47.48579 ++		$ECHO "*** Warning: Linking the shared library $output against the"
47.48580 ++		$ECHO "*** static library $deplib is not portable!"
47.48581 ++		deplibs="$deplib $deplibs"
47.48582 ++	      fi
47.48583 ++	      ;;
47.48584 ++	    esac
47.48585 ++	    continue
47.48586 ++	    ;;
47.48587 ++	  prog)
47.48588 ++	    if test "$pass" != link; then
47.48589 ++	      deplibs="$deplib $deplibs"
47.48590 ++	    else
47.48591 ++	      compile_deplibs="$deplib $compile_deplibs"
47.48592 ++	      finalize_deplibs="$deplib $finalize_deplibs"
47.48593 ++	    fi
47.48594 ++	    continue
47.48595 ++	    ;;
47.48596 ++	  esac # linkmode
47.48597 ++	  ;; # *.$libext
47.48598 ++	*.lo | *.$objext)
47.48599 ++	  if test "$pass" = conv; then
47.48600 ++	    deplibs="$deplib $deplibs"
47.48601 ++	  elif test "$linkmode" = prog; then
47.48602 ++	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
47.48603 ++	      # If there is no dlopen support or we're linking statically,
47.48604 ++	      # we need to preload.
47.48605 ++	      newdlprefiles="$newdlprefiles $deplib"
47.48606 ++	      compile_deplibs="$deplib $compile_deplibs"
47.48607 ++	      finalize_deplibs="$deplib $finalize_deplibs"
47.48608 ++	    else
47.48609 ++	      newdlfiles="$newdlfiles $deplib"
47.48610 ++	    fi
47.48611 ++	  fi
47.48612 ++	  continue
47.48613 ++	  ;;
47.48614 ++	%DEPLIBS%)
47.48615 ++	  alldeplibs=yes
47.48616 ++	  continue
47.48617 ++	  ;;
47.48618 ++	esac # case $deplib
47.48619 ++
47.48620 ++	if test "$found" = yes || test -f "$lib"; then :
47.48621 ++	else
47.48622 ++	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
47.48623 ++	fi
47.48624 ++
47.48625 ++	# Check to see that this really is a libtool archive.
47.48626 ++	func_lalib_unsafe_p "$lib" \
47.48627 ++	  || func_fatal_error "\`$lib' is not a valid libtool archive"
47.48628 ++
47.48629 ++	func_dirname "$lib" "" "."
47.48630 ++	ladir="$func_dirname_result"
47.48631 ++
47.48632 ++	dlname=
47.48633 ++	dlopen=
47.48634 ++	dlpreopen=
47.48635 ++	libdir=
47.48636 ++	library_names=
47.48637 ++	old_library=
47.48638 ++	inherited_linker_flags=
47.48639 ++	# If the library was installed with an old release of libtool,
47.48640 ++	# it will not redefine variables installed, or shouldnotlink
47.48641 ++	installed=yes
47.48642 ++	shouldnotlink=no
47.48643 ++	avoidtemprpath=
47.48644 ++
47.48645 ++
47.48646 ++	# Read the .la file
47.48647 ++	func_source "$lib"
47.48648 ++
47.48649 ++	# Convert "-framework foo" to "foo.ltframework"
47.48650 ++	if test -n "$inherited_linker_flags"; then
47.48651 ++	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
47.48652 ++	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
47.48653 ++	    case " $new_inherited_linker_flags " in
47.48654 ++	      *" $tmp_inherited_linker_flag "*) ;;
47.48655 ++	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
47.48656 ++	    esac
47.48657 ++	  done
47.48658 ++	fi
47.48659 ++	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
47.48660 ++	if test "$linkmode,$pass" = "prog,link"; then
47.48661 ++	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
47.48662 ++	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
47.48663 ++	else
47.48664 ++	  compiler_flags="$compiler_flags $inherited_linker_flags"
47.48665 ++	fi
47.48666 ++	if test "$linkmode,$pass" = "lib,link" ||
47.48667 ++	   test "$linkmode,$pass" = "prog,scan" ||
47.48668 ++	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
47.48669 ++	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
47.48670 ++	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
47.48671 ++	fi
47.48672 ++
47.48673 ++	if test "$pass" = conv; then
47.48674 ++	  # Only check for convenience libraries
47.48675 ++	  deplibs="$lib $deplibs"
47.48676 ++	  if test -z "$libdir"; then
47.48677 ++	    if test -z "$old_library"; then
47.48678 ++	      func_fatal_error "cannot find name of link library for \`$lib'"
47.48679 ++	    fi
47.48680 ++	    # It is a libtool convenience library, so add in its objects.
47.48681 ++	    convenience="$convenience $ladir/$objdir/$old_library"
47.48682 ++	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
47.48683 ++	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
47.48684 ++	    func_fatal_error "\`$lib' is not a convenience library"
47.48685 ++	  fi
47.48686 ++	  tmp_libs=
47.48687 ++	  for deplib in $dependency_libs; do
47.48688 ++	    deplibs="$deplib $deplibs"
47.48689 ++	    if $opt_duplicate_deps ; then
47.48690 ++	      case "$tmp_libs " in
47.48691 ++	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
47.48692 ++	      esac
47.48693 ++	    fi
47.48694 ++	    tmp_libs="$tmp_libs $deplib"
47.48695 ++	  done
47.48696 ++	  continue
47.48697 ++	fi # $pass = conv
47.48698 ++
47.48699 ++
47.48700 ++	# Get the name of the library we link against.
47.48701 ++	linklib=
47.48702 ++	for l in $old_library $library_names; do
47.48703 ++	  linklib="$l"
47.48704 ++	done
47.48705 ++	if test -z "$linklib"; then
47.48706 ++	  func_fatal_error "cannot find name of link library for \`$lib'"
47.48707 ++	fi
47.48708 ++
47.48709 ++	# This library was specified with -dlopen.
47.48710 ++	if test "$pass" = dlopen; then
47.48711 ++	  if test -z "$libdir"; then
47.48712 ++	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
47.48713 ++	  fi
47.48714 ++	  if test -z "$dlname" ||
47.48715 ++	     test "$dlopen_support" != yes ||
47.48716 ++	     test "$build_libtool_libs" = no; then
47.48717 ++	    # If there is no dlname, no dlopen support or we're linking
47.48718 ++	    # statically, we need to preload.  We also need to preload any
47.48719 ++	    # dependent libraries so libltdl's deplib preloader doesn't
47.48720 ++	    # bomb out in the load deplibs phase.
47.48721 ++	    dlprefiles="$dlprefiles $lib $dependency_libs"
47.48722 ++	  else
47.48723 ++	    newdlfiles="$newdlfiles $lib"
47.48724 ++	  fi
47.48725 ++	  continue
47.48726 ++	fi # $pass = dlopen
47.48727 ++
47.48728 ++	# We need an absolute path.
47.48729 ++	case $ladir in
47.48730 ++	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
47.48731 ++	*)
47.48732 ++	  abs_ladir=`cd "$ladir" && pwd`
47.48733 ++	  if test -z "$abs_ladir"; then
47.48734 ++	    func_warning "cannot determine absolute directory name of \`$ladir'"
47.48735 ++	    func_warning "passing it literally to the linker, although it might fail"
47.48736 ++	    abs_ladir="$ladir"
47.48737 ++	  fi
47.48738 ++	  ;;
47.48739 ++	esac
47.48740 ++	func_basename "$lib"
47.48741 ++	laname="$func_basename_result"
47.48742 ++
47.48743 ++	# Find the relevant object directory and library name.
47.48744 ++	if test "X$installed" = Xyes; then
47.48745 ++	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
47.48746 ++	    func_warning "library \`$lib' was moved."
47.48747 ++	    dir="$ladir"
47.48748 ++	    absdir="$abs_ladir"
47.48749 ++	    libdir="$abs_ladir"
47.48750 ++	  else
47.48751 ++	    dir="$libdir"
47.48752 ++	    absdir="$libdir"
47.48753 ++	  fi
47.48754 ++	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
47.48755 ++	else
47.48756 ++	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
47.48757 ++	    dir="$ladir"
47.48758 ++	    absdir="$abs_ladir"
47.48759 ++	    # Remove this search path later
47.48760 ++	    notinst_path="$notinst_path $abs_ladir"
47.48761 ++	  else
47.48762 ++	    dir="$ladir/$objdir"
47.48763 ++	    absdir="$abs_ladir/$objdir"
47.48764 ++	    # Remove this search path later
47.48765 ++	    notinst_path="$notinst_path $abs_ladir"
47.48766 ++	  fi
47.48767 ++	fi # $installed = yes
47.48768 ++	func_stripname 'lib' '.la' "$laname"
47.48769 ++	name=$func_stripname_result
47.48770 ++
47.48771 ++	# This library was specified with -dlpreopen.
47.48772 ++	if test "$pass" = dlpreopen; then
47.48773 ++	  if test -z "$libdir" && test "$linkmode" = prog; then
47.48774 ++	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
47.48775 ++	  fi
47.48776 ++	  # Prefer using a static library (so that no silly _DYNAMIC symbols
47.48777 ++	  # are required to link).
47.48778 ++	  if test -n "$old_library"; then
47.48779 ++	    newdlprefiles="$newdlprefiles $dir/$old_library"
47.48780 ++	    # Keep a list of preopened convenience libraries to check
47.48781 ++	    # that they are being used correctly in the link pass.
47.48782 ++	    test -z "$libdir" && \
47.48783 ++		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
47.48784 ++	  # Otherwise, use the dlname, so that lt_dlopen finds it.
47.48785 ++	  elif test -n "$dlname"; then
47.48786 ++	    newdlprefiles="$newdlprefiles $dir/$dlname"
47.48787 ++	  else
47.48788 ++	    newdlprefiles="$newdlprefiles $dir/$linklib"
47.48789 ++	  fi
47.48790 ++	fi # $pass = dlpreopen
47.48791 ++
47.48792 ++	if test -z "$libdir"; then
47.48793 ++	  # Link the convenience library
47.48794 ++	  if test "$linkmode" = lib; then
47.48795 ++	    deplibs="$dir/$old_library $deplibs"
47.48796 ++	  elif test "$linkmode,$pass" = "prog,link"; then
47.48797 ++	    compile_deplibs="$dir/$old_library $compile_deplibs"
47.48798 ++	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
47.48799 ++	  else
47.48800 ++	    deplibs="$lib $deplibs" # used for prog,scan pass
47.48801 ++	  fi
47.48802 ++	  continue
47.48803 ++	fi
47.48804 ++
47.48805 ++
47.48806 ++	if test "$linkmode" = prog && test "$pass" != link; then
47.48807 ++	  newlib_search_path="$newlib_search_path $ladir"
47.48808 ++	  deplibs="$lib $deplibs"
47.48809 ++
47.48810 ++	  linkalldeplibs=no
47.48811 ++	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
47.48812 ++	     test "$build_libtool_libs" = no; then
47.48813 ++	    linkalldeplibs=yes
47.48814 ++	  fi
47.48815 ++
47.48816 ++	  tmp_libs=
47.48817 ++	  for deplib in $dependency_libs; do
47.48818 ++	    case $deplib in
47.48819 ++	    -L*) func_stripname '-L' '' "$deplib"
47.48820 ++	         newlib_search_path="$newlib_search_path $func_stripname_result"
47.48821 ++		 ;;
47.48822 ++	    esac
47.48823 ++	    # Need to link against all dependency_libs?
47.48824 ++	    if test "$linkalldeplibs" = yes; then
47.48825 ++	      deplibs="$deplib $deplibs"
47.48826 ++	    else
47.48827 ++	      # Need to hardcode shared library paths
47.48828 ++	      # or/and link against static libraries
47.48829 ++	      newdependency_libs="$deplib $newdependency_libs"
47.48830 ++	    fi
47.48831 ++	    if $opt_duplicate_deps ; then
47.48832 ++	      case "$tmp_libs " in
47.48833 ++	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
47.48834 ++	      esac
47.48835 ++	    fi
47.48836 ++	    tmp_libs="$tmp_libs $deplib"
47.48837 ++	  done # for deplib
47.48838 ++	  continue
47.48839 ++	fi # $linkmode = prog...
47.48840 ++
47.48841 ++	if test "$linkmode,$pass" = "prog,link"; then
47.48842 ++	  if test -n "$library_names" &&
47.48843 ++	     { { test "$prefer_static_libs" = no ||
47.48844 ++	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
47.48845 ++	       test -z "$old_library"; }; then
47.48846 ++	    # We need to hardcode the library path
47.48847 ++	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
47.48848 ++	      # Make sure the rpath contains only unique directories.
47.48849 ++	      case "$temp_rpath:" in
47.48850 ++	      *"$absdir:"*) ;;
47.48851 ++	      *) temp_rpath="$temp_rpath$absdir:" ;;
47.48852 ++	      esac
47.48853 ++	    fi
47.48854 ++
47.48855 ++	    # Hardcode the library path.
47.48856 ++	    # Skip directories that are in the system default run-time
47.48857 ++	    # search path.
47.48858 ++	    case " $sys_lib_dlsearch_path " in
47.48859 ++	    *" $absdir "*) ;;
47.48860 ++	    *)
47.48861 ++	      case "$compile_rpath " in
47.48862 ++	      *" $absdir "*) ;;
47.48863 ++	      *) compile_rpath="$compile_rpath $absdir"
47.48864 ++	      esac
47.48865 ++	      ;;
47.48866 ++	    esac
47.48867 ++	    case " $sys_lib_dlsearch_path " in
47.48868 ++	    *" $libdir "*) ;;
47.48869 ++	    *)
47.48870 ++	      case "$finalize_rpath " in
47.48871 ++	      *" $libdir "*) ;;
47.48872 ++	      *) finalize_rpath="$finalize_rpath $libdir"
47.48873 ++	      esac
47.48874 ++	      ;;
47.48875 ++	    esac
47.48876 ++	  fi # $linkmode,$pass = prog,link...
47.48877 ++
47.48878 ++	  if test "$alldeplibs" = yes &&
47.48879 ++	     { test "$deplibs_check_method" = pass_all ||
47.48880 ++	       { test "$build_libtool_libs" = yes &&
47.48881 ++		 test -n "$library_names"; }; }; then
47.48882 ++	    # We only need to search for static libraries
47.48883 ++	    continue
47.48884 ++	  fi
47.48885 ++	fi
47.48886 ++
47.48887 ++	link_static=no # Whether the deplib will be linked statically
47.48888 ++	use_static_libs=$prefer_static_libs
47.48889 ++	if test "$use_static_libs" = built && test "$installed" = yes; then
47.48890 ++	  use_static_libs=no
47.48891 ++	fi
47.48892 ++	if test -n "$library_names" &&
47.48893 ++	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
47.48894 ++	  case $host in
47.48895 ++	  *cygwin* | *mingw*)
47.48896 ++	      # No point in relinking DLLs because paths are not encoded
47.48897 ++	      notinst_deplibs="$notinst_deplibs $lib"
47.48898 ++	      need_relink=no
47.48899 ++	    ;;
47.48900 ++	  *)
47.48901 ++	    if test "$installed" = no; then
47.48902 ++	      notinst_deplibs="$notinst_deplibs $lib"
47.48903 ++	      need_relink=yes
47.48904 ++	    fi
47.48905 ++	    ;;
47.48906 ++	  esac
47.48907 ++	  # This is a shared library
47.48908 ++
47.48909 ++	  # Warn about portability, can't link against -module's on some
47.48910 ++	  # systems (darwin).  Don't bleat about dlopened modules though!
47.48911 ++	  dlopenmodule=""
47.48912 ++	  for dlpremoduletest in $dlprefiles; do
47.48913 ++	    if test "X$dlpremoduletest" = "X$lib"; then
47.48914 ++	      dlopenmodule="$dlpremoduletest"
47.48915 ++	      break
47.48916 ++	    fi
47.48917 ++	  done
47.48918 ++	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
47.48919 ++	    $ECHO
47.48920 ++	    if test "$linkmode" = prog; then
47.48921 ++	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
47.48922 ++	    else
47.48923 ++	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
47.48924 ++	    fi
47.48925 ++	    $ECHO "*** $linklib is not portable!"
47.48926 ++	  fi
47.48927 ++	  if test "$linkmode" = lib &&
47.48928 ++	     test "$hardcode_into_libs" = yes; then
47.48929 ++	    # Hardcode the library path.
47.48930 ++	    # Skip directories that are in the system default run-time
47.48931 ++	    # search path.
47.48932 ++	    case " $sys_lib_dlsearch_path " in
47.48933 ++	    *" $absdir "*) ;;
47.48934 ++	    *)
47.48935 ++	      case "$compile_rpath " in
47.48936 ++	      *" $absdir "*) ;;
47.48937 ++	      *) compile_rpath="$compile_rpath $absdir"
47.48938 ++	      esac
47.48939 ++	      ;;
47.48940 ++	    esac
47.48941 ++	    case " $sys_lib_dlsearch_path " in
47.48942 ++	    *" $libdir "*) ;;
47.48943 ++	    *)
47.48944 ++	      case "$finalize_rpath " in
47.48945 ++	      *" $libdir "*) ;;
47.48946 ++	      *) finalize_rpath="$finalize_rpath $libdir"
47.48947 ++	      esac
47.48948 ++	      ;;
47.48949 ++	    esac
47.48950 ++	  fi
47.48951 ++
47.48952 ++	  if test -n "$old_archive_from_expsyms_cmds"; then
47.48953 ++	    # figure out the soname
47.48954 ++	    set dummy $library_names
47.48955 ++	    shift
47.48956 ++	    realname="$1"
47.48957 ++	    shift
47.48958 ++	    libname=`eval "\\$ECHO \"$libname_spec\""`
47.48959 ++	    # use dlname if we got it. it's perfectly good, no?
47.48960 ++	    if test -n "$dlname"; then
47.48961 ++	      soname="$dlname"
47.48962 ++	    elif test -n "$soname_spec"; then
47.48963 ++	      # bleh windows
47.48964 ++	      case $host in
47.48965 ++	      *cygwin* | mingw*)
47.48966 ++		major=`expr $current - $age`
47.48967 ++		versuffix="-$major"
47.48968 ++		;;
47.48969 ++	      esac
47.48970 ++	      eval soname=\"$soname_spec\"
47.48971 ++	    else
47.48972 ++	      soname="$realname"
47.48973 ++	    fi
47.48974 ++
47.48975 ++	    # Make a new name for the extract_expsyms_cmds to use
47.48976 ++	    soroot="$soname"
47.48977 ++	    func_basename "$soroot"
47.48978 ++	    soname="$func_basename_result"
47.48979 ++	    func_stripname 'lib' '.dll' "$soname"
47.48980 ++	    newlib=libimp-$func_stripname_result.a
47.48981 ++
47.48982 ++	    # If the library has no export list, then create one now
47.48983 ++	    if test -f "$output_objdir/$soname-def"; then :
47.48984 ++	    else
47.48985 ++	      func_echo "extracting exported symbol list from \`$soname'"
47.48986 ++	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
47.48987 ++	    fi
47.48988 ++
47.48989 ++	    # Create $newlib
47.48990 ++	    if test -f "$output_objdir/$newlib"; then :; else
47.48991 ++	      func_echo "generating import library for \`$soname'"
47.48992 ++	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
47.48993 ++	    fi
47.48994 ++	    # make sure the library variables are pointing to the new library
47.48995 ++	    dir=$output_objdir
47.48996 ++	    linklib=$newlib
47.48997 ++	  fi # test -n "$old_archive_from_expsyms_cmds"
47.48998 ++
47.48999 ++	  if test "$linkmode" = prog || test "$mode" != relink; then
47.49000 ++	    add_shlibpath=
47.49001 ++	    add_dir=
47.49002 ++	    add=
47.49003 ++	    lib_linked=yes
47.49004 ++	    case $hardcode_action in
47.49005 ++	    immediate | unsupported)
47.49006 ++	      if test "$hardcode_direct" = no; then
47.49007 ++		add="$dir/$linklib"
47.49008 ++		case $host in
47.49009 ++		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
47.49010 ++		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
47.49011 ++		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
47.49012 ++		    *-*-unixware7*) add_dir="-L$dir" ;;
47.49013 ++		  *-*-darwin* )
47.49014 ++		    # if the lib is a (non-dlopened) module then we can not
47.49015 ++		    # link against it, someone is ignoring the earlier warnings
47.49016 ++		    if /usr/bin/file -L $add 2> /dev/null |
47.49017 ++			 $GREP ": [^:]* bundle" >/dev/null ; then
47.49018 ++		      if test "X$dlopenmodule" != "X$lib"; then
47.49019 ++			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
47.49020 ++			if test -z "$old_library" ; then
47.49021 ++			  $ECHO
47.49022 ++			  $ECHO "*** And there doesn't seem to be a static archive available"
47.49023 ++			  $ECHO "*** The link will probably fail, sorry"
47.49024 ++			else
47.49025 ++			  add="$dir/$old_library"
47.49026 ++			fi
47.49027 ++		      elif test -n "$old_library"; then
47.49028 ++			add="$dir/$old_library"
47.49029 ++		      fi
47.49030 ++		    fi
47.49031 ++		esac
47.49032 ++	      elif test "$hardcode_minus_L" = no; then
47.49033 ++		case $host in
47.49034 ++		*-*-sunos*) add_shlibpath="$dir" ;;
47.49035 ++		esac
47.49036 ++		add_dir="-L$dir"
47.49037 ++		add="-l$name"
47.49038 ++	      elif test "$hardcode_shlibpath_var" = no; then
47.49039 ++		add_shlibpath="$dir"
47.49040 ++		add="-l$name"
47.49041 ++	      else
47.49042 ++		lib_linked=no
47.49043 ++	      fi
47.49044 ++	      ;;
47.49045 ++	    relink)
47.49046 ++	      if test "$hardcode_direct" = yes &&
47.49047 ++	         test "$hardcode_direct_absolute" = no; then
47.49048 ++		add="$dir/$linklib"
47.49049 ++	      elif test "$hardcode_minus_L" = yes; then
47.49050 ++		add_dir="-L$dir"
47.49051 ++		# Try looking first in the location we're being installed to.
47.49052 ++		if test -n "$inst_prefix_dir"; then
47.49053 ++		  case $libdir in
47.49054 ++		    [\\/]*)
47.49055 ++		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
47.49056 ++		      ;;
47.49057 ++		  esac
47.49058 ++		fi
47.49059 ++		add="-l$name"
47.49060 ++	      elif test "$hardcode_shlibpath_var" = yes; then
47.49061 ++		add_shlibpath="$dir"
47.49062 ++		add="-l$name"
47.49063 ++	      else
47.49064 ++		lib_linked=no
47.49065 ++	      fi
47.49066 ++	      ;;
47.49067 ++	    *) lib_linked=no ;;
47.49068 ++	    esac
47.49069 ++
47.49070 ++	    if test "$lib_linked" != yes; then
47.49071 ++	      func_fatal_configuration "unsupported hardcode properties"
47.49072 ++	    fi
47.49073 ++
47.49074 ++	    if test -n "$add_shlibpath"; then
47.49075 ++	      case :$compile_shlibpath: in
47.49076 ++	      *":$add_shlibpath:"*) ;;
47.49077 ++	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
47.49078 ++	      esac
47.49079 ++	    fi
47.49080 ++	    if test "$linkmode" = prog; then
47.49081 ++	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
47.49082 ++	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
47.49083 ++	    else
47.49084 ++	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
47.49085 ++	      test -n "$add" && deplibs="$add $deplibs"
47.49086 ++	      if test "$hardcode_direct" != yes &&
47.49087 ++		 test "$hardcode_minus_L" != yes &&
47.49088 ++		 test "$hardcode_shlibpath_var" = yes; then
47.49089 ++		case :$finalize_shlibpath: in
47.49090 ++		*":$libdir:"*) ;;
47.49091 ++		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
47.49092 ++		esac
47.49093 ++	      fi
47.49094 ++	    fi
47.49095 ++	  fi
47.49096 ++
47.49097 ++	  if test "$linkmode" = prog || test "$mode" = relink; then
47.49098 ++	    add_shlibpath=
47.49099 ++	    add_dir=
47.49100 ++	    add=
47.49101 ++	    # Finalize command for both is simple: just hardcode it.
47.49102 ++	    if test "$hardcode_direct" = yes &&
47.49103 ++	       test "$hardcode_direct_absolute" = no; then
47.49104 ++	      add="$libdir/$linklib"
47.49105 ++	    elif test "$hardcode_minus_L" = yes; then
47.49106 ++	      add_dir="-L$libdir"
47.49107 ++	      add="-l$name"
47.49108 ++	    elif test "$hardcode_shlibpath_var" = yes; then
47.49109 ++	      case :$finalize_shlibpath: in
47.49110 ++	      *":$libdir:"*) ;;
47.49111 ++	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
47.49112 ++	      esac
47.49113 ++	      add="-l$name"
47.49114 ++	    elif test "$hardcode_automatic" = yes; then
47.49115 ++	      if test -n "$inst_prefix_dir" &&
47.49116 ++		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
47.49117 ++		add="$inst_prefix_dir$libdir/$linklib"
47.49118 ++	      else
47.49119 ++		add="$libdir/$linklib"
47.49120 ++	      fi
47.49121 ++	    else
47.49122 ++	      # We cannot seem to hardcode it, guess we'll fake it.
47.49123 ++	      add_dir="-L$libdir"
47.49124 ++	      # Try looking first in the location we're being installed to.
47.49125 ++	      if test -n "$inst_prefix_dir"; then
47.49126 ++		case $libdir in
47.49127 ++		  [\\/]*)
47.49128 ++		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
47.49129 ++		    ;;
47.49130 ++		esac
47.49131 ++	      fi
47.49132 ++	      add="-l$name"
47.49133 ++	    fi
47.49134 ++
47.49135 ++	    if test "$linkmode" = prog; then
47.49136 ++	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
47.49137 ++	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
47.49138 ++	    else
47.49139 ++	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
47.49140 ++	      test -n "$add" && deplibs="$add $deplibs"
47.49141 ++	    fi
47.49142 ++	  fi
47.49143 ++	elif test "$linkmode" = prog; then
47.49144 ++	  # Here we assume that one of hardcode_direct or hardcode_minus_L
47.49145 ++	  # is not unsupported.  This is valid on all known static and
47.49146 ++	  # shared platforms.
47.49147 ++	  if test "$hardcode_direct" != unsupported; then
47.49148 ++	    test -n "$old_library" && linklib="$old_library"
47.49149 ++	    compile_deplibs="$dir/$linklib $compile_deplibs"
47.49150 ++	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
47.49151 ++	  else
47.49152 ++	    compile_deplibs="-l$name -L$dir $compile_deplibs"
47.49153 ++	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
47.49154 ++	  fi
47.49155 ++	elif test "$build_libtool_libs" = yes; then
47.49156 ++	  # Not a shared library
47.49157 ++	  if test "$deplibs_check_method" != pass_all; then
47.49158 ++	    # We're trying link a shared library against a static one
47.49159 ++	    # but the system doesn't support it.
47.49160 ++
47.49161 ++	    # Just print a warning and add the library to dependency_libs so
47.49162 ++	    # that the program can be linked against the static library.
47.49163 ++	    $ECHO
47.49164 ++	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
47.49165 ++	    $ECHO "*** I have the capability to make that library automatically link in when"
47.49166 ++	    $ECHO "*** you link to this library.  But I can only do this if you have a"
47.49167 ++	    $ECHO "*** shared version of the library, which you do not appear to have."
47.49168 ++	    if test "$module" = yes; then
47.49169 ++	      $ECHO "*** But as you try to build a module library, libtool will still create "
47.49170 ++	      $ECHO "*** a static module, that should work as long as the dlopening application"
47.49171 ++	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
47.49172 ++	      if test -z "$global_symbol_pipe"; then
47.49173 ++		$ECHO
47.49174 ++		$ECHO "*** However, this would only work if libtool was able to extract symbol"
47.49175 ++		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
47.49176 ++		$ECHO "*** not find such a program.  So, this module is probably useless."
47.49177 ++		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
47.49178 ++	      fi
47.49179 ++	      if test "$build_old_libs" = no; then
47.49180 ++		build_libtool_libs=module
47.49181 ++		build_old_libs=yes
47.49182 ++	      else
47.49183 ++		build_libtool_libs=no
47.49184 ++	      fi
47.49185 ++	    fi
47.49186 ++	  else
47.49187 ++	    deplibs="$dir/$old_library $deplibs"
47.49188 ++	    link_static=yes
47.49189 ++	  fi
47.49190 ++	fi # link shared/static library?
47.49191 ++
47.49192 ++	if test "$linkmode" = lib; then
47.49193 ++	  if test -n "$dependency_libs" &&
47.49194 ++	     { test "$hardcode_into_libs" != yes ||
47.49195 ++	       test "$build_old_libs" = yes ||
47.49196 ++	       test "$link_static" = yes; }; then
47.49197 ++	    # Extract -R from dependency_libs
47.49198 ++	    temp_deplibs=
47.49199 ++	    for libdir in $dependency_libs; do
47.49200 ++	      case $libdir in
47.49201 ++	      -R*) func_stripname '-R' '' "$libdir"
47.49202 ++	           temp_xrpath=$func_stripname_result
47.49203 ++		   case " $xrpath " in
47.49204 ++		   *" $temp_xrpath "*) ;;
47.49205 ++		   *) xrpath="$xrpath $temp_xrpath";;
47.49206 ++		   esac;;
47.49207 ++	      *) temp_deplibs="$temp_deplibs $libdir";;
47.49208 ++	      esac
47.49209 ++	    done
47.49210 ++	    dependency_libs="$temp_deplibs"
47.49211 ++	  fi
47.49212 ++
47.49213 ++	  newlib_search_path="$newlib_search_path $absdir"
47.49214 ++	  # Link against this library
47.49215 ++	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
47.49216 ++	  # ... and its dependency_libs
47.49217 ++	  tmp_libs=
47.49218 ++	  for deplib in $dependency_libs; do
47.49219 ++	    newdependency_libs="$deplib $newdependency_libs"
47.49220 ++	    if $opt_duplicate_deps ; then
47.49221 ++	      case "$tmp_libs " in
47.49222 ++	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
47.49223 ++	      esac
47.49224 ++	    fi
47.49225 ++	    tmp_libs="$tmp_libs $deplib"
47.49226 ++	  done
47.49227 ++
47.49228 ++	  if test "$link_all_deplibs" != no; then
47.49229 ++	    # Add the search paths of all dependency libraries
47.49230 ++	    for deplib in $dependency_libs; do
47.49231 ++	      case $deplib in
47.49232 ++	      -L*) path="$deplib" ;;
47.49233 ++	      *.la)
47.49234 ++	        func_dirname "$deplib" "" "."
47.49235 ++		dir="$func_dirname_result"
47.49236 ++		# We need an absolute path.
47.49237 ++		case $dir in
47.49238 ++		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
47.49239 ++		*)
47.49240 ++		  absdir=`cd "$dir" && pwd`
47.49241 ++		  if test -z "$absdir"; then
47.49242 ++		    func_warning "cannot determine absolute directory name of \`$dir'"
47.49243 ++		    absdir="$dir"
47.49244 ++		  fi
47.49245 ++		  ;;
47.49246 ++		esac
47.49247 ++		if $GREP "^installed=no" $deplib > /dev/null; then
47.49248 ++		case $host in
47.49249 ++		*-*-darwin*)
47.49250 ++		  depdepl=
47.49251 ++		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
47.49252 ++		  if test -n "$deplibrary_names" ; then
47.49253 ++		    for tmp in $deplibrary_names ; do
47.49254 ++		      depdepl=$tmp
47.49255 ++		    done
47.49256 ++		    if test -f "$absdir/$objdir/$depdepl" ; then
47.49257 ++		      depdepl="$absdir/$objdir/$depdepl"
47.49258 ++		      darwin_install_name=`otool -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
47.49259 ++		      darwin_install_name=`$ECHO $darwin_install_name`
47.49260 ++                      if test -z "$darwin_install_name"; then
47.49261 ++                          darwin_install_name=`otool64 -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
47.49262 ++                          darwin_install_name=`$ECHO $darwin_install_name`
47.49263 ++                      fi
47.49264 ++		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
47.49265 ++		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
47.49266 ++		      path=
47.49267 ++		    fi
47.49268 ++		  fi
47.49269 ++		  ;;
47.49270 ++		*)
47.49271 ++		  path="-L$absdir/$objdir"
47.49272 ++		  ;;
47.49273 ++		esac
47.49274 ++		else
47.49275 ++		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
47.49276 ++		  test -z "$libdir" && \
47.49277 ++		    func_fatal_error "\`$deplib' is not a valid libtool archive"
47.49278 ++		  test "$absdir" != "$libdir" && \
47.49279 ++		    func_warning "\`$deplib' seems to be moved"
47.49280 ++
47.49281 ++		  path="-L$absdir"
47.49282 ++		fi
47.49283 ++		;;
47.49284 ++	      esac
47.49285 ++	      case " $deplibs " in
47.49286 ++	      *" $path "*) ;;
47.49287 ++	      *) deplibs="$path $deplibs" ;;
47.49288 ++	      esac
47.49289 ++	    done
47.49290 ++	  fi # link_all_deplibs != no
47.49291 ++	fi # linkmode = lib
47.49292 ++      done # for deplib in $libs
47.49293 ++      dependency_libs="$newdependency_libs"
47.49294 ++      if test "$pass" = dlpreopen; then
47.49295 ++	# Link the dlpreopened libraries before other libraries
47.49296 ++	for deplib in $save_deplibs; do
47.49297 ++	  deplibs="$deplib $deplibs"
47.49298 ++	done
47.49299 ++      fi
47.49300 ++      if test "$pass" != dlopen; then
47.49301 ++	if test "$pass" != conv; then
47.49302 ++	  # Make sure lib_search_path contains only unique directories.
47.49303 ++	  lib_search_path=
47.49304 ++	  for dir in $newlib_search_path; do
47.49305 ++	    case "$lib_search_path " in
47.49306 ++	    *" $dir "*) ;;
47.49307 ++	    *) lib_search_path="$lib_search_path $dir" ;;
47.49308 ++	    esac
47.49309 ++	  done
47.49310 ++	  newlib_search_path=
47.49311 ++	fi
47.49312 ++
47.49313 ++	if test "$linkmode,$pass" != "prog,link"; then
47.49314 ++	  vars="deplibs"
47.49315 ++	else
47.49316 ++	  vars="compile_deplibs finalize_deplibs"
47.49317 ++	fi
47.49318 ++	for var in $vars dependency_libs; do
47.49319 ++	  # Add libraries to $var in reverse order
47.49320 ++	  eval tmp_libs=\"\$$var\"
47.49321 ++	  new_libs=
47.49322 ++	  for deplib in $tmp_libs; do
47.49323 ++	    # FIXME: Pedantically, this is the right thing to do, so
47.49324 ++	    #        that some nasty dependency loop isn't accidentally
47.49325 ++	    #        broken:
47.49326 ++	    #new_libs="$deplib $new_libs"
47.49327 ++	    # Pragmatically, this seems to cause very few problems in
47.49328 ++	    # practice:
47.49329 ++	    case $deplib in
47.49330 ++	    -L*) new_libs="$deplib $new_libs" ;;
47.49331 ++	    -R*) ;;
47.49332 ++	    *)
47.49333 ++	      # And here is the reason: when a library appears more
47.49334 ++	      # than once as an explicit dependence of a library, or
47.49335 ++	      # is implicitly linked in more than once by the
47.49336 ++	      # compiler, it is considered special, and multiple
47.49337 ++	      # occurrences thereof are not removed.  Compare this
47.49338 ++	      # with having the same library being listed as a
47.49339 ++	      # dependency of multiple other libraries: in this case,
47.49340 ++	      # we know (pedantically, we assume) the library does not
47.49341 ++	      # need to be listed more than once, so we keep only the
47.49342 ++	      # last copy.  This is not always right, but it is rare
47.49343 ++	      # enough that we require users that really mean to play
47.49344 ++	      # such unportable linking tricks to link the library
47.49345 ++	      # using -Wl,-lname, so that libtool does not consider it
47.49346 ++	      # for duplicate removal.
47.49347 ++	      case " $specialdeplibs " in
47.49348 ++	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
47.49349 ++	      *)
47.49350 ++		case " $new_libs " in
47.49351 ++		*" $deplib "*) ;;
47.49352 ++		*) new_libs="$deplib $new_libs" ;;
47.49353 ++		esac
47.49354 ++		;;
47.49355 ++	      esac
47.49356 ++	      ;;
47.49357 ++	    esac
47.49358 ++	  done
47.49359 ++	  tmp_libs=
47.49360 ++	  for deplib in $new_libs; do
47.49361 ++	    case $deplib in
47.49362 ++	    -L*)
47.49363 ++	      case " $tmp_libs " in
47.49364 ++	      *" $deplib "*) ;;
47.49365 ++	      *) tmp_libs="$tmp_libs $deplib" ;;
47.49366 ++	      esac
47.49367 ++	      ;;
47.49368 ++	    *) tmp_libs="$tmp_libs $deplib" ;;
47.49369 ++	    esac
47.49370 ++	  done
47.49371 ++	  eval $var=\"$tmp_libs\"
47.49372 ++	done # for var
47.49373 ++      fi
47.49374 ++      # Last step: remove runtime libs from dependency_libs
47.49375 ++      # (they stay in deplibs)
47.49376 ++      tmp_libs=
47.49377 ++      for i in $dependency_libs ; do
47.49378 ++	case " $predeps $postdeps $compiler_lib_search_path " in
47.49379 ++	*" $i "*)
47.49380 ++	  i=""
47.49381 ++	  ;;
47.49382 ++	esac
47.49383 ++	if test -n "$i" ; then
47.49384 ++	  tmp_libs="$tmp_libs $i"
47.49385 ++	fi
47.49386 ++      done
47.49387 ++      dependency_libs=$tmp_libs
47.49388 ++    done # for pass
47.49389 ++    if test "$linkmode" = prog; then
47.49390 ++      dlfiles="$newdlfiles"
47.49391 ++    fi
47.49392 ++    if test "$linkmode" = prog || test "$linkmode" = lib; then
47.49393 ++      dlprefiles="$newdlprefiles"
47.49394 ++    fi
47.49395 ++
47.49396 ++    case $linkmode in
47.49397 ++    oldlib)
47.49398 ++      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
47.49399 ++	func_warning "\`-dlopen' is ignored for archives"
47.49400 ++      fi
47.49401 ++
47.49402 ++      test -n "$deplibs" && \
47.49403 ++	func_warning "\`-l' and \`-L' are ignored for archives"
47.49404 ++
47.49405 ++
47.49406 ++      test -n "$rpath" && \
47.49407 ++	func_warning "\`-rpath' is ignored for archives"
47.49408 ++
47.49409 ++      test -n "$xrpath" && \
47.49410 ++	func_warning "\`-R' is ignored for archives"
47.49411 ++
47.49412 ++      test -n "$vinfo" && \
47.49413 ++	func_warning "\`-version-info/-version-number' is ignored for archives"
47.49414 ++
47.49415 ++      test -n "$release" && \
47.49416 ++	func_warning "\`-release' is ignored for archives"
47.49417 ++
47.49418 ++      test -n "$export_symbols$export_symbols_regex" && \
47.49419 ++	func_warning "\`-export-symbols' is ignored for archives"
47.49420 ++
47.49421 ++      # Now set the variables for building old libraries.
47.49422 ++      build_libtool_libs=no
47.49423 ++      oldlibs="$output"
47.49424 ++      objs="$objs$old_deplibs"
47.49425 ++      ;;
47.49426 ++
47.49427 ++    lib)
47.49428 ++      # Make sure we only generate libraries of the form `libNAME.la'.
47.49429 ++      case $outputname in
47.49430 ++      lib*)
47.49431 ++	func_stripname 'lib' '.la' "$outputname"
47.49432 ++	name=$func_stripname_result
47.49433 ++	eval shared_ext=\"$shrext_cmds\"
47.49434 ++	eval libname=\"$libname_spec\"
47.49435 ++	;;
47.49436 ++      *)
47.49437 ++	test "$module" = no && \
47.49438 ++	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
47.49439 ++
47.49440 ++	if test "$need_lib_prefix" != no; then
47.49441 ++	  # Add the "lib" prefix for modules if required
47.49442 ++	  func_stripname '' '.la' "$outputname"
47.49443 ++	  name=$func_stripname_result
47.49444 ++	  eval shared_ext=\"$shrext_cmds\"
47.49445 ++	  eval libname=\"$libname_spec\"
47.49446 ++	else
47.49447 ++	  func_stripname '' '.la' "$outputname"
47.49448 ++	  libname=$func_stripname_result
47.49449 ++	fi
47.49450 ++	;;
47.49451 ++      esac
47.49452 ++
47.49453 ++      if test -n "$objs"; then
47.49454 ++	if test "$deplibs_check_method" != pass_all; then
47.49455 ++	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
47.49456 ++	else
47.49457 ++	  $ECHO
47.49458 ++	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
47.49459 ++	  $ECHO "*** objects $objs is not portable!"
47.49460 ++	  libobjs="$libobjs $objs"
47.49461 ++	fi
47.49462 ++      fi
47.49463 ++
47.49464 ++      test "$dlself" != no && \
47.49465 ++	func_warning "\`-dlopen self' is ignored for libtool libraries"
47.49466 ++
47.49467 ++      set dummy $rpath
47.49468 ++      shift
47.49469 ++      test "$#" -gt 1 && \
47.49470 ++	func_warning "ignoring multiple \`-rpath's for a libtool library"
47.49471 ++
47.49472 ++      install_libdir="$1"
47.49473 ++
47.49474 ++      oldlibs=
47.49475 ++      if test -z "$rpath"; then
47.49476 ++	if test "$build_libtool_libs" = yes; then
47.49477 ++	  # Building a libtool convenience library.
47.49478 ++	  # Some compilers have problems with a `.al' extension so
47.49479 ++	  # convenience libraries should have the same extension an
47.49480 ++	  # archive normally would.
47.49481 ++	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
47.49482 ++	  build_libtool_libs=convenience
47.49483 ++	  build_old_libs=yes
47.49484 ++	fi
47.49485 ++
47.49486 ++	test -n "$vinfo" && \
47.49487 ++	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
47.49488 ++
47.49489 ++	test -n "$release" && \
47.49490 ++	  func_warning "\`-release' is ignored for convenience libraries"
47.49491 ++      else
47.49492 ++
47.49493 ++	# Parse the version information argument.
47.49494 ++	save_ifs="$IFS"; IFS=':'
47.49495 ++	set dummy $vinfo 0 0 0
47.49496 ++	shift
47.49497 ++	IFS="$save_ifs"
47.49498 ++
47.49499 ++	test -n "$7" && \
47.49500 ++	  func_fatal_help "too many parameters to \`-version-info'"
47.49501 ++
47.49502 ++	# convert absolute version numbers to libtool ages
47.49503 ++	# this retains compatibility with .la files and attempts
47.49504 ++	# to make the code below a bit more comprehensible
47.49505 ++
47.49506 ++	case $vinfo_number in
47.49507 ++	yes)
47.49508 ++	  number_major="$1"
47.49509 ++	  number_minor="$2"
47.49510 ++	  number_revision="$3"
47.49511 ++	  #
47.49512 ++	  # There are really only two kinds -- those that
47.49513 ++	  # use the current revision as the major version
47.49514 ++	  # and those that subtract age and use age as
47.49515 ++	  # a minor version.  But, then there is irix
47.49516 ++	  # which has an extra 1 added just for fun
47.49517 ++	  #
47.49518 ++	  case $version_type in
47.49519 ++	  darwin|linux|osf|windows|none)
47.49520 ++	    current=`expr $number_major + $number_minor`
47.49521 ++	    age="$number_minor"
47.49522 ++	    revision="$number_revision"
47.49523 ++	    ;;
47.49524 ++	  freebsd-aout|freebsd-elf|sunos)
47.49525 ++	    current="$number_major"
47.49526 ++	    revision="$number_minor"
47.49527 ++	    age="0"
47.49528 ++	    ;;
47.49529 ++	  irix|nonstopux)
47.49530 ++	    current=`expr $number_major + $number_minor - 1`
47.49531 ++	    age="$number_minor"
47.49532 ++	    revision="$number_minor"
47.49533 ++	    ;;
47.49534 ++	  esac
47.49535 ++	  ;;
47.49536 ++	no)
47.49537 ++	  current="$1"
47.49538 ++	  revision="$2"
47.49539 ++	  age="$3"
47.49540 ++	  ;;
47.49541 ++	esac
47.49542 ++
47.49543 ++	# Check that each of the things are valid numbers.
47.49544 ++	case $current in
47.49545 ++	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
47.49546 ++	*)
47.49547 ++	  func_error "CURRENT \`$current' must be a nonnegative integer"
47.49548 ++	  func_fatal_error "\`$vinfo' is not valid version information"
47.49549 ++	  ;;
47.49550 ++	esac
47.49551 ++
47.49552 ++	case $revision in
47.49553 ++	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
47.49554 ++	*)
47.49555 ++	  func_error "REVISION \`$revision' must be a nonnegative integer"
47.49556 ++	  func_fatal_error "\`$vinfo' is not valid version information"
47.49557 ++	  ;;
47.49558 ++	esac
47.49559 ++
47.49560 ++	case $age in
47.49561 ++	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
47.49562 ++	*)
47.49563 ++	  func_error "AGE \`$age' must be a nonnegative integer"
47.49564 ++	  func_fatal_error "\`$vinfo' is not valid version information"
47.49565 ++	  ;;
47.49566 ++	esac
47.49567 ++
47.49568 ++	if test "$age" -gt "$current"; then
47.49569 ++	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
47.49570 ++	  func_fatal_error "\`$vinfo' is not valid version information"
47.49571 ++	fi
47.49572 ++
47.49573 ++	# Calculate the version variables.
47.49574 ++	major=
47.49575 ++	versuffix=
47.49576 ++	verstring=
47.49577 ++	case $version_type in
47.49578 ++	none) ;;
47.49579 ++
47.49580 ++	darwin)
47.49581 ++	  # Like Linux, but with the current version available in
47.49582 ++	  # verstring for coding it into the library header
47.49583 ++	  major=.`expr $current - $age`
47.49584 ++	  versuffix="$major.$age.$revision"
47.49585 ++	  # Darwin ld doesn't like 0 for these options...
47.49586 ++	  minor_current=`expr $current + 1`
47.49587 ++	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
47.49588 ++	  ;;
47.49589 ++
47.49590 ++	freebsd-aout)
47.49591 ++	  major=".$current"
47.49592 ++	  versuffix=".$current.$revision";
47.49593 ++	  ;;
47.49594 ++
47.49595 ++	freebsd-elf)
47.49596 ++	  major=".$current"
47.49597 ++	  versuffix=".$current"
47.49598 ++	  ;;
47.49599 ++
47.49600 ++	irix | nonstopux)
47.49601 ++	  major=`expr $current - $age + 1`
47.49602 ++
47.49603 ++	  case $version_type in
47.49604 ++	    nonstopux) verstring_prefix=nonstopux ;;
47.49605 ++	    *)         verstring_prefix=sgi ;;
47.49606 ++	  esac
47.49607 ++	  verstring="$verstring_prefix$major.$revision"
47.49608 ++
47.49609 ++	  # Add in all the interfaces that we are compatible with.
47.49610 ++	  loop=$revision
47.49611 ++	  while test "$loop" -ne 0; do
47.49612 ++	    iface=`expr $revision - $loop`
47.49613 ++	    loop=`expr $loop - 1`
47.49614 ++	    verstring="$verstring_prefix$major.$iface:$verstring"
47.49615 ++	  done
47.49616 ++
47.49617 ++	  # Before this point, $major must not contain `.'.
47.49618 ++	  major=.$major
47.49619 ++	  versuffix="$major.$revision"
47.49620 ++	  ;;
47.49621 ++
47.49622 ++	linux)
47.49623 ++	  major=.`expr $current - $age`
47.49624 ++	  versuffix="$major.$age.$revision"
47.49625 ++	  ;;
47.49626 ++
47.49627 ++	osf)
47.49628 ++	  major=.`expr $current - $age`
47.49629 ++	  versuffix=".$current.$age.$revision"
47.49630 ++	  verstring="$current.$age.$revision"
47.49631 ++
47.49632 ++	  # Add in all the interfaces that we are compatible with.
47.49633 ++	  loop=$age
47.49634 ++	  while test "$loop" -ne 0; do
47.49635 ++	    iface=`expr $current - $loop`
47.49636 ++	    loop=`expr $loop - 1`
47.49637 ++	    verstring="$verstring:${iface}.0"
47.49638 ++	  done
47.49639 ++
47.49640 ++	  # Make executables depend on our current version.
47.49641 ++	  verstring="$verstring:${current}.0"
47.49642 ++	  ;;
47.49643 ++
47.49644 ++	qnx)
47.49645 ++	  major=".$current"
47.49646 ++	  versuffix=".$current"
47.49647 ++	  ;;
47.49648 ++
47.49649 ++	sunos)
47.49650 ++	  major=".$current"
47.49651 ++	  versuffix=".$current.$revision"
47.49652 ++	  ;;
47.49653 ++
47.49654 ++	windows)
47.49655 ++	  # Use '-' rather than '.', since we only want one
47.49656 ++	  # extension on DOS 8.3 filesystems.
47.49657 ++	  major=`expr $current - $age`
47.49658 ++	  versuffix="-$major"
47.49659 ++	  ;;
47.49660 ++
47.49661 ++	*)
47.49662 ++	  func_fatal_configuration "unknown library version type \`$version_type'"
47.49663 ++	  ;;
47.49664 ++	esac
47.49665 ++
47.49666 ++	# Clear the version info if we defaulted, and they specified a release.
47.49667 ++	if test -z "$vinfo" && test -n "$release"; then
47.49668 ++	  major=
47.49669 ++	  case $version_type in
47.49670 ++	  darwin)
47.49671 ++	    # we can't check for "0.0" in archive_cmds due to quoting
47.49672 ++	    # problems, so we reset it completely
47.49673 ++	    verstring=
47.49674 ++	    ;;
47.49675 ++	  *)
47.49676 ++	    verstring="0.0"
47.49677 ++	    ;;
47.49678 ++	  esac
47.49679 ++	  if test "$need_version" = no; then
47.49680 ++	    versuffix=
47.49681 ++	  else
47.49682 ++	    versuffix=".0.0"
47.49683 ++	  fi
47.49684 ++	fi
47.49685 ++
47.49686 ++	# Remove version info from name if versioning should be avoided
47.49687 ++	if test "$avoid_version" = yes && test "$need_version" = no; then
47.49688 ++	  major=
47.49689 ++	  versuffix=
47.49690 ++	  verstring=""
47.49691 ++	fi
47.49692 ++
47.49693 ++	# Check to see if the archive will have undefined symbols.
47.49694 ++	if test "$allow_undefined" = yes; then
47.49695 ++	  if test "$allow_undefined_flag" = unsupported; then
47.49696 ++	    func_warning "undefined symbols not allowed in $host shared libraries"
47.49697 ++	    build_libtool_libs=no
47.49698 ++	    build_old_libs=yes
47.49699 ++	  fi
47.49700 ++	else
47.49701 ++	  # Don't allow undefined symbols.
47.49702 ++	  allow_undefined_flag="$no_undefined_flag"
47.49703 ++	fi
47.49704 ++
47.49705 ++      fi
47.49706 ++
47.49707 ++      func_generate_dlsyms "$libname" "$libname" "yes"
47.49708 ++      libobjs="$libobjs $symfileobj"
47.49709 ++      test "X$libobjs" = "X " && libobjs=
47.49710 ++
47.49711 ++      if test "$mode" != relink; then
47.49712 ++	# Remove our outputs, but don't remove object files since they
47.49713 ++	# may have been created when compiling PIC objects.
47.49714 ++	removelist=
47.49715 ++	tempremovelist=`$ECHO "$output_objdir/*"`
47.49716 ++	for p in $tempremovelist; do
47.49717 ++	  case $p in
47.49718 ++	    *.$objext)
47.49719 ++	       ;;
47.49720 ++	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
47.49721 ++	       if test "X$precious_files_regex" != "X"; then
47.49722 ++		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
47.49723 ++		 then
47.49724 ++		   continue
47.49725 ++		 fi
47.49726 ++	       fi
47.49727 ++	       removelist="$removelist $p"
47.49728 ++	       ;;
47.49729 ++	    *) ;;
47.49730 ++	  esac
47.49731 ++	done
47.49732 ++	test -n "$removelist" && \
47.49733 ++	  func_show_eval "${RM}r \$removelist"
47.49734 ++      fi
47.49735 ++
47.49736 ++      # Now set the variables for building old libraries.
47.49737 ++      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
47.49738 ++	oldlibs="$oldlibs $output_objdir/$libname.$libext"
47.49739 ++
47.49740 ++	# Transform .lo files to .o files.
47.49741 ++	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
47.49742 ++      fi
47.49743 ++
47.49744 ++      # Eliminate all temporary directories.
47.49745 ++      #for path in $notinst_path; do
47.49746 ++      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
47.49747 ++      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
47.49748 ++      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
47.49749 ++      #done
47.49750 ++
47.49751 ++      if test -n "$xrpath"; then
47.49752 ++	# If the user specified any rpath flags, then add them.
47.49753 ++	temp_xrpath=
47.49754 ++	for libdir in $xrpath; do
47.49755 ++	  temp_xrpath="$temp_xrpath -R$libdir"
47.49756 ++	  case "$finalize_rpath " in
47.49757 ++	  *" $libdir "*) ;;
47.49758 ++	  *) finalize_rpath="$finalize_rpath $libdir" ;;
47.49759 ++	  esac
47.49760 ++	done
47.49761 ++	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
47.49762 ++	  dependency_libs="$temp_xrpath $dependency_libs"
47.49763 ++	fi
47.49764 ++      fi
47.49765 ++
47.49766 ++      # Make sure dlfiles contains only unique files that won't be dlpreopened
47.49767 ++      old_dlfiles="$dlfiles"
47.49768 ++      dlfiles=
47.49769 ++      for lib in $old_dlfiles; do
47.49770 ++	case " $dlprefiles $dlfiles " in
47.49771 ++	*" $lib "*) ;;
47.49772 ++	*) dlfiles="$dlfiles $lib" ;;
47.49773 ++	esac
47.49774 ++      done
47.49775 ++
47.49776 ++      # Make sure dlprefiles contains only unique files
47.49777 ++      old_dlprefiles="$dlprefiles"
47.49778 ++      dlprefiles=
47.49779 ++      for lib in $old_dlprefiles; do
47.49780 ++	case "$dlprefiles " in
47.49781 ++	*" $lib "*) ;;
47.49782 ++	*) dlprefiles="$dlprefiles $lib" ;;
47.49783 ++	esac
47.49784 ++      done
47.49785 ++
47.49786 ++      if test "$build_libtool_libs" = yes; then
47.49787 ++	if test -n "$rpath"; then
47.49788 ++	  case $host in
47.49789 ++	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
47.49790 ++	    # these systems don't actually have a c library (as such)!
47.49791 ++	    ;;
47.49792 ++	  *-*-rhapsody* | *-*-darwin1.[012])
47.49793 ++	    # Rhapsody C library is in the System framework
47.49794 ++	    deplibs="$deplibs System.ltframework"
47.49795 ++	    ;;
47.49796 ++	  *-*-netbsd*)
47.49797 ++	    # Don't link with libc until the a.out ld.so is fixed.
47.49798 ++	    ;;
47.49799 ++	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
47.49800 ++	    # Do not include libc due to us having libc/libc_r.
47.49801 ++	    ;;
47.49802 ++	  *-*-sco3.2v5* | *-*-sco5v6*)
47.49803 ++	    # Causes problems with __ctype
47.49804 ++	    ;;
47.49805 ++	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
47.49806 ++	    # Compiler inserts libc in the correct place for threads to work
47.49807 ++ 	    ;;
47.49808 ++ 	  *)
47.49809 ++	    # Add libc to deplibs on all other systems if necessary.
47.49810 ++	    if test "$build_libtool_need_lc" = "yes"; then
47.49811 ++	      deplibs="$deplibs -lc"
47.49812 ++	    fi
47.49813 ++	    ;;
47.49814 ++	  esac
47.49815 ++	fi
47.49816 ++
47.49817 ++	# Transform deplibs into only deplibs that can be linked in shared.
47.49818 ++	name_save=$name
47.49819 ++	libname_save=$libname
47.49820 ++	release_save=$release
47.49821 ++	versuffix_save=$versuffix
47.49822 ++	major_save=$major
47.49823 ++	# I'm not sure if I'm treating the release correctly.  I think
47.49824 ++	# release should show up in the -l (ie -lgmp5) so we don't want to
47.49825 ++	# add it in twice.  Is that correct?
47.49826 ++	release=""
47.49827 ++	versuffix=""
47.49828 ++	major=""
47.49829 ++	newdeplibs=
47.49830 ++	droppeddeps=no
47.49831 ++	case $deplibs_check_method in
47.49832 ++	pass_all)
47.49833 ++	  # Don't check for shared/static.  Everything works.
47.49834 ++	  # This might be a little naive.  We might want to check
47.49835 ++	  # whether the library exists or not.  But this is on
47.49836 ++	  # osf3 & osf4 and I'm not really sure... Just
47.49837 ++	  # implementing what was already the behavior.
47.49838 ++	  newdeplibs=$deplibs
47.49839 ++	  ;;
47.49840 ++	test_compile)
47.49841 ++	  # This code stresses the "libraries are programs" paradigm to its
47.49842 ++	  # limits. Maybe even breaks it.  We compile a program, linking it
47.49843 ++	  # against the deplibs as a proxy for the library.  Then we can check
47.49844 ++	  # whether they linked in statically or dynamically with ldd.
47.49845 ++	  $opt_dry_run || $RM conftest.c
47.49846 ++	  cat > conftest.c <<EOF
47.49847 ++	  int main() { return 0; }
47.49848 ++EOF
47.49849 ++	  $opt_dry_run || $RM conftest
47.49850 ++	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
47.49851 ++	    ldd_output=`ldd conftest`
47.49852 ++	    for i in $deplibs; do
47.49853 ++	      name=`expr $i : '-l\(.*\)'`
47.49854 ++	      # If $name is empty we are operating on a -L argument.
47.49855 ++	      if test "$name" != "" && test "$name" != "0"; then
47.49856 ++		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
47.49857 ++		  case " $predeps $postdeps " in
47.49858 ++		  *" $i "*)
47.49859 ++		    newdeplibs="$newdeplibs $i"
47.49860 ++		    i=""
47.49861 ++		    ;;
47.49862 ++		  esac
47.49863 ++		fi
47.49864 ++		if test -n "$i" ; then
47.49865 ++		  libname=`eval "\\$ECHO \"$libname_spec\""`
47.49866 ++		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
47.49867 ++		  set dummy $deplib_matches; shift
47.49868 ++		  deplib_match=$1
47.49869 ++		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
47.49870 ++		    newdeplibs="$newdeplibs $i"
47.49871 ++		  else
47.49872 ++		    droppeddeps=yes
47.49873 ++		    $ECHO
47.49874 ++		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
47.49875 ++		    $ECHO "*** I have the capability to make that library automatically link in when"
47.49876 ++		    $ECHO "*** you link to this library.  But I can only do this if you have a"
47.49877 ++		    $ECHO "*** shared version of the library, which I believe you do not have"
47.49878 ++		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
47.49879 ++		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
47.49880 ++		  fi
47.49881 ++		fi
47.49882 ++	      else
47.49883 ++		newdeplibs="$newdeplibs $i"
47.49884 ++	      fi
47.49885 ++	    done
47.49886 ++	  else
47.49887 ++	    # Error occurred in the first compile.  Let's try to salvage
47.49888 ++	    # the situation: Compile a separate program for each library.
47.49889 ++	    for i in $deplibs; do
47.49890 ++	      name=`expr $i : '-l\(.*\)'`
47.49891 ++	      # If $name is empty we are operating on a -L argument.
47.49892 ++	      if test "$name" != "" && test "$name" != "0"; then
47.49893 ++		$opt_dry_run || $RM conftest
47.49894 ++		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
47.49895 ++		  ldd_output=`ldd conftest`
47.49896 ++		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
47.49897 ++		    case " $predeps $postdeps " in
47.49898 ++		    *" $i "*)
47.49899 ++		      newdeplibs="$newdeplibs $i"
47.49900 ++		      i=""
47.49901 ++		      ;;
47.49902 ++		    esac
47.49903 ++		  fi
47.49904 ++		  if test -n "$i" ; then
47.49905 ++		    libname=`eval "\\$ECHO \"$libname_spec\""`
47.49906 ++		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
47.49907 ++		    set dummy $deplib_matches; shift
47.49908 ++		    deplib_match=$1
47.49909 ++		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
47.49910 ++		      newdeplibs="$newdeplibs $i"
47.49911 ++		    else
47.49912 ++		      droppeddeps=yes
47.49913 ++		      $ECHO
47.49914 ++		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
47.49915 ++		      $ECHO "*** I have the capability to make that library automatically link in when"
47.49916 ++		      $ECHO "*** you link to this library.  But I can only do this if you have a"
47.49917 ++		      $ECHO "*** shared version of the library, which you do not appear to have"
47.49918 ++		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
47.49919 ++		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
47.49920 ++		    fi
47.49921 ++		  fi
47.49922 ++		else
47.49923 ++		  droppeddeps=yes
47.49924 ++		  $ECHO
47.49925 ++		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
47.49926 ++		  $ECHO "*** make it link in!  You will probably need to install it or some"
47.49927 ++		  $ECHO "*** library that it depends on before this library will be fully"
47.49928 ++		  $ECHO "*** functional.  Installing it before continuing would be even better."
47.49929 ++		fi
47.49930 ++	      else
47.49931 ++		newdeplibs="$newdeplibs $i"
47.49932 ++	      fi
47.49933 ++	    done
47.49934 ++	  fi
47.49935 ++	  ;;
47.49936 ++	file_magic*)
47.49937 ++	  set dummy $deplibs_check_method; shift
47.49938 ++	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
47.49939 ++	  for a_deplib in $deplibs; do
47.49940 ++	    name=`expr $a_deplib : '-l\(.*\)'`
47.49941 ++	    # If $name is empty we are operating on a -L argument.
47.49942 ++	    if test "$name" != "" && test  "$name" != "0"; then
47.49943 ++	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
47.49944 ++		case " $predeps $postdeps " in
47.49945 ++		*" $a_deplib "*)
47.49946 ++		  newdeplibs="$newdeplibs $a_deplib"
47.49947 ++		  a_deplib=""
47.49948 ++		  ;;
47.49949 ++		esac
47.49950 ++	      fi
47.49951 ++	      if test -n "$a_deplib" ; then
47.49952 ++		libname=`eval "\\$ECHO \"$libname_spec\""`
47.49953 ++		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
47.49954 ++		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
47.49955 ++		  for potent_lib in $potential_libs; do
47.49956 ++		      # Follow soft links.
47.49957 ++		      if ls -lLd "$potent_lib" 2>/dev/null |
47.49958 ++			 $GREP " -> " >/dev/null; then
47.49959 ++			continue
47.49960 ++		      fi
47.49961 ++		      # The statement above tries to avoid entering an
47.49962 ++		      # endless loop below, in case of cyclic links.
47.49963 ++		      # We might still enter an endless loop, since a link
47.49964 ++		      # loop can be closed while we follow links,
47.49965 ++		      # but so what?
47.49966 ++		      potlib="$potent_lib"
47.49967 ++		      while test -h "$potlib" 2>/dev/null; do
47.49968 ++			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
47.49969 ++			case $potliblink in
47.49970 ++			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
47.49971 ++			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
47.49972 ++			esac
47.49973 ++		      done
47.49974 ++		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
47.49975 ++			 $SED -e 10q |
47.49976 ++			 $EGREP "$file_magic_regex" > /dev/null; then
47.49977 ++			newdeplibs="$newdeplibs $a_deplib"
47.49978 ++			a_deplib=""
47.49979 ++			break 2
47.49980 ++		      fi
47.49981 ++		  done
47.49982 ++		done
47.49983 ++	      fi
47.49984 ++	      if test -n "$a_deplib" ; then
47.49985 ++		droppeddeps=yes
47.49986 ++		$ECHO
47.49987 ++		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
47.49988 ++		$ECHO "*** I have the capability to make that library automatically link in when"
47.49989 ++		$ECHO "*** you link to this library.  But I can only do this if you have a"
47.49990 ++		$ECHO "*** shared version of the library, which you do not appear to have"
47.49991 ++		$ECHO "*** because I did check the linker path looking for a file starting"
47.49992 ++		if test -z "$potlib" ; then
47.49993 ++		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
47.49994 ++		else
47.49995 ++		  $ECHO "*** with $libname and none of the candidates passed a file format test"
47.49996 ++		  $ECHO "*** using a file magic. Last file checked: $potlib"
47.49997 ++		fi
47.49998 ++	      fi
47.49999 ++	    else
47.50000 ++	      # Add a -L argument.
47.50001 ++	      newdeplibs="$newdeplibs $a_deplib"
47.50002 ++	    fi
47.50003 ++	  done # Gone through all deplibs.
47.50004 ++	  ;;
47.50005 ++	match_pattern*)
47.50006 ++	  set dummy $deplibs_check_method; shift
47.50007 ++	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
47.50008 ++	  for a_deplib in $deplibs; do
47.50009 ++	    name=`expr $a_deplib : '-l\(.*\)'`
47.50010 ++	    # If $name is empty we are operating on a -L argument.
47.50011 ++	    if test -n "$name" && test "$name" != "0"; then
47.50012 ++	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
47.50013 ++		case " $predeps $postdeps " in
47.50014 ++		*" $a_deplib "*)
47.50015 ++		  newdeplibs="$newdeplibs $a_deplib"
47.50016 ++		  a_deplib=""
47.50017 ++		  ;;
47.50018 ++		esac
47.50019 ++	      fi
47.50020 ++	      if test -n "$a_deplib" ; then
47.50021 ++		libname=`eval "\\$ECHO \"$libname_spec\""`
47.50022 ++		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
47.50023 ++		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
47.50024 ++		  for potent_lib in $potential_libs; do
47.50025 ++		    potlib="$potent_lib" # see symlink-check above in file_magic test
47.50026 ++		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
47.50027 ++		       $EGREP "$match_pattern_regex" > /dev/null; then
47.50028 ++		      newdeplibs="$newdeplibs $a_deplib"
47.50029 ++		      a_deplib=""
47.50030 ++		      break 2
47.50031 ++		    fi
47.50032 ++		  done
47.50033 ++		done
47.50034 ++	      fi
47.50035 ++	      if test -n "$a_deplib" ; then
47.50036 ++		droppeddeps=yes
47.50037 ++		$ECHO
47.50038 ++		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
47.50039 ++		$ECHO "*** I have the capability to make that library automatically link in when"
47.50040 ++		$ECHO "*** you link to this library.  But I can only do this if you have a"
47.50041 ++		$ECHO "*** shared version of the library, which you do not appear to have"
47.50042 ++		$ECHO "*** because I did check the linker path looking for a file starting"
47.50043 ++		if test -z "$potlib" ; then
47.50044 ++		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
47.50045 ++		else
47.50046 ++		  $ECHO "*** with $libname and none of the candidates passed a file format test"
47.50047 ++		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
47.50048 ++		fi
47.50049 ++	      fi
47.50050 ++	    else
47.50051 ++	      # Add a -L argument.
47.50052 ++	      newdeplibs="$newdeplibs $a_deplib"
47.50053 ++	    fi
47.50054 ++	  done # Gone through all deplibs.
47.50055 ++	  ;;
47.50056 ++	none | unknown | *)
47.50057 ++	  newdeplibs=""
47.50058 ++	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
47.50059 ++	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
47.50060 ++	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
47.50061 ++	    for i in $predeps $postdeps ; do
47.50062 ++	      # can't use Xsed below, because $i might contain '/'
47.50063 ++	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
47.50064 ++	    done
47.50065 ++	  fi
47.50066 ++	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' |
47.50067 ++	     $GREP . >/dev/null; then
47.50068 ++	    $ECHO
47.50069 ++	    if test "X$deplibs_check_method" = "Xnone"; then
47.50070 ++	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
47.50071 ++	    else
47.50072 ++	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
47.50073 ++	    fi
47.50074 ++	    $ECHO "*** All declared inter-library dependencies are being dropped."
47.50075 ++	    droppeddeps=yes
47.50076 ++	  fi
47.50077 ++	  ;;
47.50078 ++	esac
47.50079 ++	versuffix=$versuffix_save
47.50080 ++	major=$major_save
47.50081 ++	release=$release_save
47.50082 ++	libname=$libname_save
47.50083 ++	name=$name_save
47.50084 ++
47.50085 ++	case $host in
47.50086 ++	*-*-rhapsody* | *-*-darwin1.[012])
47.50087 ++	  # On Rhapsody replace the C library with the System framework
47.50088 ++	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
47.50089 ++	  ;;
47.50090 ++	esac
47.50091 ++
47.50092 ++	if test "$droppeddeps" = yes; then
47.50093 ++	  if test "$module" = yes; then
47.50094 ++	    $ECHO
47.50095 ++	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
47.50096 ++	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
47.50097 ++	    $ECHO "*** a static module, that should work as long as the dlopening"
47.50098 ++	    $ECHO "*** application is linked with the -dlopen flag."
47.50099 ++	    if test -z "$global_symbol_pipe"; then
47.50100 ++	      $ECHO
47.50101 ++	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
47.50102 ++	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
47.50103 ++	      $ECHO "*** not find such a program.  So, this module is probably useless."
47.50104 ++	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
47.50105 ++	    fi
47.50106 ++	    if test "$build_old_libs" = no; then
47.50107 ++	      oldlibs="$output_objdir/$libname.$libext"
47.50108 ++	      build_libtool_libs=module
47.50109 ++	      build_old_libs=yes
47.50110 ++	    else
47.50111 ++	      build_libtool_libs=no
47.50112 ++	    fi
47.50113 ++	  else
47.50114 ++	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
47.50115 ++	    $ECHO "*** automatically added whenever a program is linked with this library"
47.50116 ++	    $ECHO "*** or is declared to -dlopen it."
47.50117 ++
47.50118 ++	    if test "$allow_undefined" = no; then
47.50119 ++	      $ECHO
47.50120 ++	      $ECHO "*** Since this library must not contain undefined symbols,"
47.50121 ++	      $ECHO "*** because either the platform does not support them or"
47.50122 ++	      $ECHO "*** it was explicitly requested with -no-undefined,"
47.50123 ++	      $ECHO "*** libtool will only create a static version of it."
47.50124 ++	      if test "$build_old_libs" = no; then
47.50125 ++		oldlibs="$output_objdir/$libname.$libext"
47.50126 ++		build_libtool_libs=module
47.50127 ++		build_old_libs=yes
47.50128 ++	      else
47.50129 ++		build_libtool_libs=no
47.50130 ++	      fi
47.50131 ++	    fi
47.50132 ++	  fi
47.50133 ++	fi
47.50134 ++	# Done checking deplibs!
47.50135 ++	deplibs=$newdeplibs
47.50136 ++      fi
47.50137 ++      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
47.50138 ++      case $host in
47.50139 ++	*-*-darwin*)
47.50140 ++	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
47.50141 ++	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
47.50142 ++	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
47.50143 ++	  ;;
47.50144 ++      esac
47.50145 ++
47.50146 ++      # move library search paths that coincide with paths to not yet
47.50147 ++      # installed libraries to the beginning of the library search list
47.50148 ++      new_libs=
47.50149 ++      for path in $notinst_path; do
47.50150 ++	case " $new_libs " in
47.50151 ++	*" -L$path/$objdir "*) ;;
47.50152 ++	*)
47.50153 ++	  case " $deplibs " in
47.50154 ++	  *" -L$path/$objdir "*)
47.50155 ++	    new_libs="$new_libs -L$path/$objdir" ;;
47.50156 ++	  esac
47.50157 ++	  ;;
47.50158 ++	esac
47.50159 ++      done
47.50160 ++      for deplib in $deplibs; do
47.50161 ++	case $deplib in
47.50162 ++	-L*)
47.50163 ++	  case " $new_libs " in
47.50164 ++	  *" $deplib "*) ;;
47.50165 ++	  *) new_libs="$new_libs $deplib" ;;
47.50166 ++	  esac
47.50167 ++	  ;;
47.50168 ++	*) new_libs="$new_libs $deplib" ;;
47.50169 ++	esac
47.50170 ++      done
47.50171 ++      deplibs="$new_libs"
47.50172 ++
47.50173 ++      # All the library-specific variables (install_libdir is set above).
47.50174 ++      library_names=
47.50175 ++      old_library=
47.50176 ++      dlname=
47.50177 ++
47.50178 ++      # Test again, we may have decided not to build it any more
47.50179 ++      if test "$build_libtool_libs" = yes; then
47.50180 ++	if test "$hardcode_into_libs" = yes; then
47.50181 ++	  # Hardcode the library paths
47.50182 ++	  hardcode_libdirs=
47.50183 ++	  dep_rpath=
47.50184 ++	  rpath="$finalize_rpath"
47.50185 ++	  test "$mode" != relink && rpath="$compile_rpath$rpath"
47.50186 ++	  for libdir in $rpath; do
47.50187 ++	    if test -n "$hardcode_libdir_flag_spec"; then
47.50188 ++	      if test -n "$hardcode_libdir_separator"; then
47.50189 ++		if test -z "$hardcode_libdirs"; then
47.50190 ++		  hardcode_libdirs="$libdir"
47.50191 ++		else
47.50192 ++		  # Just accumulate the unique libdirs.
47.50193 ++		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
47.50194 ++		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
47.50195 ++		    ;;
47.50196 ++		  *)
47.50197 ++		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
47.50198 ++		    ;;
47.50199 ++		  esac
47.50200 ++		fi
47.50201 ++	      else
47.50202 ++		eval flag=\"$hardcode_libdir_flag_spec\"
47.50203 ++		dep_rpath="$dep_rpath $flag"
47.50204 ++	      fi
47.50205 ++	    elif test -n "$runpath_var"; then
47.50206 ++	      case "$perm_rpath " in
47.50207 ++	      *" $libdir "*) ;;
47.50208 ++	      *) perm_rpath="$perm_rpath $libdir" ;;
47.50209 ++	      esac
47.50210 ++	    fi
47.50211 ++	  done
47.50212 ++	  # Substitute the hardcoded libdirs into the rpath.
47.50213 ++	  if test -n "$hardcode_libdir_separator" &&
47.50214 ++	     test -n "$hardcode_libdirs"; then
47.50215 ++	    libdir="$hardcode_libdirs"
47.50216 ++	    if test -n "$hardcode_libdir_flag_spec_ld"; then
47.50217 ++	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
47.50218 ++	    else
47.50219 ++	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
47.50220 ++	    fi
47.50221 ++	  fi
47.50222 ++	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
47.50223 ++	    # We should set the runpath_var.
47.50224 ++	    rpath=
47.50225 ++	    for dir in $perm_rpath; do
47.50226 ++	      rpath="$rpath$dir:"
47.50227 ++	    done
47.50228 ++	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
47.50229 ++	  fi
47.50230 ++	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
47.50231 ++	fi
47.50232 ++
47.50233 ++	shlibpath="$finalize_shlibpath"
47.50234 ++	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
47.50235 ++	if test -n "$shlibpath"; then
47.50236 ++	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
47.50237 ++	fi
47.50238 ++
47.50239 ++	# Get the real and link names of the library.
47.50240 ++	eval shared_ext=\"$shrext_cmds\"
47.50241 ++	eval library_names=\"$library_names_spec\"
47.50242 ++	set dummy $library_names
47.50243 ++	shift
47.50244 ++	realname="$1"
47.50245 ++	shift
47.50246 ++
47.50247 ++	if test -n "$soname_spec"; then
47.50248 ++	  eval soname=\"$soname_spec\"
47.50249 ++	else
47.50250 ++	  soname="$realname"
47.50251 ++	fi
47.50252 ++	if test -z "$dlname"; then
47.50253 ++	  dlname=$soname
47.50254 ++	fi
47.50255 ++
47.50256 ++	lib="$output_objdir/$realname"
47.50257 ++	linknames=
47.50258 ++	for link
47.50259 ++	do
47.50260 ++	  linknames="$linknames $link"
47.50261 ++	done
47.50262 ++
47.50263 ++	# Use standard objects if they are pic
47.50264 ++	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
47.50265 ++	test "X$libobjs" = "X " && libobjs=
47.50266 ++
47.50267 ++	delfiles=
47.50268 ++	if test -n "$export_symbols" && test -n "$include_expsyms"; then
47.50269 ++	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
47.50270 ++	  export_symbols="$output_objdir/$libname.uexp"
47.50271 ++	  delfiles="$delfiles $export_symbols"
47.50272 ++	fi
47.50273 ++
47.50274 ++	orig_export_symbols=
47.50275 ++	case $host_os in
47.50276 ++	cygwin* | mingw*)
47.50277 ++	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
47.50278 ++	    # exporting using user supplied symfile
47.50279 ++	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
47.50280 ++	      # and it's NOT already a .def file. Must figure out
47.50281 ++	      # which of the given symbols are data symbols and tag
47.50282 ++	      # them as such. So, trigger use of export_symbols_cmds.
47.50283 ++	      # export_symbols gets reassigned inside the "prepare
47.50284 ++	      # the list of exported symbols" if statement, so the
47.50285 ++	      # include_expsyms logic still works.
47.50286 ++	      orig_export_symbols="$export_symbols"
47.50287 ++	      export_symbols=
47.50288 ++	      always_export_symbols=yes
47.50289 ++	    fi
47.50290 ++	  fi
47.50291 ++	  ;;
47.50292 ++	esac
47.50293 ++
47.50294 ++	# Prepare the list of exported symbols
47.50295 ++	if test -z "$export_symbols"; then
47.50296 ++	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
47.50297 ++	    func_echo "generating symbol list for \`$libname.la'"
47.50298 ++	    export_symbols="$output_objdir/$libname.exp"
47.50299 ++	    $opt_dry_run || $RM $export_symbols
47.50300 ++	    cmds=$export_symbols_cmds
47.50301 ++	    save_ifs="$IFS"; IFS='~'
47.50302 ++	    for cmd in $cmds; do
47.50303 ++	      IFS="$save_ifs"
47.50304 ++	      eval cmd=\"$cmd\"
47.50305 ++	      if len=`expr "X$cmd" : ".*"` &&
47.50306 ++	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
47.50307 ++		func_show_eval "$cmd" 'exit $?'
47.50308 ++		skipped_export=false
47.50309 ++	      else
47.50310 ++		# The command line is too long to execute in one step.
47.50311 ++		func_echo "using reloadable object file for export list..."
47.50312 ++		skipped_export=:
47.50313 ++		# Break out early, otherwise skipped_export may be
47.50314 ++		# set to false by a later but shorter cmd.
47.50315 ++		break
47.50316 ++	      fi
47.50317 ++	    done
47.50318 ++	    IFS="$save_ifs"
47.50319 ++	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
47.50320 ++	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
47.50321 ++	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
47.50322 ++	    fi
47.50323 ++	  fi
47.50324 ++	fi
47.50325 ++
47.50326 ++	if test -n "$export_symbols" && test -n "$include_expsyms"; then
47.50327 ++	  tmp_export_symbols="$export_symbols"
47.50328 ++	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
47.50329 ++	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
47.50330 ++	fi
47.50331 ++
47.50332 ++	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
47.50333 ++	  # The given exports_symbols file has to be filtered, so filter it.
47.50334 ++	  func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
47.50335 ++	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
47.50336 ++	  # 's' commands which not all seds can handle. GNU sed should be fine
47.50337 ++	  # though. Also, the filter scales superlinearly with the number of
47.50338 ++	  # global variables. join(1) would be nice here, but unfortunately
47.50339 ++	  # isn't a blessed tool.
47.50340 ++	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
47.50341 ++	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
47.50342 ++	  export_symbols=$output_objdir/$libname.def
47.50343 ++	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
47.50344 ++	fi
47.50345 ++
47.50346 ++	tmp_deplibs=
47.50347 ++	for test_deplib in $deplibs; do
47.50348 ++	  case " $convenience " in
47.50349 ++	  *" $test_deplib "*) ;;
47.50350 ++	  *)
47.50351 ++	    tmp_deplibs="$tmp_deplibs $test_deplib"
47.50352 ++	    ;;
47.50353 ++	  esac
47.50354 ++	done
47.50355 ++	deplibs="$tmp_deplibs"
47.50356 ++
47.50357 ++	if test -n "$convenience"; then
47.50358 ++	  if test -n "$whole_archive_flag_spec" &&
47.50359 ++	    test "$compiler_needs_object" = yes &&
47.50360 ++	    test -z "$libobjs"; then
47.50361 ++	    # extract the archives, so we have objects to list.
47.50362 ++	    # TODO: could optimize this to just extract one archive.
47.50363 ++	    whole_archive_flag_spec=
47.50364 ++	  fi
47.50365 ++	  if test -n "$whole_archive_flag_spec"; then
47.50366 ++	    save_libobjs=$libobjs
47.50367 ++	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
47.50368 ++	    test "X$libobjs" = "X " && libobjs=
47.50369 ++	  else
47.50370 ++	    gentop="$output_objdir/${outputname}x"
47.50371 ++	    generated="$generated $gentop"
47.50372 ++
47.50373 ++	    func_extract_archives $gentop $convenience
47.50374 ++	    libobjs="$libobjs $func_extract_archives_result"
47.50375 ++	    test "X$libobjs" = "X " && libobjs=
47.50376 ++	  fi
47.50377 ++	fi
47.50378 ++
47.50379 ++	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
47.50380 ++	  eval flag=\"$thread_safe_flag_spec\"
47.50381 ++	  linker_flags="$linker_flags $flag"
47.50382 ++	fi
47.50383 ++
47.50384 ++	# Make a backup of the uninstalled library when relinking
47.50385 ++	if test "$mode" = relink; then
47.50386 ++	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
47.50387 ++	fi
47.50388 ++
47.50389 ++	# Do each of the archive commands.
47.50390 ++	if test "$module" = yes && test -n "$module_cmds" ; then
47.50391 ++	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
47.50392 ++	    eval test_cmds=\"$module_expsym_cmds\"
47.50393 ++	    cmds=$module_expsym_cmds
47.50394 ++	  else
47.50395 ++	    eval test_cmds=\"$module_cmds\"
47.50396 ++	    cmds=$module_cmds
47.50397 ++	  fi
47.50398 ++	else
47.50399 ++	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
47.50400 ++	    eval test_cmds=\"$archive_expsym_cmds\"
47.50401 ++	    cmds=$archive_expsym_cmds
47.50402 ++	  else
47.50403 ++	    eval test_cmds=\"$archive_cmds\"
47.50404 ++	    cmds=$archive_cmds
47.50405 ++	  fi
47.50406 ++	fi
47.50407 ++
47.50408 ++	if test "X$skipped_export" != "X:" &&
47.50409 ++	   len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
47.50410 ++	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
47.50411 ++	  :
47.50412 ++	else
47.50413 ++	  # The command line is too long to link in one step, link piecewise
47.50414 ++	  # or, if using GNU ld and skipped_export is not :, use a linker
47.50415 ++	  # script.
47.50416 ++
47.50417 ++	  # Save the value of $output and $libobjs because we want to
47.50418 ++	  # use them later.  If we have whole_archive_flag_spec, we
47.50419 ++	  # want to use save_libobjs as it was before
47.50420 ++	  # whole_archive_flag_spec was expanded, because we can't
47.50421 ++	  # assume the linker understands whole_archive_flag_spec.
47.50422 ++	  # This may have to be revisited, in case too many
47.50423 ++	  # convenience libraries get linked in and end up exceeding
47.50424 ++	  # the spec.
47.50425 ++	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
47.50426 ++	    save_libobjs=$libobjs
47.50427 ++	  fi
47.50428 ++	  save_output=$output
47.50429 ++	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
47.50430 ++
47.50431 ++	  # Clear the reloadable object creation command queue and
47.50432 ++	  # initialize k to one.
47.50433 ++	  test_cmds=
47.50434 ++	  concat_cmds=
47.50435 ++	  objlist=
47.50436 ++	  last_robj=
47.50437 ++	  k=1
47.50438 ++
47.50439 ++	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
47.50440 ++	    output=${output_objdir}/${output_la}.lnkscript
47.50441 ++	    func_echo "creating GNU ld script: $output"
47.50442 ++	    $ECHO 'INPUT (' > $output
47.50443 ++	    for obj in $save_libobjs
47.50444 ++	    do
47.50445 ++	      $ECHO "$obj" >> $output
47.50446 ++	    done
47.50447 ++	    $ECHO ')' >> $output
47.50448 ++	    delfiles="$delfiles $output"
47.50449 ++	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
47.50450 ++	    output=${output_objdir}/${output_la}.lnk
47.50451 ++	    func_echo "creating linker input file list: $output"
47.50452 ++	    : > $output
47.50453 ++	    set x $save_libobjs
47.50454 ++	    shift
47.50455 ++	    firstobj=
47.50456 ++	    if test "$compiler_needs_object" = yes; then
47.50457 ++	      firstobj="$1 "
47.50458 ++	      shift
47.50459 ++	    fi
47.50460 ++	    for obj
47.50461 ++	    do
47.50462 ++	      $ECHO "$obj" >> $output
47.50463 ++	    done
47.50464 ++	    delfiles="$delfiles $output"
47.50465 ++	    output=$firstobj\"$file_list_spec$output\"
47.50466 ++	  else
47.50467 ++	    if test -n "$save_libobjs"; then
47.50468 ++	      func_echo "creating reloadable object files..."
47.50469 ++	      output=$output_objdir/$output_la-${k}.$objext
47.50470 ++	      # Loop over the list of objects to be linked.
47.50471 ++	      for obj in $save_libobjs
47.50472 ++	      do
47.50473 ++		eval test_cmds=\"$reload_cmds $objlist $last_robj\"
47.50474 ++		if test "X$objlist" = X ||
47.50475 ++		   { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
47.50476 ++		     test "$len" -le "$max_cmd_len"; }; then
47.50477 ++		  objlist="$objlist $obj"
47.50478 ++		else
47.50479 ++		  # The command $test_cmds is almost too long, add a
47.50480 ++		  # command to the queue.
47.50481 ++		  if test "$k" -eq 1 ; then
47.50482 ++		    # The first file doesn't have a previous command to add.
47.50483 ++		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
47.50484 ++		  else
47.50485 ++		    # All subsequent reloadable object files will link in
47.50486 ++		    # the last one created.
47.50487 ++		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
47.50488 ++		  fi
47.50489 ++		  last_robj=$output_objdir/$output_la-${k}.$objext
47.50490 ++		  k=`expr $k + 1`
47.50491 ++		  output=$output_objdir/$output_la-${k}.$objext
47.50492 ++		  objlist=$obj
47.50493 ++		  len=1
47.50494 ++		fi
47.50495 ++	      done
47.50496 ++	      # Handle the remaining objects by creating one last
47.50497 ++	      # reloadable object file.  All subsequent reloadable object
47.50498 ++	      # files will link in the last one created.
47.50499 ++	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
47.50500 ++	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
47.50501 ++
47.50502 ++	      # Set up a command to remove the reloadable object files
47.50503 ++	      # after they are used.
47.50504 ++	      i=0
47.50505 ++	      while test "$i" -lt "$k"
47.50506 ++	      do
47.50507 ++		i=`expr $i + 1`
47.50508 ++		delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
47.50509 ++	      done
47.50510 ++	    else
47.50511 ++	      output=
47.50512 ++	    fi
47.50513 ++
47.50514 ++	    if ${skipped_export-false}; then
47.50515 ++	      func_echo "generating symbol list for \`$libname.la'"
47.50516 ++	      export_symbols="$output_objdir/$libname.exp"
47.50517 ++	      $opt_dry_run || $RM $export_symbols
47.50518 ++	      libobjs=$output
47.50519 ++	      # Append the command to create the export file.
47.50520 ++	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
47.50521 ++	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
47.50522 ++	    fi
47.50523 ++
47.50524 ++	    test -n "$save_libobjs" &&
47.50525 ++	      func_echo "creating a temporary reloadable object file: $output"
47.50526 ++
47.50527 ++	    # Loop through the commands generated above and execute them.
47.50528 ++	    save_ifs="$IFS"; IFS='~'
47.50529 ++	    for cmd in $concat_cmds; do
47.50530 ++	      IFS="$save_ifs"
47.50531 ++	      $opt_silent || {
47.50532 ++		  func_quote_for_expand "$cmd"
47.50533 ++		  eval "func_echo $func_quote_for_expand_result"
47.50534 ++	      }
47.50535 ++	      $opt_dry_run || eval "$cmd" || {
47.50536 ++		lt_exit=$?
47.50537 ++
47.50538 ++		# Restore the uninstalled library and exit
47.50539 ++		if test "$mode" = relink; then
47.50540 ++		  ( cd "$output_objdir" && \
47.50541 ++		    $RM "${realname}T" && \
47.50542 ++		    $MV "${realname}U" "$realname" )
47.50543 ++		fi
47.50544 ++
47.50545 ++		exit $lt_exit
47.50546 ++	      }
47.50547 ++	    done
47.50548 ++	    IFS="$save_ifs"
47.50549 ++
47.50550 ++	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
47.50551 ++	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
47.50552 ++	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
47.50553 ++	    fi
47.50554 ++	  fi
47.50555 ++
47.50556 ++          if ${skipped_export-false}; then
47.50557 ++	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
47.50558 ++	      tmp_export_symbols="$export_symbols"
47.50559 ++	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
47.50560 ++	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
47.50561 ++	    fi
47.50562 ++
47.50563 ++	    if test -n "$orig_export_symbols"; then
47.50564 ++	      # The given exports_symbols file has to be filtered, so filter it.
47.50565 ++	      func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
47.50566 ++	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
47.50567 ++	      # 's' commands which not all seds can handle. GNU sed should be fine
47.50568 ++	      # though. Also, the filter scales superlinearly with the number of
47.50569 ++	      # global variables. join(1) would be nice here, but unfortunately
47.50570 ++	      # isn't a blessed tool.
47.50571 ++	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
47.50572 ++	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
47.50573 ++	      export_symbols=$output_objdir/$libname.def
47.50574 ++	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
47.50575 ++	    fi
47.50576 ++	  fi
47.50577 ++
47.50578 ++	  libobjs=$output
47.50579 ++	  # Restore the value of output.
47.50580 ++	  output=$save_output
47.50581 ++
47.50582 ++	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
47.50583 ++	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
47.50584 ++	    test "X$libobjs" = "X " && libobjs=
47.50585 ++	  fi
47.50586 ++	  # Expand the library linking commands again to reset the
47.50587 ++	  # value of $libobjs for piecewise linking.
47.50588 ++
47.50589 ++	  # Do each of the archive commands.
47.50590 ++	  if test "$module" = yes && test -n "$module_cmds" ; then
47.50591 ++	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
47.50592 ++	      cmds=$module_expsym_cmds
47.50593 ++	    else
47.50594 ++	      cmds=$module_cmds
47.50595 ++	    fi
47.50596 ++	  else
47.50597 ++	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
47.50598 ++	      cmds=$archive_expsym_cmds
47.50599 ++	    else
47.50600 ++	      cmds=$archive_cmds
47.50601 ++	    fi
47.50602 ++	  fi
47.50603 ++	fi
47.50604 ++
47.50605 ++	if test -n "$delfiles"; then
47.50606 ++	  # Append the command to remove temporary files to $cmds.
47.50607 ++	  eval cmds=\"\$cmds~\$RM $delfiles\"
47.50608 ++	fi
47.50609 ++
47.50610 ++	# Add any objects from preloaded convenience libraries
47.50611 ++	if test -n "$dlprefiles"; then
47.50612 ++	  gentop="$output_objdir/${outputname}x"
47.50613 ++	  generated="$generated $gentop"
47.50614 ++
47.50615 ++	  func_extract_archives $gentop $dlprefiles
47.50616 ++	  libobjs="$libobjs $func_extract_archives_result"
47.50617 ++	  test "X$libobjs" = "X " && libobjs=
47.50618 ++	fi
47.50619 ++
47.50620 ++	save_ifs="$IFS"; IFS='~'
47.50621 ++	for cmd in $cmds; do
47.50622 ++	  IFS="$save_ifs"
47.50623 ++	  eval cmd=\"$cmd\"
47.50624 ++	  $opt_silent || {
47.50625 ++	    func_quote_for_expand "$cmd"
47.50626 ++	    eval "func_echo $func_quote_for_expand_result"
47.50627 ++	  }
47.50628 ++	  $opt_dry_run || eval "$cmd" || {
47.50629 ++	    lt_exit=$?
47.50630 ++
47.50631 ++	    # Restore the uninstalled library and exit
47.50632 ++	    if test "$mode" = relink; then
47.50633 ++	      ( cd "$output_objdir" && \
47.50634 ++	        $RM "${realname}T" && \
47.50635 ++		$MV "${realname}U" "$realname" )
47.50636 ++	    fi
47.50637 ++
47.50638 ++	    exit $lt_exit
47.50639 ++	  }
47.50640 ++	done
47.50641 ++	IFS="$save_ifs"
47.50642 ++
47.50643 ++	# Restore the uninstalled library and exit
47.50644 ++	if test "$mode" = relink; then
47.50645 ++	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
47.50646 ++
47.50647 ++	  if test -n "$convenience"; then
47.50648 ++	    if test -z "$whole_archive_flag_spec"; then
47.50649 ++	      func_show_eval '${RM}r "$gentop"'
47.50650 ++	    fi
47.50651 ++	  fi
47.50652 ++
47.50653 ++	  exit $EXIT_SUCCESS
47.50654 ++	fi
47.50655 ++
47.50656 ++	# Create links to the real library.
47.50657 ++	for linkname in $linknames; do
47.50658 ++	  if test "$realname" != "$linkname"; then
47.50659 ++	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
47.50660 ++	  fi
47.50661 ++	done
47.50662 ++
47.50663 ++	# If -module or -export-dynamic was specified, set the dlname.
47.50664 ++	if test "$module" = yes || test "$export_dynamic" = yes; then
47.50665 ++	  # On all known operating systems, these are identical.
47.50666 ++	  dlname="$soname"
47.50667 ++	fi
47.50668 ++      fi
47.50669 ++      ;;
47.50670 ++
47.50671 ++    obj)
47.50672 ++      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
47.50673 ++	func_warning "\`-dlopen' is ignored for objects"
47.50674 ++      fi
47.50675 ++
47.50676 ++      test -n "$deplibs" && \
47.50677 ++	func_warning "\`-l' and \`-L' are ignored for objects"
47.50678 ++
47.50679 ++      test -n "$rpath" && \
47.50680 ++	func_warning "\`-rpath' is ignored for objects"
47.50681 ++
47.50682 ++      test -n "$xrpath" && \
47.50683 ++	func_warning "\`-R' is ignored for objects"
47.50684 ++
47.50685 ++      test -n "$vinfo" && \
47.50686 ++	func_warning "\`-version-info' is ignored for objects"
47.50687 ++
47.50688 ++      test -n "$release" && \
47.50689 ++	func_warning "\`-release' is ignored for objects"
47.50690 ++
47.50691 ++      case $output in
47.50692 ++      *.lo)
47.50693 ++	test -n "$objs$old_deplibs" && \
47.50694 ++	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
47.50695 ++
47.50696 ++	libobj=$output
47.50697 ++	func_lo2o "$libobj"
47.50698 ++	obj=$func_lo2o_result
47.50699 ++	;;
47.50700 ++      *)
47.50701 ++	libobj=
47.50702 ++	obj="$output"
47.50703 ++	;;
47.50704 ++      esac
47.50705 ++
47.50706 ++      # Delete the old objects.
47.50707 ++      $opt_dry_run || $RM $obj $libobj
47.50708 ++
47.50709 ++      # Objects from convenience libraries.  This assumes
47.50710 ++      # single-version convenience libraries.  Whenever we create
47.50711 ++      # different ones for PIC/non-PIC, this we'll have to duplicate
47.50712 ++      # the extraction.
47.50713 ++      reload_conv_objs=
47.50714 ++      gentop=
47.50715 ++      # reload_cmds runs $LD directly, so let us get rid of
47.50716 ++      # -Wl from whole_archive_flag_spec and hope we can get by with
47.50717 ++      # turning comma into space..
47.50718 ++      wl=
47.50719 ++
47.50720 ++      if test -n "$convenience"; then
47.50721 ++	if test -n "$whole_archive_flag_spec"; then
47.50722 ++	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
47.50723 ++	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
47.50724 ++	else
47.50725 ++	  gentop="$output_objdir/${obj}x"
47.50726 ++	  generated="$generated $gentop"
47.50727 ++
47.50728 ++	  func_extract_archives $gentop $convenience
47.50729 ++	  reload_conv_objs="$reload_objs $func_extract_archives_result"
47.50730 ++	fi
47.50731 ++      fi
47.50732 ++
47.50733 ++      # Create the old-style object.
47.50734 ++      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
47.50735 ++
47.50736 ++      output="$obj"
47.50737 ++      func_execute_cmds "$reload_cmds" 'exit $?'
47.50738 ++
47.50739 ++      # Exit if we aren't doing a library object file.
47.50740 ++      if test -z "$libobj"; then
47.50741 ++	if test -n "$gentop"; then
47.50742 ++	  func_show_eval '${RM}r "$gentop"'
47.50743 ++	fi
47.50744 ++
47.50745 ++	exit $EXIT_SUCCESS
47.50746 ++      fi
47.50747 ++
47.50748 ++      if test "$build_libtool_libs" != yes; then
47.50749 ++	if test -n "$gentop"; then
47.50750 ++	  func_show_eval '${RM}r "$gentop"'
47.50751 ++	fi
47.50752 ++
47.50753 ++	# Create an invalid libtool object if no PIC, so that we don't
47.50754 ++	# accidentally link it into a program.
47.50755 ++	# $show "echo timestamp > $libobj"
47.50756 ++	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
47.50757 ++	exit $EXIT_SUCCESS
47.50758 ++      fi
47.50759 ++
47.50760 ++      if test -n "$pic_flag" || test "$pic_mode" != default; then
47.50761 ++	# Only do commands if we really have different PIC objects.
47.50762 ++	reload_objs="$libobjs $reload_conv_objs"
47.50763 ++	output="$libobj"
47.50764 ++	func_execute_cmds "$reload_cmds" 'exit $?'
47.50765 ++      fi
47.50766 ++
47.50767 ++      if test -n "$gentop"; then
47.50768 ++	func_show_eval '${RM}r "$gentop"'
47.50769 ++      fi
47.50770 ++
47.50771 ++      exit $EXIT_SUCCESS
47.50772 ++      ;;
47.50773 ++
47.50774 ++    prog)
47.50775 ++      case $host in
47.50776 ++	*cygwin*) func_stripname '' '.exe' "$output"
47.50777 ++	          output=$func_stripname_result.exe;;
47.50778 ++      esac
47.50779 ++      test -n "$vinfo" && \
47.50780 ++	func_warning "\`-version-info' is ignored for programs"
47.50781 ++
47.50782 ++      test -n "$release" && \
47.50783 ++	func_warning "\`-release' is ignored for programs"
47.50784 ++
47.50785 ++      test "$preload" = yes \
47.50786 ++        && test "$dlopen_support" = unknown \
47.50787 ++	&& test "$dlopen_self" = unknown \
47.50788 ++	&& test "$dlopen_self_static" = unknown && \
47.50789 ++	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
47.50790 ++
47.50791 ++      case $host in
47.50792 ++      *-*-rhapsody* | *-*-darwin1.[012])
47.50793 ++	# On Rhapsody replace the C library is the System framework
47.50794 ++	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
47.50795 ++	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
47.50796 ++	;;
47.50797 ++      esac
47.50798 ++
47.50799 ++      case $host in
47.50800 ++      *-*-darwin*)
47.50801 ++	# Don't allow lazy linking, it breaks C++ global constructors
47.50802 ++	# But is supposedly fixed on 10.4 or later (yay!).
47.50803 ++	if test "$tagname" = CXX ; then
47.50804 ++	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
47.50805 ++	    10.[0123])
47.50806 ++	      compile_command="$compile_command ${wl}-bind_at_load"
47.50807 ++	      finalize_command="$finalize_command ${wl}-bind_at_load"
47.50808 ++	    ;;
47.50809 ++	  esac
47.50810 ++	fi
47.50811 ++	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
47.50812 ++	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
47.50813 ++	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
47.50814 ++	;;
47.50815 ++      esac
47.50816 ++
47.50817 ++
47.50818 ++      # move library search paths that coincide with paths to not yet
47.50819 ++      # installed libraries to the beginning of the library search list
47.50820 ++      new_libs=
47.50821 ++      for path in $notinst_path; do
47.50822 ++	case " $new_libs " in
47.50823 ++	*" -L$path/$objdir "*) ;;
47.50824 ++	*)
47.50825 ++	  case " $compile_deplibs " in
47.50826 ++	  *" -L$path/$objdir "*)
47.50827 ++	    new_libs="$new_libs -L$path/$objdir" ;;
47.50828 ++	  esac
47.50829 ++	  ;;
47.50830 ++	esac
47.50831 ++      done
47.50832 ++      for deplib in $compile_deplibs; do
47.50833 ++	case $deplib in
47.50834 ++	-L*)
47.50835 ++	  case " $new_libs " in
47.50836 ++	  *" $deplib "*) ;;
47.50837 ++	  *) new_libs="$new_libs $deplib" ;;
47.50838 ++	  esac
47.50839 ++	  ;;
47.50840 ++	*) new_libs="$new_libs $deplib" ;;
47.50841 ++	esac
47.50842 ++      done
47.50843 ++      compile_deplibs="$new_libs"
47.50844 ++
47.50845 ++
47.50846 ++      compile_command="$compile_command $compile_deplibs"
47.50847 ++      finalize_command="$finalize_command $finalize_deplibs"
47.50848 ++
47.50849 ++      if test -n "$rpath$xrpath"; then
47.50850 ++	# If the user specified any rpath flags, then add them.
47.50851 ++	for libdir in $rpath $xrpath; do
47.50852 ++	  # This is the magic to use -rpath.
47.50853 ++	  case "$finalize_rpath " in
47.50854 ++	  *" $libdir "*) ;;
47.50855 ++	  *) finalize_rpath="$finalize_rpath $libdir" ;;
47.50856 ++	  esac
47.50857 ++	done
47.50858 ++      fi
47.50859 ++
47.50860 ++      # Now hardcode the library paths
47.50861 ++      rpath=
47.50862 ++      hardcode_libdirs=
47.50863 ++      for libdir in $compile_rpath $finalize_rpath; do
47.50864 ++	if test -n "$hardcode_libdir_flag_spec"; then
47.50865 ++	  if test -n "$hardcode_libdir_separator"; then
47.50866 ++	    if test -z "$hardcode_libdirs"; then
47.50867 ++	      hardcode_libdirs="$libdir"
47.50868 ++	    else
47.50869 ++	      # Just accumulate the unique libdirs.
47.50870 ++	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
47.50871 ++	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
47.50872 ++		;;
47.50873 ++	      *)
47.50874 ++		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
47.50875 ++		;;
47.50876 ++	      esac
47.50877 ++	    fi
47.50878 ++	  else
47.50879 ++	    eval flag=\"$hardcode_libdir_flag_spec\"
47.50880 ++	    rpath="$rpath $flag"
47.50881 ++	  fi
47.50882 ++	elif test -n "$runpath_var"; then
47.50883 ++	  case "$perm_rpath " in
47.50884 ++	  *" $libdir "*) ;;
47.50885 ++	  *) perm_rpath="$perm_rpath $libdir" ;;
47.50886 ++	  esac
47.50887 ++	fi
47.50888 ++	case $host in
47.50889 ++	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
47.50890 ++	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
47.50891 ++	  case :$dllsearchpath: in
47.50892 ++	  *":$libdir:"*) ;;
47.50893 ++	  *) dllsearchpath="$dllsearchpath:$libdir";;
47.50894 ++	  esac
47.50895 ++	  case :$dllsearchpath: in
47.50896 ++	  *":$testbindir:"*) ;;
47.50897 ++	  *) dllsearchpath="$dllsearchpath:$testbindir";;
47.50898 ++	  esac
47.50899 ++	  ;;
47.50900 ++	esac
47.50901 ++      done
47.50902 ++      # Substitute the hardcoded libdirs into the rpath.
47.50903 ++      if test -n "$hardcode_libdir_separator" &&
47.50904 ++	 test -n "$hardcode_libdirs"; then
47.50905 ++	libdir="$hardcode_libdirs"
47.50906 ++	eval rpath=\" $hardcode_libdir_flag_spec\"
47.50907 ++      fi
47.50908 ++      compile_rpath="$rpath"
47.50909 ++
47.50910 ++      rpath=
47.50911 ++      hardcode_libdirs=
47.50912 ++      for libdir in $finalize_rpath; do
47.50913 ++	if test -n "$hardcode_libdir_flag_spec"; then
47.50914 ++	  if test -n "$hardcode_libdir_separator"; then
47.50915 ++	    if test -z "$hardcode_libdirs"; then
47.50916 ++	      hardcode_libdirs="$libdir"
47.50917 ++	    else
47.50918 ++	      # Just accumulate the unique libdirs.
47.50919 ++	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
47.50920 ++	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
47.50921 ++		;;
47.50922 ++	      *)
47.50923 ++		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
47.50924 ++		;;
47.50925 ++	      esac
47.50926 ++	    fi
47.50927 ++	  else
47.50928 ++	    eval flag=\"$hardcode_libdir_flag_spec\"
47.50929 ++	    rpath="$rpath $flag"
47.50930 ++	  fi
47.50931 ++	elif test -n "$runpath_var"; then
47.50932 ++	  case "$finalize_perm_rpath " in
47.50933 ++	  *" $libdir "*) ;;
47.50934 ++	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
47.50935 ++	  esac
47.50936 ++	fi
47.50937 ++      done
47.50938 ++      # Substitute the hardcoded libdirs into the rpath.
47.50939 ++      if test -n "$hardcode_libdir_separator" &&
47.50940 ++	 test -n "$hardcode_libdirs"; then
47.50941 ++	libdir="$hardcode_libdirs"
47.50942 ++	eval rpath=\" $hardcode_libdir_flag_spec\"
47.50943 ++      fi
47.50944 ++      finalize_rpath="$rpath"
47.50945 ++
47.50946 ++      if test -n "$libobjs" && test "$build_old_libs" = yes; then
47.50947 ++	# Transform all the library objects into standard objects.
47.50948 ++	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
47.50949 ++	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
47.50950 ++      fi
47.50951 ++
47.50952 ++      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
47.50953 ++
47.50954 ++      # template prelinking step
47.50955 ++      if test -n "$prelink_cmds"; then
47.50956 ++	func_execute_cmds "$prelink_cmds" 'exit $?'
47.50957 ++      fi
47.50958 ++
47.50959 ++      wrappers_required=yes
47.50960 ++      case $host in
47.50961 ++      *cygwin* | *mingw* )
47.50962 ++        if test "$build_libtool_libs" != yes; then
47.50963 ++          wrappers_required=no
47.50964 ++        fi
47.50965 ++        ;;
47.50966 ++      *)
47.50967 ++        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
47.50968 ++          wrappers_required=no
47.50969 ++        fi
47.50970 ++        ;;
47.50971 ++      esac
47.50972 ++      if test "$wrappers_required" = no; then
47.50973 ++	# Replace the output file specification.
47.50974 ++	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
47.50975 ++	link_command="$compile_command$compile_rpath"
47.50976 ++
47.50977 ++	# We have no uninstalled library dependencies, so finalize right now.
47.50978 ++	exit_status=0
47.50979 ++	func_show_eval "$link_command" 'exit_status=$?'
47.50980 ++
47.50981 ++	# Delete the generated files.
47.50982 ++	if test -f "$output_objdir/${outputname}S.${objext}"; then
47.50983 ++	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
47.50984 ++	fi
47.50985 ++
47.50986 ++	exit $exit_status
47.50987 ++      fi
47.50988 ++
47.50989 ++      if test -n "$compile_shlibpath$finalize_shlibpath"; then
47.50990 ++	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
47.50991 ++      fi
47.50992 ++      if test -n "$finalize_shlibpath"; then
47.50993 ++	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
47.50994 ++      fi
47.50995 ++
47.50996 ++      compile_var=
47.50997 ++      finalize_var=
47.50998 ++      if test -n "$runpath_var"; then
47.50999 ++	if test -n "$perm_rpath"; then
47.51000 ++	  # We should set the runpath_var.
47.51001 ++	  rpath=
47.51002 ++	  for dir in $perm_rpath; do
47.51003 ++	    rpath="$rpath$dir:"
47.51004 ++	  done
47.51005 ++	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
47.51006 ++	fi
47.51007 ++	if test -n "$finalize_perm_rpath"; then
47.51008 ++	  # We should set the runpath_var.
47.51009 ++	  rpath=
47.51010 ++	  for dir in $finalize_perm_rpath; do
47.51011 ++	    rpath="$rpath$dir:"
47.51012 ++	  done
47.51013 ++	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
47.51014 ++	fi
47.51015 ++      fi
47.51016 ++
47.51017 ++      if test "$no_install" = yes; then
47.51018 ++	# We don't need to create a wrapper script.
47.51019 ++	link_command="$compile_var$compile_command$compile_rpath"
47.51020 ++	# Replace the output file specification.
47.51021 ++	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
47.51022 ++	# Delete the old output file.
47.51023 ++	$opt_dry_run || $RM $output
47.51024 ++	# Link the executable and exit
47.51025 ++	func_show_eval "$link_command" 'exit $?'
47.51026 ++	exit $EXIT_SUCCESS
47.51027 ++      fi
47.51028 ++
47.51029 ++      if test "$hardcode_action" = relink; then
47.51030 ++	# Fast installation is not supported
47.51031 ++	link_command="$compile_var$compile_command$compile_rpath"
47.51032 ++	relink_command="$finalize_var$finalize_command$finalize_rpath"
47.51033 ++
47.51034 ++	func_warning "this platform does not like uninstalled shared libraries"
47.51035 ++	func_warning "\`$output' will be relinked during installation"
47.51036 ++      else
47.51037 ++	if test "$fast_install" != no; then
47.51038 ++	  link_command="$finalize_var$compile_command$finalize_rpath"
47.51039 ++	  if test "$fast_install" = yes; then
47.51040 ++	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
47.51041 ++	  else
47.51042 ++	    # fast_install is set to needless
47.51043 ++	    relink_command=
47.51044 ++	  fi
47.51045 ++	else
47.51046 ++	  link_command="$compile_var$compile_command$compile_rpath"
47.51047 ++	  relink_command="$finalize_var$finalize_command$finalize_rpath"
47.51048 ++	fi
47.51049 ++      fi
47.51050 ++
47.51051 ++      # Replace the output file specification.
47.51052 ++      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
47.51053 ++
47.51054 ++      # Delete the old output files.
47.51055 ++      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
47.51056 ++
47.51057 ++      func_show_eval "$link_command" 'exit $?'
47.51058 ++
47.51059 ++      # Now create the wrapper script.
47.51060 ++      func_echo "creating $output"
47.51061 ++
47.51062 ++      # Quote the relink command for shipping.
47.51063 ++      if test -n "$relink_command"; then
47.51064 ++	# Preserve any variables that may affect compiler behavior
47.51065 ++	for var in $variables_saved_for_relink; do
47.51066 ++	  if eval test -z \"\${$var+set}\"; then
47.51067 ++	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
47.51068 ++	  elif eval var_value=\$$var; test -z "$var_value"; then
47.51069 ++	    relink_command="$var=; export $var; $relink_command"
47.51070 ++	  else
47.51071 ++	    func_quote_for_eval "$var_value"
47.51072 ++	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
47.51073 ++	  fi
47.51074 ++	done
47.51075 ++	relink_command="(cd `pwd`; $relink_command)"
47.51076 ++	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
47.51077 ++      fi
47.51078 ++
47.51079 ++      # Quote $ECHO for shipping.
47.51080 ++      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
47.51081 ++	case $progpath in
47.51082 ++	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
47.51083 ++	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
47.51084 ++	esac
47.51085 ++	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
47.51086 ++      else
47.51087 ++	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
47.51088 ++      fi
47.51089 ++
47.51090 ++      # Only actually do things if not in dry run mode.
47.51091 ++      $opt_dry_run || {
47.51092 ++	# win32 will think the script is a binary if it has
47.51093 ++	# a .exe suffix, so we strip it off here.
47.51094 ++	case $output in
47.51095 ++	  *.exe) func_stripname '' '.exe' "$output"
47.51096 ++	         output=$func_stripname_result ;;
47.51097 ++	esac
47.51098 ++	# test for cygwin because mv fails w/o .exe extensions
47.51099 ++	case $host in
47.51100 ++	  *cygwin*)
47.51101 ++	    exeext=.exe
47.51102 ++	    func_stripname '' '.exe' "$outputname"
47.51103 ++	    outputname=$func_stripname_result ;;
47.51104 ++	  *) exeext= ;;
47.51105 ++	esac
47.51106 ++	case $host in
47.51107 ++	  *cygwin* | *mingw* )
47.51108 ++	    output_name=`basename $output`
47.51109 ++	    output_path=`dirname $output`
47.51110 ++	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
47.51111 ++	    cwrapper="$output_path/$output_name.exe"
47.51112 ++	    $RM $cwrappersource $cwrapper
47.51113 ++	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
47.51114 ++
47.51115 ++	    cat > $cwrappersource <<EOF
47.51116 ++
47.51117 ++/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
47.51118 ++   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
47.51119 ++
47.51120 ++   The $output program cannot be directly executed until all the libtool
47.51121 ++   libraries that it depends on are installed.
47.51122 ++
47.51123 ++   This wrapper executable should never be moved out of the build directory.
47.51124 ++   If it is, it will not operate correctly.
47.51125 ++
47.51126 ++   Currently, it simply execs the wrapper *script* "/bin/sh $output",
47.51127 ++   but could eventually absorb all of the scripts functionality and
47.51128 ++   exec $objdir/$outputname directly.
47.51129 ++*/
47.51130 ++EOF
47.51131 ++	    cat >> $cwrappersource<<"EOF"
47.51132 ++#include <stdio.h>
47.51133 ++#include <stdlib.h>
47.51134 ++#include <unistd.h>
47.51135 ++#include <malloc.h>
47.51136 ++#include <stdarg.h>
47.51137 ++#include <assert.h>
47.51138 ++#include <string.h>
47.51139 ++#include <ctype.h>
47.51140 ++#include <sys/stat.h>
47.51141 ++
47.51142 ++#if defined(PATH_MAX)
47.51143 ++# define LT_PATHMAX PATH_MAX
47.51144 ++#elif defined(MAXPATHLEN)
47.51145 ++# define LT_PATHMAX MAXPATHLEN
47.51146 ++#else
47.51147 ++# define LT_PATHMAX 1024
47.51148 ++#endif
47.51149 ++
47.51150 ++#ifndef DIR_SEPARATOR
47.51151 ++# define DIR_SEPARATOR '/'
47.51152 ++# define PATH_SEPARATOR ':'
47.51153 ++#endif
47.51154 ++
47.51155 ++#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
47.51156 ++  defined (__OS2__)
47.51157 ++# define HAVE_DOS_BASED_FILE_SYSTEM
47.51158 ++# ifndef DIR_SEPARATOR_2
47.51159 ++#  define DIR_SEPARATOR_2 '\\'
47.51160 ++# endif
47.51161 ++# ifndef PATH_SEPARATOR_2
47.51162 ++#  define PATH_SEPARATOR_2 ';'
47.51163 ++# endif
47.51164 ++#endif
47.51165 ++
47.51166 ++#ifndef DIR_SEPARATOR_2
47.51167 ++# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
47.51168 ++#else /* DIR_SEPARATOR_2 */
47.51169 ++# define IS_DIR_SEPARATOR(ch) \
47.51170 ++	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
47.51171 ++#endif /* DIR_SEPARATOR_2 */
47.51172 ++
47.51173 ++#ifndef PATH_SEPARATOR_2
47.51174 ++# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
47.51175 ++#else /* PATH_SEPARATOR_2 */
47.51176 ++# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
47.51177 ++#endif /* PATH_SEPARATOR_2 */
47.51178 ++
47.51179 ++#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
47.51180 ++#define XFREE(stale) do { \
47.51181 ++  if (stale) { free ((void *) stale); stale = 0; } \
47.51182 ++} while (0)
47.51183 ++
47.51184 ++/* -DDEBUG is fairly common in CFLAGS.  */
47.51185 ++#undef DEBUG
47.51186 ++#if defined DEBUGWRAPPER
47.51187 ++# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
47.51188 ++#else
47.51189 ++# define DEBUG(format, ...)
47.51190 ++#endif
47.51191 ++
47.51192 ++const char *program_name = NULL;
47.51193 ++
47.51194 ++void * xmalloc (size_t num);
47.51195 ++char * xstrdup (const char *string);
47.51196 ++const char * base_name (const char *name);
47.51197 ++char * find_executable(const char *wrapper);
47.51198 ++int    check_executable(const char *path);
47.51199 ++char * strendzap(char *str, const char *pat);
47.51200 ++void lt_fatal (const char *message, ...);
47.51201 ++
47.51202 ++int
47.51203 ++main (int argc, char *argv[])
47.51204 ++{
47.51205 ++  char **newargz;
47.51206 ++  int i;
47.51207 ++
47.51208 ++  program_name = (char *) xstrdup (base_name (argv[0]));
47.51209 ++  DEBUG("(main) argv[0]      : %s\n",argv[0]);
47.51210 ++  DEBUG("(main) program_name : %s\n",program_name);
47.51211 ++  newargz = XMALLOC(char *, argc+2);
47.51212 ++EOF
47.51213 ++
47.51214 ++	    cat >> $cwrappersource <<EOF
47.51215 ++  newargz[0] = (char *) xstrdup("$SHELL");
47.51216 ++EOF
47.51217 ++
47.51218 ++	    cat >> $cwrappersource <<"EOF"
47.51219 ++  newargz[1] = find_executable(argv[0]);
47.51220 ++  if (newargz[1] == NULL)
47.51221 ++    lt_fatal("Couldn't find %s", argv[0]);
47.51222 ++  DEBUG("(main) found exe at : %s\n",newargz[1]);
47.51223 ++  /* we know the script has the same name, without the .exe */
47.51224 ++  /* so make sure newargz[1] doesn't end in .exe */
47.51225 ++  strendzap(newargz[1],".exe");
47.51226 ++  for (i = 1; i < argc; i++)
47.51227 ++    newargz[i+1] = xstrdup(argv[i]);
47.51228 ++  newargz[argc+1] = NULL;
47.51229 ++
47.51230 ++  for (i=0; i<argc+1; i++)
47.51231 ++  {
47.51232 ++    DEBUG("(main) newargz[%d]   : %s\n",i,newargz[i]);
47.51233 ++    ;
47.51234 ++  }
47.51235 ++
47.51236 ++EOF
47.51237 ++
47.51238 ++	    case $host_os in
47.51239 ++	      mingw*)
47.51240 ++		cat >> $cwrappersource <<EOF
47.51241 ++  execv("$SHELL",(char const **)newargz);
47.51242 ++EOF
47.51243 ++	      ;;
47.51244 ++	      *)
47.51245 ++		cat >> $cwrappersource <<EOF
47.51246 ++  execv("$SHELL",newargz);
47.51247 ++EOF
47.51248 ++	      ;;
47.51249 ++	    esac
47.51250 ++
47.51251 ++	    cat >> $cwrappersource <<"EOF"
47.51252 ++  return 127;
47.51253 ++}
47.51254 ++
47.51255 ++void *
47.51256 ++xmalloc (size_t num)
47.51257 ++{
47.51258 ++  void * p = (void *) malloc (num);
47.51259 ++  if (!p)
47.51260 ++    lt_fatal ("Memory exhausted");
47.51261 ++
47.51262 ++  return p;
47.51263 ++}
47.51264 ++
47.51265 ++char *
47.51266 ++xstrdup (const char *string)
47.51267 ++{
47.51268 ++  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
47.51269 ++;
47.51270 ++}
47.51271 ++
47.51272 ++const char *
47.51273 ++base_name (const char *name)
47.51274 ++{
47.51275 ++  const char *base;
47.51276 ++
47.51277 ++#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
47.51278 ++  /* Skip over the disk name in MSDOS pathnames. */
47.51279 ++  if (isalpha ((unsigned char)name[0]) && name[1] == ':')
47.51280 ++    name += 2;
47.51281 ++#endif
47.51282 ++
47.51283 ++  for (base = name; *name; name++)
47.51284 ++    if (IS_DIR_SEPARATOR (*name))
47.51285 ++      base = name + 1;
47.51286 ++  return base;
47.51287 ++}
47.51288 ++
47.51289 ++int
47.51290 ++check_executable(const char * path)
47.51291 ++{
47.51292 ++  struct stat st;
47.51293 ++
47.51294 ++  DEBUG("(check_executable)  : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
47.51295 ++  if ((!path) || (!*path))
47.51296 ++    return 0;
47.51297 ++
47.51298 ++  if ((stat (path, &st) >= 0) &&
47.51299 ++      (
47.51300 ++	/* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
47.51301 ++#if defined (S_IXOTH)
47.51302 ++       ((st.st_mode & S_IXOTH) == S_IXOTH) ||
47.51303 ++#endif
47.51304 ++#if defined (S_IXGRP)
47.51305 ++       ((st.st_mode & S_IXGRP) == S_IXGRP) ||
47.51306 ++#endif
47.51307 ++       ((st.st_mode & S_IXUSR) == S_IXUSR))
47.51308 ++      )
47.51309 ++    return 1;
47.51310 ++  else
47.51311 ++    return 0;
47.51312 ++}
47.51313 ++
47.51314 ++/* Searches for the full path of the wrapper.  Returns
47.51315 ++   newly allocated full path name if found, NULL otherwise */
47.51316 ++char *
47.51317 ++find_executable (const char* wrapper)
47.51318 ++{
47.51319 ++  int has_slash = 0;
47.51320 ++  const char* p;
47.51321 ++  const char* p_next;
47.51322 ++  /* static buffer for getcwd */
47.51323 ++  char tmp[LT_PATHMAX + 1];
47.51324 ++  int tmp_len;
47.51325 ++  char* concat_name;
47.51326 ++
47.51327 ++  DEBUG("(find_executable)  : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
47.51328 ++
47.51329 ++  if ((wrapper == NULL) || (*wrapper == '\0'))
47.51330 ++    return NULL;
47.51331 ++
47.51332 ++  /* Absolute path? */
47.51333 ++#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
47.51334 ++  if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
47.51335 ++  {
47.51336 ++    concat_name = xstrdup (wrapper);
47.51337 ++    if (check_executable(concat_name))
47.51338 ++      return concat_name;
47.51339 ++    XFREE(concat_name);
47.51340 ++  }
47.51341 ++  else
47.51342 ++  {
47.51343 ++#endif
47.51344 ++    if (IS_DIR_SEPARATOR (wrapper[0]))
47.51345 ++    {
47.51346 ++      concat_name = xstrdup (wrapper);
47.51347 ++      if (check_executable(concat_name))
47.51348 ++	return concat_name;
47.51349 ++      XFREE(concat_name);
47.51350 ++    }
47.51351 ++#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
47.51352 ++  }
47.51353 ++#endif
47.51354 ++
47.51355 ++  for (p = wrapper; *p; p++)
47.51356 ++    if (*p == '/')
47.51357 ++    {
47.51358 ++      has_slash = 1;
47.51359 ++      break;
47.51360 ++    }
47.51361 ++  if (!has_slash)
47.51362 ++  {
47.51363 ++    /* no slashes; search PATH */
47.51364 ++    const char* path = getenv ("PATH");
47.51365 ++    if (path != NULL)
47.51366 ++    {
47.51367 ++      for (p = path; *p; p = p_next)
47.51368 ++      {
47.51369 ++	const char* q;
47.51370 ++	size_t p_len;
47.51371 ++	for (q = p; *q; q++)
47.51372 ++	  if (IS_PATH_SEPARATOR(*q))
47.51373 ++	    break;
47.51374 ++	p_len = q - p;
47.51375 ++	p_next = (*q == '\0' ? q : q + 1);
47.51376 ++	if (p_len == 0)
47.51377 ++	{
47.51378 ++	  /* empty path: current directory */
47.51379 ++	  if (getcwd (tmp, LT_PATHMAX) == NULL)
47.51380 ++	    lt_fatal ("getcwd failed");
47.51381 ++	  tmp_len = strlen(tmp);
47.51382 ++	  concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
47.51383 ++	  memcpy (concat_name, tmp, tmp_len);
47.51384 ++	  concat_name[tmp_len] = '/';
47.51385 ++	  strcpy (concat_name + tmp_len + 1, wrapper);
47.51386 ++	}
47.51387 ++	else
47.51388 ++	{
47.51389 ++	  concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
47.51390 ++	  memcpy (concat_name, p, p_len);
47.51391 ++	  concat_name[p_len] = '/';
47.51392 ++	  strcpy (concat_name + p_len + 1, wrapper);
47.51393 ++	}
47.51394 ++	if (check_executable(concat_name))
47.51395 ++	  return concat_name;
47.51396 ++	XFREE(concat_name);
47.51397 ++      }
47.51398 ++    }
47.51399 ++    /* not found in PATH; assume curdir */
47.51400 ++  }
47.51401 ++  /* Relative path | not found in path: prepend cwd */
47.51402 ++  if (getcwd (tmp, LT_PATHMAX) == NULL)
47.51403 ++    lt_fatal ("getcwd failed");
47.51404 ++  tmp_len = strlen(tmp);
47.51405 ++  concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
47.51406 ++  memcpy (concat_name, tmp, tmp_len);
47.51407 ++  concat_name[tmp_len] = '/';
47.51408 ++  strcpy (concat_name + tmp_len + 1, wrapper);
47.51409 ++
47.51410 ++  if (check_executable(concat_name))
47.51411 ++    return concat_name;
47.51412 ++  XFREE(concat_name);
47.51413 ++  return NULL;
47.51414 ++}
47.51415 ++
47.51416 ++char *
47.51417 ++strendzap(char *str, const char *pat)
47.51418 ++{
47.51419 ++  size_t len, patlen;
47.51420 ++
47.51421 ++  assert(str != NULL);
47.51422 ++  assert(pat != NULL);
47.51423 ++
47.51424 ++  len = strlen(str);
47.51425 ++  patlen = strlen(pat);
47.51426 ++
47.51427 ++  if (patlen <= len)
47.51428 ++  {
47.51429 ++    str += len - patlen;
47.51430 ++    if (strcmp(str, pat) == 0)
47.51431 ++      *str = '\0';
47.51432 ++  }
47.51433 ++  return str;
47.51434 ++}
47.51435 ++
47.51436 ++static void
47.51437 ++lt_error_core (int exit_status, const char * mode,
47.51438 ++	  const char * message, va_list ap)
47.51439 ++{
47.51440 ++  fprintf (stderr, "%s: %s: ", program_name, mode);
47.51441 ++  vfprintf (stderr, message, ap);
47.51442 ++  fprintf (stderr, ".\n");
47.51443 ++
47.51444 ++  if (exit_status >= 0)
47.51445 ++    exit (exit_status);
47.51446 ++}
47.51447 ++
47.51448 ++void
47.51449 ++lt_fatal (const char *message, ...)
47.51450 ++{
47.51451 ++  va_list ap;
47.51452 ++  va_start (ap, message);
47.51453 ++  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
47.51454 ++  va_end (ap);
47.51455 ++}
47.51456 ++EOF
47.51457 ++	  # we should really use a build-platform specific compiler
47.51458 ++	  # here, but OTOH, the wrappers (shell script and this C one)
47.51459 ++	  # are only useful if you want to execute the "real" binary.
47.51460 ++	  # Since the "real" binary is built for $host, then this
47.51461 ++	  # wrapper might as well be built for $host, too.
47.51462 ++	  $opt_dry_run || $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
47.51463 ++	  ;;
47.51464 ++	esac
47.51465 ++	$RM $output
47.51466 ++	trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
47.51467 ++
47.51468 ++	$ECHO > $output "\
47.51469 ++#! $SHELL
47.51470 ++
47.51471 ++# $output - temporary wrapper script for $objdir/$outputname
47.51472 ++# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
47.51473 ++#
47.51474 ++# The $output program cannot be directly executed until all the libtool
47.51475 ++# libraries that it depends on are installed.
47.51476 ++#
47.51477 ++# This wrapper script should never be moved out of the build directory.
47.51478 ++# If it is, it will not operate correctly.
47.51479 ++
47.51480 ++# Sed substitution that helps us do robust quoting.  It backslashifies
47.51481 ++# metacharacters that are still active within double-quoted strings.
47.51482 ++Xsed='${SED} -e 1s/^X//'
47.51483 ++sed_quote_subst='$sed_quote_subst'
47.51484 ++
47.51485 ++# Be Bourne compatible
47.51486 ++if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
47.51487 ++  emulate sh
47.51488 ++  NULLCMD=:
47.51489 ++  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
47.51490 ++  # is contrary to our usage.  Disable this feature.
47.51491 ++  alias -g '\${1+\"\$@\"}'='\"\$@\"'
47.51492 ++  setopt NO_GLOB_SUBST
47.51493 ++else
47.51494 ++  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
47.51495 ++fi
47.51496 ++BIN_SH=xpg4; export BIN_SH # for Tru64
47.51497 ++DUALCASE=1; export DUALCASE # for MKS sh
47.51498 ++
47.51499 ++# The HP-UX ksh and POSIX shell print the target directory to stdout
47.51500 ++# if CDPATH is set.
47.51501 ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
47.51502 ++
47.51503 ++relink_command=\"$relink_command\"
47.51504 ++
47.51505 ++# This environment variable determines our operation mode.
47.51506 ++if test \"\$libtool_install_magic\" = \"$magic\"; then
47.51507 ++  # install mode needs the following variables:
47.51508 ++  generated_by_libtool_version='$macro_version'
47.51509 ++  notinst_deplibs='$notinst_deplibs'
47.51510 ++else
47.51511 ++  # When we are sourced in execute mode, \$file and \$ECHO are already set.
47.51512 ++  if test \"\$libtool_execute_magic\" != \"$magic\"; then
47.51513 ++    ECHO=\"$qecho\"
47.51514 ++    file=\"\$0\"
47.51515 ++    # Make sure echo works.
47.51516 ++    if test \"X\$1\" = X--no-reexec; then
47.51517 ++      # Discard the --no-reexec flag, and continue.
47.51518 ++      shift
47.51519 ++    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
47.51520 ++      # Yippee, \$ECHO works!
47.51521 ++      :
47.51522 ++    else
47.51523 ++      # Restart under the correct shell, and then maybe \$ECHO will work.
47.51524 ++      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
47.51525 ++    fi
47.51526 ++  fi\
47.51527 ++"
47.51528 ++	$ECHO >> $output "\
47.51529 ++
47.51530 ++  # Find the directory that this script lives in.
47.51531 ++  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
47.51532 ++  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
47.51533 ++
47.51534 ++  # Follow symbolic links until we get to the real thisdir.
47.51535 ++  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
47.51536 ++  while test -n \"\$file\"; do
47.51537 ++    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
47.51538 ++
47.51539 ++    # If there was a directory component, then change thisdir.
47.51540 ++    if test \"x\$destdir\" != \"x\$file\"; then
47.51541 ++      case \"\$destdir\" in
47.51542 ++      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
47.51543 ++      *) thisdir=\"\$thisdir/\$destdir\" ;;
47.51544 ++      esac
47.51545 ++    fi
47.51546 ++
47.51547 ++    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
47.51548 ++    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
47.51549 ++  done
47.51550 ++
47.51551 ++  # Try to get the absolute directory name.
47.51552 ++  absdir=\`cd \"\$thisdir\" && pwd\`
47.51553 ++  test -n \"\$absdir\" && thisdir=\"\$absdir\"
47.51554 ++"
47.51555 ++
47.51556 ++	if test "$fast_install" = yes; then
47.51557 ++	  $ECHO >> $output "\
47.51558 ++  program=lt-'$outputname'$exeext
47.51559 ++  progdir=\"\$thisdir/$objdir\"
47.51560 ++
47.51561 ++  if test ! -f \"\$progdir/\$program\" ||
47.51562 ++     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
47.51563 ++       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
47.51564 ++
47.51565 ++    file=\"\$\$-\$program\"
47.51566 ++
47.51567 ++    if test ! -d \"\$progdir\"; then
47.51568 ++      $MKDIR \"\$progdir\"
47.51569 ++    else
47.51570 ++      $RM \"\$progdir/\$file\"
47.51571 ++    fi"
47.51572 ++
47.51573 ++	  $ECHO >> $output "\
47.51574 ++
47.51575 ++    # relink executable if necessary
47.51576 ++    if test -n \"\$relink_command\"; then
47.51577 ++      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
47.51578 ++      else
47.51579 ++	$ECHO \"\$relink_command_output\" >&2
47.51580 ++	$RM \"\$progdir/\$file\"
47.51581 ++	exit 1
47.51582 ++      fi
47.51583 ++    fi
47.51584 ++
47.51585 ++    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
47.51586 ++    { $RM \"\$progdir/\$program\";
47.51587 ++      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
47.51588 ++    $RM \"\$progdir/\$file\"
47.51589 ++  fi"
47.51590 ++	else
47.51591 ++	  $ECHO >> $output "\
47.51592 ++  program='$outputname'
47.51593 ++  progdir=\"\$thisdir/$objdir\"
47.51594 ++"
47.51595 ++	fi
47.51596 ++
47.51597 ++	$ECHO >> $output "\
47.51598 ++
47.51599 ++  if test -f \"\$progdir/\$program\"; then"
47.51600 ++
47.51601 ++	# Export our shlibpath_var if we have one.
47.51602 ++	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
47.51603 ++	  $ECHO >> $output "\
47.51604 ++    # Add our own library path to $shlibpath_var
47.51605 ++    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
47.51606 ++
47.51607 ++    # Some systems cannot cope with colon-terminated $shlibpath_var
47.51608 ++    # The second colon is a workaround for a bug in BeOS R4 sed
47.51609 ++    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
47.51610 ++
47.51611 ++    export $shlibpath_var
47.51612 ++"
47.51613 ++	fi
47.51614 ++
47.51615 ++	# fixup the dll searchpath if we need to.
47.51616 ++	if test -n "$dllsearchpath"; then
47.51617 ++	  $ECHO >> $output "\
47.51618 ++    # Add the dll search path components to the executable PATH
47.51619 ++    PATH=$dllsearchpath:\$PATH
47.51620 ++"
47.51621 ++	fi
47.51622 ++
47.51623 ++	$ECHO >> $output "\
47.51624 ++    if test \"\$libtool_execute_magic\" != \"$magic\"; then
47.51625 ++      # Run the actual program with our arguments.
47.51626 ++"
47.51627 ++	case $host in
47.51628 ++	# Backslashes separate directories on plain windows
47.51629 ++	*-*-mingw | *-*-os2*)
47.51630 ++	  $ECHO >> $output "\
47.51631 ++      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
47.51632 ++"
47.51633 ++	  ;;
47.51634 ++
47.51635 ++	*)
47.51636 ++	  $ECHO >> $output "\
47.51637 ++      exec \"\$progdir/\$program\" \${1+\"\$@\"}
47.51638 ++"
47.51639 ++	  ;;
47.51640 ++	esac
47.51641 ++	$ECHO >> $output "\
47.51642 ++      \$ECHO \"\$0: cannot exec \$program \$*\"
47.51643 ++      exit 1
47.51644 ++    fi
47.51645 ++  else
47.51646 ++    # The program doesn't exist.
47.51647 ++    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
47.51648 ++    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
47.51649 ++    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
47.51650 ++    exit 1
47.51651 ++  fi
47.51652 ++fi\
47.51653 ++"
47.51654 ++	chmod +x $output
47.51655 ++      }
47.51656 ++      exit $EXIT_SUCCESS
47.51657 ++      ;;
47.51658 ++    esac
47.51659 ++
47.51660 ++    # See if we need to build an old-fashioned archive.
47.51661 ++    for oldlib in $oldlibs; do
47.51662 ++
47.51663 ++      if test "$build_libtool_libs" = convenience; then
47.51664 ++	oldobjs="$libobjs_save $symfileobj"
47.51665 ++	addlibs="$convenience"
47.51666 ++	build_libtool_libs=no
47.51667 ++      else
47.51668 ++	if test "$build_libtool_libs" = module; then
47.51669 ++	  oldobjs="$libobjs_save"
47.51670 ++	  build_libtool_libs=no
47.51671 ++	else
47.51672 ++	  oldobjs="$old_deplibs $non_pic_objects"
47.51673 ++	  if test "$preload" = yes && test -f "$symfileobj"; then
47.51674 ++	    oldobjs="$oldobjs $symfileobj"
47.51675 ++	  fi
47.51676 ++	fi
47.51677 ++	addlibs="$old_convenience"
47.51678 ++      fi
47.51679 ++
47.51680 ++      if test -n "$addlibs"; then
47.51681 ++	gentop="$output_objdir/${outputname}x"
47.51682 ++	generated="$generated $gentop"
47.51683 ++
47.51684 ++	func_extract_archives $gentop $addlibs
47.51685 ++	oldobjs="$oldobjs $func_extract_archives_result"
47.51686 ++      fi
47.51687 ++
47.51688 ++      # Do each command in the archive commands.
47.51689 ++      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
47.51690 ++	cmds=$old_archive_from_new_cmds
47.51691 ++      else
47.51692 ++
47.51693 ++	# Add any objects from preloaded convenience libraries
47.51694 ++	if test -n "$dlprefiles"; then
47.51695 ++	  gentop="$output_objdir/${outputname}x"
47.51696 ++	  generated="$generated $gentop"
47.51697 ++
47.51698 ++	  func_extract_archives $gentop $dlprefiles
47.51699 ++	  oldobjs="$oldobjs $func_extract_archives_result"
47.51700 ++	fi
47.51701 ++
47.51702 ++	# POSIX demands no paths to be encoded in archives.  We have
47.51703 ++	# to avoid creating archives with duplicate basenames if we
47.51704 ++	# might have to extract them afterwards, e.g., when creating a
47.51705 ++	# static archive out of a convenience library, or when linking
47.51706 ++	# the entirety of a libtool archive into another (currently
47.51707 ++	# not supported by libtool).
47.51708 ++	if (for obj in $oldobjs
47.51709 ++	    do
47.51710 ++	      func_basename "$obj"
47.51711 ++	      $ECHO "$func_basename_result"
47.51712 ++	    done | sort | sort -uc >/dev/null 2>&1); then
47.51713 ++	  :
47.51714 ++	else
47.51715 ++	  $ECHO "copying selected object files to avoid basename conflicts..."
47.51716 ++	  gentop="$output_objdir/${outputname}x"
47.51717 ++	  generated="$generated $gentop"
47.51718 ++	  func_mkdir_p "$gentop"
47.51719 ++	  save_oldobjs=$oldobjs
47.51720 ++	  oldobjs=
47.51721 ++	  counter=1
47.51722 ++	  for obj in $save_oldobjs
47.51723 ++	  do
47.51724 ++	    func_basename "$obj"
47.51725 ++	    objbase="$func_basename_result"
47.51726 ++	    case " $oldobjs " in
47.51727 ++	    " ") oldobjs=$obj ;;
47.51728 ++	    *[\ /]"$objbase "*)
47.51729 ++	      while :; do
47.51730 ++		# Make sure we don't pick an alternate name that also
47.51731 ++		# overlaps.
47.51732 ++		newobj=lt$counter-$objbase
47.51733 ++		counter=`expr $counter + 1`
47.51734 ++		case " $oldobjs " in
47.51735 ++		*[\ /]"$newobj "*) ;;
47.51736 ++		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
47.51737 ++		esac
47.51738 ++	      done
47.51739 ++	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
47.51740 ++	      oldobjs="$oldobjs $gentop/$newobj"
47.51741 ++	      ;;
47.51742 ++	    *) oldobjs="$oldobjs $obj" ;;
47.51743 ++	    esac
47.51744 ++	  done
47.51745 ++	fi
47.51746 ++	eval cmds=\"$old_archive_cmds\"
47.51747 ++
47.51748 ++	if len=`expr "X$cmds" : ".*" 2>/dev/null` &&
47.51749 ++	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
47.51750 ++	  cmds=$old_archive_cmds
47.51751 ++	else
47.51752 ++	  # the command line is too long to link in one step, link in parts
47.51753 ++	  func_echo "using piecewise archive linking..."
47.51754 ++	  save_RANLIB=$RANLIB
47.51755 ++	  RANLIB=:
47.51756 ++	  objlist=
47.51757 ++	  concat_cmds=
47.51758 ++	  save_oldobjs=$oldobjs
47.51759 ++	  # Is there a better way of finding the last object in the list?
47.51760 ++	  for obj in $save_oldobjs
47.51761 ++	  do
47.51762 ++	    last_oldobj=$obj
47.51763 ++	  done
47.51764 ++	  for obj in $save_oldobjs
47.51765 ++	  do
47.51766 ++	    oldobjs="$objlist $obj"
47.51767 ++	    objlist="$objlist $obj"
47.51768 ++	    eval test_cmds=\"$old_archive_cmds\"
47.51769 ++	    if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
47.51770 ++	       test "$len" -le "$max_cmd_len"; then
47.51771 ++	      :
47.51772 ++	    else
47.51773 ++	      # the above command should be used before it gets too long
47.51774 ++	      oldobjs=$objlist
47.51775 ++	      if test "$obj" = "$last_oldobj" ; then
47.51776 ++		RANLIB=$save_RANLIB
47.51777 ++	      fi
47.51778 ++	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
47.51779 ++	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
47.51780 ++	      objlist=
47.51781 ++	    fi
47.51782 ++	  done
47.51783 ++	  RANLIB=$save_RANLIB
47.51784 ++	  oldobjs=$objlist
47.51785 ++	  if test "X$oldobjs" = "X" ; then
47.51786 ++	    eval cmds=\"\$concat_cmds\"
47.51787 ++	  else
47.51788 ++	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
47.51789 ++	  fi
47.51790 ++	fi
47.51791 ++      fi
47.51792 ++      func_execute_cmds "$cmds" 'exit $?'
47.51793 ++    done
47.51794 ++
47.51795 ++    test -n "$generated" && \
47.51796 ++      func_show_eval "${RM}r$generated"
47.51797 ++
47.51798 ++    # Now create the libtool archive.
47.51799 ++    case $output in
47.51800 ++    *.la)
47.51801 ++      old_library=
47.51802 ++      test "$build_old_libs" = yes && old_library="$libname.$libext"
47.51803 ++      func_echo "creating $output"
47.51804 ++
47.51805 ++      # Preserve any variables that may affect compiler behavior
47.51806 ++      for var in $variables_saved_for_relink; do
47.51807 ++	if eval test -z \"\${$var+set}\"; then
47.51808 ++	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
47.51809 ++	elif eval var_value=\$$var; test -z "$var_value"; then
47.51810 ++	  relink_command="$var=; export $var; $relink_command"
47.51811 ++	else
47.51812 ++	  func_quote_for_eval "$var_value"
47.51813 ++	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
47.51814 ++	fi
47.51815 ++      done
47.51816 ++      # Quote the link command for shipping.
47.51817 ++      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
47.51818 ++      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
47.51819 ++      if test "$hardcode_automatic" = yes ; then
47.51820 ++	relink_command=
47.51821 ++      fi
47.51822 ++
47.51823 ++      # Only create the output if not a dry run.
47.51824 ++      $opt_dry_run || {
47.51825 ++	for installed in no yes; do
47.51826 ++	  if test "$installed" = yes; then
47.51827 ++	    if test -z "$install_libdir"; then
47.51828 ++	      break
47.51829 ++	    fi
47.51830 ++	    output="$output_objdir/$outputname"i
47.51831 ++	    # Replace all uninstalled libtool libraries with the installed ones
47.51832 ++	    newdependency_libs=
47.51833 ++	    for deplib in $dependency_libs; do
47.51834 ++	      case $deplib in
47.51835 ++	      *.la)
47.51836 ++		func_basename "$deplib"
47.51837 ++		name="$func_basename_result"
47.51838 ++		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
47.51839 ++		test -z "$libdir" && \
47.51840 ++		  func_fatal_error "\`$deplib' is not a valid libtool archive"
47.51841 ++		newdependency_libs="$newdependency_libs $libdir/$name"
47.51842 ++		;;
47.51843 ++	      *) newdependency_libs="$newdependency_libs $deplib" ;;
47.51844 ++	      esac
47.51845 ++	    done
47.51846 ++	    dependency_libs="$newdependency_libs"
47.51847 ++	    newdlfiles=
47.51848 ++
47.51849 ++	    for lib in $dlfiles; do
47.51850 ++	      case $lib in
47.51851 ++	      *.la)
47.51852 ++	        func_basename "$lib"
47.51853 ++		name="$func_basename_result"
47.51854 ++		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
47.51855 ++		test -z "$libdir" && \
47.51856 ++		  func_fatal_error "\`$lib' is not a valid libtool archive"
47.51857 ++		newdlfiles="$newdlfiles $libdir/$name"
47.51858 ++		;;
47.51859 ++	      *) newdlfiles="$newdlfiles $lib" ;;
47.51860 ++	      esac
47.51861 ++	    done
47.51862 ++	    dlfiles="$newdlfiles"
47.51863 ++	    newdlprefiles=
47.51864 ++	    for lib in $dlprefiles; do
47.51865 ++	      case $lib in
47.51866 ++	      *.la)
47.51867 ++		# Only pass preopened files to the pseudo-archive (for
47.51868 ++		# eventual linking with the app. that links it) if we
47.51869 ++		# didn't already link the preopened objects directly into
47.51870 ++		# the library:
47.51871 ++		func_basename "$lib"
47.51872 ++		name="$func_basename_result"
47.51873 ++		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
47.51874 ++		test -z "$libdir" && \
47.51875 ++		  func_fatal_error "\`$lib' is not a valid libtool archive"
47.51876 ++		newdlprefiles="$newdlprefiles $libdir/$name"
47.51877 ++		;;
47.51878 ++	      esac
47.51879 ++	    done
47.51880 ++	    dlprefiles="$newdlprefiles"
47.51881 ++	  else
47.51882 ++	    newdlfiles=
47.51883 ++	    for lib in $dlfiles; do
47.51884 ++	      case $lib in
47.51885 ++		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
47.51886 ++		*) abs=`pwd`"/$lib" ;;
47.51887 ++	      esac
47.51888 ++	      newdlfiles="$newdlfiles $abs"
47.51889 ++	    done
47.51890 ++	    dlfiles="$newdlfiles"
47.51891 ++	    newdlprefiles=
47.51892 ++	    for lib in $dlprefiles; do
47.51893 ++	      case $lib in
47.51894 ++		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
47.51895 ++		*) abs=`pwd`"/$lib" ;;
47.51896 ++	      esac
47.51897 ++	      newdlprefiles="$newdlprefiles $abs"
47.51898 ++	    done
47.51899 ++	    dlprefiles="$newdlprefiles"
47.51900 ++	  fi
47.51901 ++	  $RM $output
47.51902 ++	  # place dlname in correct position for cygwin
47.51903 ++	  tdlname=$dlname
47.51904 ++	  case $host,$output,$installed,$module,$dlname in
47.51905 ++	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
47.51906 ++	  esac
47.51907 ++	  $ECHO > $output "\
47.51908 ++# $outputname - a libtool library file
47.51909 ++# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
47.51910 ++#
47.51911 ++# Please DO NOT delete this file!
47.51912 ++# It is necessary for linking the library.
47.51913 ++
47.51914 ++# The name that we can dlopen(3).
47.51915 ++dlname='$tdlname'
47.51916 ++
47.51917 ++# Names of this library.
47.51918 ++library_names='$library_names'
47.51919 ++
47.51920 ++# The name of the static archive.
47.51921 ++old_library='$old_library'
47.51922 ++
47.51923 ++# Linker flags that can not go in dependency_libs.
47.51924 ++inherited_linker_flags='$new_inherited_linker_flags'
47.51925 ++
47.51926 ++# Libraries that this one depends upon.
47.51927 ++dependency_libs='$dependency_libs'
47.51928 ++
47.51929 ++# Names of additional weak libraries provided by this library
47.51930 ++weak_library_names='$weak_libs'
47.51931 ++
47.51932 ++# Version information for $libname.
47.51933 ++current=$current
47.51934 ++age=$age
47.51935 ++revision=$revision
47.51936 ++
47.51937 ++# Is this an already installed library?
47.51938 ++installed=$installed
47.51939 ++
47.51940 ++# Should we warn about portability when linking against -modules?
47.51941 ++shouldnotlink=$module
47.51942 ++
47.51943 ++# Files to dlopen/dlpreopen
47.51944 ++dlopen='$dlfiles'
47.51945 ++dlpreopen='$dlprefiles'
47.51946 ++
47.51947 ++# Directory that this library needs to be installed in:
47.51948 ++libdir='$install_libdir'"
47.51949 ++	  if test "$installed" = no && test "$need_relink" = yes; then
47.51950 ++	    $ECHO >> $output "\
47.51951 ++relink_command=\"$relink_command\""
47.51952 ++	  fi
47.51953 ++	done
47.51954 ++      }
47.51955 ++
47.51956 ++      # Do a symbolic link so that the libtool archive can be found in
47.51957 ++      # LD_LIBRARY_PATH before the program is installed.
47.51958 ++      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
47.51959 ++      ;;
47.51960 ++    esac
47.51961 ++    exit $EXIT_SUCCESS
47.51962 ++}
47.51963 ++
47.51964 ++{ test "$mode" = link || test "$mode" = relink; } &&
47.51965 ++    func_mode_link ${1+"$@"}
47.51966 ++
47.51967 ++
47.51968 ++# func_mode_uninstall arg...
47.51969 ++func_mode_uninstall ()
47.51970 ++{
47.51971 ++    $opt_debug
47.51972 ++    RM="$nonopt"
47.51973 ++    files=
47.51974 ++    rmforce=
47.51975 ++    exit_status=0
47.51976 ++
47.51977 ++    # This variable tells wrapper scripts just to set variables rather
47.51978 ++    # than running their programs.
47.51979 ++    libtool_install_magic="$magic"
47.51980 ++
47.51981 ++    for arg
47.51982 ++    do
47.51983 ++      case $arg in
47.51984 ++      -f) RM="$RM $arg"; rmforce=yes ;;
47.51985 ++      -*) RM="$RM $arg" ;;
47.51986 ++      *) files="$files $arg" ;;
47.51987 ++      esac
47.51988 ++    done
47.51989 ++
47.51990 ++    test -z "$RM" && \
47.51991 ++      func_fatal_help "you must specify an RM program"
47.51992 ++
47.51993 ++    rmdirs=
47.51994 ++
47.51995 ++    origobjdir="$objdir"
47.51996 ++    for file in $files; do
47.51997 ++      func_dirname "$file" "" "."
47.51998 ++      dir="$func_dirname_result"
47.51999 ++      if test "X$dir" = X.; then
47.52000 ++	objdir="$origobjdir"
47.52001 ++      else
47.52002 ++	objdir="$dir/$origobjdir"
47.52003 ++      fi
47.52004 ++      func_basename "$file"
47.52005 ++      name="$func_basename_result"
47.52006 ++      test "$mode" = uninstall && objdir="$dir"
47.52007 ++
47.52008 ++      # Remember objdir for removal later, being careful to avoid duplicates
47.52009 ++      if test "$mode" = clean; then
47.52010 ++	case " $rmdirs " in
47.52011 ++	  *" $objdir "*) ;;
47.52012 ++	  *) rmdirs="$rmdirs $objdir" ;;
47.52013 ++	esac
47.52014 ++      fi
47.52015 ++
47.52016 ++      # Don't error if the file doesn't exist and rm -f was used.
47.52017 ++      if { test -L "$file"; } >/dev/null 2>&1 ||
47.52018 ++	 { test -h "$file"; } >/dev/null 2>&1 ||
47.52019 ++	 test -f "$file"; then
47.52020 ++	:
47.52021 ++      elif test -d "$file"; then
47.52022 ++	exit_status=1
47.52023 ++	continue
47.52024 ++      elif test "$rmforce" = yes; then
47.52025 ++	continue
47.52026 ++      fi
47.52027 ++
47.52028 ++      rmfiles="$file"
47.52029 ++
47.52030 ++      case $name in
47.52031 ++      *.la)
47.52032 ++	# Possibly a libtool archive, so verify it.
47.52033 ++	if func_lalib_p "$file"; then
47.52034 ++	  func_source $dir/$name
47.52035 ++
47.52036 ++	  # Delete the libtool libraries and symlinks.
47.52037 ++	  for n in $library_names; do
47.52038 ++	    rmfiles="$rmfiles $objdir/$n"
47.52039 ++	  done
47.52040 ++	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
47.52041 ++
47.52042 ++	  case "$mode" in
47.52043 ++	  clean)
47.52044 ++	    case "  $library_names " in
47.52045 ++	    # "  " in the beginning catches empty $dlname
47.52046 ++	    *" $dlname "*) ;;
47.52047 ++	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
47.52048 ++	    esac
47.52049 ++	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
47.52050 ++	    ;;
47.52051 ++	  uninstall)
47.52052 ++	    if test -n "$library_names"; then
47.52053 ++	      # Do each command in the postuninstall commands.
47.52054 ++	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
47.52055 ++	    fi
47.52056 ++
47.52057 ++	    if test -n "$old_library"; then
47.52058 ++	      # Do each command in the old_postuninstall commands.
47.52059 ++	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
47.52060 ++	    fi
47.52061 ++	    # FIXME: should reinstall the best remaining shared library.
47.52062 ++	    ;;
47.52063 ++	  esac
47.52064 ++	fi
47.52065 ++	;;
47.52066 ++
47.52067 ++      *.lo)
47.52068 ++	# Possibly a libtool object, so verify it.
47.52069 ++	if func_lalib_p "$file"; then
47.52070 ++
47.52071 ++	  # Read the .lo file
47.52072 ++	  func_source $dir/$name
47.52073 ++
47.52074 ++	  # Add PIC object to the list of files to remove.
47.52075 ++	  if test -n "$pic_object" &&
47.52076 ++	     test "$pic_object" != none; then
47.52077 ++	    rmfiles="$rmfiles $dir/$pic_object"
47.52078 ++	  fi
47.52079 ++
47.52080 ++	  # Add non-PIC object to the list of files to remove.
47.52081 ++	  if test -n "$non_pic_object" &&
47.52082 ++	     test "$non_pic_object" != none; then
47.52083 ++	    rmfiles="$rmfiles $dir/$non_pic_object"
47.52084 ++	  fi
47.52085 ++	fi
47.52086 ++	;;
47.52087 ++
47.52088 ++      *)
47.52089 ++	if test "$mode" = clean ; then
47.52090 ++	  noexename=$name
47.52091 ++	  case $file in
47.52092 ++	  *.exe)
47.52093 ++	    func_stripname '' '.exe' "$file"
47.52094 ++	    file=$func_stripname_result
47.52095 ++	    func_stripname '' '.exe' "$name"
47.52096 ++	    noexename=$func_stripname_result
47.52097 ++	    # $file with .exe has already been added to rmfiles,
47.52098 ++	    # add $file without .exe
47.52099 ++	    rmfiles="$rmfiles $file"
47.52100 ++	    ;;
47.52101 ++	  esac
47.52102 ++	  # Do a test to see if this is a libtool program.
47.52103 ++	  if func_ltwrapper_p "$file"; then
47.52104 ++	    relink_command=
47.52105 ++	    func_source $dir/$noexename
47.52106 ++
47.52107 ++	    # note $name still contains .exe if it was in $file originally
47.52108 ++	    # as does the version of $file that was added into $rmfiles
47.52109 ++	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
47.52110 ++	    if test "$fast_install" = yes && test -n "$relink_command"; then
47.52111 ++	      rmfiles="$rmfiles $objdir/lt-$name"
47.52112 ++	    fi
47.52113 ++	    if test "X$noexename" != "X$name" ; then
47.52114 ++	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
47.52115 ++	    fi
47.52116 ++	  fi
47.52117 ++	fi
47.52118 ++	;;
47.52119 ++      esac
47.52120 ++      func_show_eval "$RM $rmfiles" 'exit_status=1'
47.52121 ++    done
47.52122 ++    objdir="$origobjdir"
47.52123 ++
47.52124 ++    # Try to remove the ${objdir}s in the directories where we deleted files
47.52125 ++    for dir in $rmdirs; do
47.52126 ++      if test -d "$dir"; then
47.52127 ++	func_show_eval "rmdir $dir >/dev/null 2>&1"
47.52128 ++      fi
47.52129 ++    done
47.52130 ++
47.52131 ++    exit $exit_status
47.52132 ++}
47.52133 ++
47.52134 ++{ test "$mode" = uninstall || test "$mode" = clean; } &&
47.52135 ++    func_mode_uninstall ${1+"$@"}
47.52136 ++
47.52137 ++test -z "$mode" && {
47.52138 ++  help="$generic_help"
47.52139 ++  func_fatal_help "you must specify a MODE"
47.52140 ++}
47.52141 ++
47.52142 ++test -z "$exec_cmd" && \
47.52143 ++  func_fatal_help "invalid operation mode \`$mode'"
47.52144 ++
47.52145 ++if test -n "$exec_cmd"; then
47.52146 ++  eval exec "$exec_cmd"
47.52147 ++  exit $EXIT_FAILURE
47.52148 ++fi
47.52149 ++
47.52150 ++exit $exit_status
47.52151 ++
47.52152 ++
47.52153 ++# The TAGs below are defined such that we never get into a situation
47.52154 ++# in which we disable both kinds of libraries.  Given conflicting
47.52155 ++# choices, we go for a static library, that is the most portable,
47.52156 ++# since we can't tell whether shared libraries were disabled because
47.52157 ++# the user asked for that or because the platform doesn't support
47.52158 ++# them.  This is particularly important on AIX, because we don't
47.52159 ++# support having both static and shared libraries enabled at the same
47.52160 ++# time on that platform, so we default to a shared-only configuration.
47.52161 ++# If a disable-shared tag is given, we'll fallback to a static-only
47.52162 ++# configuration.  But we'll never go from static-only to shared-only.
47.52163 ++
47.52164 ++# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
47.52165 ++build_libtool_libs=no
47.52166 ++build_old_libs=yes
47.52167 ++# ### END LIBTOOL TAG CONFIG: disable-shared
47.52168 ++
47.52169 ++# ### BEGIN LIBTOOL TAG CONFIG: disable-static
47.52170 ++build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
47.52171 ++# ### END LIBTOOL TAG CONFIG: disable-static
47.52172 ++
47.52173 ++# Local Variables:
47.52174 ++# mode:shell-script
47.52175 ++# sh-indentation:2
47.52176 ++# End:
47.52177 ++# vi:sw=2
47.52178 +--- a/bfd/Makefile.in
47.52179 ++++ b/bfd/Makefile.in
47.52180 +@@ -312,6 +312,7 @@ ALL_MACHINES = \
47.52181 + 	cpu-arc.lo \
47.52182 + 	cpu-arm.lo \
47.52183 + 	cpu-avr.lo \
47.52184 ++	cpu-avr32.lo \
47.52185 + 	cpu-bfin.lo \
47.52186 + 	cpu-cr16.lo \
47.52187 + 	cpu-cr16c.lo \
47.52188 +@@ -493,6 +494,7 @@ BFD32_BACKENDS = \
47.52189 + 	elf32-arc.lo \
47.52190 + 	elf32-arm.lo \
47.52191 + 	elf32-avr.lo \
47.52192 ++	elf32-avr32.lo \
47.52193 + 	elf32-bfin.lo \
47.52194 + 	elf32-cr16.lo \
47.52195 + 	elf32-cr16c.lo \
47.52196 +@@ -1908,6 +1910,10 @@ elf32-cr16.lo: elf32-cr16.c $(INCDIR)/fi
47.52197 +   $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h elf-bfd.h \
47.52198 +   $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
47.52199 +   $(INCDIR)/elf/cr16.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
47.52200 ++elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \
47.52201 ++  $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
47.52202 ++  $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \
47.52203 ++  elf32-target.h
47.52204 + elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \
47.52205 +   $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \
47.52206 +   $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
47.52207 +--- /dev/null
47.52208 ++++ b/bfd/po/Makefile.in
47.52209 +@@ -0,0 +1,297 @@
47.52210 ++# Makefile for program source directory in GNU NLS utilities package.
47.52211 ++# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
47.52212 ++# Copyright 2001, 2003, 2006 Free Software Foundation, Inc.
47.52213 ++#
47.52214 ++# This file may be copied and used freely without restrictions.  It can
47.52215 ++# be used in projects which are not available under the GNU Public License
47.52216 ++# but which still want to provide support for the GNU gettext functionality.
47.52217 ++# Please note that the actual code is *not* freely available.
47.52218 ++
47.52219 ++PACKAGE = bfd
47.52220 ++VERSION = 2.18.atmel.1.0.1.avr32linux.1
47.52221 ++
47.52222 ++SHELL = /bin/sh
47.52223 ++
47.52224 ++
47.52225 ++srcdir = .
47.52226 ++top_srcdir = ..
47.52227 ++
47.52228 ++top_builddir = ..
47.52229 ++
47.52230 ++prefix = /usr
47.52231 ++exec_prefix = ${prefix}
47.52232 ++datadir = $(prefix)/share
47.52233 ++localedir = $(datadir)/locale
47.52234 ++gnulocaledir = $(prefix)/share/locale
47.52235 ++gettextsrcdir = $(prefix)/share/gettext/po
47.52236 ++subdir = po
47.52237 ++
47.52238 ++DESTDIR =
47.52239 ++
47.52240 ++INSTALL = /usr/bin/install -c
47.52241 ++INSTALL_DATA = ${INSTALL} -m 644
47.52242 ++MKINSTALLDIRS = $(top_builddir)/./../mkinstalldirs
47.52243 ++
47.52244 ++CC = gcc
47.52245 ++GENCAT = gencat
47.52246 ++GMSGFMT = PATH=../src:$$PATH /usr/bin/msgfmt
47.52247 ++MSGFMT = /usr/bin/msgfmt
47.52248 ++XGETTEXT = PATH=../src:$$PATH /usr/bin/xgettext
47.52249 ++MSGMERGE = PATH=../src:$$PATH msgmerge
47.52250 ++
47.52251 ++DEFS = -DHAVE_CONFIG_H
47.52252 ++CFLAGS = -g -O2
47.52253 ++CPPFLAGS = 
47.52254 ++
47.52255 ++INCLUDES = -I.. -I$(top_srcdir)/intl
47.52256 ++
47.52257 ++COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
47.52258 ++
47.52259 ++SOURCES = cat-id-tbl.c
47.52260 ++POFILES = @POFILES@
47.52261 ++GMOFILES = @GMOFILES@
47.52262 ++DISTFILES = ChangeLog Makefile.in.in SRC-POTFILES.in BLD-POTFILES.in $(PACKAGE).pot \
47.52263 ++stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
47.52264 ++
47.52265 ++# Note - the following line gets processed by bfd/configure and amended
47.52266 ++# to contain the full list of source dir POTFILES.
47.52267 ++SRC-POTFILES = \
47.52268 ++
47.52269 ++# Note - the following line gets processed by bfd/configure and amended
47.52270 ++# to contain the full list of build dir POTFILES.
47.52271 ++BLD-POTFILES = \
47.52272 ++
47.52273 ++CATALOGS =  da.gmo es.gmo fr.gmo ja.gmo ro.gmo rw.gmo sv.gmo tr.gmo vi.gmo zh_CN.gmo da.gmo es.gmo fr.gmo ja.gmo ro.gmo rw.gmo sv.gmo tr.gmo vi.gmo zh_CN.gmo
47.52274 ++CATOBJEXT = .gmo
47.52275 ++INSTOBJEXT = .mo
47.52276 ++
47.52277 ++.SUFFIXES:
47.52278 ++.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
47.52279 ++
47.52280 ++.c.o:
47.52281 ++	$(COMPILE) $<
47.52282 ++
47.52283 ++.po.pox:
47.52284 ++	$(MAKE) $(PACKAGE).pot
47.52285 ++	$(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
47.52286 ++
47.52287 ++.po.mo:
47.52288 ++	$(MSGFMT) -o $@ $<
47.52289 ++
47.52290 ++.po.gmo:
47.52291 ++	file=`echo $* | sed 's,.*/,,'`.gmo \
47.52292 ++	  && rm -f $$file && $(GMSGFMT) -o $$file $<
47.52293 ++
47.52294 ++.po.cat:
47.52295 ++	sed -f ../intl/po2msg.sed < $< > $*.msg \
47.52296 ++	  && rm -f $@ && $(GENCAT) $@ $*.msg
47.52297 ++
47.52298 ++
47.52299 ++all: all-yes
47.52300 ++
47.52301 ++all-yes: $(CATALOGS) # $(PACKAGE).pot
47.52302 ++all-no:
47.52303 ++
47.52304 ++$(srcdir)/$(PACKAGE).pot: $(SRC-POTFILES) $(BLD-POTFILES)
47.52305 ++	$(XGETTEXT) --default-domain=$(PACKAGE) \
47.52306 ++	  --directory=$(top_srcdir) \
47.52307 ++	  --add-comments --keyword=_ --keyword=N_ \
47.52308 ++	  --msgid-bugs-address=bug-binutils@gnu.org \
47.52309 ++	  --files-from=$(srcdir)/SRC-POTFILES.in 
47.52310 ++	$(XGETTEXT) --default-domain=$(PACKAGE) \
47.52311 ++	  --directory=.. \
47.52312 ++	  --directory=. \
47.52313 ++	  --add-comments --keyword=_ --keyword=N_ \
47.52314 ++	  --join-existing \
47.52315 ++	  --msgid-bugs-address=bug-binutils@gnu.org \
47.52316 ++	  --files-from=$(srcdir)/BLD-POTFILES.in
47.52317 ++	rm -f $(srcdir)/$(PACKAGE).pot
47.52318 ++	mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot
47.52319 ++
47.52320 ++$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
47.52321 ++$(srcdir)/stamp-cat-id: $(PACKAGE).pot
47.52322 ++	rm -f cat-id-tbl.tmp
47.52323 ++	sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
47.52324 ++		| sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
47.52325 ++	if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
47.52326 ++	  rm cat-id-tbl.tmp; \
47.52327 ++	else \
47.52328 ++	  echo cat-id-tbl.c changed; \
47.52329 ++	  rm -f $(srcdir)/cat-id-tbl.c; \
47.52330 ++	  mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
47.52331 ++	fi
47.52332 ++	cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
47.52333 ++
47.52334 ++
47.52335 ++install: install-exec install-data
47.52336 ++install-exec:
47.52337 ++install-info:
47.52338 ++install-html:
47.52339 ++install-data: install-data-yes
47.52340 ++install-data-no: all
47.52341 ++install-data-yes: all
47.52342 ++	if test -r $(MKINSTALLDIRS); then \
47.52343 ++	  $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
47.52344 ++	else \
47.52345 ++	  $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
47.52346 ++	fi
47.52347 ++	@catalogs='$(CATALOGS)'; \
47.52348 ++	for cat in $$catalogs; do \
47.52349 ++	  cat=`basename $$cat`; \
47.52350 ++	  case "$$cat" in \
47.52351 ++	    *.gmo) destdir=$(gnulocaledir);; \
47.52352 ++	    *)     destdir=$(localedir);; \
47.52353 ++	  esac; \
47.52354 ++	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
47.52355 ++	  dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
47.52356 ++	  if test -r $(MKINSTALLDIRS); then \
47.52357 ++	    $(MKINSTALLDIRS) $$dir; \
47.52358 ++	  else \
47.52359 ++	    $(top_srcdir)/mkinstalldirs $$dir; \
47.52360 ++	  fi; \
47.52361 ++	  if test -r $$cat; then \
47.52362 ++	    $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
47.52363 ++	    echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
47.52364 ++	  else \
47.52365 ++	    $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
47.52366 ++	    echo "installing $(srcdir)/$$cat as" \
47.52367 ++		 "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
47.52368 ++	  fi; \
47.52369 ++	  if test -r $$cat.m; then \
47.52370 ++	    $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
47.52371 ++	    echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
47.52372 ++	  else \
47.52373 ++	    if test -r $(srcdir)/$$cat.m ; then \
47.52374 ++	      $(INSTALL_DATA) $(srcdir)/$$cat.m \
47.52375 ++		$$dir/$(PACKAGE)$(INSTOBJEXT).m; \
47.52376 ++	      echo "installing $(srcdir)/$$cat as" \
47.52377 ++		   "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
47.52378 ++	    else \
47.52379 ++	      true; \
47.52380 ++	    fi; \
47.52381 ++	  fi; \
47.52382 ++	done
47.52383 ++	if test "$(PACKAGE)" = "gettext"; then \
47.52384 ++	  if test -r $(MKINSTALLDIRS); then \
47.52385 ++	    $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
47.52386 ++	  else \
47.52387 ++	    $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
47.52388 ++	  fi; \
47.52389 ++	  $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
47.52390 ++			  $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
47.52391 ++	else \
47.52392 ++	  : ; \
47.52393 ++	fi
47.52394 ++
47.52395 ++# Define this as empty until I found a useful application.
47.52396 ++installcheck:
47.52397 ++
47.52398 ++uninstall:
47.52399 ++	catalogs='$(CATALOGS)'; \
47.52400 ++	for cat in $$catalogs; do \
47.52401 ++	  cat=`basename $$cat`; \
47.52402 ++	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
47.52403 ++	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
47.52404 ++	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
47.52405 ++	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
47.52406 ++	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
47.52407 ++	done
47.52408 ++	rm -f $(DESTDIR)$(gettextsrcdir)/po-Makefile.in.in
47.52409 ++
47.52410 ++check: all
47.52411 ++
47.52412 ++cat-id-tbl.o: ../intl/libgettext.h
47.52413 ++
47.52414 ++html dvi pdf ps info tags TAGS ID:
47.52415 ++
47.52416 ++mostlyclean:
47.52417 ++	rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
47.52418 ++	rm -fr *.o
47.52419 ++
47.52420 ++clean: mostlyclean
47.52421 ++
47.52422 ++distclean: clean
47.52423 ++	rm -f Makefile Makefile.in *.mo *.msg *.cat *.cat.m
47.52424 ++	rm -f SRC-POTFILES BLD-POTFILES 
47.52425 ++
47.52426 ++maintainer-clean: distclean
47.52427 ++	@echo "This command is intended for maintainers to use;"
47.52428 ++	@echo "it deletes files that may require special tools to rebuild."
47.52429 ++	rm -f $(GMOFILES) SRC-POTFILES.in BLD-POTFILES.in
47.52430 ++
47.52431 ++distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
47.52432 ++dist distdir: update-po $(DISTFILES)
47.52433 ++	dists="$(DISTFILES)"; \
47.52434 ++	for file in $$dists; do \
47.52435 ++	  ln $(srcdir)/$$file $(distdir) 2> /dev/null \
47.52436 ++	    || cp -p $(srcdir)/$$file $(distdir); \
47.52437 ++	done
47.52438 ++
47.52439 ++update-po: Makefile
47.52440 ++	$(MAKE) $(PACKAGE).pot
47.52441 ++	PATH=`pwd`/../src:$$PATH; \
47.52442 ++	cd $(srcdir); \
47.52443 ++	catalogs='$(CATALOGS)'; \
47.52444 ++	for cat in $$catalogs; do \
47.52445 ++	  cat=`basename $$cat`; \
47.52446 ++	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
47.52447 ++	  mv $$lang.po $$lang.old.po; \
47.52448 ++	  echo "$$lang:"; \
47.52449 ++	  if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
47.52450 ++	    rm -f $$lang.old.po; \
47.52451 ++	  else \
47.52452 ++	    echo "msgmerge for $$cat failed!"; \
47.52453 ++	    rm -f $$lang.po; \
47.52454 ++	    mv $$lang.old.po $$lang.po; \
47.52455 ++	  fi; \
47.52456 ++	done
47.52457 ++
47.52458 ++SRC-POTFILES: SRC-POTFILES.in
47.52459 ++	( if test 'x$(srcdir)' != 'x.'; then \
47.52460 ++	    posrcprefix='$(top_srcdir)/'; \
47.52461 ++	  else \
47.52462 ++	    posrcprefix="../"; \
47.52463 ++	  fi; \
47.52464 ++	  rm -f $@-t $@ \
47.52465 ++	    && (sed -e '/^#/d' \
47.52466 ++	            -e '/^[ 	]*$$/d' \
47.52467 ++		    -e "s@.*@	$$posrcprefix& \\\\@" < $(srcdir)/$@.in \
47.52468 ++		| sed -e '$$s/\\$$//') > $@-t \
47.52469 ++	    && chmod a-w $@-t \
47.52470 ++	    && mv $@-t $@ )
47.52471 ++
47.52472 ++BLD-POTFILES: BLD-POTFILES.in
47.52473 ++	  ( rm -f $@-t $@ \
47.52474 ++	    && (sed -e '/^#/d' \
47.52475 ++	            -e '/^[ 	]*$$/d' \
47.52476 ++		    -e "s@.*@	../& \\\\@" < $(srcdir)/$@.in \
47.52477 ++		| sed -e '$$s/\\$$//') > $@-t \
47.52478 ++	    && chmod a-w $@-t \
47.52479 ++	    && mv $@-t $@ )
47.52480 ++
47.52481 ++SRC-POTFILES.in: # ../Makefile
47.52482 ++	cd .. && $(MAKE) po/SRC-POTFILES.in
47.52483 ++
47.52484 ++BLD-POTFILES.in: # ../Makefile
47.52485 ++	cd .. && $(MAKE) po/BLD-POTFILES.in
47.52486 ++
47.52487 ++# Note - The presence of SRC-POTFILES and BLD-POTFILES as dependencies
47.52488 ++# here breaks the implementation of the 'distclean' rule for maintainers.
47.52489 ++# This is because if 'make distclean' is run in the BFD directory, the
47.52490 ++# Makefile there will be deleted before 'distclean' is made here, and so
47.52491 ++# the dependency SRC-POTFILES -> SRC-POTFILES.in -> ../Makefile cannot
47.52492 ++# be satisfied.
47.52493 ++#
47.52494 ++# The SRC-POTFILES and BLD-POTFILES dependencies cannot be removed,
47.52495 ++# however since it is necessary that these files be built during
47.52496 ++# *configure* time, so that configure can insert them into the
47.52497 ++# po/Makefile that it is creating, so that the Makefile will have
47.52498 ++# the correct dependencies.
47.52499 ++Makefile: Make-in ../config.status SRC-POTFILES BLD-POTFILES
47.52500 ++	cd .. \
47.52501 ++	  && CONFIG_FILES=$(subdir)/Makefile.in:$(subdir)/Make-in \
47.52502 ++	     CONFIG_HEADERS= $(SHELL) ./config.status
47.52503 ++
47.52504 ++# Tell versions [3.59,3.63) of GNU make not to export all variables.
47.52505 ++# Otherwise a system limit (for SysV at least) may be exceeded.
47.52506 ++.NOEXPORT:
47.52507 +--- a/binutils/Makefile.in
47.52508 ++++ b/binutils/Makefile.in
47.52509 +@@ -1327,7 +1327,7 @@ readelf.o: readelf.c sysdep.h $(INCDIR)/
47.52510 +   $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h dwarf.h \
47.52511 +   $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
47.52512 +   $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/alpha.h \
47.52513 +-  $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h \
47.52514 ++  $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h\
47.52515 +   $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/crx.h \
47.52516 +   $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \
47.52517 +   $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/hppa.h \
47.52518 +--- a/ld/Makefile.in
47.52519 ++++ b/ld/Makefile.in
47.52520 +@@ -384,7 +384,34 @@ ALL_EMULATIONS = \
47.52521 + 	eavr3.o \
47.52522 + 	eavr4.o \
47.52523 + 	eavr5.o \
47.52524 +-	eavr6.o \
47.52525 ++    eavr6.o \
47.52526 ++	eavr32elf_ap7000.o \
47.52527 ++	eavr32elf_ap7001.o \
47.52528 ++	eavr32elf_ap7002.o \
47.52529 ++	eavr32elf_ap7200.o \
47.52530 ++	eavr32elf_uc3a0128.o \
47.52531 ++	eavr32elf_uc3a0256.o \
47.52532 ++	eavr32elf_uc3a0512.o \
47.52533 ++	eavr32elf_uc3a0512es.o \
47.52534 ++	eavr32elf_uc3a1128.o \
47.52535 ++	eavr32elf_uc3a1256.o \
47.52536 ++	eavr32elf_uc3a1512es.o \
47.52537 ++	eavr32elf_uc3a1512.o \
47.52538 ++	eavr32elf_uc3a364.o \
47.52539 ++	eavr32elf_uc3a364s.o \
47.52540 ++	eavr32elf_uc3a3128.o \
47.52541 ++	eavr32elf_uc3a3128s.o \
47.52542 ++	eavr32elf_uc3a3256.o \
47.52543 ++	eavr32elf_uc3a3256s.o \
47.52544 ++	eavr32elf_uc3b064.o \
47.52545 ++	eavr32elf_uc3b0128.o \
47.52546 ++	eavr32elf_uc3b0256es.o \
47.52547 ++	eavr32elf_uc3b0256.o \
47.52548 ++	eavr32elf_uc3b164.o \
47.52549 ++	eavr32elf_uc3b1128.o \
47.52550 ++	eavr32elf_uc3b1256es.o \
47.52551 ++	eavr32elf_uc3b1256.o \
47.52552 ++	eavr32linux.o \
47.52553 + 	ecoff_i860.o \
47.52554 + 	ecoff_sparc.o \
47.52555 + 	eelf32_spu.o \
47.52556 +@@ -1448,6 +1475,114 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
47.52557 +   $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
47.52558 +   ${GEN_DEPENDS}
47.52559 + 	${GENSCRIPTS} avr6 "$(tdir_avr2)"
47.52560 ++eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf.sh \
47.52561 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52562 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52563 ++	${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" avr32elf
47.52564 ++eavr32elf_ap7001.c: $(srcdir)/emulparams/avr32elf.sh \
47.52565 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52566 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52567 ++	${GENSCRIPTS} avr32elf_ap7001 "$(tdir_avr32)" avr32elf
47.52568 ++eavr32elf_ap7002.c: $(srcdir)/emulparams/avr32elf.sh \
47.52569 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52570 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52571 ++	${GENSCRIPTS} avr32elf_ap7002 "$(tdir_avr32)" avr32elf
47.52572 ++eavr32elf_ap7200.c: $(srcdir)/emulparams/avr32elf.sh \
47.52573 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52574 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52575 ++	${GENSCRIPTS} avr32elf_ap7200 "$(tdir_avr32)" avr32elf
47.52576 ++eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf.sh \
47.52577 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52578 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52579 ++	${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)" avr32elf
47.52580 ++eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf.sh \
47.52581 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52582 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52583 ++	${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)" avr32elf
47.52584 ++eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf.sh \
47.52585 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52586 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52587 ++	${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" avr32elf
47.52588 ++eavr32elf_uc3a0512es.c: $(srcdir)/emulparams/avr32elf.sh \
47.52589 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52590 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52591 ++	${GENSCRIPTS} avr32elf_uc3a0512es "$(tdir_avr32)" avr32elf
47.52592 ++eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf.sh \
47.52593 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52594 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52595 ++	${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)" avr32elf
47.52596 ++eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf.sh \
47.52597 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52598 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52599 ++	${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)" avr32elf
47.52600 ++eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf.sh \
47.52601 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52602 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52603 ++	${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)" avr32elf
47.52604 ++eavr32elf_uc3a1512es.c: $(srcdir)/emulparams/avr32elf.sh \
47.52605 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52606 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52607 ++	${GENSCRIPTS} avr32elf_uc3a1512es "$(tdir_avr32)" avr32elf
47.52608 ++eavr32elf_uc3a364.c: $(srcdir)/emulparams/avr32elf.sh \
47.52609 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52610 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52611 ++	${GENSCRIPTS} avr32elf_uc3a364 "$(tdir_avr32)" avr32elf
47.52612 ++eavr32elf_uc3a364s.c: $(srcdir)/emulparams/avr32elf.sh \
47.52613 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52614 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52615 ++	${GENSCRIPTS} avr32elf_uc3a364s "$(tdir_avr32)" avr32elf
47.52616 ++eavr32elf_uc3a3128.c: $(srcdir)/emulparams/avr32elf.sh \
47.52617 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52618 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52619 ++	${GENSCRIPTS} avr32elf_uc3a3128 "$(tdir_avr32)" avr32elf
47.52620 ++eavr32elf_uc3a3128s.c: $(srcdir)/emulparams/avr32elf.sh \
47.52621 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52622 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52623 ++	${GENSCRIPTS} avr32elf_uc3a3128s "$(tdir_avr32)" avr32elf
47.52624 ++eavr32elf_uc3a3256.c: $(srcdir)/emulparams/avr32elf.sh \
47.52625 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52626 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52627 ++	${GENSCRIPTS} avr32elf_uc3a3256 "$(tdir_avr32)" avr32elf
47.52628 ++eavr32elf_uc3a3256s.c: $(srcdir)/emulparams/avr32elf.sh \
47.52629 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52630 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52631 ++	${GENSCRIPTS} avr32elf_uc3a3256s "$(tdir_avr32)" avr32elf
47.52632 ++eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf.sh \
47.52633 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52634 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52635 ++	${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)" avr32elf
47.52636 ++eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf.sh \
47.52637 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52638 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52639 ++	${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)" avr32elf
47.52640 ++eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf.sh \
47.52641 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52642 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52643 ++	${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)" avr32elf
47.52644 ++eavr32elf_uc3b0256es.c: $(srcdir)/emulparams/avr32elf.sh \
47.52645 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52646 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52647 ++	${GENSCRIPTS} avr32elf_uc3b0256es "$(tdir_avr32)" avr32elf
47.52648 ++eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf.sh \
47.52649 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52650 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52651 ++	${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)" avr32elf
47.52652 ++eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf.sh \
47.52653 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52654 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52655 ++	${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)" avr32elf
47.52656 ++eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf.sh \
47.52657 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52658 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52659 ++	${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)" avr32elf
47.52660 ++eavr32elf_uc3b1256es.c: $(srcdir)/emulparams/avr32elf.sh \
47.52661 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52662 ++  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
47.52663 ++	${GENSCRIPTS} avr32elf_uc3b1256es "$(tdir_avr32)" avr32elf
47.52664 ++eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
47.52665 ++  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
47.52666 ++  $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
47.52667 ++	${GENSCRIPTS} avr32linux "$(tdir_avr32)"
47.52668 + ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
47.52669 +   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
47.52670 + 	${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
47.52671 +@@ -2679,7 +2814,9 @@ install-exec-local: ld-new$(EXEEXT)
47.52672 + 	  || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
47.52673 + 	fi
47.52674 + 
47.52675 +-install-data-local:
47.52676 ++# We want install to imply install-info as per GNU standards, despite the
47.52677 ++# cygnus option.
47.52678 ++install-data-local: install-info
47.52679 + 	$(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
47.52680 + 	for f in ldscripts/*; do \
47.52681 + 	  $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
47.52682 +--- /dev/null
47.52683 ++++ b/libiberty/required-list
47.52684 +@@ -0,0 +1 @@
47.52685 ++./regex.o ./cplus-dem.o ./cp-demangle.o ./md5.o ./alloca.o ./argv.o ./choose-temp.o ./concat.o ./cp-demint.o ./dyn-string.o ./fdmatch.o ./fibheap.o ./filename_cmp.o ./floatformat.o ./fnmatch.o ./fopen_unlocked.o ./getopt.o ./getopt1.o ./getpwd.o ./getruntime.o ./hashtab.o ./hex.o ./lbasename.o ./lrealpath.o ./make-relative-prefix.o ./make-temp-file.o ./objalloc.o ./obstack.o ./partition.o ./pexecute.o ./physmem.o ./pex-common.o ./pex-one.o ./pex-unix.o ./safe-ctype.o ./sort.o ./spaces.o ./splay-tree.o ./strerror.o ./strsignal.o ./unlink-if-ordinary.o ./xatexit.o ./xexit.o ./xmalloc.o ./xmemdup.o ./xstrdup.o ./xstrerror.o ./xstrndup.o
47.52686 +--- a/opcodes/configure
47.52687 ++++ b/opcodes/configure
47.52688 +@@ -11418,6 +11418,7 @@ if test x${all_targets} = xfalse ; then
47.52689 + 	bfd_arc_arch)		ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
47.52690 + 	bfd_arm_arch)		ta="$ta arm-dis.lo" ;;
47.52691 + 	bfd_avr_arch)		ta="$ta avr-dis.lo" ;;
47.52692 ++	bfd_avr32_arch)		ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
47.52693 + 	bfd_bfin_arch)		ta="$ta bfin-dis.lo" ;;
47.52694 + 	bfd_cr16_arch)    	ta="$ta cr16-dis.lo cr16-opc.lo" ;;
47.52695 + 	bfd_cris_arch)		ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
47.52696 +@@ -11476,7 +11477,7 @@ if test x${all_targets} = xfalse ; then
47.52697 + 				ta="$ta sh64-dis.lo sh64-opc.lo"
47.52698 + 				archdefs="$archdefs -DINCLUDE_SHMEDIA"
47.52699 + 				break;;
47.52700 +-	    esac;
47.52701 ++	    esac
47.52702 + 	  done
47.52703 + 				ta="$ta sh-dis.lo cgen-bitset.lo" ;;
47.52704 + 	bfd_sparc_arch)		ta="$ta sparc-dis.lo sparc-opc.lo" ;;
47.52705 +--- a/opcodes/Makefile.in
47.52706 ++++ b/opcodes/Makefile.in
47.52707 +@@ -257,6 +257,7 @@ LIBIBERTY = ../libiberty/libiberty.a
47.52708 + # Header files.
47.52709 + HFILES = \
47.52710 + 	cgen-ops.h cgen-types.h \
47.52711 ++	avr32-asm.h avr32-opc.h \
47.52712 + 	fr30-desc.h fr30-opc.h \
47.52713 + 	frv-desc.h frv-opc.h \
47.52714 + 	h8500-opc.h \
47.52715 +@@ -291,6 +292,9 @@ CFILES = \
47.52716 + 	arc-ext.c \
47.52717 + 	arm-dis.c \
47.52718 + 	avr-dis.c \
47.52719 ++	avr32-asm.c \
47.52720 ++	avr32-dis.c \
47.52721 ++	avr32-opc.c \
47.52722 + 	bfin-dis.c \
47.52723 + 	cgen-asm.c \
47.52724 + 	cgen-bitset.c \
47.52725 +@@ -445,6 +449,9 @@ ALL_MACHINES = \
47.52726 + 	arc-ext.lo \
47.52727 + 	arm-dis.lo \
47.52728 + 	avr-dis.lo \
47.52729 ++	avr32-asm.lo \
47.52730 ++	avr32-dis.lo \
47.52731 ++	avr32-opc.lo \
47.52732 + 	bfin-dis.lo \
47.52733 + 	cgen-asm.lo \
47.52734 + 	cgen-bitset.lo \
47.52735 +@@ -1225,6 +1232,15 @@ avr-dis.lo: avr-dis.c sysdep.h config.h 
47.52736 +   $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
47.52737 +   opintl.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \
47.52738 +   $(INCDIR)/opcode/avr.h
47.52739 ++avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
47.52740 ++  $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
47.52741 ++  $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
47.52742 ++  $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
47.52743 ++avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
47.52744 ++  $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
47.52745 ++  avr32-opc.h opintl.h
47.52746 ++avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
47.52747 ++  $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
47.52748 + bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
47.52749 +   $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
47.52750 + cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
    48.1 --- a/patches/binutils/2.19.1/100-ppc64-pie.patch	Sun Sep 11 18:26:12 2011 +0200
    48.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    48.3 @@ -1,25 +0,0 @@
    48.4 -Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/100-ppc64-pie.patch
    48.5 -
    48.6 --= BEGIN original header =-
    48.7 -Original patch from Gentoo:
    48.8 -gentoo/src/patchsets/binutils/2.19/03_all_binutils-2.15.92.0.2-ppc64-pie.patch
    48.9 -
   48.10 --= END original header =-
   48.11 -
   48.12 -diff -durN binutils-2.19.1.orig/bfd/elf64-ppc.c binutils-2.19.1/bfd/elf64-ppc.c
   48.13 ---- binutils-2.19.1.orig/bfd/elf64-ppc.c	2008-10-09 14:18:24.000000000 +0200
   48.14 -+++ binutils-2.19.1/bfd/elf64-ppc.c	2009-03-08 11:56:59.000000000 +0100
   48.15 -@@ -11294,7 +11294,12 @@
   48.16 - 	      else if (!SYMBOL_REFERENCES_LOCAL (info, &h->elf)
   48.17 - 		       && !is_opd
   48.18 - 		       && r_type != R_PPC64_TOC)
   48.19 --		outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
   48.20 -+		{
   48.21 -+		  outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
   48.22 -+		  if (h->elf.dynindx == -1
   48.23 -+		      && h->elf.root.type == bfd_link_hash_undefweak)
   48.24 -+		  memset (&outrel, 0, sizeof outrel);
   48.25 -+		}
   48.26 - 	      else
   48.27 - 		{
   48.28 - 		  /* This symbol is local, or marked to become local,
    49.1 --- a/patches/binutils/2.19.1/110-RPATH_ENVVAR-smack.patch	Sun Sep 11 18:26:12 2011 +0200
    49.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    49.3 @@ -1,22 +0,0 @@
    49.4 -Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/110-RPATH_ENVVAR-smack.patch
    49.5 -
    49.6 --= BEGIN original header =-
    49.7 -Original patch from Gentoo:
    49.8 -gentoo/src/patchsets/binutils/2.19/08_all_binutils-RPATH_ENVVAR-smack.patch
    49.9 -
   49.10 -http://sourceware.org/ml/binutils/2007-07/msg00401.html
   49.11 -http://sourceware.org/bugzilla/show_bug.cgi?id=4970
   49.12 -
   49.13 --= END original header =-
   49.14 -
   49.15 -diff -durN binutils-2.19.1.orig/configure binutils-2.19.1/configure
   49.16 ---- binutils-2.19.1.orig/configure	2008-09-04 04:18:16.000000000 +0200
   49.17 -+++ binutils-2.19.1/configure	2009-03-08 11:57:00.000000000 +0100
   49.18 -@@ -5601,6 +5601,7 @@
   49.19 -   *-*-mingw* | *-*-cygwin ) RPATH_ENVVAR=PATH ;;
   49.20 -   *) RPATH_ENVVAR=LD_LIBRARY_PATH ;;
   49.21 - esac
   49.22 -+RPATH_ENVVAR="cant_touch_this_nah_nah_nah"
   49.23 - 
   49.24 - # On systems where the dynamic library environment variable is PATH,
   49.25 - if test "$RPATH_ENVVAR" = PATH; then
    50.1 --- a/patches/binutils/2.19.1/120-sh-targets.patch	Sun Sep 11 18:26:12 2011 +0200
    50.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    50.3 @@ -1,57 +0,0 @@
    50.4 -Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/120-sh-targets.patch
    50.5 -
    50.6 --= BEGIN original header =-
    50.7 -Original patch from Gentoo:
    50.8 -gentoo/src/patchsets/binutils/2.19/12_all_sh-targets.patch
    50.9 -
   50.10 -r10231 | lethal | 2005-05-02 09:58:00 -0400 (Mon, 02 May 2005) | 13 lines
   50.11 -
   50.12 -Likewise, binutils has no idea about any of these new targets either, so we
   50.13 -fix that up too.. now we're able to actually build a real toolchain for
   50.14 -sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more
   50.15 -inept targets than that one, really. Go look, I promise).
   50.16 -
   50.17 --= END original header =-
   50.18 -
   50.19 -diff -durN binutils-2.19.1.orig/configure binutils-2.19.1/configure
   50.20 ---- binutils-2.19.1.orig/configure	2009-03-08 11:57:00.000000000 +0100
   50.21 -+++ binutils-2.19.1/configure	2009-03-08 11:57:00.000000000 +0100
   50.22 -@@ -2281,7 +2281,7 @@
   50.23 -   am33_2.0-*-linux*)
   50.24 -     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   50.25 -     ;;
   50.26 --  sh-*-linux*)
   50.27 -+  sh*-*-linux*)
   50.28 -     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   50.29 -     ;;
   50.30 -   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
   50.31 -@@ -2606,7 +2606,7 @@
   50.32 -   romp-*-*)
   50.33 -     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
   50.34 -     ;;
   50.35 --  sh-*-* | sh64-*-*)
   50.36 -+  sh*-*-* | sh64-*-*)
   50.37 -     case "${host}" in
   50.38 -       i[3456789]86-*-vsta) ;; # don't add gprof back in
   50.39 -       i[3456789]86-*-go32*) ;; # don't add gprof back in
   50.40 -diff -durN binutils-2.19.1.orig/configure.ac binutils-2.19.1/configure.ac
   50.41 ---- binutils-2.19.1.orig/configure.ac	2009-02-02 12:54:49.000000000 +0100
   50.42 -+++ binutils-2.19.1/configure.ac	2009-03-08 11:57:00.000000000 +0100
   50.43 -@@ -530,7 +530,7 @@
   50.44 -   am33_2.0-*-linux*)
   50.45 -     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   50.46 -     ;;
   50.47 --  sh-*-linux*)
   50.48 -+  sh*-*-linux*)
   50.49 -     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   50.50 -     ;;    
   50.51 -   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
   50.52 -@@ -855,7 +855,7 @@
   50.53 -   romp-*-*)
   50.54 -     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
   50.55 -     ;;
   50.56 --  sh-*-* | sh64-*-*)
   50.57 -+  sh*-*-* | sh64-*-*)
   50.58 -     case "${host}" in
   50.59 -       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
   50.60 -       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
    51.1 --- a/patches/binutils/2.19.1/130-check_ldrunpath_length.patch	Sun Sep 11 18:26:12 2011 +0200
    51.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    51.3 @@ -1,36 +0,0 @@
    51.4 -Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/130-check_ldrunpath_length.patch
    51.5 -
    51.6 --= BEGIN original header =-
    51.7 -Original patch from Gentoo:
    51.8 -gentoo/src/patchsets/binutils/2.19/42_all_012_check_ldrunpath_length.patch
    51.9 -
   51.10 -Originaly from Debian:
   51.11 -## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
   51.12 -##
   51.13 -## All lines beginning with `## DP:' are a description of the patch.
   51.14 -## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
   51.15 -## DP: cases where -rpath isn't specified. (#151024)
   51.16 -
   51.17 --= END original header =-
   51.18 -
   51.19 -diff -durN binutils-2.19.1.orig/ld/emultempl/elf32.em binutils-2.19.1/ld/emultempl/elf32.em
   51.20 ---- binutils-2.19.1.orig/ld/emultempl/elf32.em	2008-09-07 06:02:31.000000000 +0200
   51.21 -+++ binutils-2.19.1/ld/emultempl/elf32.em	2009-03-08 11:57:01.000000000 +0100
   51.22 -@@ -1219,6 +1219,8 @@
   51.23 - 	      && command_line.rpath == NULL)
   51.24 - 	    {
   51.25 - 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
   51.26 -+	      if ((lib_path) && (strlen (lib_path) == 0))
   51.27 -+		  lib_path = NULL;
   51.28 - 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
   51.29 - 						      force))
   51.30 - 		break;
   51.31 -@@ -1404,6 +1406,8 @@
   51.32 -   rpath = command_line.rpath;
   51.33 -   if (rpath == NULL)
   51.34 -     rpath = (const char *) getenv ("LD_RUN_PATH");
   51.35 -+  if ((rpath) && (strlen (rpath) == 0))
   51.36 -+      rpath = NULL;
   51.37 -   if (! (bfd_elf_size_dynamic_sections
   51.38 - 	 (link_info.output_bfd, command_line.soname, rpath,
   51.39 - 	  command_line.filter_shlib,
    52.1 --- a/patches/binutils/2.19.1/140-pt-pax-flags-20081101.patch	Sun Sep 11 18:26:12 2011 +0200
    52.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    52.3 @@ -1,254 +0,0 @@
    52.4 -Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/140-pt-pax-flags-20081101.patch
    52.5 -
    52.6 --= BEGIN original header =-
    52.7 -Original patch from Gentoo:
    52.8 -gentoo/src/patchsets/binutils/2.19/63_all_binutils-2.19-pt-pax-flags-20081101.patch
    52.9 -
   52.10 --= END original header =-
   52.11 -
   52.12 -diff -durN binutils-2.19.1.orig/bfd/elf-bfd.h binutils-2.19.1/bfd/elf-bfd.h
   52.13 ---- binutils-2.19.1.orig/bfd/elf-bfd.h	2008-08-21 01:28:58.000000000 +0200
   52.14 -+++ binutils-2.19.1/bfd/elf-bfd.h	2009-03-08 11:57:02.000000000 +0100
   52.15 -@@ -1526,6 +1526,9 @@
   52.16 -   /* Segment flags for the PT_GNU_STACK segment.  */
   52.17 -   unsigned int stack_flags;
   52.18 - 
   52.19 -+  /* Segment flags for the PT_PAX_FLAGS segment.  */
   52.20 -+  unsigned int pax_flags;
   52.21 -+
   52.22 -   /* Symbol version definitions in external objects.  */
   52.23 -   Elf_Internal_Verdef *verdef;
   52.24 - 
   52.25 -diff -durN binutils-2.19.1.orig/bfd/elf.c binutils-2.19.1/bfd/elf.c
   52.26 ---- binutils-2.19.1.orig/bfd/elf.c	2008-12-23 14:54:48.000000000 +0100
   52.27 -+++ binutils-2.19.1/bfd/elf.c	2009-03-08 11:57:02.000000000 +0100
   52.28 -@@ -1136,6 +1136,7 @@
   52.29 -     case PT_GNU_EH_FRAME: pt = "EH_FRAME"; break;
   52.30 -     case PT_GNU_STACK: pt = "STACK"; break;
   52.31 -     case PT_GNU_RELRO: pt = "RELRO"; break;
   52.32 -+    case PT_PAX_FLAGS: pt = "PAX_FLAGS"; break;
   52.33 -     default: pt = NULL; break;
   52.34 -     }
   52.35 -   return pt;
   52.36 -@@ -2442,6 +2443,9 @@
   52.37 -     case PT_GNU_RELRO:
   52.38 -       return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "relro");
   52.39 - 
   52.40 -+    case PT_PAX_FLAGS:
   52.41 -+      return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "pax_flags");
   52.42 -+
   52.43 -     default:
   52.44 -       /* Check for any processor-specific program segment types.  */
   52.45 -       bed = get_elf_backend_data (abfd);
   52.46 -@@ -3404,6 +3408,11 @@
   52.47 -       ++segs;
   52.48 -     }
   52.49 - 
   52.50 -+    {
   52.51 -+      /* We need a PT_PAX_FLAGS segment.  */
   52.52 -+      ++segs;
   52.53 -+    }
   52.54 -+
   52.55 -   for (s = abfd->sections; s != NULL; s = s->next)
   52.56 -     {
   52.57 -       if ((s->flags & SEC_LOAD) != 0
   52.58 -@@ -3983,6 +3992,20 @@
   52.59 - 	    }
   52.60 - 	}
   52.61 - 
   52.62 -+    {
   52.63 -+      amt = sizeof (struct elf_segment_map);
   52.64 -+      m = bfd_zalloc (abfd, amt);
   52.65 -+      if (m == NULL)
   52.66 -+	goto error_return;
   52.67 -+      m->next = NULL;
   52.68 -+      m->p_type = PT_PAX_FLAGS;
   52.69 -+      m->p_flags = elf_tdata (abfd)->pax_flags;
   52.70 -+      m->p_flags_valid = 1;
   52.71 -+
   52.72 -+      *pm = m;
   52.73 -+      pm = &m->next;
   52.74 -+    }
   52.75 -+
   52.76 -       free (sections);
   52.77 -       elf_tdata (abfd)->segment_map = mfirst;
   52.78 -     }
   52.79 -@@ -5160,7 +5183,8 @@
   52.80 -        6. PT_TLS segment includes only SHF_TLS sections.
   52.81 -        7. SHF_TLS sections are only in PT_TLS or PT_LOAD segments.
   52.82 -        8. PT_DYNAMIC should not contain empty sections at the beginning
   52.83 --	  (with the possible exception of .dynamic).  */
   52.84 -+	  (with the possible exception of .dynamic).
   52.85 -+       9. PT_PAX_FLAGS segments does not include any sections.  */
   52.86 - #define IS_SECTION_IN_INPUT_SEGMENT(section, segment, bed)		\
   52.87 -   ((((segment->p_paddr							\
   52.88 -       ? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr)	\
   52.89 -@@ -5168,6 +5192,7 @@
   52.90 -      && (section->flags & SEC_ALLOC) != 0)				\
   52.91 -     || IS_NOTE (segment, section))					\
   52.92 -    && segment->p_type != PT_GNU_STACK					\
   52.93 -+   && segment->p_type != PT_PAX_FLAGS					\
   52.94 -    && (segment->p_type != PT_TLS					\
   52.95 -        || (section->flags & SEC_THREAD_LOCAL))				\
   52.96 -    && (segment->p_type == PT_LOAD					\
   52.97 -diff -durN binutils-2.19.1.orig/bfd/elflink.c binutils-2.19.1/bfd/elflink.c
   52.98 ---- binutils-2.19.1.orig/bfd/elflink.c	2008-08-22 10:32:39.000000000 +0200
   52.99 -+++ binutils-2.19.1/bfd/elflink.c	2009-03-08 11:57:02.000000000 +0100
  52.100 -@@ -5397,16 +5397,30 @@
  52.101 -     return TRUE;
  52.102 - 
  52.103 -   bed = get_elf_backend_data (output_bfd);
  52.104 -+  elf_tdata (output_bfd)->pax_flags = PF_NORANDEXEC;
  52.105 -+
  52.106 -+  if (info->execheap)
  52.107 -+    elf_tdata (output_bfd)->pax_flags |= PF_NOMPROTECT;
  52.108 -+  else if (info->noexecheap)
  52.109 -+    elf_tdata (output_bfd)->pax_flags |= PF_MPROTECT;
  52.110 -+
  52.111 -   if (info->execstack)
  52.112 --    elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
  52.113 -+    {
  52.114 -+      elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
  52.115 -+      elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
  52.116 -+    }
  52.117 -   else if (info->noexecstack)
  52.118 --    elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
  52.119 -+    {
  52.120 -+      elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
  52.121 -+      elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
  52.122 -+    }
  52.123 -   else
  52.124 -     {
  52.125 -       bfd *inputobj;
  52.126 -       asection *notesec = NULL;
  52.127 -       int exec = 0;
  52.128 - 
  52.129 -+      elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
  52.130 -       for (inputobj = info->input_bfds;
  52.131 - 	   inputobj;
  52.132 - 	   inputobj = inputobj->link_next)
  52.133 -@@ -5419,7 +5433,11 @@
  52.134 - 	  if (s)
  52.135 - 	    {
  52.136 - 	      if (s->flags & SEC_CODE)
  52.137 --		exec = PF_X;
  52.138 -+		{
  52.139 -+		  elf_tdata (output_bfd)->pax_flags &= ~PF_NOEMUTRAMP;
  52.140 -+		  elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
  52.141 -+		  exec = PF_X;
  52.142 -+		}
  52.143 - 	      notesec = s;
  52.144 - 	    }
  52.145 - 	  else if (bed->default_execstack)
  52.146 -diff -durN binutils-2.19.1.orig/binutils/readelf.c binutils-2.19.1/binutils/readelf.c
  52.147 ---- binutils-2.19.1.orig/binutils/readelf.c	2008-09-17 11:00:44.000000000 +0200
  52.148 -+++ binutils-2.19.1/binutils/readelf.c	2009-03-08 11:57:02.000000000 +0100
  52.149 -@@ -2505,6 +2505,7 @@
  52.150 - 			return "GNU_EH_FRAME";
  52.151 -     case PT_GNU_STACK:	return "GNU_STACK";
  52.152 -     case PT_GNU_RELRO:  return "GNU_RELRO";
  52.153 -+    case PT_PAX_FLAGS:  return "PAX_FLAGS";
  52.154 - 
  52.155 -     default:
  52.156 -       if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC))
  52.157 -diff -durN binutils-2.19.1.orig/include/bfdlink.h binutils-2.19.1/include/bfdlink.h
  52.158 ---- binutils-2.19.1.orig/include/bfdlink.h	2008-08-17 05:12:50.000000000 +0200
  52.159 -+++ binutils-2.19.1/include/bfdlink.h	2009-03-08 11:57:02.000000000 +0100
  52.160 -@@ -319,6 +319,14 @@
  52.161 -   /* TRUE if PT_GNU_RELRO segment should be created.  */
  52.162 -   unsigned int relro: 1;
  52.163 - 
  52.164 -+  /* TRUE if PT_PAX_FLAGS segment should be created with PF_NOMPROTECT
  52.165 -+     flags.  */
  52.166 -+  unsigned int execheap: 1;
  52.167 -+
  52.168 -+  /* TRUE if PT_PAX_FLAGS segment should be created with PF_MPROTECT
  52.169 -+     flags.  */
  52.170 -+  unsigned int noexecheap: 1;
  52.171 -+
  52.172 -   /* TRUE if we should warn when adding a DT_TEXTREL to a shared object.  */
  52.173 -   unsigned int warn_shared_textrel: 1;
  52.174 - 
  52.175 -diff -durN binutils-2.19.1.orig/include/elf/common.h binutils-2.19.1/include/elf/common.h
  52.176 ---- binutils-2.19.1.orig/include/elf/common.h	2008-08-04 01:20:42.000000000 +0200
  52.177 -+++ binutils-2.19.1/include/elf/common.h	2009-03-08 11:57:02.000000000 +0100
  52.178 -@@ -360,6 +360,7 @@
  52.179 - #define PT_SUNW_EH_FRAME PT_GNU_EH_FRAME      /* Solaris uses the same value */
  52.180 - #define PT_GNU_STACK	(PT_LOOS + 0x474e551) /* Stack flags */
  52.181 - #define PT_GNU_RELRO	(PT_LOOS + 0x474e552) /* Read-only after relocation */
  52.182 -+#define PT_PAX_FLAGS	(PT_LOOS + 0x5041580) /* PaX flags */
  52.183 - 
  52.184 - /* Program segment permissions, in program header p_flags field.  */
  52.185 - 
  52.186 -@@ -370,6 +371,21 @@
  52.187 - #define PF_MASKOS	0x0FF00000	/* New value, Oct 4, 1999 Draft */
  52.188 - #define PF_MASKPROC	0xF0000000	/* Processor-specific reserved bits */
  52.189 - 
  52.190 -+/* Flags to control PaX behavior.  */
  52.191 -+
  52.192 -+#define PF_PAGEEXEC	(1 << 4)	/* Enable  PAGEEXEC */
  52.193 -+#define PF_NOPAGEEXEC	(1 << 5)	/* Disable PAGEEXEC */
  52.194 -+#define PF_SEGMEXEC	(1 << 6)	/* Enable  SEGMEXEC */
  52.195 -+#define PF_NOSEGMEXEC	(1 << 7)	/* Disable SEGMEXEC */
  52.196 -+#define PF_MPROTECT	(1 << 8)	/* Enable  MPROTECT */
  52.197 -+#define PF_NOMPROTECT	(1 << 9)	/* Disable MPROTECT */
  52.198 -+#define PF_RANDEXEC	(1 << 10)	/* Enable  RANDEXEC */
  52.199 -+#define PF_NORANDEXEC	(1 << 11)	/* Disable RANDEXEC */
  52.200 -+#define PF_EMUTRAMP	(1 << 12)	/* Enable  EMUTRAMP */
  52.201 -+#define PF_NOEMUTRAMP	(1 << 13)	/* Disable EMUTRAMP */
  52.202 -+#define PF_RANDMMAP	(1 << 14)	/* Enable  RANDMMAP */
  52.203 -+#define PF_NORANDMMAP	(1 << 15)	/* Disable RANDMMAP */
  52.204 -+
  52.205 - /* Values for section header, sh_type field.  */
  52.206 - 
  52.207 - #define SHT_NULL	0		/* Section header table entry unused */
  52.208 -diff -durN binutils-2.19.1.orig/ld/emultempl/elf32.em binutils-2.19.1/ld/emultempl/elf32.em
  52.209 ---- binutils-2.19.1.orig/ld/emultempl/elf32.em	2009-03-08 11:57:01.000000000 +0100
  52.210 -+++ binutils-2.19.1/ld/emultempl/elf32.em	2009-03-08 11:57:02.000000000 +0100
  52.211 -@@ -2146,6 +2146,16 @@
  52.212 - 	  link_info.noexecstack = TRUE;
  52.213 - 	  link_info.execstack = FALSE;
  52.214 - 	}
  52.215 -+      else if (strcmp (optarg, "execheap") == 0)
  52.216 -+	{
  52.217 -+	  link_info.execheap = TRUE;
  52.218 -+	  link_info.noexecheap = FALSE;
  52.219 -+	}
  52.220 -+      else if (strcmp (optarg, "noexecheap") == 0)
  52.221 -+	{
  52.222 -+	  link_info.noexecheap = TRUE;
  52.223 -+	  link_info.execheap = FALSE;
  52.224 -+	}
  52.225 - EOF
  52.226 - 
  52.227 -   if test -n "$COMMONPAGESIZE"; then
  52.228 -@@ -2229,6 +2239,8 @@
  52.229 -   fprintf (file, _("\
  52.230 -   -z execstack                Mark executable as requiring executable stack\n"));
  52.231 -   fprintf (file, _("\
  52.232 -+  -z execheap\t\tMark executable as requiring executable heap\n"));
  52.233 -+  fprintf (file, _("\
  52.234 -   -z initfirst                Mark DSO to be initialized first at runtime\n"));
  52.235 -   fprintf (file, _("\
  52.236 -   -z interpose                Mark object to interpose all DSOs but executable\n"));
  52.237 -@@ -2252,6 +2264,8 @@
  52.238 -   -z nodump                   Mark DSO not available to dldump\n"));
  52.239 -   fprintf (file, _("\
  52.240 -   -z noexecstack              Mark executable as not requiring executable stack\n"));
  52.241 -+  fprintf (file, _("\
  52.242 -+  -z noexecheap\tMark executable as not requiring executable heap\n"));
  52.243 - EOF
  52.244 - 
  52.245 -   if test -n "$COMMONPAGESIZE"; then
  52.246 -diff -durN binutils-2.19.1.orig/ld/ldgram.y binutils-2.19.1/ld/ldgram.y
  52.247 ---- binutils-2.19.1.orig/ld/ldgram.y	2008-07-06 15:38:36.000000000 +0200
  52.248 -+++ binutils-2.19.1/ld/ldgram.y	2009-03-08 11:57:02.000000000 +0100
  52.249 -@@ -1112,6 +1112,8 @@
  52.250 - 			    $$ = exp_intop (0x6474e550);
  52.251 - 			  else if (strcmp (s, "PT_GNU_STACK") == 0)
  52.252 - 			    $$ = exp_intop (0x6474e551);
  52.253 -+			  else if (strcmp (s, "PT_PAX_FLAGS") == 0)
  52.254 -+			    $$ = exp_intop (0x65041580);
  52.255 - 			  else
  52.256 - 			    {
  52.257 - 			      einfo (_("\
    53.1 --- a/patches/binutils/2.19.1/150-warn-textrel.patch	Sun Sep 11 18:26:12 2011 +0200
    53.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    53.3 @@ -1,53 +0,0 @@
    53.4 -Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/150-warn-textrel.patch
    53.5 -
    53.6 --= BEGIN original header =-
    53.7 -Original patch from Gentoo:
    53.8 -gentoo/src/patchsets/binutils/2.19/66_all_binutils-2.18.50.0.2-warn-textrel.patch
    53.9 -
   53.10 -textrels are bad for forcing copy-on-write (this affects everyone),
   53.11 -and for security/runtime code generation, this affects security ppl.
   53.12 -But in either case, it doesn't matter who needs textrels, it's
   53.13 -the very fact that they're needed at all.
   53.14 -
   53.15 --= END original header =-
   53.16 -
   53.17 -diff -durN binutils-2.19.1.orig/bfd/elflink.c binutils-2.19.1/bfd/elflink.c
   53.18 ---- binutils-2.19.1.orig/bfd/elflink.c	2009-03-08 11:57:02.000000000 +0100
   53.19 -+++ binutils-2.19.1/bfd/elflink.c	2009-03-08 11:57:02.000000000 +0100
   53.20 -@@ -10820,14 +10820,12 @@
   53.21 - 	goto error_return;
   53.22 - 
   53.23 -       /* Check for DT_TEXTREL (late, in case the backend removes it).  */
   53.24 --      if (info->warn_shared_textrel && info->shared)
   53.25 -+      o = bfd_get_section_by_name (dynobj, ".dynamic");
   53.26 -+      if (info->warn_shared_textrel && o != NULL)
   53.27 - 	{
   53.28 - 	  bfd_byte *dyncon, *dynconend;
   53.29 - 
   53.30 - 	  /* Fix up .dynamic entries.  */
   53.31 --	  o = bfd_get_section_by_name (dynobj, ".dynamic");
   53.32 --	  BFD_ASSERT (o != NULL);
   53.33 --
   53.34 - 	  dyncon = o->contents;
   53.35 - 	  dynconend = o->contents + o->size;
   53.36 - 	  for (; dyncon < dynconend; dyncon += bed->s->sizeof_dyn)
   53.37 -@@ -10839,7 +10837,7 @@
   53.38 - 	      if (dyn.d_tag == DT_TEXTREL)
   53.39 - 		{
   53.40 - 		 info->callbacks->einfo
   53.41 --		    (_("%P: warning: creating a DT_TEXTREL in a shared object.\n"));
   53.42 -+		    (_("%P: warning: creating a DT_TEXTREL in object.\n"));
   53.43 - 		  break;
   53.44 - 		}
   53.45 - 	    }
   53.46 -diff -durN binutils-2.19.1.orig/ld/ldmain.c binutils-2.19.1/ld/ldmain.c
   53.47 ---- binutils-2.19.1.orig/ld/ldmain.c	2008-08-17 05:12:50.000000000 +0200
   53.48 -+++ binutils-2.19.1/ld/ldmain.c	2009-03-08 11:57:02.000000000 +0100
   53.49 -@@ -274,6 +274,7 @@
   53.50 -   link_info.relax_pass = 1;
   53.51 -   link_info.pei386_auto_import = -1;
   53.52 -   link_info.spare_dynamic_tags = 5;
   53.53 -+  link_info.warn_shared_textrel = TRUE;
   53.54 -   link_info.path_separator = ':';
   53.55 - 
   53.56 -   ldfile_add_arch ("");
    54.1 --- a/patches/binutils/2.19.1/160-use-new-ld-dtags.patch	Sun Sep 11 18:26:12 2011 +0200
    54.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    54.3 @@ -1,19 +0,0 @@
    54.4 -Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/160-use-new-ld-dtags.patch
    54.5 -
    54.6 --= BEGIN original header =-
    54.7 -Original patch from Gentoo:
    54.8 -gentoo/src/patchsets/binutils/2.19/76_all_use-new-ld-dtags.patch
    54.9 -
   54.10 --= END original header =-
   54.11 -
   54.12 -diff -durN binutils-2.19.1.orig/ld/ldmain.c binutils-2.19.1/ld/ldmain.c
   54.13 ---- binutils-2.19.1.orig/ld/ldmain.c	2009-03-08 11:57:03.000000000 +0100
   54.14 -+++ binutils-2.19.1/ld/ldmain.c	2009-03-08 11:57:03.000000000 +0100
   54.15 -@@ -262,6 +262,7 @@
   54.16 - 
   54.17 -   link_info.allow_undefined_version = TRUE;
   54.18 -   link_info.keep_memory = TRUE;
   54.19 -+  link_info.new_dtags = TRUE;
   54.20 -   link_info.combreloc = TRUE;
   54.21 -   link_info.strip_discarded = TRUE;
   54.22 -   link_info.emit_hash = TRUE;
    55.1 --- a/patches/binutils/2.19.1/170-use-relro.patch	Sun Sep 11 18:26:12 2011 +0200
    55.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    55.3 @@ -1,19 +0,0 @@
    55.4 -Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/170-use-relro.patch
    55.5 -
    55.6 --= BEGIN original header =-
    55.7 -Original patch from Gentoo:
    55.8 -gentoo/src/patchsets/binutils/2.19/78_all_use-relro.patch
    55.9 -
   55.10 --= END original header =-
   55.11 -
   55.12 -diff -durN binutils-2.19.1.orig/ld/ldmain.c binutils-2.19.1/ld/ldmain.c
   55.13 ---- binutils-2.19.1.orig/ld/ldmain.c	2009-03-08 11:57:03.000000000 +0100
   55.14 -+++ binutils-2.19.1/ld/ldmain.c	2009-03-08 11:57:03.000000000 +0100
   55.15 -@@ -264,6 +264,7 @@
   55.16 -   link_info.keep_memory = TRUE;
   55.17 -   link_info.new_dtags = TRUE;
   55.18 -   link_info.combreloc = TRUE;
   55.19 -+  link_info.relro = TRUE;
   55.20 -   link_info.strip_discarded = TRUE;
   55.21 -   link_info.emit_hash = TRUE;
   55.22 -   link_info.callbacks = &link_callbacks;
    56.1 --- a/patches/binutils/2.19.1/180-libiberty-pic.patch	Sun Sep 11 18:26:12 2011 +0200
    56.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    56.3 @@ -1,19 +0,0 @@
    56.4 -Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/180-libiberty-pic.patch
    56.5 -
    56.6 --= BEGIN original header =-
    56.7 -Original patch from Gentoo:
    56.8 -gentoo/src/patchsets/binutils/2.19/91_all_libiberty-pic.patch
    56.9 -
   56.10 --= END original header =-
   56.11 -
   56.12 -diff -durN binutils-2.19.1.orig/libiberty/Makefile.in binutils-2.19.1/libiberty/Makefile.in
   56.13 ---- binutils-2.19.1.orig/libiberty/Makefile.in	2008-07-24 15:51:49.000000000 +0200
   56.14 -+++ binutils-2.19.1/libiberty/Makefile.in	2009-03-08 11:57:03.000000000 +0100
   56.15 -@@ -227,6 +227,7 @@
   56.16 - 	  $(AR) $(AR_FLAGS) $(TARGETLIB) \
   56.17 - 	    $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \
   56.18 - 	  $(RANLIB) $(TARGETLIB); \
   56.19 -+	  cp $(TARGETLIB) ../ ; \
   56.20 - 	  cd ..; \
   56.21 - 	else true; fi
   56.22 - 
    57.1 --- a/patches/binutils/2.19.1/190-mips64-defaultemul.patch	Sun Sep 11 18:26:12 2011 +0200
    57.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    57.3 @@ -1,18 +0,0 @@
    57.4 ---- binutils-2.20/ld/configure.tgt.orig	2010-02-20 04:05:31.000000000 -0500
    57.5 -+++ binutils-2.20/ld/configure.tgt	2010-02-20 04:08:11.000000000 -0500
    57.6 -@@ -400,11 +400,11 @@
    57.7 - mips*-*-vxworks*)	targ_emul=elf32ebmipvxworks
    57.8 - 		        targ_extra_emuls="elf32elmipvxworks" ;;
    57.9 - mips*-*-windiss)	targ_emul=elf32mipswindiss ;;
   57.10 --mips64*el-*-linux-*)	targ_emul=elf32ltsmipn32
   57.11 --			targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip"
   57.12 -+mips64*el-*-linux-*)	targ_emul=elf64ltsmip
   57.13 -+			targ_extra_emuls="elf32ltsmipn32 elf32btsmipn32 elf32ltsmip elf32btsmip elf64btsmip"
   57.14 - 			targ_extra_libpath=$targ_extra_emuls ;;
   57.15 --mips64*-*-linux-*)	targ_emul=elf32btsmipn32
   57.16 --			targ_extra_emuls="elf32ltsmipn32 elf32btsmip elf32ltsmip elf64btsmip elf64ltsmip"
   57.17 -+mips64*-*-linux-*)	targ_emul=elf64btsmip
   57.18 -+			targ_extra_emuls="elf32btsmipn32 elf32ltsmipn32 elf32btsmip elf32ltsmip elf64ltsmip"
   57.19 - 			targ_extra_libpath=$targ_extra_emuls ;;
   57.20 - mips*el-*-linux-*)	targ_emul=elf32ltsmip
   57.21 - 			targ_extra_emuls="elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip"
    58.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    58.2 +++ b/patches/binutils/2.19.1a/100-ppc64-pie.patch	Sun Sep 11 18:18:53 2011 +0200
    58.3 @@ -0,0 +1,25 @@
    58.4 +Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/100-ppc64-pie.patch
    58.5 +
    58.6 +-= BEGIN original header =-
    58.7 +Original patch from Gentoo:
    58.8 +gentoo/src/patchsets/binutils/2.19/03_all_binutils-2.15.92.0.2-ppc64-pie.patch
    58.9 +
   58.10 +-= END original header =-
   58.11 +
   58.12 +diff -durN binutils-2.19.1.orig/bfd/elf64-ppc.c binutils-2.19.1/bfd/elf64-ppc.c
   58.13 +--- binutils-2.19.1.orig/bfd/elf64-ppc.c	2008-10-09 14:18:24.000000000 +0200
   58.14 ++++ binutils-2.19.1/bfd/elf64-ppc.c	2009-03-08 11:56:59.000000000 +0100
   58.15 +@@ -11294,7 +11294,12 @@
   58.16 + 	      else if (!SYMBOL_REFERENCES_LOCAL (info, &h->elf)
   58.17 + 		       && !is_opd
   58.18 + 		       && r_type != R_PPC64_TOC)
   58.19 +-		outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
   58.20 ++		{
   58.21 ++		  outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
   58.22 ++		  if (h->elf.dynindx == -1
   58.23 ++		      && h->elf.root.type == bfd_link_hash_undefweak)
   58.24 ++		  memset (&outrel, 0, sizeof outrel);
   58.25 ++		}
   58.26 + 	      else
   58.27 + 		{
   58.28 + 		  /* This symbol is local, or marked to become local,
    59.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    59.2 +++ b/patches/binutils/2.19.1a/110-RPATH_ENVVAR-smack.patch	Sun Sep 11 18:18:53 2011 +0200
    59.3 @@ -0,0 +1,22 @@
    59.4 +Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/110-RPATH_ENVVAR-smack.patch
    59.5 +
    59.6 +-= BEGIN original header =-
    59.7 +Original patch from Gentoo:
    59.8 +gentoo/src/patchsets/binutils/2.19/08_all_binutils-RPATH_ENVVAR-smack.patch
    59.9 +
   59.10 +http://sourceware.org/ml/binutils/2007-07/msg00401.html
   59.11 +http://sourceware.org/bugzilla/show_bug.cgi?id=4970
   59.12 +
   59.13 +-= END original header =-
   59.14 +
   59.15 +diff -durN binutils-2.19.1.orig/configure binutils-2.19.1/configure
   59.16 +--- binutils-2.19.1.orig/configure	2008-09-04 04:18:16.000000000 +0200
   59.17 ++++ binutils-2.19.1/configure	2009-03-08 11:57:00.000000000 +0100
   59.18 +@@ -5601,6 +5601,7 @@
   59.19 +   *-*-mingw* | *-*-cygwin ) RPATH_ENVVAR=PATH ;;
   59.20 +   *) RPATH_ENVVAR=LD_LIBRARY_PATH ;;
   59.21 + esac
   59.22 ++RPATH_ENVVAR="cant_touch_this_nah_nah_nah"
   59.23 + 
   59.24 + # On systems where the dynamic library environment variable is PATH,
   59.25 + if test "$RPATH_ENVVAR" = PATH; then
    60.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    60.2 +++ b/patches/binutils/2.19.1a/120-sh-targets.patch	Sun Sep 11 18:18:53 2011 +0200
    60.3 @@ -0,0 +1,57 @@
    60.4 +Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/120-sh-targets.patch
    60.5 +
    60.6 +-= BEGIN original header =-
    60.7 +Original patch from Gentoo:
    60.8 +gentoo/src/patchsets/binutils/2.19/12_all_sh-targets.patch
    60.9 +
   60.10 +r10231 | lethal | 2005-05-02 09:58:00 -0400 (Mon, 02 May 2005) | 13 lines
   60.11 +
   60.12 +Likewise, binutils has no idea about any of these new targets either, so we
   60.13 +fix that up too.. now we're able to actually build a real toolchain for
   60.14 +sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more
   60.15 +inept targets than that one, really. Go look, I promise).
   60.16 +
   60.17 +-= END original header =-
   60.18 +
   60.19 +diff -durN binutils-2.19.1.orig/configure binutils-2.19.1/configure
   60.20 +--- binutils-2.19.1.orig/configure	2009-03-08 11:57:00.000000000 +0100
   60.21 ++++ binutils-2.19.1/configure	2009-03-08 11:57:00.000000000 +0100
   60.22 +@@ -2281,7 +2281,7 @@
   60.23 +   am33_2.0-*-linux*)
   60.24 +     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   60.25 +     ;;
   60.26 +-  sh-*-linux*)
   60.27 ++  sh*-*-linux*)
   60.28 +     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   60.29 +     ;;
   60.30 +   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
   60.31 +@@ -2606,7 +2606,7 @@
   60.32 +   romp-*-*)
   60.33 +     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
   60.34 +     ;;
   60.35 +-  sh-*-* | sh64-*-*)
   60.36 ++  sh*-*-* | sh64-*-*)
   60.37 +     case "${host}" in
   60.38 +       i[3456789]86-*-vsta) ;; # don't add gprof back in
   60.39 +       i[3456789]86-*-go32*) ;; # don't add gprof back in
   60.40 +diff -durN binutils-2.19.1.orig/configure.ac binutils-2.19.1/configure.ac
   60.41 +--- binutils-2.19.1.orig/configure.ac	2009-02-02 12:54:49.000000000 +0100
   60.42 ++++ binutils-2.19.1/configure.ac	2009-03-08 11:57:00.000000000 +0100
   60.43 +@@ -530,7 +530,7 @@
   60.44 +   am33_2.0-*-linux*)
   60.45 +     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   60.46 +     ;;
   60.47 +-  sh-*-linux*)
   60.48 ++  sh*-*-linux*)
   60.49 +     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   60.50 +     ;;    
   60.51 +   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
   60.52 +@@ -855,7 +855,7 @@
   60.53 +   romp-*-*)
   60.54 +     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
   60.55 +     ;;
   60.56 +-  sh-*-* | sh64-*-*)
   60.57 ++  sh*-*-* | sh64-*-*)
   60.58 +     case "${host}" in
   60.59 +       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
   60.60 +       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
    61.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    61.2 +++ b/patches/binutils/2.19.1a/130-check_ldrunpath_length.patch	Sun Sep 11 18:18:53 2011 +0200
    61.3 @@ -0,0 +1,36 @@
    61.4 +Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/130-check_ldrunpath_length.patch
    61.5 +
    61.6 +-= BEGIN original header =-
    61.7 +Original patch from Gentoo:
    61.8 +gentoo/src/patchsets/binutils/2.19/42_all_012_check_ldrunpath_length.patch
    61.9 +
   61.10 +Originaly from Debian:
   61.11 +## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
   61.12 +##
   61.13 +## All lines beginning with `## DP:' are a description of the patch.
   61.14 +## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
   61.15 +## DP: cases where -rpath isn't specified. (#151024)
   61.16 +
   61.17 +-= END original header =-
   61.18 +
   61.19 +diff -durN binutils-2.19.1.orig/ld/emultempl/elf32.em binutils-2.19.1/ld/emultempl/elf32.em
   61.20 +--- binutils-2.19.1.orig/ld/emultempl/elf32.em	2008-09-07 06:02:31.000000000 +0200
   61.21 ++++ binutils-2.19.1/ld/emultempl/elf32.em	2009-03-08 11:57:01.000000000 +0100
   61.22 +@@ -1219,6 +1219,8 @@
   61.23 + 	      && command_line.rpath == NULL)
   61.24 + 	    {
   61.25 + 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
   61.26 ++	      if ((lib_path) && (strlen (lib_path) == 0))
   61.27 ++		  lib_path = NULL;
   61.28 + 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
   61.29 + 						      force))
   61.30 + 		break;
   61.31 +@@ -1404,6 +1406,8 @@
   61.32 +   rpath = command_line.rpath;
   61.33 +   if (rpath == NULL)
   61.34 +     rpath = (const char *) getenv ("LD_RUN_PATH");
   61.35 ++  if ((rpath) && (strlen (rpath) == 0))
   61.36 ++      rpath = NULL;
   61.37 +   if (! (bfd_elf_size_dynamic_sections
   61.38 + 	 (link_info.output_bfd, command_line.soname, rpath,
   61.39 + 	  command_line.filter_shlib,
    62.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    62.2 +++ b/patches/binutils/2.19.1a/140-pt-pax-flags-20081101.patch	Sun Sep 11 18:18:53 2011 +0200
    62.3 @@ -0,0 +1,254 @@
    62.4 +Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/140-pt-pax-flags-20081101.patch
    62.5 +
    62.6 +-= BEGIN original header =-
    62.7 +Original patch from Gentoo:
    62.8 +gentoo/src/patchsets/binutils/2.19/63_all_binutils-2.19-pt-pax-flags-20081101.patch
    62.9 +
   62.10 +-= END original header =-
   62.11 +
   62.12 +diff -durN binutils-2.19.1.orig/bfd/elf-bfd.h binutils-2.19.1/bfd/elf-bfd.h
   62.13 +--- binutils-2.19.1.orig/bfd/elf-bfd.h	2008-08-21 01:28:58.000000000 +0200
   62.14 ++++ binutils-2.19.1/bfd/elf-bfd.h	2009-03-08 11:57:02.000000000 +0100
   62.15 +@@ -1526,6 +1526,9 @@
   62.16 +   /* Segment flags for the PT_GNU_STACK segment.  */
   62.17 +   unsigned int stack_flags;
   62.18 + 
   62.19 ++  /* Segment flags for the PT_PAX_FLAGS segment.  */
   62.20 ++  unsigned int pax_flags;
   62.21 ++
   62.22 +   /* Symbol version definitions in external objects.  */
   62.23 +   Elf_Internal_Verdef *verdef;
   62.24 + 
   62.25 +diff -durN binutils-2.19.1.orig/bfd/elf.c binutils-2.19.1/bfd/elf.c
   62.26 +--- binutils-2.19.1.orig/bfd/elf.c	2008-12-23 14:54:48.000000000 +0100
   62.27 ++++ binutils-2.19.1/bfd/elf.c	2009-03-08 11:57:02.000000000 +0100
   62.28 +@@ -1136,6 +1136,7 @@
   62.29 +     case PT_GNU_EH_FRAME: pt = "EH_FRAME"; break;
   62.30 +     case PT_GNU_STACK: pt = "STACK"; break;
   62.31 +     case PT_GNU_RELRO: pt = "RELRO"; break;
   62.32 ++    case PT_PAX_FLAGS: pt = "PAX_FLAGS"; break;
   62.33 +     default: pt = NULL; break;
   62.34 +     }
   62.35 +   return pt;
   62.36 +@@ -2442,6 +2443,9 @@
   62.37 +     case PT_GNU_RELRO:
   62.38 +       return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "relro");
   62.39 + 
   62.40 ++    case PT_PAX_FLAGS:
   62.41 ++      return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "pax_flags");
   62.42 ++
   62.43 +     default:
   62.44 +       /* Check for any processor-specific program segment types.  */
   62.45 +       bed = get_elf_backend_data (abfd);
   62.46 +@@ -3404,6 +3408,11 @@
   62.47 +       ++segs;
   62.48 +     }
   62.49 + 
   62.50 ++    {
   62.51 ++      /* We need a PT_PAX_FLAGS segment.  */
   62.52 ++      ++segs;
   62.53 ++    }
   62.54 ++
   62.55 +   for (s = abfd->sections; s != NULL; s = s->next)
   62.56 +     {
   62.57 +       if ((s->flags & SEC_LOAD) != 0
   62.58 +@@ -3983,6 +3992,20 @@
   62.59 + 	    }
   62.60 + 	}
   62.61 + 
   62.62 ++    {
   62.63 ++      amt = sizeof (struct elf_segment_map);
   62.64 ++      m = bfd_zalloc (abfd, amt);
   62.65 ++      if (m == NULL)
   62.66 ++	goto error_return;
   62.67 ++      m->next = NULL;
   62.68 ++      m->p_type = PT_PAX_FLAGS;
   62.69 ++      m->p_flags = elf_tdata (abfd)->pax_flags;
   62.70 ++      m->p_flags_valid = 1;
   62.71 ++
   62.72 ++      *pm = m;
   62.73 ++      pm = &m->next;
   62.74 ++    }
   62.75 ++
   62.76 +       free (sections);
   62.77 +       elf_tdata (abfd)->segment_map = mfirst;
   62.78 +     }
   62.79 +@@ -5160,7 +5183,8 @@
   62.80 +        6. PT_TLS segment includes only SHF_TLS sections.
   62.81 +        7. SHF_TLS sections are only in PT_TLS or PT_LOAD segments.
   62.82 +        8. PT_DYNAMIC should not contain empty sections at the beginning
   62.83 +-	  (with the possible exception of .dynamic).  */
   62.84 ++	  (with the possible exception of .dynamic).
   62.85 ++       9. PT_PAX_FLAGS segments does not include any sections.  */
   62.86 + #define IS_SECTION_IN_INPUT_SEGMENT(section, segment, bed)		\
   62.87 +   ((((segment->p_paddr							\
   62.88 +       ? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr)	\
   62.89 +@@ -5168,6 +5192,7 @@
   62.90 +      && (section->flags & SEC_ALLOC) != 0)				\
   62.91 +     || IS_NOTE (segment, section))					\
   62.92 +    && segment->p_type != PT_GNU_STACK					\
   62.93 ++   && segment->p_type != PT_PAX_FLAGS					\
   62.94 +    && (segment->p_type != PT_TLS					\
   62.95 +        || (section->flags & SEC_THREAD_LOCAL))				\
   62.96 +    && (segment->p_type == PT_LOAD					\
   62.97 +diff -durN binutils-2.19.1.orig/bfd/elflink.c binutils-2.19.1/bfd/elflink.c
   62.98 +--- binutils-2.19.1.orig/bfd/elflink.c	2008-08-22 10:32:39.000000000 +0200
   62.99 ++++ binutils-2.19.1/bfd/elflink.c	2009-03-08 11:57:02.000000000 +0100
  62.100 +@@ -5397,16 +5397,30 @@
  62.101 +     return TRUE;
  62.102 + 
  62.103 +   bed = get_elf_backend_data (output_bfd);
  62.104 ++  elf_tdata (output_bfd)->pax_flags = PF_NORANDEXEC;
  62.105 ++
  62.106 ++  if (info->execheap)
  62.107 ++    elf_tdata (output_bfd)->pax_flags |= PF_NOMPROTECT;
  62.108 ++  else if (info->noexecheap)
  62.109 ++    elf_tdata (output_bfd)->pax_flags |= PF_MPROTECT;
  62.110 ++
  62.111 +   if (info->execstack)
  62.112 +-    elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
  62.113 ++    {
  62.114 ++      elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
  62.115 ++      elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
  62.116 ++    }
  62.117 +   else if (info->noexecstack)
  62.118 +-    elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
  62.119 ++    {
  62.120 ++      elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
  62.121 ++      elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
  62.122 ++    }
  62.123 +   else
  62.124 +     {
  62.125 +       bfd *inputobj;
  62.126 +       asection *notesec = NULL;
  62.127 +       int exec = 0;
  62.128 + 
  62.129 ++      elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
  62.130 +       for (inputobj = info->input_bfds;
  62.131 + 	   inputobj;
  62.132 + 	   inputobj = inputobj->link_next)
  62.133 +@@ -5419,7 +5433,11 @@
  62.134 + 	  if (s)
  62.135 + 	    {
  62.136 + 	      if (s->flags & SEC_CODE)
  62.137 +-		exec = PF_X;
  62.138 ++		{
  62.139 ++		  elf_tdata (output_bfd)->pax_flags &= ~PF_NOEMUTRAMP;
  62.140 ++		  elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
  62.141 ++		  exec = PF_X;
  62.142 ++		}
  62.143 + 	      notesec = s;
  62.144 + 	    }
  62.145 + 	  else if (bed->default_execstack)
  62.146 +diff -durN binutils-2.19.1.orig/binutils/readelf.c binutils-2.19.1/binutils/readelf.c
  62.147 +--- binutils-2.19.1.orig/binutils/readelf.c	2008-09-17 11:00:44.000000000 +0200
  62.148 ++++ binutils-2.19.1/binutils/readelf.c	2009-03-08 11:57:02.000000000 +0100
  62.149 +@@ -2505,6 +2505,7 @@
  62.150 + 			return "GNU_EH_FRAME";
  62.151 +     case PT_GNU_STACK:	return "GNU_STACK";
  62.152 +     case PT_GNU_RELRO:  return "GNU_RELRO";
  62.153 ++    case PT_PAX_FLAGS:  return "PAX_FLAGS";
  62.154 + 
  62.155 +     default:
  62.156 +       if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC))
  62.157 +diff -durN binutils-2.19.1.orig/include/bfdlink.h binutils-2.19.1/include/bfdlink.h
  62.158 +--- binutils-2.19.1.orig/include/bfdlink.h	2008-08-17 05:12:50.000000000 +0200
  62.159 ++++ binutils-2.19.1/include/bfdlink.h	2009-03-08 11:57:02.000000000 +0100
  62.160 +@@ -319,6 +319,14 @@
  62.161 +   /* TRUE if PT_GNU_RELRO segment should be created.  */
  62.162 +   unsigned int relro: 1;
  62.163 + 
  62.164 ++  /* TRUE if PT_PAX_FLAGS segment should be created with PF_NOMPROTECT
  62.165 ++     flags.  */
  62.166 ++  unsigned int execheap: 1;
  62.167 ++
  62.168 ++  /* TRUE if PT_PAX_FLAGS segment should be created with PF_MPROTECT
  62.169 ++     flags.  */
  62.170 ++  unsigned int noexecheap: 1;
  62.171 ++
  62.172 +   /* TRUE if we should warn when adding a DT_TEXTREL to a shared object.  */
  62.173 +   unsigned int warn_shared_textrel: 1;
  62.174 + 
  62.175 +diff -durN binutils-2.19.1.orig/include/elf/common.h binutils-2.19.1/include/elf/common.h
  62.176 +--- binutils-2.19.1.orig/include/elf/common.h	2008-08-04 01:20:42.000000000 +0200
  62.177 ++++ binutils-2.19.1/include/elf/common.h	2009-03-08 11:57:02.000000000 +0100
  62.178 +@@ -360,6 +360,7 @@
  62.179 + #define PT_SUNW_EH_FRAME PT_GNU_EH_FRAME      /* Solaris uses the same value */
  62.180 + #define PT_GNU_STACK	(PT_LOOS + 0x474e551) /* Stack flags */
  62.181 + #define PT_GNU_RELRO	(PT_LOOS + 0x474e552) /* Read-only after relocation */
  62.182 ++#define PT_PAX_FLAGS	(PT_LOOS + 0x5041580) /* PaX flags */
  62.183 + 
  62.184 + /* Program segment permissions, in program header p_flags field.  */
  62.185 + 
  62.186 +@@ -370,6 +371,21 @@
  62.187 + #define PF_MASKOS	0x0FF00000	/* New value, Oct 4, 1999 Draft */
  62.188 + #define PF_MASKPROC	0xF0000000	/* Processor-specific reserved bits */
  62.189 + 
  62.190 ++/* Flags to control PaX behavior.  */
  62.191 ++
  62.192 ++#define PF_PAGEEXEC	(1 << 4)	/* Enable  PAGEEXEC */
  62.193 ++#define PF_NOPAGEEXEC	(1 << 5)	/* Disable PAGEEXEC */
  62.194 ++#define PF_SEGMEXEC	(1 << 6)	/* Enable  SEGMEXEC */
  62.195 ++#define PF_NOSEGMEXEC	(1 << 7)	/* Disable SEGMEXEC */
  62.196 ++#define PF_MPROTECT	(1 << 8)	/* Enable  MPROTECT */
  62.197 ++#define PF_NOMPROTECT	(1 << 9)	/* Disable MPROTECT */
  62.198 ++#define PF_RANDEXEC	(1 << 10)	/* Enable  RANDEXEC */
  62.199 ++#define PF_NORANDEXEC	(1 << 11)	/* Disable RANDEXEC */
  62.200 ++#define PF_EMUTRAMP	(1 << 12)	/* Enable  EMUTRAMP */
  62.201 ++#define PF_NOEMUTRAMP	(1 << 13)	/* Disable EMUTRAMP */
  62.202 ++#define PF_RANDMMAP	(1 << 14)	/* Enable  RANDMMAP */
  62.203 ++#define PF_NORANDMMAP	(1 << 15)	/* Disable RANDMMAP */
  62.204 ++
  62.205 + /* Values for section header, sh_type field.  */
  62.206 + 
  62.207 + #define SHT_NULL	0		/* Section header table entry unused */
  62.208 +diff -durN binutils-2.19.1.orig/ld/emultempl/elf32.em binutils-2.19.1/ld/emultempl/elf32.em
  62.209 +--- binutils-2.19.1.orig/ld/emultempl/elf32.em	2009-03-08 11:57:01.000000000 +0100
  62.210 ++++ binutils-2.19.1/ld/emultempl/elf32.em	2009-03-08 11:57:02.000000000 +0100
  62.211 +@@ -2146,6 +2146,16 @@
  62.212 + 	  link_info.noexecstack = TRUE;
  62.213 + 	  link_info.execstack = FALSE;
  62.214 + 	}
  62.215 ++      else if (strcmp (optarg, "execheap") == 0)
  62.216 ++	{
  62.217 ++	  link_info.execheap = TRUE;
  62.218 ++	  link_info.noexecheap = FALSE;
  62.219 ++	}
  62.220 ++      else if (strcmp (optarg, "noexecheap") == 0)
  62.221 ++	{
  62.222 ++	  link_info.noexecheap = TRUE;
  62.223 ++	  link_info.execheap = FALSE;
  62.224 ++	}
  62.225 + EOF
  62.226 + 
  62.227 +   if test -n "$COMMONPAGESIZE"; then
  62.228 +@@ -2229,6 +2239,8 @@
  62.229 +   fprintf (file, _("\
  62.230 +   -z execstack                Mark executable as requiring executable stack\n"));
  62.231 +   fprintf (file, _("\
  62.232 ++  -z execheap\t\tMark executable as requiring executable heap\n"));
  62.233 ++  fprintf (file, _("\
  62.234 +   -z initfirst                Mark DSO to be initialized first at runtime\n"));
  62.235 +   fprintf (file, _("\
  62.236 +   -z interpose                Mark object to interpose all DSOs but executable\n"));
  62.237 +@@ -2252,6 +2264,8 @@
  62.238 +   -z nodump                   Mark DSO not available to dldump\n"));
  62.239 +   fprintf (file, _("\
  62.240 +   -z noexecstack              Mark executable as not requiring executable stack\n"));
  62.241 ++  fprintf (file, _("\
  62.242 ++  -z noexecheap\tMark executable as not requiring executable heap\n"));
  62.243 + EOF
  62.244 + 
  62.245 +   if test -n "$COMMONPAGESIZE"; then
  62.246 +diff -durN binutils-2.19.1.orig/ld/ldgram.y binutils-2.19.1/ld/ldgram.y
  62.247 +--- binutils-2.19.1.orig/ld/ldgram.y	2008-07-06 15:38:36.000000000 +0200
  62.248 ++++ binutils-2.19.1/ld/ldgram.y	2009-03-08 11:57:02.000000000 +0100
  62.249 +@@ -1112,6 +1112,8 @@
  62.250 + 			    $$ = exp_intop (0x6474e550);
  62.251 + 			  else if (strcmp (s, "PT_GNU_STACK") == 0)
  62.252 + 			    $$ = exp_intop (0x6474e551);
  62.253 ++			  else if (strcmp (s, "PT_PAX_FLAGS") == 0)
  62.254 ++			    $$ = exp_intop (0x65041580);
  62.255 + 			  else
  62.256 + 			    {
  62.257 + 			      einfo (_("\
    63.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    63.2 +++ b/patches/binutils/2.19.1a/150-warn-textrel.patch	Sun Sep 11 18:18:53 2011 +0200
    63.3 @@ -0,0 +1,53 @@
    63.4 +Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/150-warn-textrel.patch
    63.5 +
    63.6 +-= BEGIN original header =-
    63.7 +Original patch from Gentoo:
    63.8 +gentoo/src/patchsets/binutils/2.19/66_all_binutils-2.18.50.0.2-warn-textrel.patch
    63.9 +
   63.10 +textrels are bad for forcing copy-on-write (this affects everyone),
   63.11 +and for security/runtime code generation, this affects security ppl.
   63.12 +But in either case, it doesn't matter who needs textrels, it's
   63.13 +the very fact that they're needed at all.
   63.14 +
   63.15 +-= END original header =-
   63.16 +
   63.17 +diff -durN binutils-2.19.1.orig/bfd/elflink.c binutils-2.19.1/bfd/elflink.c
   63.18 +--- binutils-2.19.1.orig/bfd/elflink.c	2009-03-08 11:57:02.000000000 +0100
   63.19 ++++ binutils-2.19.1/bfd/elflink.c	2009-03-08 11:57:02.000000000 +0100
   63.20 +@@ -10820,14 +10820,12 @@
   63.21 + 	goto error_return;
   63.22 + 
   63.23 +       /* Check for DT_TEXTREL (late, in case the backend removes it).  */
   63.24 +-      if (info->warn_shared_textrel && info->shared)
   63.25 ++      o = bfd_get_section_by_name (dynobj, ".dynamic");
   63.26 ++      if (info->warn_shared_textrel && o != NULL)
   63.27 + 	{
   63.28 + 	  bfd_byte *dyncon, *dynconend;
   63.29 + 
   63.30 + 	  /* Fix up .dynamic entries.  */
   63.31 +-	  o = bfd_get_section_by_name (dynobj, ".dynamic");
   63.32 +-	  BFD_ASSERT (o != NULL);
   63.33 +-
   63.34 + 	  dyncon = o->contents;
   63.35 + 	  dynconend = o->contents + o->size;
   63.36 + 	  for (; dyncon < dynconend; dyncon += bed->s->sizeof_dyn)
   63.37 +@@ -10839,7 +10837,7 @@
   63.38 + 	      if (dyn.d_tag == DT_TEXTREL)
   63.39 + 		{
   63.40 + 		 info->callbacks->einfo
   63.41 +-		    (_("%P: warning: creating a DT_TEXTREL in a shared object.\n"));
   63.42 ++		    (_("%P: warning: creating a DT_TEXTREL in object.\n"));
   63.43 + 		  break;
   63.44 + 		}
   63.45 + 	    }
   63.46 +diff -durN binutils-2.19.1.orig/ld/ldmain.c binutils-2.19.1/ld/ldmain.c
   63.47 +--- binutils-2.19.1.orig/ld/ldmain.c	2008-08-17 05:12:50.000000000 +0200
   63.48 ++++ binutils-2.19.1/ld/ldmain.c	2009-03-08 11:57:02.000000000 +0100
   63.49 +@@ -274,6 +274,7 @@
   63.50 +   link_info.relax_pass = 1;
   63.51 +   link_info.pei386_auto_import = -1;
   63.52 +   link_info.spare_dynamic_tags = 5;
   63.53 ++  link_info.warn_shared_textrel = TRUE;
   63.54 +   link_info.path_separator = ':';
   63.55 + 
   63.56 +   ldfile_add_arch ("");
    64.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    64.2 +++ b/patches/binutils/2.19.1a/160-use-new-ld-dtags.patch	Sun Sep 11 18:18:53 2011 +0200
    64.3 @@ -0,0 +1,19 @@
    64.4 +Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/160-use-new-ld-dtags.patch
    64.5 +
    64.6 +-= BEGIN original header =-
    64.7 +Original patch from Gentoo:
    64.8 +gentoo/src/patchsets/binutils/2.19/76_all_use-new-ld-dtags.patch
    64.9 +
   64.10 +-= END original header =-
   64.11 +
   64.12 +diff -durN binutils-2.19.1.orig/ld/ldmain.c binutils-2.19.1/ld/ldmain.c
   64.13 +--- binutils-2.19.1.orig/ld/ldmain.c	2009-03-08 11:57:03.000000000 +0100
   64.14 ++++ binutils-2.19.1/ld/ldmain.c	2009-03-08 11:57:03.000000000 +0100
   64.15 +@@ -262,6 +262,7 @@
   64.16 + 
   64.17 +   link_info.allow_undefined_version = TRUE;
   64.18 +   link_info.keep_memory = TRUE;
   64.19 ++  link_info.new_dtags = TRUE;
   64.20 +   link_info.combreloc = TRUE;
   64.21 +   link_info.strip_discarded = TRUE;
   64.22 +   link_info.emit_hash = TRUE;
    65.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    65.2 +++ b/patches/binutils/2.19.1a/170-use-relro.patch	Sun Sep 11 18:18:53 2011 +0200
    65.3 @@ -0,0 +1,19 @@
    65.4 +Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/170-use-relro.patch
    65.5 +
    65.6 +-= BEGIN original header =-
    65.7 +Original patch from Gentoo:
    65.8 +gentoo/src/patchsets/binutils/2.19/78_all_use-relro.patch
    65.9 +
   65.10 +-= END original header =-
   65.11 +
   65.12 +diff -durN binutils-2.19.1.orig/ld/ldmain.c binutils-2.19.1/ld/ldmain.c
   65.13 +--- binutils-2.19.1.orig/ld/ldmain.c	2009-03-08 11:57:03.000000000 +0100
   65.14 ++++ binutils-2.19.1/ld/ldmain.c	2009-03-08 11:57:03.000000000 +0100
   65.15 +@@ -264,6 +264,7 @@
   65.16 +   link_info.keep_memory = TRUE;
   65.17 +   link_info.new_dtags = TRUE;
   65.18 +   link_info.combreloc = TRUE;
   65.19 ++  link_info.relro = TRUE;
   65.20 +   link_info.strip_discarded = TRUE;
   65.21 +   link_info.emit_hash = TRUE;
   65.22 +   link_info.callbacks = &link_callbacks;
    66.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    66.2 +++ b/patches/binutils/2.19.1a/180-libiberty-pic.patch	Sun Sep 11 18:18:53 2011 +0200
    66.3 @@ -0,0 +1,19 @@
    66.4 +Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/180-libiberty-pic.patch
    66.5 +
    66.6 +-= BEGIN original header =-
    66.7 +Original patch from Gentoo:
    66.8 +gentoo/src/patchsets/binutils/2.19/91_all_libiberty-pic.patch
    66.9 +
   66.10 +-= END original header =-
   66.11 +
   66.12 +diff -durN binutils-2.19.1.orig/libiberty/Makefile.in binutils-2.19.1/libiberty/Makefile.in
   66.13 +--- binutils-2.19.1.orig/libiberty/Makefile.in	2008-07-24 15:51:49.000000000 +0200
   66.14 ++++ binutils-2.19.1/libiberty/Makefile.in	2009-03-08 11:57:03.000000000 +0100
   66.15 +@@ -227,6 +227,7 @@
   66.16 + 	  $(AR) $(AR_FLAGS) $(TARGETLIB) \
   66.17 + 	    $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \
   66.18 + 	  $(RANLIB) $(TARGETLIB); \
   66.19 ++	  cp $(TARGETLIB) ../ ; \
   66.20 + 	  cd ..; \
   66.21 + 	else true; fi
   66.22 + 
    67.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    67.2 +++ b/patches/binutils/2.19.1a/190-mips64-defaultemul.patch	Sun Sep 11 18:18:53 2011 +0200
    67.3 @@ -0,0 +1,18 @@
    67.4 +--- binutils-2.20/ld/configure.tgt.orig	2010-02-20 04:05:31.000000000 -0500
    67.5 ++++ binutils-2.20/ld/configure.tgt	2010-02-20 04:08:11.000000000 -0500
    67.6 +@@ -400,11 +400,11 @@
    67.7 + mips*-*-vxworks*)	targ_emul=elf32ebmipvxworks
    67.8 + 		        targ_extra_emuls="elf32elmipvxworks" ;;
    67.9 + mips*-*-windiss)	targ_emul=elf32mipswindiss ;;
   67.10 +-mips64*el-*-linux-*)	targ_emul=elf32ltsmipn32
   67.11 +-			targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip"
   67.12 ++mips64*el-*-linux-*)	targ_emul=elf64ltsmip
   67.13 ++			targ_extra_emuls="elf32ltsmipn32 elf32btsmipn32 elf32ltsmip elf32btsmip elf64btsmip"
   67.14 + 			targ_extra_libpath=$targ_extra_emuls ;;
   67.15 +-mips64*-*-linux-*)	targ_emul=elf32btsmipn32
   67.16 +-			targ_extra_emuls="elf32ltsmipn32 elf32btsmip elf32ltsmip elf64btsmip elf64ltsmip"
   67.17 ++mips64*-*-linux-*)	targ_emul=elf64btsmip
   67.18 ++			targ_extra_emuls="elf32btsmipn32 elf32ltsmipn32 elf32btsmip elf32ltsmip elf64ltsmip"
   67.19 + 			targ_extra_libpath=$targ_extra_emuls ;;
   67.20 + mips*el-*-linux-*)	targ_emul=elf32ltsmip
   67.21 + 			targ_extra_emuls="elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip"
    68.1 --- a/patches/binutils/2.20.1/100-ppc64-pie.patch	Sun Sep 11 18:26:12 2011 +0200
    68.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    68.3 @@ -1,19 +0,0 @@
    68.4 -
    68.5 -
    68.6 -diff -durN binutils-2.20.1.orig/bfd/elf64-ppc.c binutils-2.20.1/bfd/elf64-ppc.c
    68.7 ---- binutils-2.20.1.orig/bfd/elf64-ppc.c	2010-02-03 14:28:25.000000000 +0100
    68.8 -+++ binutils-2.20.1/bfd/elf64-ppc.c	2010-08-17 19:32:04.000000000 +0200
    68.9 -@@ -11991,7 +11991,12 @@
   68.10 - 	      else if (!SYMBOL_REFERENCES_LOCAL (info, &h->elf)
   68.11 - 		       && !is_opd
   68.12 - 		       && r_type != R_PPC64_TOC)
   68.13 --		outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
   68.14 -+		{
   68.15 -+		  outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
   68.16 -+		  if (h->elf.dynindx == -1
   68.17 -+		      && h->elf.root.type == bfd_link_hash_undefweak)
   68.18 -+		  memset (&outrel, 0, sizeof outrel);
   68.19 -+		}
   68.20 - 	      else
   68.21 - 		{
   68.22 - 		  /* This symbol is local, or marked to become local,
    69.1 --- a/patches/binutils/2.20.1/110-RPATH_ENVVAR-smack.patch	Sun Sep 11 18:26:12 2011 +0200
    69.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    69.3 @@ -1,14 +0,0 @@
    69.4 -http://sourceware.org/ml/binutils/2007-07/msg00401.html
    69.5 -http://sourceware.org/bugzilla/show_bug.cgi?id=4970
    69.6 -
    69.7 -diff -durN binutils-2.20.1.orig/configure binutils-2.20.1/configure
    69.8 ---- binutils-2.20.1.orig/configure	2010-03-03 14:59:02.000000000 +0100
    69.9 -+++ binutils-2.20.1/configure	2010-08-17 19:32:05.000000000 +0200
   69.10 -@@ -6466,6 +6466,7 @@
   69.11 -   *-*-mingw* | *-*-cygwin ) RPATH_ENVVAR=PATH ;;
   69.12 -   *) RPATH_ENVVAR=LD_LIBRARY_PATH ;;
   69.13 - esac
   69.14 -+RPATH_ENVVAR="cant_touch_this_nah_nah_nah"
   69.15 - 
   69.16 - # On systems where the dynamic library environment variable is PATH,
   69.17 - # gcc/ will put dynamic libraries into a subdirectory to avoid adding
    70.1 --- a/patches/binutils/2.20.1/120-sh-targets.patch	Sun Sep 11 18:26:12 2011 +0200
    70.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    70.3 @@ -1,44 +0,0 @@
    70.4 -
    70.5 -
    70.6 -diff -durN binutils-2.20.1.orig/configure binutils-2.20.1/configure
    70.7 ---- binutils-2.20.1.orig/configure	2010-08-17 19:32:05.000000000 +0200
    70.8 -+++ binutils-2.20.1/configure	2010-08-17 19:32:07.000000000 +0200
    70.9 -@@ -3054,7 +3054,7 @@
   70.10 -   am33_2.0-*-linux*)
   70.11 -     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   70.12 -     ;;
   70.13 --  sh-*-linux*)
   70.14 -+  sh*-*-linux*)
   70.15 -     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   70.16 -     ;;
   70.17 -   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
   70.18 -@@ -3390,7 +3390,7 @@
   70.19 -   romp-*-*)
   70.20 -     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
   70.21 -     ;;
   70.22 --  sh-*-* | sh64-*-*)
   70.23 -+  sh*-*-* | sh64-*-*)
   70.24 -     case "${host}" in
   70.25 -       i[3456789]86-*-vsta) ;; # don't add gprof back in
   70.26 -       i[3456789]86-*-go32*) ;; # don't add gprof back in
   70.27 -diff -durN binutils-2.20.1.orig/configure.ac binutils-2.20.1/configure.ac
   70.28 ---- binutils-2.20.1.orig/configure.ac	2010-03-03 15:19:08.000000000 +0100
   70.29 -+++ binutils-2.20.1/configure.ac	2010-08-17 19:32:07.000000000 +0200
   70.30 -@@ -541,7 +541,7 @@
   70.31 -   am33_2.0-*-linux*)
   70.32 -     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   70.33 -     ;;
   70.34 --  sh-*-linux*)
   70.35 -+  sh*-*-linux*)
   70.36 -     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   70.37 -     ;;    
   70.38 -   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
   70.39 -@@ -877,7 +877,7 @@
   70.40 -   romp-*-*)
   70.41 -     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
   70.42 -     ;;
   70.43 --  sh-*-* | sh64-*-*)
   70.44 -+  sh*-*-* | sh64-*-*)
   70.45 -     case "${host}" in
   70.46 -       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
   70.47 -       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
    71.1 --- a/patches/binutils/2.20.1/130-ld-sysroot.patch	Sun Sep 11 18:26:12 2011 +0200
    71.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    71.3 @@ -1,37 +0,0 @@
    71.4 -Signed-off-by: Sven Rebhan <odinshorse@googlemail.com>
    71.5 -
    71.6 -Always try to prepend the sysroot prefix to absolute filenames first.
    71.7 -
    71.8 -http://bugs.gentoo.org/275666
    71.9 -http://sourceware.org/bugzilla/show_bug.cgi?id=10340
   71.10 -
   71.11 -diff -durN binutils-2.20.1.orig/ld/ldfile.c binutils-2.20.1/ld/ldfile.c
   71.12 ---- binutils-2.20.1.orig/ld/ldfile.c	2009-08-30 00:11:01.000000000 +0200
   71.13 -+++ binutils-2.20.1/ld/ldfile.c	2010-08-17 19:32:08.000000000 +0200
   71.14 -@@ -308,18 +308,24 @@
   71.15 -      directory first.  */
   71.16 -   if (! entry->is_archive)
   71.17 -     {
   71.18 --      if (entry->sysrooted && IS_ABSOLUTE_PATH (entry->filename))
   71.19 -+      /* For absolute pathnames, try to always open the file in the
   71.20 -+	 sysroot first. If this fails, try to open the file at the
   71.21 -+	 given location. */
   71.22 -+      entry->sysrooted = is_sysrooted_pathname(entry->filename, FALSE);
   71.23 -+      if (IS_ABSOLUTE_PATH (entry->filename) && ld_sysroot && ! entry->sysrooted)
   71.24 - 	{
   71.25 - 	  char *name = concat (ld_sysroot, entry->filename,
   71.26 - 			       (const char *) NULL);
   71.27 - 	  if (ldfile_try_open_bfd (name, entry))
   71.28 - 	    {
   71.29 - 	      entry->filename = name;
   71.30 -+	      entry->sysrooted = TRUE;
   71.31 - 	      return TRUE;
   71.32 - 	    }
   71.33 - 	  free (name);
   71.34 - 	}
   71.35 --      else if (ldfile_try_open_bfd (entry->filename, entry))
   71.36 -+
   71.37 -+      if (ldfile_try_open_bfd (entry->filename, entry))
   71.38 - 	{
   71.39 - 	  entry->sysrooted = IS_ABSOLUTE_PATH (entry->filename)
   71.40 - 	    && is_sysrooted_pathname (entry->filename, TRUE);
    72.1 --- a/patches/binutils/2.20.1/140-check_ldrunpath_length.patch	Sun Sep 11 18:26:12 2011 +0200
    72.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    72.3 @@ -1,49 +0,0 @@
    72.4 -#!/bin/sh -e
    72.5 -## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
    72.6 -##
    72.7 -## All lines beginning with `## DP:' are a description of the patch.
    72.8 -## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
    72.9 -## DP: cases where -rpath isn't specified. (#151024)
   72.10 -
   72.11 -if [ $# -ne 1 ]; then
   72.12 -    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
   72.13 -    exit 1
   72.14 -fi
   72.15 -
   72.16 -[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
   72.17 -patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
   72.18 -
   72.19 -case "$1" in
   72.20 -       -patch) patch $patch_opts -p1 < $0;;
   72.21 -       -unpatch) patch $patch_opts -p1 -R < $0;;
   72.22 -        *)
   72.23 -                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
   72.24 -                exit 1;;
   72.25 -esac
   72.26 -
   72.27 -exit 0
   72.28 -
   72.29 -@DPATCH@
   72.30 -diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
   72.31 -
   72.32 -diff -durN binutils-2.20.1.orig/ld/emultempl/elf32.em binutils-2.20.1/ld/emultempl/elf32.em
   72.33 ---- binutils-2.20.1.orig/ld/emultempl/elf32.em	2009-09-14 13:43:30.000000000 +0200
   72.34 -+++ binutils-2.20.1/ld/emultempl/elf32.em	2010-08-17 19:32:09.000000000 +0200
   72.35 -@@ -1233,6 +1233,8 @@
   72.36 - 	      && command_line.rpath == NULL)
   72.37 - 	    {
   72.38 - 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
   72.39 -+	      if ((lib_path) && (strlen (lib_path) == 0))
   72.40 -+		  lib_path = NULL;
   72.41 - 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
   72.42 - 						      force))
   72.43 - 		break;
   72.44 -@@ -1418,6 +1420,8 @@
   72.45 -   rpath = command_line.rpath;
   72.46 -   if (rpath == NULL)
   72.47 -     rpath = (const char *) getenv ("LD_RUN_PATH");
   72.48 -+  if ((rpath) && (strlen (rpath) == 0))
   72.49 -+      rpath = NULL;
   72.50 -   if (! (bfd_elf_size_dynamic_sections
   72.51 - 	 (link_info.output_bfd, command_line.soname, rpath,
   72.52 - 	  command_line.filter_shlib,
    73.1 --- a/patches/binutils/2.20.1/150-pt-pax-flags-20090909.patch	Sun Sep 11 18:26:12 2011 +0200
    73.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    73.3 @@ -1,248 +0,0 @@
    73.4 -
    73.5 -
    73.6 -diff -durN binutils-2.20.1.orig/bfd/elf-bfd.h binutils-2.20.1/bfd/elf-bfd.h
    73.7 ---- binutils-2.20.1.orig/bfd/elf-bfd.h	2009-09-10 13:47:12.000000000 +0200
    73.8 -+++ binutils-2.20.1/bfd/elf-bfd.h	2010-08-17 19:32:11.000000000 +0200
    73.9 -@@ -1531,6 +1531,9 @@
   73.10 -   /* Segment flags for the PT_GNU_STACK segment.  */
   73.11 -   unsigned int stack_flags;
   73.12 - 
   73.13 -+  /* Segment flags for the PT_PAX_FLAGS segment.  */
   73.14 -+  unsigned int pax_flags;
   73.15 -+
   73.16 -   /* Symbol version definitions in external objects.  */
   73.17 -   Elf_Internal_Verdef *verdef;
   73.18 - 
   73.19 -diff -durN binutils-2.20.1.orig/bfd/elf.c binutils-2.20.1/bfd/elf.c
   73.20 ---- binutils-2.20.1.orig/bfd/elf.c	2009-09-10 13:47:12.000000000 +0200
   73.21 -+++ binutils-2.20.1/bfd/elf.c	2010-08-17 19:32:11.000000000 +0200
   73.22 -@@ -1083,6 +1083,7 @@
   73.23 -     case PT_GNU_EH_FRAME: pt = "EH_FRAME"; break;
   73.24 -     case PT_GNU_STACK: pt = "STACK"; break;
   73.25 -     case PT_GNU_RELRO: pt = "RELRO"; break;
   73.26 -+    case PT_PAX_FLAGS: pt = "PAX_FLAGS"; break;
   73.27 -     default: pt = NULL; break;
   73.28 -     }
   73.29 -   return pt;
   73.30 -@@ -2396,6 +2397,9 @@
   73.31 -     case PT_GNU_RELRO:
   73.32 -       return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "relro");
   73.33 - 
   73.34 -+    case PT_PAX_FLAGS:
   73.35 -+      return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "pax_flags");
   73.36 -+
   73.37 -     default:
   73.38 -       /* Check for any processor-specific program segment types.  */
   73.39 -       bed = get_elf_backend_data (abfd);
   73.40 -@@ -3413,6 +3417,11 @@
   73.41 -       ++segs;
   73.42 -     }
   73.43 - 
   73.44 -+    {
   73.45 -+      /* We need a PT_PAX_FLAGS segment.  */
   73.46 -+      ++segs;
   73.47 -+    }
   73.48 -+
   73.49 -   for (s = abfd->sections; s != NULL; s = s->next)
   73.50 -     {
   73.51 -       if ((s->flags & SEC_LOAD) != 0
   73.52 -@@ -3994,6 +4003,20 @@
   73.53 - 	    }
   73.54 - 	}
   73.55 - 
   73.56 -+    {
   73.57 -+      amt = sizeof (struct elf_segment_map);
   73.58 -+      m = bfd_zalloc (abfd, amt);
   73.59 -+      if (m == NULL)
   73.60 -+	goto error_return;
   73.61 -+      m->next = NULL;
   73.62 -+      m->p_type = PT_PAX_FLAGS;
   73.63 -+      m->p_flags = elf_tdata (abfd)->pax_flags;
   73.64 -+      m->p_flags_valid = 1;
   73.65 -+
   73.66 -+      *pm = m;
   73.67 -+      pm = &m->next;
   73.68 -+    }
   73.69 -+
   73.70 -       free (sections);
   73.71 -       elf_tdata (abfd)->segment_map = mfirst;
   73.72 -     }
   73.73 -@@ -5198,7 +5221,8 @@
   73.74 -        6. PT_TLS segment includes only SHF_TLS sections.
   73.75 -        7. SHF_TLS sections are only in PT_TLS or PT_LOAD segments.
   73.76 -        8. PT_DYNAMIC should not contain empty sections at the beginning
   73.77 --	  (with the possible exception of .dynamic).  */
   73.78 -+	  (with the possible exception of .dynamic).
   73.79 -+       9. PT_PAX_FLAGS segments do not include any sections.  */
   73.80 - #define IS_SECTION_IN_INPUT_SEGMENT(section, segment, bed)		\
   73.81 -   ((((segment->p_paddr							\
   73.82 -       ? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr)	\
   73.83 -@@ -5206,6 +5230,7 @@
   73.84 -      && (section->flags & SEC_ALLOC) != 0)				\
   73.85 -     || IS_NOTE (segment, section))					\
   73.86 -    && segment->p_type != PT_GNU_STACK					\
   73.87 -+   && segment->p_type != PT_PAX_FLAGS					\
   73.88 -    && (segment->p_type != PT_TLS					\
   73.89 -        || (section->flags & SEC_THREAD_LOCAL))				\
   73.90 -    && (segment->p_type == PT_LOAD					\
   73.91 -diff -durN binutils-2.20.1.orig/bfd/elflink.c binutils-2.20.1/bfd/elflink.c
   73.92 ---- binutils-2.20.1.orig/bfd/elflink.c	2009-09-10 13:47:12.000000000 +0200
   73.93 -+++ binutils-2.20.1/bfd/elflink.c	2010-08-17 19:32:11.000000000 +0200
   73.94 -@@ -5469,16 +5469,30 @@
   73.95 -     return TRUE;
   73.96 - 
   73.97 -   bed = get_elf_backend_data (output_bfd);
   73.98 -+
   73.99 -+  elf_tdata (output_bfd)->pax_flags = PF_NORANDEXEC;
  73.100 -+  if (info->execheap)
  73.101 -+    elf_tdata (output_bfd)->pax_flags |= PF_NOMPROTECT;
  73.102 -+  else if (info->noexecheap)
  73.103 -+    elf_tdata (output_bfd)->pax_flags |= PF_MPROTECT;
  73.104 -+
  73.105 -   if (info->execstack)
  73.106 --    elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
  73.107 -+    {
  73.108 -+      elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
  73.109 -+      elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
  73.110 -+    }
  73.111 -   else if (info->noexecstack)
  73.112 --    elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
  73.113 -+    {
  73.114 -+      elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
  73.115 -+      elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
  73.116 -+    }
  73.117 -   else
  73.118 -     {
  73.119 -       bfd *inputobj;
  73.120 -       asection *notesec = NULL;
  73.121 -       int exec = 0;
  73.122 - 
  73.123 -+      elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
  73.124 -       for (inputobj = info->input_bfds;
  73.125 - 	   inputobj;
  73.126 - 	   inputobj = inputobj->link_next)
  73.127 -@@ -5491,7 +5505,11 @@
  73.128 - 	  if (s)
  73.129 - 	    {
  73.130 - 	      if (s->flags & SEC_CODE)
  73.131 --		exec = PF_X;
  73.132 -+		{
  73.133 -+		  elf_tdata (output_bfd)->pax_flags &= ~PF_NOEMUTRAMP;
  73.134 -+		  elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
  73.135 -+		  exec = PF_X;
  73.136 -+		}
  73.137 - 	      notesec = s;
  73.138 - 	    }
  73.139 - 	  else if (bed->default_execstack)
  73.140 -diff -durN binutils-2.20.1.orig/binutils/readelf.c binutils-2.20.1/binutils/readelf.c
  73.141 ---- binutils-2.20.1.orig/binutils/readelf.c	2010-01-14 11:48:23.000000000 +0100
  73.142 -+++ binutils-2.20.1/binutils/readelf.c	2010-08-17 19:32:11.000000000 +0200
  73.143 -@@ -2569,6 +2569,7 @@
  73.144 - 			return "GNU_EH_FRAME";
  73.145 -     case PT_GNU_STACK:	return "GNU_STACK";
  73.146 -     case PT_GNU_RELRO:  return "GNU_RELRO";
  73.147 -+    case PT_PAX_FLAGS:  return "PAX_FLAGS";
  73.148 - 
  73.149 -     default:
  73.150 -       if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC))
  73.151 -diff -durN binutils-2.20.1.orig/include/bfdlink.h binutils-2.20.1/include/bfdlink.h
  73.152 ---- binutils-2.20.1.orig/include/bfdlink.h	2009-09-10 13:47:30.000000000 +0200
  73.153 -+++ binutils-2.20.1/include/bfdlink.h	2010-08-17 19:32:11.000000000 +0200
  73.154 -@@ -321,6 +321,14 @@
  73.155 -   /* TRUE if PT_GNU_RELRO segment should be created.  */
  73.156 -   unsigned int relro: 1;
  73.157 - 
  73.158 -+  /* TRUE if PT_PAX_FLAGS segment should be created with PF_NOMPROTECT
  73.159 -+     flags.  */
  73.160 -+  unsigned int execheap: 1;
  73.161 -+
  73.162 -+  /* TRUE if PT_PAX_FLAGS segment should be created with PF_MPROTECT
  73.163 -+     flags.  */
  73.164 -+  unsigned int noexecheap: 1;
  73.165 -+
  73.166 -   /* TRUE if we should warn when adding a DT_TEXTREL to a shared object.  */
  73.167 -   unsigned int warn_shared_textrel: 1;
  73.168 - 
  73.169 -diff -durN binutils-2.20.1.orig/include/elf/common.h binutils-2.20.1/include/elf/common.h
  73.170 ---- binutils-2.20.1.orig/include/elf/common.h	2009-08-09 15:42:26.000000000 +0200
  73.171 -+++ binutils-2.20.1/include/elf/common.h	2010-08-17 19:32:11.000000000 +0200
  73.172 -@@ -422,6 +422,7 @@
  73.173 - #define PT_SUNW_EH_FRAME PT_GNU_EH_FRAME      /* Solaris uses the same value */
  73.174 - #define PT_GNU_STACK	(PT_LOOS + 0x474e551) /* Stack flags */
  73.175 - #define PT_GNU_RELRO	(PT_LOOS + 0x474e552) /* Read-only after relocation */
  73.176 -+#define PT_PAX_FLAGS	(PT_LOOS + 0x5041580) /* PaX flags */
  73.177 - 
  73.178 - /* Program segment permissions, in program header p_flags field.  */
  73.179 - 
  73.180 -@@ -432,6 +433,21 @@
  73.181 - #define PF_MASKOS	0x0FF00000	/* New value, Oct 4, 1999 Draft */
  73.182 - #define PF_MASKPROC	0xF0000000	/* Processor-specific reserved bits */
  73.183 - 
  73.184 -+/* Flags to control PaX behavior.  */
  73.185 -+
  73.186 -+#define PF_PAGEEXEC	(1 << 4)	/* Enable  PAGEEXEC */
  73.187 -+#define PF_NOPAGEEXEC	(1 << 5)	/* Disable PAGEEXEC */
  73.188 -+#define PF_SEGMEXEC	(1 << 6)	/* Enable  SEGMEXEC */
  73.189 -+#define PF_NOSEGMEXEC	(1 << 7)	/* Disable SEGMEXEC */
  73.190 -+#define PF_MPROTECT	(1 << 8)	/* Enable  MPROTECT */
  73.191 -+#define PF_NOMPROTECT	(1 << 9)	/* Disable MPROTECT */
  73.192 -+#define PF_RANDEXEC	(1 << 10)	/* Enable  RANDEXEC */
  73.193 -+#define PF_NORANDEXEC	(1 << 11)	/* Disable RANDEXEC */
  73.194 -+#define PF_EMUTRAMP	(1 << 12)	/* Enable  EMUTRAMP */
  73.195 -+#define PF_NOEMUTRAMP	(1 << 13)	/* Disable EMUTRAMP */
  73.196 -+#define PF_RANDMMAP	(1 << 14)	/* Enable  RANDMMAP */
  73.197 -+#define PF_NORANDMMAP	(1 << 15)	/* Disable RANDMMAP */
  73.198 -+
  73.199 - /* Values for section header, sh_type field.  */
  73.200 - 
  73.201 - #define SHT_NULL	0		/* Section header table entry unused */
  73.202 -diff -durN binutils-2.20.1.orig/ld/emultempl/elf32.em binutils-2.20.1/ld/emultempl/elf32.em
  73.203 ---- binutils-2.20.1.orig/ld/emultempl/elf32.em	2010-08-17 19:32:09.000000000 +0200
  73.204 -+++ binutils-2.20.1/ld/emultempl/elf32.em	2010-08-17 19:32:11.000000000 +0200
  73.205 -@@ -2165,6 +2165,16 @@
  73.206 - 	  link_info.noexecstack = TRUE;
  73.207 - 	  link_info.execstack = FALSE;
  73.208 - 	}
  73.209 -+      else if (strcmp (optarg, "execheap") == 0)
  73.210 -+	{
  73.211 -+	  link_info.execheap = TRUE;
  73.212 -+	  link_info.noexecheap = FALSE;
  73.213 -+	}
  73.214 -+      else if (strcmp (optarg, "noexecheap") == 0)
  73.215 -+	{
  73.216 -+	  link_info.noexecheap = TRUE;
  73.217 -+	  link_info.execheap = FALSE;
  73.218 -+	}
  73.219 - EOF
  73.220 - 
  73.221 -   if test -n "$COMMONPAGESIZE"; then
  73.222 -@@ -2243,6 +2253,8 @@
  73.223 -   fprintf (file, _("\
  73.224 -   -z execstack                Mark executable as requiring executable stack\n"));
  73.225 -   fprintf (file, _("\
  73.226 -+  -z execheap                 Mark executable as requiring executable heap\n"));
  73.227 -+  fprintf (file, _("\
  73.228 -   -z initfirst                Mark DSO to be initialized first at runtime\n"));
  73.229 -   fprintf (file, _("\
  73.230 -   -z interpose                Mark object to interpose all DSOs but executable\n"));
  73.231 -@@ -2266,6 +2278,8 @@
  73.232 -   -z nodump                   Mark DSO not available to dldump\n"));
  73.233 -   fprintf (file, _("\
  73.234 -   -z noexecstack              Mark executable as not requiring executable stack\n"));
  73.235 -+  fprintf (file, _("\
  73.236 -+  -z noexecheap               Mark executable as not requiring executable heap\n"));
  73.237 - EOF
  73.238 - 
  73.239 -   if test -n "$COMMONPAGESIZE"; then
  73.240 -diff -durN binutils-2.20.1.orig/ld/ldgram.y binutils-2.20.1/ld/ldgram.y
  73.241 ---- binutils-2.20.1.orig/ld/ldgram.y	2009-09-02 09:25:35.000000000 +0200
  73.242 -+++ binutils-2.20.1/ld/ldgram.y	2010-08-17 19:32:11.000000000 +0200
  73.243 -@@ -1116,6 +1116,8 @@
  73.244 - 			    $$ = exp_intop (0x6474e550);
  73.245 - 			  else if (strcmp (s, "PT_GNU_STACK") == 0)
  73.246 - 			    $$ = exp_intop (0x6474e551);
  73.247 -+			  else if (strcmp (s, "PT_PAX_FLAGS") == 0)
  73.248 -+			    $$ = exp_intop (0x65041580);
  73.249 - 			  else
  73.250 - 			    {
  73.251 - 			      einfo (_("\
    74.1 --- a/patches/binutils/2.20.1/160-amd64-32bit-path.patch	Sun Sep 11 18:26:12 2011 +0200
    74.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    74.3 @@ -1,19 +0,0 @@
    74.4 -
    74.5 -
    74.6 -diff -durN binutils-2.20.1.orig/ld/emulparams/elf_i386.sh binutils-2.20.1/ld/emulparams/elf_i386.sh
    74.7 ---- binutils-2.20.1.orig/ld/emulparams/elf_i386.sh	2009-07-29 16:59:23.000000000 +0200
    74.8 -+++ binutils-2.20.1/ld/emulparams/elf_i386.sh	2010-08-17 19:32:12.000000000 +0200
    74.9 -@@ -13,3 +13,13 @@
   74.10 - NO_SMALL_DATA=yes
   74.11 - SEPARATE_GOTPLT=12
   74.12 - IREL_IN_PLT=
   74.13 -+
   74.14 -+# In Gentoo, we install 32bit libs into /lib32 in an
   74.15 -+# ABI setup with amd64/x86
   74.16 -+case "$target" in
   74.17 -+  x86_64*-linux*)
   74.18 -+    case "$EMULATION_NAME" in
   74.19 -+      *i386*) LIBPATH_SUFFIX=32  ;;
   74.20 -+    esac
   74.21 -+  ;;
   74.22 -+esac
    75.1 --- a/patches/binutils/2.20.1/170-warn-textrel.patch	Sun Sep 11 18:26:12 2011 +0200
    75.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    75.3 @@ -1,66 +0,0 @@
    75.4 -textrels are bad for forcing copy-on-write (this affects everyone),
    75.5 -and for security/runtime code generation, this affects security ppl.
    75.6 -But in either case, it doesn't matter who needs textrels, it's
    75.7 -the very fact that they're needed at all.
    75.8 -
    75.9 -2006-06-10  Ned Ludd  <solar@gentoo.org>, Mike Frysinger <vapier@gentoo.org>
   75.10 -
   75.11 -	* bfd/elflink.c (bfd_elf_final_link): Check all objects for TEXTRELs.
   75.12 -	* ld/ldmain.c (main): Change textrel warning default to true.
   75.13 -	* ld/testsuite/lib/ld-lib.exp (default_ld_simple_link): Scrub TEXTREL
   75.14 -	warnings from ld output.
   75.15 -
   75.16 -diff -durN binutils-2.20.1.orig/bfd/elflink.c binutils-2.20.1/bfd/elflink.c
   75.17 ---- binutils-2.20.1.orig/bfd/elflink.c	2010-08-17 19:32:11.000000000 +0200
   75.18 -+++ binutils-2.20.1/bfd/elflink.c	2010-08-17 19:32:13.000000000 +0200
   75.19 -@@ -10988,14 +10988,12 @@
   75.20 - 	goto error_return;
   75.21 - 
   75.22 -       /* Check for DT_TEXTREL (late, in case the backend removes it).  */
   75.23 --      if (info->warn_shared_textrel && info->shared)
   75.24 -+      o = bfd_get_section_by_name (dynobj, ".dynamic");
   75.25 -+      if (info->warn_shared_textrel && o != NULL)
   75.26 - 	{
   75.27 - 	  bfd_byte *dyncon, *dynconend;
   75.28 - 
   75.29 - 	  /* Fix up .dynamic entries.  */
   75.30 --	  o = bfd_get_section_by_name (dynobj, ".dynamic");
   75.31 --	  BFD_ASSERT (o != NULL);
   75.32 --
   75.33 - 	  dyncon = o->contents;
   75.34 - 	  dynconend = o->contents + o->size;
   75.35 - 	  for (; dyncon < dynconend; dyncon += bed->s->sizeof_dyn)
   75.36 -@@ -11007,7 +11005,7 @@
   75.37 - 	      if (dyn.d_tag == DT_TEXTREL)
   75.38 - 		{
   75.39 - 		 info->callbacks->einfo
   75.40 --		    (_("%P: warning: creating a DT_TEXTREL in a shared object.\n"));
   75.41 -+		    (_("%P: warning: creating a DT_TEXTREL in object.\n"));
   75.42 - 		  break;
   75.43 - 		}
   75.44 - 	    }
   75.45 -diff -durN binutils-2.20.1.orig/ld/ldmain.c binutils-2.20.1/ld/ldmain.c
   75.46 ---- binutils-2.20.1.orig/ld/ldmain.c	2009-09-14 13:43:29.000000000 +0200
   75.47 -+++ binutils-2.20.1/ld/ldmain.c	2010-08-17 19:32:13.000000000 +0200
   75.48 -@@ -280,6 +280,7 @@
   75.49 -   emulation = get_emulation (argc, argv);
   75.50 -   ldemul_choose_mode (emulation);
   75.51 -   default_target = ldemul_choose_target (argc, argv);
   75.52 -+  link_info.warn_shared_textrel = TRUE;
   75.53 -   config.maxpagesize = bfd_emul_get_maxpagesize (default_target);
   75.54 -   config.commonpagesize = bfd_emul_get_commonpagesize (default_target);
   75.55 -   lang_init ();
   75.56 -diff -durN binutils-2.20.1.orig/ld/testsuite/lib/ld-lib.exp binutils-2.20.1/ld/testsuite/lib/ld-lib.exp
   75.57 ---- binutils-2.20.1.orig/ld/testsuite/lib/ld-lib.exp	2009-10-02 12:51:13.000000000 +0200
   75.58 -+++ binutils-2.20.1/ld/testsuite/lib/ld-lib.exp	2010-08-17 19:32:13.000000000 +0200
   75.59 -@@ -196,6 +196,10 @@
   75.60 -     # symbol, since the default linker script might use ENTRY.
   75.61 -     regsub -all "(^|\n)(\[^\n\]*: warning: cannot find entry symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output
   75.62 - 
   75.63 -+    # Gentoo tweak:
   75.64 -+    # We want to ignore TEXTREL warnings since we force enable them by default
   75.65 -+    regsub -all "^lt-ld-new: warning: creating a DT_TEXTREL in object\." $exec_output "\\1" exec_output
   75.66 -+
   75.67 -     if [string match "" $exec_output] then {
   75.68 - 	return 1
   75.69 -     } else {
    76.1 --- a/patches/binutils/2.20.1/190-use-new-ld-dtags.patch	Sun Sep 11 18:26:12 2011 +0200
    76.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    76.3 @@ -1,13 +0,0 @@
    76.4 -
    76.5 -
    76.6 -diff -durN binutils-2.20.1.orig/ld/ldmain.c binutils-2.20.1/ld/ldmain.c
    76.7 ---- binutils-2.20.1.orig/ld/ldmain.c	2010-08-17 19:32:13.000000000 +0200
    76.8 -+++ binutils-2.20.1/ld/ldmain.c	2010-08-17 19:32:15.000000000 +0200
    76.9 -@@ -262,6 +262,7 @@
   76.10 - 
   76.11 -   link_info.allow_undefined_version = TRUE;
   76.12 -   link_info.keep_memory = TRUE;
   76.13 -+  link_info.new_dtags = TRUE;
   76.14 -   link_info.combreloc = TRUE;
   76.15 -   link_info.strip_discarded = TRUE;
   76.16 -   link_info.emit_hash = TRUE;
    77.1 --- a/patches/binutils/2.20.1/200-document-new-dtags-behaviour.patch	Sun Sep 11 18:26:12 2011 +0200
    77.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    77.3 @@ -1,18 +0,0 @@
    77.4 -Index: binutils-2.19.51.0.5/ld/ld.texinfo
    77.5 -===================================================================
    77.6 -
    77.7 -diff -durN binutils-2.20.1.orig/ld/ld.texinfo binutils-2.20.1/ld/ld.texinfo
    77.8 ---- binutils-2.20.1.orig/ld/ld.texinfo	2009-07-06 15:48:51.000000000 +0200
    77.9 -+++ binutils-2.20.1/ld/ld.texinfo	2010-08-17 19:32:16.000000000 +0200
   77.10 -@@ -2026,8 +2026,9 @@
   77.11 - systems may not understand them. If you specify
   77.12 - @option{--enable-new-dtags}, the dynamic tags will be created as needed.
   77.13 - If you specify @option{--disable-new-dtags}, no new dynamic tags will be
   77.14 --created. By default, the new dynamic tags are not created. Note that
   77.15 --those options are only available for ELF systems.
   77.16 -+created. On Gentoo, by default, the new dynamic tags are created (this
   77.17 -+differs from upstream behaviour). Note that those options are only
   77.18 -+available for ELF systems.
   77.19 - 
   77.20 - @kindex --hash-size=@var{number}
   77.21 - @item --hash-size=@var{number}
    78.1 --- a/patches/binutils/2.20.1/220-use-relro.patch	Sun Sep 11 18:26:12 2011 +0200
    78.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    78.3 @@ -1,13 +0,0 @@
    78.4 -
    78.5 -
    78.6 -diff -durN binutils-2.20.1.orig/ld/ldmain.c binutils-2.20.1/ld/ldmain.c
    78.7 ---- binutils-2.20.1.orig/ld/ldmain.c	2010-08-17 19:32:17.000000000 +0200
    78.8 -+++ binutils-2.20.1/ld/ldmain.c	2010-08-17 19:32:18.000000000 +0200
    78.9 -@@ -264,6 +264,7 @@
   78.10 -   link_info.keep_memory = TRUE;
   78.11 -   link_info.new_dtags = TRUE;
   78.12 -   link_info.combreloc = TRUE;
   78.13 -+  link_info.relro = TRUE;
   78.14 -   link_info.strip_discarded = TRUE;
   78.15 -   link_info.emit_hash = TRUE;
   78.16 - #ifndef __mips__
    79.1 --- a/patches/binutils/2.20.1/230-libiberty-pic.patch	Sun Sep 11 18:26:12 2011 +0200
    79.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    79.3 @@ -1,13 +0,0 @@
    79.4 -
    79.5 -
    79.6 -diff -durN binutils-2.20.1.orig/libiberty/Makefile.in binutils-2.20.1/libiberty/Makefile.in
    79.7 ---- binutils-2.20.1.orig/libiberty/Makefile.in	2009-08-23 21:03:58.000000000 +0200
    79.8 -+++ binutils-2.20.1/libiberty/Makefile.in	2010-08-17 19:32:19.000000000 +0200
    79.9 -@@ -227,6 +227,7 @@
   79.10 - 	  $(AR) $(AR_FLAGS) $(TARGETLIB) \
   79.11 - 	    $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \
   79.12 - 	  $(RANLIB) $(TARGETLIB); \
   79.13 -+	  cp $(TARGETLIB) ../ ; \
   79.14 - 	  cd ..; \
   79.15 - 	else true; fi
   79.16 - 
    80.1 --- a/patches/binutils/2.20.1/240-ld_makefile.patch	Sun Sep 11 18:26:12 2011 +0200
    80.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    80.3 @@ -1,27 +0,0 @@
    80.4 -Description: correct where ld scripts are installed
    80.5 -Author: Chris Chimelis <chris@debian.org>
    80.6 -
    80.7 -diff -durN binutils-2.20.1.orig/ld/Makefile.am binutils-2.20.1/ld/Makefile.am
    80.8 ---- binutils-2.20.1.orig/ld/Makefile.am	2010-02-22 09:07:01.000000000 +0100
    80.9 -+++ binutils-2.20.1/ld/Makefile.am	2010-08-17 19:32:21.000000000 +0200
   80.10 -@@ -24,7 +24,7 @@
   80.11 - # We put the scripts in the directory $(scriptdir)/ldscripts.
   80.12 - # We can't put the scripts in $(datadir) because the SEARCH_DIR
   80.13 - # directives need to be different for native and cross linkers.
   80.14 --scriptdir = $(tooldir)/lib
   80.15 -+scriptdir = $(libdir)
   80.16 - 
   80.17 - EMUL = @EMUL@
   80.18 - EMULATION_OFILES = @EMULATION_OFILES@
   80.19 -diff -durN binutils-2.20.1.orig/ld/Makefile.in binutils-2.20.1/ld/Makefile.in
   80.20 ---- binutils-2.20.1.orig/ld/Makefile.in	2010-03-03 15:06:21.000000000 +0100
   80.21 -+++ binutils-2.20.1/ld/Makefile.in	2010-08-17 19:32:21.000000000 +0200
   80.22 -@@ -333,7 +333,7 @@
   80.23 - # We put the scripts in the directory $(scriptdir)/ldscripts.
   80.24 - # We can't put the scripts in $(datadir) because the SEARCH_DIR
   80.25 - # directives need to be different for native and cross linkers.
   80.26 --scriptdir = $(tooldir)/lib
   80.27 -+scriptdir = $(libdir)
   80.28 - BASEDIR = $(srcdir)/..
   80.29 - BFDDIR = $(BASEDIR)/bfd
   80.30 - INCDIR = $(BASEDIR)/include
    81.1 --- a/patches/binutils/2.20.1/250-arm-eabi-conf.patch	Sun Sep 11 18:26:12 2011 +0200
    81.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    81.3 @@ -1,26 +0,0 @@
    81.4 -diff -u binutils-2.20.orig/configure binutils-2.20/configure
    81.5 -
    81.6 -diff -durN binutils-2.20.1.orig/configure binutils-2.20.1/configure
    81.7 ---- binutils-2.20.1.orig/configure	2010-08-17 19:32:07.000000000 +0200
    81.8 -+++ binutils-2.20.1/configure	2010-08-17 19:32:22.000000000 +0200
    81.9 -@@ -3086,7 +3086,7 @@
   81.10 -     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
   81.11 -     libgloss_dir=arm
   81.12 -     ;;
   81.13 --  arm*-*-linux-gnueabi)
   81.14 -+  arm*-*-linux-*gnueabi)
   81.15 -     noconfigdirs="$noconfigdirs target-qthreads"
   81.16 -     case ${with_newlib} in
   81.17 -       no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
   81.18 -diff -durN binutils-2.20.1.orig/configure.ac binutils-2.20.1/configure.ac
   81.19 ---- binutils-2.20.1.orig/configure.ac	2010-08-17 19:32:07.000000000 +0200
   81.20 -+++ binutils-2.20.1/configure.ac	2010-08-17 19:32:22.000000000 +0200
   81.21 -@@ -573,7 +573,7 @@
   81.22 -     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
   81.23 -     libgloss_dir=arm
   81.24 -     ;;
   81.25 --  arm*-*-linux-gnueabi)
   81.26 -+  arm*-*-linux-*gnueabi)
   81.27 -     noconfigdirs="$noconfigdirs target-qthreads"
   81.28 -     case ${with_newlib} in
   81.29 -       no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
    82.1 --- a/patches/binutils/2.20.1/270-better_file_error.patch	Sun Sep 11 18:26:12 2011 +0200
    82.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    82.3 @@ -1,45 +0,0 @@
    82.4 -#!/bin/sh -e
    82.5 -## 006_better_file_error.dpatch by David Kimdon <dwhedon@gordian.com>
    82.6 -##
    82.7 -## All lines beginning with `## DP:' are a description of the patch.
    82.8 -## DP: Specify which filename is causing an error if the filename is a
    82.9 -## DP: directory. (#45832)
   82.10 -
   82.11 -if [ $# -ne 1 ]; then
   82.12 -    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
   82.13 -    exit 1
   82.14 -fi
   82.15 -
   82.16 -[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
   82.17 -patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
   82.18 -
   82.19 -case "$1" in
   82.20 -       -patch) patch $patch_opts -p1 < $0;;
   82.21 -       -unpatch) patch $patch_opts -p1 -R < $0;;
   82.22 -        *)
   82.23 -                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
   82.24 -                exit 1;;
   82.25 -esac
   82.26 -
   82.27 -exit 0
   82.28 -
   82.29 -@DPATCH@
   82.30 -diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c binutils-2.14.90.0.6/bfd/opncls.c
   82.31 -
   82.32 -diff -durN binutils-2.20.1.orig/bfd/opncls.c binutils-2.20.1/bfd/opncls.c
   82.33 ---- binutils-2.20.1.orig/bfd/opncls.c	2010-01-14 11:48:22.000000000 +0100
   82.34 -+++ binutils-2.20.1/bfd/opncls.c	2010-08-17 19:32:23.000000000 +0200
   82.35 -@@ -183,6 +183,13 @@
   82.36 - {
   82.37 -   bfd *nbfd;
   82.38 -   const bfd_target *target_vec;
   82.39 -+  struct stat s;
   82.40 -+
   82.41 -+  if (stat (filename, &s) == 0)
   82.42 -+    if (S_ISDIR(s.st_mode)) {
   82.43 -+      bfd_set_error (bfd_error_file_not_recognized);
   82.44 -+      return NULL;
   82.45 -+    }
   82.46 - 
   82.47 -   nbfd = _bfd_new_bfd ();
   82.48 -   if (nbfd == NULL)
    83.1 --- a/patches/binutils/2.20.1/280-unexport_LD_LIBRARY_PATH.patch	Sun Sep 11 18:26:12 2011 +0200
    83.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    83.3 @@ -1,96 +0,0 @@
    83.4 -Description:
    83.5 -
    83.6 -This patch is needed in situations where build system is running same version of
    83.7 -binutils that is intended to be built  cross-native ( build != host = target)
    83.8 - and has shared libraries enabled. binutils/binutils
    83.9 -Makefile has some tools which are built to run on build system. Toplevel makefile
   83.10 -for binutils passes HOST_EXPORTS to sub-makefiles which also include RPATH_ENVVARS
   83.11 -containing LD_LIBRARY_PATH which is modified so that it also includes host libraries
   83.12 -like opcodes and libbfd which are just built for the host system. 
   83.13 -
   83.14 -Now the problem is that same LD_LIBRARY_PATH value gets set in environment even
   83.15 -for the tools that are being built for build system using CC_FOR_BUILD and the tools
   83.16 -like as,ld it invokes from build machine get the LD_LIBRARY_PATH set to search
   83.17 -the newly build host libraries like opcodes and bfd and if host is like a big endian
   83.18 -system say (mips-linux) the build system linker and assembler do not run because
   83.19 -ld.so tries to load these shared libraries instead of the ones from /usr/lib for 
   83.20 -the build tools. 
   83.21 -
   83.22 -This patch fixes the issue by clearing LD_LIBRARY_PATH for BUILD tools
   83.23 -
   83.24 -This patch would be needed on other versions of binutils. I just cared about 2.20
   83.25 -May be upstream is also interested in such a patch.
   83.26 -
   83.27 --Khem
   83.28 -
   83.29 -Index: binutils-2.20/binutils/Makefile.am
   83.30 -===================================================================
   83.31 -
   83.32 -diff -durN binutils-2.20.1.orig/binutils/Makefile.am binutils-2.20.1/binutils/Makefile.am
   83.33 ---- binutils-2.20.1.orig/binutils/Makefile.am	2010-01-14 11:48:22.000000000 +0100
   83.34 -+++ binutils-2.20.1/binutils/Makefile.am	2010-08-17 19:32:24.000000000 +0200
   83.35 -@@ -251,24 +251,24 @@
   83.36 - 	./sysinfo$(EXEEXT_FOR_BUILD) -d <$(srcdir)/sysroff.info >sysroff.h
   83.37 - 
   83.38 - sysinfo$(EXEEXT_FOR_BUILD): sysinfo.o syslex.o
   83.39 --	$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ sysinfo.o syslex.o
   83.40 -+	LD_LIBRARY_PATH= $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ sysinfo.o syslex.o
   83.41 - 
   83.42 - syslex.o: syslex.c sysinfo.h config.h
   83.43 - 	if [ -r syslex.c ]; then \
   83.44 --	  $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) syslex.c ; \
   83.45 -+	  LD_LIBRARY_PATH= $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) syslex.c ; \
   83.46 - 	else \
   83.47 --	  $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/syslex.c ;\
   83.48 -+	  LD_LIBRARY_PATH= $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/syslex.c ;\
   83.49 - 	fi
   83.50 - 
   83.51 - sysinfo.o: sysinfo.c
   83.52 - 	if [ -r sysinfo.c ]; then \
   83.53 --	  $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) sysinfo.c ; \
   83.54 -+	  LD_LIBRARY_PATH= $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) sysinfo.c ; \
   83.55 - 	else \
   83.56 --	  $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/sysinfo.c ; \
   83.57 -+	  LD_LIBRARY_PATH= $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/sysinfo.c ; \
   83.58 - 	fi
   83.59 - 
   83.60 - bin2c$(EXEEXT_FOR_BUILD):
   83.61 --	$(CC_FOR_BUILD) -o $@ $(AM_CPPFLAGS) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(srcdir)/bin2c.c $(srcdir)/version.c
   83.62 -+	LD_LIBRARY_PATH= $(CC_FOR_BUILD) -o $@ $(AM_CPPFLAGS) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(srcdir)/bin2c.c $(srcdir)/version.c
   83.63 - 
   83.64 - embedspu: embedspu.sh
   83.65 - 	sed "s@^program_transform_name=@program_transform_name=$(program_transform_name)@" < $< > $@
   83.66 -diff -durN binutils-2.20.1.orig/binutils/Makefile.in binutils-2.20.1/binutils/Makefile.in
   83.67 ---- binutils-2.20.1.orig/binutils/Makefile.in	2010-03-03 14:59:46.000000000 +0100
   83.68 -+++ binutils-2.20.1/binutils/Makefile.in	2010-08-17 19:32:24.000000000 +0200
   83.69 -@@ -1193,24 +1193,24 @@
   83.70 - 	./sysinfo$(EXEEXT_FOR_BUILD) -d <$(srcdir)/sysroff.info >sysroff.h
   83.71 - 
   83.72 - sysinfo$(EXEEXT_FOR_BUILD): sysinfo.o syslex.o
   83.73 --	$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ sysinfo.o syslex.o
   83.74 -+	LD_LIBRARY_PATH= $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ sysinfo.o syslex.o
   83.75 - 
   83.76 - syslex.o: syslex.c sysinfo.h config.h
   83.77 - 	if [ -r syslex.c ]; then \
   83.78 --	  $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) syslex.c ; \
   83.79 -+	  LD_LIBRARY_PATH= $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) syslex.c ; \
   83.80 - 	else \
   83.81 --	  $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/syslex.c ;\
   83.82 -+	  LD_LIBRARY_PATH= $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/syslex.c ;\
   83.83 - 	fi
   83.84 - 
   83.85 - sysinfo.o: sysinfo.c
   83.86 - 	if [ -r sysinfo.c ]; then \
   83.87 --	  $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) sysinfo.c ; \
   83.88 -+	  LD_LIBRARY_PATH= $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) sysinfo.c ; \
   83.89 - 	else \
   83.90 --	  $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/sysinfo.c ; \
   83.91 -+	  LD_LIBRARY_PATH= $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/sysinfo.c ; \
   83.92 - 	fi
   83.93 - 
   83.94 - bin2c$(EXEEXT_FOR_BUILD):
   83.95 --	$(CC_FOR_BUILD) -o $@ $(AM_CPPFLAGS) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(srcdir)/bin2c.c $(srcdir)/version.c
   83.96 -+	LD_LIBRARY_PATH= $(CC_FOR_BUILD) -o $@ $(AM_CPPFLAGS) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(srcdir)/bin2c.c $(srcdir)/version.c
   83.97 - 
   83.98 - embedspu: embedspu.sh
   83.99 - 	sed "s@^program_transform_name=@program_transform_name=$(program_transform_name)@" < $< > $@
    84.1 --- a/patches/binutils/2.20.1/290-ld-stub-crash.patch	Sun Sep 11 18:26:12 2011 +0200
    84.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    84.3 @@ -1,24 +0,0 @@
    84.4 -diff -p -c -u -r1.196 elf32-arm.c
    84.5 -
    84.6 -diff -durN binutils-2.20.1.orig/bfd/elf32-arm.c binutils-2.20.1/bfd/elf32-arm.c
    84.7 ---- binutils-2.20.1.orig/bfd/elf32-arm.c	2010-02-22 09:06:48.000000000 +0100
    84.8 -+++ binutils-2.20.1/bfd/elf32-arm.c	2010-08-17 19:32:25.000000000 +0200
    84.9 -@@ -3194,11 +3194,15 @@
   84.10 - 
   84.11 - 	  /* We have an extra 2-bytes reach because of
   84.12 - 	     the mode change (bit 24 (H) of BLX encoding).  */
   84.13 -+	  /* A stub is needed only if this call is not throught a PLT
   84.14 -+	     entry, because PLT stubs handle mode switching
   84.15 -+	     already.  */
   84.16 - 	  if (branch_offset > (ARM_MAX_FWD_BRANCH_OFFSET + 2)
   84.17 - 	      || (branch_offset < ARM_MAX_BWD_BRANCH_OFFSET)
   84.18 --	      || ((r_type == R_ARM_CALL) && !globals->use_blx)
   84.19 --	      || (r_type == R_ARM_JUMP24)
   84.20 --	      || (r_type == R_ARM_PLT32))
   84.21 -+	      || ( (((r_type == R_ARM_CALL) && !globals->use_blx)
   84.22 -+		    || (r_type == R_ARM_JUMP24)
   84.23 -+		    || (r_type == R_ARM_PLT32))
   84.24 -+		   && !use_plt))
   84.25 - 	    {
   84.26 - 	      stub_type = (info->shared | globals->pic_veneer)
   84.27 - 		/* PIC stubs.  */
    85.1 --- a/patches/binutils/2.20.1/300-mips64-defaultemul.patch	Sun Sep 11 18:26:12 2011 +0200
    85.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    85.3 @@ -1,21 +0,0 @@
    85.4 -
    85.5 -
    85.6 -diff -durN binutils-2.20.1.orig/ld/configure.tgt binutils-2.20.1/ld/configure.tgt
    85.7 ---- binutils-2.20.1.orig/ld/configure.tgt	2009-08-06 19:38:03.000000000 +0200
    85.8 -+++ binutils-2.20.1/ld/configure.tgt	2010-08-17 19:32:26.000000000 +0200
    85.9 -@@ -400,11 +400,11 @@
   85.10 - mips*-*-vxworks*)	targ_emul=elf32ebmipvxworks
   85.11 - 		        targ_extra_emuls="elf32elmipvxworks" ;;
   85.12 - mips*-*-windiss)	targ_emul=elf32mipswindiss ;;
   85.13 --mips64*el-*-linux-*)	targ_emul=elf32ltsmipn32
   85.14 --			targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip"
   85.15 -+mips64*el-*-linux-*)	targ_emul=elf64ltsmip
   85.16 -+			targ_extra_emuls="elf32ltsmipn32 elf32btsmipn32 elf32ltsmip elf32btsmip elf64btsmip"
   85.17 - 			targ_extra_libpath=$targ_extra_emuls ;;
   85.18 --mips64*-*-linux-*)	targ_emul=elf32btsmipn32
   85.19 --			targ_extra_emuls="elf32ltsmipn32 elf32btsmip elf32ltsmip elf64btsmip elf64ltsmip"
   85.20 -+mips64*-*-linux-*)	targ_emul=elf64btsmip
   85.21 -+			targ_extra_emuls="elf32btsmipn32 elf32ltsmipn32 elf32btsmip elf32ltsmip elf64ltsmip"
   85.22 - 			targ_extra_libpath=$targ_extra_emuls ;;
   85.23 - mips*el-*-linux-*)	targ_emul=elf32ltsmip
   85.24 - 			targ_extra_emuls="elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip"
    86.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    86.2 +++ b/patches/binutils/2.20.1a/100-ppc64-pie.patch	Sun Sep 11 18:18:53 2011 +0200
    86.3 @@ -0,0 +1,19 @@
    86.4 +
    86.5 +
    86.6 +diff -durN binutils-2.20.1.orig/bfd/elf64-ppc.c binutils-2.20.1/bfd/elf64-ppc.c
    86.7 +--- binutils-2.20.1.orig/bfd/elf64-ppc.c	2010-02-03 14:28:25.000000000 +0100
    86.8 ++++ binutils-2.20.1/bfd/elf64-ppc.c	2010-08-17 19:32:04.000000000 +0200
    86.9 +@@ -11991,7 +11991,12 @@
   86.10 + 	      else if (!SYMBOL_REFERENCES_LOCAL (info, &h->elf)
   86.11 + 		       && !is_opd
   86.12 + 		       && r_type != R_PPC64_TOC)
   86.13 +-		outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
   86.14 ++		{
   86.15 ++		  outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
   86.16 ++		  if (h->elf.dynindx == -1
   86.17 ++		      && h->elf.root.type == bfd_link_hash_undefweak)
   86.18 ++		  memset (&outrel, 0, sizeof outrel);
   86.19 ++		}
   86.20 + 	      else
   86.21 + 		{
   86.22 + 		  /* This symbol is local, or marked to become local,
    87.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    87.2 +++ b/patches/binutils/2.20.1a/110-RPATH_ENVVAR-smack.patch	Sun Sep 11 18:18:53 2011 +0200
    87.3 @@ -0,0 +1,14 @@
    87.4 +http://sourceware.org/ml/binutils/2007-07/msg00401.html
    87.5 +http://sourceware.org/bugzilla/show_bug.cgi?id=4970
    87.6 +
    87.7 +diff -durN binutils-2.20.1.orig/configure binutils-2.20.1/configure
    87.8 +--- binutils-2.20.1.orig/configure	2010-03-03 14:59:02.000000000 +0100
    87.9 ++++ binutils-2.20.1/configure	2010-08-17 19:32:05.000000000 +0200
   87.10 +@@ -6466,6 +6466,7 @@
   87.11 +   *-*-mingw* | *-*-cygwin ) RPATH_ENVVAR=PATH ;;
   87.12 +   *) RPATH_ENVVAR=LD_LIBRARY_PATH ;;
   87.13 + esac
   87.14 ++RPATH_ENVVAR="cant_touch_this_nah_nah_nah"
   87.15 + 
   87.16 + # On systems where the dynamic library environment variable is PATH,
   87.17 + # gcc/ will put dynamic libraries into a subdirectory to avoid adding
    88.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    88.2 +++ b/patches/binutils/2.20.1a/120-sh-targets.patch	Sun Sep 11 18:18:53 2011 +0200
    88.3 @@ -0,0 +1,44 @@
    88.4 +
    88.5 +
    88.6 +diff -durN binutils-2.20.1.orig/configure binutils-2.20.1/configure
    88.7 +--- binutils-2.20.1.orig/configure	2010-08-17 19:32:05.000000000 +0200
    88.8 ++++ binutils-2.20.1/configure	2010-08-17 19:32:07.000000000 +0200
    88.9 +@@ -3054,7 +3054,7 @@
   88.10 +   am33_2.0-*-linux*)
   88.11 +     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   88.12 +     ;;
   88.13 +-  sh-*-linux*)
   88.14 ++  sh*-*-linux*)
   88.15 +     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   88.16 +     ;;
   88.17 +   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
   88.18 +@@ -3390,7 +3390,7 @@
   88.19 +   romp-*-*)
   88.20 +     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
   88.21 +     ;;
   88.22 +-  sh-*-* | sh64-*-*)
   88.23 ++  sh*-*-* | sh64-*-*)
   88.24 +     case "${host}" in
   88.25 +       i[3456789]86-*-vsta) ;; # don't add gprof back in
   88.26 +       i[3456789]86-*-go32*) ;; # don't add gprof back in
   88.27 +diff -durN binutils-2.20.1.orig/configure.ac binutils-2.20.1/configure.ac
   88.28 +--- binutils-2.20.1.orig/configure.ac	2010-03-03 15:19:08.000000000 +0100
   88.29 ++++ binutils-2.20.1/configure.ac	2010-08-17 19:32:07.000000000 +0200
   88.30 +@@ -541,7 +541,7 @@
   88.31 +   am33_2.0-*-linux*)
   88.32 +     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   88.33 +     ;;
   88.34 +-  sh-*-linux*)
   88.35 ++  sh*-*-linux*)
   88.36 +     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
   88.37 +     ;;    
   88.38 +   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
   88.39 +@@ -877,7 +877,7 @@
   88.40 +   romp-*-*)
   88.41 +     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
   88.42 +     ;;
   88.43 +-  sh-*-* | sh64-*-*)
   88.44 ++  sh*-*-* | sh64-*-*)
   88.45 +     case "${host}" in
   88.46 +       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
   88.47 +       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
    89.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    89.2 +++ b/patches/binutils/2.20.1a/130-ld-sysroot.patch	Sun Sep 11 18:18:53 2011 +0200
    89.3 @@ -0,0 +1,37 @@
    89.4 +Signed-off-by: Sven Rebhan <odinshorse@googlemail.com>
    89.5 +
    89.6 +Always try to prepend the sysroot prefix to absolute filenames first.
    89.7 +
    89.8 +http://bugs.gentoo.org/275666
    89.9 +http://sourceware.org/bugzilla/show_bug.cgi?id=10340
   89.10 +
   89.11 +diff -durN binutils-2.20.1.orig/ld/ldfile.c binutils-2.20.1/ld/ldfile.c
   89.12 +--- binutils-2.20.1.orig/ld/ldfile.c	2009-08-30 00:11:01.000000000 +0200
   89.13 ++++ binutils-2.20.1/ld/ldfile.c	2010-08-17 19:32:08.000000000 +0200
   89.14 +@@ -308,18 +308,24 @@
   89.15 +      directory first.  */
   89.16 +   if (! entry->is_archive)
   89.17 +     {
   89.18 +-      if (entry->sysrooted && IS_ABSOLUTE_PATH (entry->filename))
   89.19 ++      /* For absolute pathnames, try to always open the file in the
   89.20 ++	 sysroot first. If this fails, try to open the file at the
   89.21 ++	 given location. */
   89.22 ++      entry->sysrooted = is_sysrooted_pathname(entry->filename, FALSE);
   89.23 ++      if (IS_ABSOLUTE_PATH (entry->filename) && ld_sysroot && ! entry->sysrooted)
   89.24 + 	{
   89.25 + 	  char *name = concat (ld_sysroot, entry->filename,
   89.26 + 			       (const char *) NULL);
   89.27 + 	  if (ldfile_try_open_bfd (name, entry))
   89.28 + 	    {
   89.29 + 	      entry->filename = name;
   89.30 ++	      entry->sysrooted = TRUE;
   89.31 + 	      return TRUE;
   89.32 + 	    }
   89.33 + 	  free (name);
   89.34 + 	}
   89.35 +-      else if (ldfile_try_open_bfd (entry->filename, entry))
   89.36 ++
   89.37 ++      if (ldfile_try_open_bfd (entry->filename, entry))
   89.38 + 	{
   89.39 + 	  entry->sysrooted = IS_ABSOLUTE_PATH (entry->filename)
   89.40 + 	    && is_sysrooted_pathname (entry->filename, TRUE);
    90.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    90.2 +++ b/patches/binutils/2.20.1a/140-check_ldrunpath_length.patch	Sun Sep 11 18:18:53 2011 +0200
    90.3 @@ -0,0 +1,49 @@
    90.4 +#!/bin/sh -e
    90.5 +## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
    90.6 +##
    90.7 +## All lines beginning with `## DP:' are a description of the patch.
    90.8 +## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
    90.9 +## DP: cases where -rpath isn't specified. (#151024)
   90.10 +
   90.11 +if [ $# -ne 1 ]; then
   90.12 +    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
   90.13 +    exit 1
   90.14 +fi
   90.15 +
   90.16 +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
   90.17 +patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
   90.18 +
   90.19 +case "$1" in
   90.20 +       -patch) patch $patch_opts -p1 < $0;;
   90.21 +       -unpatch) patch $patch_opts -p1 -R < $0;;
   90.22 +        *)
   90.23 +                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
   90.24 +                exit 1;;
   90.25 +esac
   90.26 +
   90.27 +exit 0
   90.28 +
   90.29 +@DPATCH@
   90.30 +diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
   90.31 +
   90.32 +diff -durN binutils-2.20.1.orig/ld/emultempl/elf32.em binutils-2.20.1/ld/emultempl/elf32.em
   90.33 +--- binutils-2.20.1.orig/ld/emultempl/elf32.em	2009-09-14 13:43:30.000000000 +0200
   90.34 ++++ binutils-2.20.1/ld/emultempl/elf32.em	2010-08-17 19:32:09.000000000 +0200
   90.35 +@@ -1233,6 +1233,8 @@
   90.36 + 	      && command_line.rpath == NULL)
   90.37 + 	    {
   90.38 + 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
   90.39 ++	      if ((lib_path) && (strlen (lib_path) == 0))
   90.40 ++		  lib_path = NULL;
   90.41 + 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
   90.42 + 						      force))
   90.43 + 		break;
   90.44 +@@ -1418,6 +1420,8 @@
   90.45 +   rpath = command_line.rpath;
   90.46 +   if (rpath == NULL)
   90.47 +     rpath = (const char *) getenv ("LD_RUN_PATH");
   90.48 ++  if ((rpath) && (strlen (rpath) == 0))
   90.49 ++      rpath = NULL;
   90.50 +   if (! (bfd_elf_size_dynamic_sections
   90.51 + 	 (link_info.output_bfd, command_line.soname, rpath,
   90.52 + 	  command_line.filter_shlib,
    91.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    91.2 +++ b/patches/binutils/2.20.1a/150-pt-pax-flags-20090909.patch	Sun Sep 11 18:18:53 2011 +0200
    91.3 @@ -0,0 +1,248 @@
    91.4 +
    91.5 +
    91.6 +diff -durN binutils-2.20.1.orig/bfd/elf-bfd.h binutils-2.20.1/bfd/elf-bfd.h
    91.7 +--- binutils-2.20.1.orig/bfd/elf-bfd.h	2009-09-10 13:47:12.000000000 +0200
    91.8 ++++ binutils-2.20.1/bfd/elf-bfd.h	2010-08-17 19:32:11.000000000 +0200
    91.9 +@@ -1531,6 +1531,9 @@
   91.10 +   /* Segment flags for the PT_GNU_STACK segment.  */
   91.11 +   unsigned int stack_flags;
   91.12 + 
   91.13 ++  /* Segment flags for the PT_PAX_FLAGS segment.  */
   91.14 ++  unsigned int pax_flags;
   91.15 ++
   91.16 +   /* Symbol version definitions in external objects.  */
   91.17 +   Elf_Internal_Verdef *verdef;
   91.18 + 
   91.19 +diff -durN binutils-2.20.1.orig/bfd/elf.c binutils-2.20.1/bfd/elf.c
   91.20 +--- binutils-2.20.1.orig/bfd/elf.c	2009-09-10 13:47:12.000000000 +0200
   91.21 ++++ binutils-2.20.1/bfd/elf.c	2010-08-17 19:32:11.000000000 +0200
   91.22 +@@ -1083,6 +1083,7 @@
   91.23 +     case PT_GNU_EH_FRAME: pt = "EH_FRAME"; break;
   91.24 +     case PT_GNU_STACK: pt = "STACK"; break;
   91.25 +     case PT_GNU_RELRO: pt = "RELRO"; break;
   91.26 ++    case PT_PAX_FLAGS: pt = "PAX_FLAGS"; break;
   91.27 +     default: pt = NULL; break;
   91.28 +     }
   91.29 +   return pt;
   91.30 +@@ -2396,6 +2397,9 @@
   91.31 +     case PT_GNU_RELRO:
   91.32 +       return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "relro");
   91.33 + 
   91.34 ++    case PT_PAX_FLAGS:
   91.35 ++      return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "pax_flags");
   91.36 ++
   91.37 +     default:
   91.38 +       /* Check for any processor-specific program segment types.  */
   91.39 +       bed = get_elf_backend_data (abfd);
   91.40 +@@ -3413,6 +3417,11 @@
   91.41 +       ++segs;
   91.42 +     }
   91.43 + 
   91.44 ++    {
   91.45 ++      /* We need a PT_PAX_FLAGS segment.  */
   91.46 ++      ++segs;
   91.47 ++    }
   91.48 ++
   91.49 +   for (s = abfd->sections; s != NULL; s = s->next)
   91.50 +     {
   91.51 +       if ((s->flags & SEC_LOAD) != 0
   91.52 +@@ -3994,6 +4003,20 @@
   91.53 + 	    }
   91.54 + 	}
   91.55 + 
   91.56 ++    {
   91.57 ++      amt = sizeof (struct elf_segment_map);
   91.58 ++      m = bfd_zalloc (abfd, amt);
   91.59 ++      if (m == NULL)
   91.60 ++	goto error_return;
   91.61 ++      m->next = NULL;
   91.62 ++      m->p_type = PT_PAX_FLAGS;
   91.63 ++      m->p_flags = elf_tdata (abfd)->pax_flags;
   91.64 ++      m->p_flags_valid = 1;
   91.65 ++
   91.66 ++      *pm = m;
   91.67 ++      pm = &m->next;
   91.68 ++    }
   91.69 ++
   91.70 +       free (sections);
   91.71 +       elf_tdata (abfd)->segment_map = mfirst;
   91.72 +     }
   91.73 +@@ -5198,7 +5221,8 @@
   91.74 +        6. PT_TLS segment includes only SHF_TLS sections.
   91.75 +        7. SHF_TLS sections are only in PT_TLS or PT_LOAD segments.
   91.76 +        8. PT_DYNAMIC should not contain empty sections at the beginning
   91.77 +-	  (with the possible exception of .dynamic).  */
   91.78 ++	  (with the possible exception of .dynamic).
   91.79 ++       9. PT_PAX_FLAGS segments do not include any sections.  */
   91.80 + #define IS_SECTION_IN_INPUT_SEGMENT(section, segment, bed)		\
   91.81 +   ((((segment->p_paddr							\
   91.82 +       ? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr)	\
   91.83 +@@ -5206,6 +5230,7 @@
   91.84 +      && (section->flags & SEC_ALLOC) != 0)				\
   91.85 +     || IS_NOTE (segment, section))					\
   91.86 +    && segment->p_type != PT_GNU_STACK					\
   91.87 ++   && segment->p_type != PT_PAX_FLAGS					\
   91.88 +    && (segment->p_type != PT_TLS					\
   91.89 +        || (section->flags & SEC_THREAD_LOCAL))				\
   91.90 +    && (segment->p_type == PT_LOAD					\
   91.91 +diff -durN binutils-2.20.1.orig/bfd/elflink.c binutils-2.20.1/bfd/elflink.c
   91.92 +--- binutils-2.20.1.orig/bfd/elflink.c	2009-09-10 13:47:12.000000000 +0200
   91.93 ++++ binutils-2.20.1/bfd/elflink.c	2010-08-17 19:32:11.000000000 +0200
   91.94 +@@ -5469,16 +5469,30 @@
   91.95 +     return TRUE;
   91.96 + 
   91.97 +   bed = get_elf_backend_data (output_bfd);
   91.98 ++
   91.99 ++  elf_tdata (output_bfd)->pax_flags = PF_NORANDEXEC;
  91.100 ++  if (info->execheap)
  91.101 ++    elf_tdata (output_bfd)->pax_flags |= PF_NOMPROTECT;
  91.102 ++  else if (info->noexecheap)
  91.103 ++    elf_tdata (output_bfd)->pax_flags |= PF_MPROTECT;
  91.104 ++
  91.105 +   if (info->execstack)
  91.106 +-    elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
  91.107 ++    {
  91.108 ++      elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
  91.109 ++      elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
  91.110 ++    }
  91.111 +   else if (info->noexecstack)
  91.112 +-    elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
  91.113 ++    {
  91.114 ++      elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
  91.115 ++      elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
  91.116 ++    }
  91.117 +   else
  91.118 +     {
  91.119 +       bfd *inputobj;
  91.120 +       asection *notesec = NULL;
  91.121 +       int exec = 0;
  91.122 + 
  91.123 ++      elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
  91.124 +       for (inputobj = info->input_bfds;
  91.125 + 	   inputobj;
  91.126 + 	   inputobj = inputobj->link_next)
  91.127 +@@ -5491,7 +5505,11 @@
  91.128 + 	  if (s)
  91.129 + 	    {
  91.130 + 	      if (s->flags & SEC_CODE)
  91.131 +-		exec = PF_X;
  91.132 ++		{
  91.133 ++		  elf_tdata (output_bfd)->pax_flags &= ~PF_NOEMUTRAMP;
  91.134 ++		  elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
  91.135 ++		  exec = PF_X;
  91.136 ++		}
  91.137 + 	      notesec = s;
  91.138 + 	    }
  91.139 + 	  else if (bed->default_execstack)
  91.140 +diff -durN binutils-2.20.1.orig/binutils/readelf.c binutils-2.20.1/binutils/readelf.c
  91.141 +--- binutils-2.20.1.orig/binutils/readelf.c	2010-01-14 11:48:23.000000000 +0100
  91.142 ++++ binutils-2.20.1/binutils/readelf.c	2010-08-17 19:32:11.000000000 +0200
  91.143 +@@ -2569,6 +2569,7 @@
  91.144 + 			return "GNU_EH_FRAME";
  91.145 +     case PT_GNU_STACK:	return "GNU_STACK";
  91.146 +     case PT_GNU_RELRO:  return "GNU_RELRO";
  91.147 ++    case PT_PAX_FLAGS:  return "PAX_FLAGS";
  91.148 + 
  91.149 +     default:
  91.150 +       if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC))
  91.151 +diff -durN binutils-2.20.1.orig/include/bfdlink.h binutils-2.20.1/include/bfdlink.h
  91.152 +--- binutils-2.20.1.orig/include/bfdlink.h	2009-09-10 13:47:30.000000000 +0200
  91.153 ++++ binutils-2.20.1/include/bfdlink.h	2010-08-17 19:32:11.000000000 +0200
  91.154 +@@ -321,6 +321,14 @@
  91.155 +   /* TRUE if PT_GNU_RELRO segment should be created.  */
  91.156 +   unsigned int relro: 1;
  91.157 + 
  91.158 ++  /* TRUE if PT_PAX_FLAGS segment should be created with PF_NOMPROTECT
  91.159 ++     flags.  */
  91.160 ++  unsigned int execheap: 1;
  91.161 ++
  91.162 ++  /* TRUE if PT_PAX_FLAGS segment should be created with PF_MPROTECT
  91.163 ++     flags.  */
  91.164 ++  unsigned int noexecheap: 1;
  91.165 ++
  91.166 +   /* TRUE if we should warn when adding a DT_TEXTREL to a shared object.  */
  91.167 +   unsigned int warn_shared_textrel: 1;
  91.168 + 
  91.169 +diff -durN binutils-2.20.1.orig/include/elf/common.h binutils-2.20.1/include/elf/common.h
  91.170 +--- binutils-2.20.1.orig/include/elf/common.h	2009-08-09 15:42:26.000000000 +0200
  91.171 ++++ binutils-2.20.1/include/elf/common.h	2010-08-17 19:32:11.000000000 +0200
  91.172 +@@ -422,6 +422,7 @@
  91.173 + #define PT_SUNW_EH_FRAME PT_GNU_EH_FRAME      /* Solaris uses the same value */
  91.174 + #define PT_GNU_STACK	(PT_LOOS + 0x474e551) /* Stack flags */
  91.175 + #define PT_GNU_RELRO	(PT_LOOS + 0x474e552) /* Read-only after relocation */
  91.176 ++#define PT_PAX_FLAGS	(PT_LOOS + 0x5041580) /* PaX flags */
  91.177 + 
  91.178 + /* Program segment permissions, in program header p_flags field.  */
  91.179 + 
  91.180 +@@ -432,6 +433,21 @@
  91.181 + #define PF_MASKOS	0x0FF00000	/* New value, Oct 4, 1999 Draft */
  91.182 + #define PF_MASKPROC	0xF0000000	/* Processor-specific reserved bits */
  91.183 + 
  91.184 ++/* Flags to control PaX behavior.  */
  91.185 ++
  91.186 ++#define PF_PAGEEXEC	(1 << 4)	/* Enable  PAGEEXEC */
  91.187 ++#define PF_NOPAGEEXEC	(1 << 5)	/* Disable PAGEEXEC */
  91.188 ++#define PF_SEGMEXEC	(1 << 6)	/* Enable  SEGMEXEC */
  91.189 ++#define PF_NOSEGMEXEC	(1 << 7)	/* Disable SEGMEXEC */
  91.190 ++#define PF_MPROTECT	(1 << 8)	/* Enable  MPROTECT */
  91.191 ++#define PF_NOMPROTECT	(1 << 9)	/* Disable MPROTECT */
  91.192 ++#define PF_RANDEXEC	(1 << 10)	/* Enable  RANDEXEC */
  91.193 ++#define PF_NORANDEXEC	(1 << 11)	/* Disable RANDEXEC */
  91.194 ++#define PF_EMUTRAMP	(1 << 12)	/* Enable  EMUTRAMP */
  91.195 ++#define PF_NOEMUTRAMP	(1 << 13)	/* Disable EMUTRAMP */
  91.196 ++#define PF_RANDMMAP	(1 << 14)	/* Enable  RANDMMAP */
  91.197 ++#define PF_NORANDMMAP	(1 << 15)	/* Disable RANDMMAP */
  91.198 ++
  91.199 + /* Values for section header, sh_type field.  */
  91.200 + 
  91.201 + #define SHT_NULL	0		/* Section header table entry unused */
  91.202 +diff -durN binutils-2.20.1.orig/ld/emultempl/elf32.em binutils-2.20.1/ld/emultempl/elf32.em
  91.203 +--- binutils-2.20.1.orig/ld/emultempl/elf32.em	2010-08-17 19:32:09.000000000 +0200
  91.204 ++++ binutils-2.20.1/ld/emultempl/elf32.em	2010-08-17 19:32:11.000000000 +0200
  91.205 +@@ -2165,6 +2165,16 @@
  91.206 + 	  link_info.noexecstack = TRUE;
  91.207 + 	  link_info.execstack = FALSE;
  91.208 + 	}
  91.209 ++      else if (strcmp (optarg, "execheap") == 0)
  91.210 ++	{
  91.211 ++	  link_info.execheap = TRUE;
  91.212 ++	  link_info.noexecheap = FALSE;
  91.213 ++	}
  91.214 ++      else if (strcmp (optarg, "noexecheap") == 0)
  91.215 ++	{
  91.216 ++	  link_info.noexecheap = TRUE;
  91.217 ++	  link_info.execheap = FALSE;
  91.218 ++	}
  91.219 + EOF
  91.220 + 
  91.221 +   if test -n "$COMMONPAGESIZE"; then
  91.222 +@@ -2243,6 +2253,8 @@
  91.223 +   fprintf (file, _("\
  91.224 +   -z execstack                Mark executable as requiring executable stack\n"));
  91.225 +   fprintf (file, _("\
  91.226 ++  -z execheap                 Mark executable as requiring executable heap\n"));
  91.227 ++  fprintf (file, _("\
  91.228 +   -z initfirst                Mark DSO to be initialized first at runtime\n"));
  91.229 +   fprintf (file, _("\
  91.230 +   -z interpose                Mark object to interpose all DSOs but executable\n"));
  91.231 +@@ -2266,6 +2278,8 @@
  91.232 +   -z nodump                   Mark DSO not available to dldump\n"));
  91.233 +   fprintf (file, _("\
  91.234 +   -z noexecstack              Mark executable as not requiring executable stack\n"));
  91.235 ++  fprintf (file, _("\
  91.236 ++  -z noexecheap               Mark executable as not requiring executable heap\n"));
  91.237 + EOF
  91.238 + 
  91.239 +   if test -n "$COMMONPAGESIZE"; then
  91.240 +diff -durN binutils-2.20.1.orig/ld/ldgram.y binutils-2.20.1/ld/ldgram.y
  91.241 +--- binutils-2.20.1.orig/ld/ldgram.y	2009-09-02 09:25:35.000000000 +0200
  91.242 ++++ binutils-2.20.1/ld/ldgram.y	2010-08-17 19:32:11.000000000 +0200
  91.243 +@@ -1116,6 +1116,8 @@
  91.244 + 			    $$ = exp_intop (0x6474e550);
  91.245 + 			  else if (strcmp (s, "PT_GNU_STACK") == 0)
  91.246 + 			    $$ = exp_intop (0x6474e551);
  91.247 ++			  else if (strcmp (s, "PT_PAX_FLAGS") == 0)
  91.248 ++			    $$ = exp_intop (0x65041580);
  91.249 + 			  else
  91.250 + 			    {
  91.251 + 			      einfo (_("\
    92.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    92.2 +++ b/patches/binutils/2.20.1a/160-amd64-32bit-path.patch	Sun Sep 11 18:18:53 2011 +0200
    92.3 @@ -0,0 +1,19 @@
    92.4 +
    92.5 +
    92.6 +diff -durN binutils-2.20.1.orig/ld/emulparams/elf_i386.sh binutils-2.20.1/ld/emulparams/elf_i386.sh
    92.7 +--- binutils-2.20.1.orig/ld/emulparams/elf_i386.sh	2009-07-29 16:59:23.000000000 +0200
    92.8 ++++ binutils-2.20.1/ld/emulparams/elf_i386.sh	2010-08-17 19:32:12.000000000 +0200
    92.9 +@@ -13,3 +13,13 @@
   92.10 + NO_SMALL_DATA=yes
   92.11 + SEPARATE_GOTPLT=12
   92.12 + IREL_IN_PLT=
   92.13 ++
   92.14 ++# In Gentoo, we install 32bit libs into /lib32 in an
   92.15 ++# ABI setup with amd64/x86
   92.16 ++case "$target" in
   92.17 ++  x86_64*-linux*)
   92.18 ++    case "$EMULATION_NAME" in
   92.19 ++      *i386*) LIBPATH_SUFFIX=32  ;;
   92.20 ++    esac
   92.21 ++  ;;
   92.22 ++esac
    93.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    93.2 +++ b/patches/binutils/2.20.1a/170-warn-textrel.patch	Sun Sep 11 18:18:53 2011 +0200
    93.3 @@ -0,0 +1,66 @@
    93.4 +textrels are bad for forcing copy-on-write (this affects everyone),
    93.5 +and for security/runtime code generation, this affects security ppl.
    93.6 +But in either case, it doesn't matter who needs textrels, it's
    93.7 +the very fact that they're needed at all.
    93.8 +
    93.9 +2006-06-10  Ned Ludd  <solar@gentoo.org>, Mike Frysinger <vapier@gentoo.org>
   93.10 +
   93.11 +	* bfd/elflink.c (bfd_elf_final_link): Check all objects for TEXTRELs.
   93.12 +	* ld/ldmain.c (main): Change textrel warning default to true.
   93.13 +	* ld/testsuite/lib/ld-lib.exp (default_ld_simple_link): Scrub TEXTREL
   93.14 +	warnings from ld output.
   93.15 +
   93.16 +diff -durN binutils-2.20.1.orig/bfd/elflink.c binutils-2.20.1/bfd/elflink.c
   93.17 +--- binutils-2.20.1.orig/bfd/elflink.c	2010-08-17 19:32:11.000000000 +0200
   93.18 ++++ binutils-2.20.1/bfd/elflink.c	2010-08-17 19:32:13.000000000 +0200
   93.19 +@@ -10988,14 +10988,12 @@
   93.20 + 	goto error_return;
   93.21 + 
   93.22 +       /* Check for DT_TEXTREL (late, in case the backend removes it).  */
   93.23 +-      if (info->warn_shared_textrel && info->shared)
   93.24 ++      o = bfd_get_section_by_name (dynobj, ".dynamic");
   93.25 ++      if (info->warn_shared_textrel && o != NULL)
   93.26 + 	{
   93.27 + 	  bfd_byte *dyncon, *dynconend;
   93.28 + 
   93.29 + 	  /* Fix up .dynamic entries.  */
   93.30 +-	  o = bfd_get_section_by_name (dynobj, ".dynamic");
   93.31 +-	  BFD_ASSERT (o != NULL);
   93.32 +-
   93.33 + 	  dyncon = o->contents;
   93.34 + 	  dynconend = o->contents + o->size;
   93.35 + 	  for (; dyncon < dynconend; dyncon += bed->s->sizeof_dyn)
   93.36 +@@ -11007,7 +11005,7 @@
   93.37 + 	      if (dyn.d_tag == DT_TEXTREL)
   93.38 + 		{
   93.39 + 		 info->callbacks->einfo
   93.40 +-		    (_("%P: warning: creating a DT_TEXTREL in a shared object.\n"));
   93.41 ++		    (_("%P: warning: creating a DT_TEXTREL in object.\n"));
   93.42 + 		  break;
   93.43 + 		}
   93.44 + 	    }
   93.45 +diff -durN binutils-2.20.1.orig/ld/ldmain.c binutils-2.20.1/ld/ldmain.c
   93.46 +--- binutils-2.20.1.orig/ld/ldmain.c	2009-09-14 13:43:29.000000000 +0200
   93.47 ++++ binutils-2.20.1/ld/ldmain.c	2010-08-17 19:32:13.000000000 +0200
   93.48 +@@ -280,6 +280,7 @@
   93.49 +   emulation = get_emulation (argc, argv);
   93.50 +   ldemul_choose_mode (emulation);
   93.51 +   default_target = ldemul_choose_target (argc, argv);
   93.52 ++  link_info.warn_shared_textrel = TRUE;
   93.53 +   config.maxpagesize = bfd_emul_get_maxpagesize (default_target);
   93.54 +   config.commonpagesize = bfd_emul_get_commonpagesize (default_target);
   93.55 +   lang_init ();
   93.56 +diff -durN binutils-2.20.1.orig/ld/testsuite/lib/ld-lib.exp binutils-2.20.1/ld/testsuite/lib/ld-lib.exp
   93.57 +--- binutils-2.20.1.orig/ld/testsuite/lib/ld-lib.exp	2009-10-02 12:51:13.000000000 +0200
   93.58 ++++ binutils-2.20.1/ld/testsuite/lib/ld-lib.exp	2010-08-17 19:32:13.000000000 +0200
   93.59 +@@ -196,6 +196,10 @@
   93.60 +     # symbol, since the default linker script might use ENTRY.
   93.61 +     regsub -all "(^|\n)(\[^\n\]*: warning: cannot find entry symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output
   93.62 + 
   93.63 ++    # Gentoo tweak:
   93.64 ++    # We want to ignore TEXTREL warnings since we force enable them by default
   93.65 ++    regsub -all "^lt-ld-new: warning: creating a DT_TEXTREL in object\." $exec_output "\\1" exec_output
   93.66 ++
   93.67 +     if [string match "" $exec_output] then {
   93.68 + 	return 1
   93.69 +     } else {
    94.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    94.2 +++ b/patches/binutils/2.20.1a/190-use-new-ld-dtags.patch	Sun Sep 11 18:18:53 2011 +0200
    94.3 @@ -0,0 +1,13 @@
    94.4 +
    94.5 +
    94.6 +diff -durN binutils-2.20.1.orig/ld/ldmain.c binutils-2.20.1/ld/ldmain.c
    94.7 +--- binutils-2.20.1.orig/ld/ldmain.c	2010-08-17 19:32:13.000000000 +0200
    94.8 ++++ binutils-2.20.1/ld/ldmain.c	2010-08-17 19:32:15.000000000 +0200
    94.9 +@@ -262,6 +262,7 @@
   94.10 + 
   94.11 +   link_info.allow_undefined_version = TRUE;
   94.12 +   link_info.keep_memory = TRUE;
   94.13 ++  link_info.new_dtags = TRUE;
   94.14 +   link_info.combreloc = TRUE;
   94.15 +   link_info.strip_discarded = TRUE;
   94.16 +   link_info.emit_hash = TRUE;
    95.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    95.2 +++ b/patches/binutils/2.20.1a/200-document-new-dtags-behaviour.patch	Sun Sep 11 18:18:53 2011 +0200
    95.3 @@ -0,0 +1,18 @@
    95.4 +Index: binutils-2.19.51.0.5/ld/ld.texinfo
    95.5 +===================================================================
    95.6 +
    95.7 +diff -durN binutils-2.20.1.orig/ld/ld.texinfo binutils-2.20.1/ld/ld.texinfo
    95.8 +--- binutils-2.20.1.orig/ld/ld.texinfo	2009-07-06 15:48:51.000000000 +0200
    95.9 ++++ binutils-2.20.1/ld/ld.texinfo	2010-08-17 19:32:16.000000000 +0200
   95.10 +@@ -2026,8 +2026,9 @@
   95.11 + systems may not understand them. If you specify
   95.12 + @option{--enable-new-dtags}, the dynamic tags will be created as needed.
   95.13 + If you specify @option{--disable-new-dtags}, no new dynamic tags will be
   95.14 +-created. By default, the new dynamic tags are not created. Note that
   95.15 +-those options are only available for ELF systems.
   95.16 ++created. On Gentoo, by default, the new dynamic tags are created (this
   95.17 ++differs from upstream behaviour). Note that those options are only
   95.18 ++available for ELF systems.
   95.19 + 
   95.20 + @kindex --hash-size=@var{number}
   95.21 + @item --hash-size=@var{number}
    96.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    96.2 +++ b/patches/binutils/2.20.1a/220-use-relro.patch	Sun Sep 11 18:18:53 2011 +0200
    96.3 @@ -0,0 +1,13 @@
    96.4 +
    96.5 +
    96.6 +diff -durN binutils-2.20.1.orig/ld/ldmain.c binutils-2.20.1/ld/ldmain.c
    96.7 +--- binutils-2.20.1.orig/ld/ldmain.c	2010-08-17 19:32:17.000000000 +0200
    96.8 ++++ binutils-2.20.1/ld/ldmain.c	2010-08-17 19:32:18.000000000 +0200
    96.9 +@@ -264,6 +264,7 @@
   96.10 +   link_info.keep_memory = TRUE;
   96.11 +   link_info.new_dtags = TRUE;
   96.12 +   link_info.combreloc = TRUE;
   96.13 ++  link_info.relro = TRUE;
   96.14 +   link_info.strip_discarded = TRUE;
   96.15 +   link_info.emit_hash = TRUE;
   96.16 + #ifndef __mips__
    97.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    97.2 +++ b/patches/binutils/2.20.1a/230-libiberty-pic.patch	Sun Sep 11 18:18:53 2011 +0200
    97.3 @@ -0,0 +1,13 @@
    97.4 +
    97.5 +
    97.6 +diff -durN binutils-2.20.1.orig/libiberty/Makefile.in binutils-2.20.1/libiberty/Makefile.in
    97.7 +--- binutils-2.20.1.orig/libiberty/Makefile.in	2009-08-23 21:03:58.000000000 +0200
    97.8 ++++ binutils-2.20.1/libiberty/Makefile.in	2010-08-17 19:32:19.000000000 +0200
    97.9 +@@ -227,6 +227,7 @@
   97.10 + 	  $(AR) $(AR_FLAGS) $(TARGETLIB) \
   97.11 + 	    $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \
   97.12 + 	  $(RANLIB) $(TARGETLIB); \
   97.13 ++	  cp $(TARGETLIB) ../ ; \
   97.14 + 	  cd ..; \
   97.15 + 	else true; fi
   97.16 + 
    98.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    98.2 +++ b/patches/binutils/2.20.1a/240-ld_makefile.patch	Sun Sep 11 18:18:53 2011 +0200
    98.3 @@ -0,0 +1,27 @@
    98.4 +Description: correct where ld scripts are installed
    98.5 +Author: Chris Chimelis <chris@debian.org>
    98.6 +
    98.7 +diff -durN binutils-2.20.1.orig/ld/Makefile.am binutils-2.20.1/ld/Makefile.am
    98.8 +--- binutils-2.20.1.orig/ld/Makefile.am	2010-02-22 09:07:01.000000000 +0100
    98.9 ++++ binutils-2.20.1/ld/Makefile.am	2010-08-17 19:32:21.000000000 +0200
   98.10 +@@ -24,7 +24,7 @@
   98.11 + # We put the scripts in the directory $(scriptdir)/ldscripts.
   98.12 + # We can't put the scripts in $(datadir) because the SEARCH_DIR
   98.13 + # directives need to be different for native and cross linkers.
   98.14 +-scriptdir = $(tooldir)/lib
   98.15 ++scriptdir = $(libdir)
   98.16 + 
   98.17 + EMUL = @EMUL@
   98.18 + EMULATION_OFILES = @EMULATION_OFILES@
   98.19 +diff -durN binutils-2.20.1.orig/ld/Makefile.in binutils-2.20.1/ld/Makefile.in
   98.20 +--- binutils-2.20.1.orig/ld/Makefile.in	2010-03-03 15:06:21.000000000 +0100
   98.21 ++++ binutils-2.20.1/ld/Makefile.in	2010-08-17 19:32:21.000000000 +0200
   98.22 +@@ -333,7 +333,7 @@
   98.23 + # We put the scripts in the directory $(scriptdir)/ldscripts.
   98.24 + # We can't put the scripts in $(datadir) because the SEARCH_DIR
   98.25 + # directives need to be different for native and cross linkers.
   98.26 +-scriptdir = $(tooldir)/lib
   98.27 ++scriptdir = $(libdir)
   98.28 + BASEDIR = $(srcdir)/..
   98.29 + BFDDIR = $(BASEDIR)/bfd
   98.30 + INCDIR = $(BASEDIR)/include
    99.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    99.2 +++ b/patches/binutils/2.20.1a/250-arm-eabi-conf.patch	Sun Sep 11 18:18:53 2011 +0200
    99.3 @@ -0,0 +1,26 @@
    99.4 +diff -u binutils-2.20.orig/configure binutils-2.20/configure
    99.5 +
    99.6 +diff -durN binutils-2.20.1.orig/configure binutils-2.20.1/configure
    99.7 +--- binutils-2.20.1.orig/configure	2010-08-17 19:32:07.000000000 +0200
    99.8 ++++ binutils-2.20.1/configure	2010-08-17 19:32:22.000000000 +0200
    99.9 +@@ -3086,7 +3086,7 @@
   99.10 +     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
   99.11 +     libgloss_dir=arm
   99.12 +     ;;
   99.13 +-  arm*-*-linux-gnueabi)
   99.14 ++  arm*-*-linux-*gnueabi)
   99.15 +     noconfigdirs="$noconfigdirs target-qthreads"
   99.16 +     case ${with_newlib} in
   99.17 +       no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
   99.18 +diff -durN binutils-2.20.1.orig/configure.ac binutils-2.20.1/configure.ac
   99.19 +--- binutils-2.20.1.orig/configure.ac	2010-08-17 19:32:07.000000000 +0200
   99.20 ++++ binutils-2.20.1/configure.ac	2010-08-17 19:32:22.000000000 +0200
   99.21 +@@ -573,7 +573,7 @@
   99.22 +     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
   99.23 +     libgloss_dir=arm
   99.24 +     ;;
   99.25 +-  arm*-*-linux-gnueabi)
   99.26 ++  arm*-*-linux-*gnueabi)
   99.27 +     noconfigdirs="$noconfigdirs target-qthreads"
   99.28 +     case ${with_newlib} in
   99.29 +       no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
   100.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   100.2 +++ b/patches/binutils/2.20.1a/270-better_file_error.patch	Sun Sep 11 18:18:53 2011 +0200
   100.3 @@ -0,0 +1,45 @@
   100.4 +#!/bin/sh -e
   100.5 +## 006_better_file_error.dpatch by David Kimdon <dwhedon@gordian.com>
   100.6 +##
   100.7 +## All lines beginning with `## DP:' are a description of the patch.
   100.8 +## DP: Specify which filename is causing an error if the filename is a
   100.9 +## DP: directory. (#45832)
  100.10 +
  100.11 +if [ $# -ne 1 ]; then
  100.12 +    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
  100.13 +    exit 1
  100.14 +fi
  100.15 +
  100.16 +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
  100.17 +patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
  100.18 +
  100.19 +case "$1" in
  100.20 +       -patch) patch $patch_opts -p1 < $0;;
  100.21 +       -unpatch) patch $patch_opts -p1 -R < $0;;
  100.22 +        *)
  100.23 +                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
  100.24 +                exit 1;;
  100.25 +esac
  100.26 +
  100.27 +exit 0
  100.28 +
  100.29 +@DPATCH@
  100.30 +diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c binutils-2.14.90.0.6/bfd/opncls.c
  100.31 +
  100.32 +diff -durN binutils-2.20.1.orig/bfd/opncls.c binutils-2.20.1/bfd/opncls.c
  100.33 +--- binutils-2.20.1.orig/bfd/opncls.c	2010-01-14 11:48:22.000000000 +0100
  100.34 ++++ binutils-2.20.1/bfd/opncls.c	2010-08-17 19:32:23.000000000 +0200
  100.35 +@@ -183,6 +183,13 @@
  100.36 + {
  100.37 +   bfd *nbfd;
  100.38 +   const bfd_target *target_vec;
  100.39 ++  struct stat s;
  100.40 ++
  100.41 ++  if (stat (filename, &s) == 0)
  100.42 ++    if (S_ISDIR(s.st_mode)) {
  100.43 ++      bfd_set_error (bfd_error_file_not_recognized);
  100.44 ++      return NULL;
  100.45 ++    }
  100.46 + 
  100.47 +   nbfd = _bfd_new_bfd ();
  100.48 +   if (nbfd == NULL)
   101.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   101.2 +++ b/patches/binutils/2.20.1a/280-unexport_LD_LIBRARY_PATH.patch	Sun Sep 11 18:18:53 2011 +0200
   101.3 @@ -0,0 +1,96 @@
   101.4 +Description:
   101.5 +
   101.6 +This patch is needed in situations where build system is running same version of
   101.7 +binutils that is intended to be built  cross-native ( build != host = target)
   101.8 + and has shared libraries enabled. binutils/binutils
   101.9 +Makefile has some tools which are built to run on build system. Toplevel makefile
  101.10 +for binutils passes HOST_EXPORTS to sub-makefiles which also include RPATH_ENVVARS
  101.11 +containing LD_LIBRARY_PATH which is modified so that it also includes host libraries
  101.12 +like opcodes and libbfd which are just built for the host system. 
  101.13 +
  101.14 +Now the problem is that same LD_LIBRARY_PATH value gets set in environment even
  101.15 +for the tools that are being built for build system using CC_FOR_BUILD and the tools
  101.16 +like as,ld it invokes from build machine get the LD_LIBRARY_PATH set to search
  101.17 +the newly build host libraries like opcodes and bfd and if host is like a big endian
  101.18 +system say (mips-linux) the build system linker and assembler do not run because
  101.19 +ld.so tries to load these shared libraries instead of the ones from /usr/lib for 
  101.20 +the build tools. 
  101.21 +
  101.22 +This patch fixes the issue by clearing LD_LIBRARY_PATH for BUILD tools
  101.23 +
  101.24 +This patch would be needed on other versions of binutils. I just cared about 2.20
  101.25 +May be upstream is also interested in such a patch.
  101.26 +
  101.27 +-Khem
  101.28 +
  101.29 +Index: binutils-2.20/binutils/Makefile.am
  101.30 +===================================================================
  101.31 +
  101.32 +diff -durN binutils-2.20.1.orig/binutils/Makefile.am binutils-2.20.1/binutils/Makefile.am
  101.33 +--- binutils-2.20.1.orig/binutils/Makefile.am	2010-01-14 11:48:22.000000000 +0100
  101.34 ++++ binutils-2.20.1/binutils/Makefile.am	2010-08-17 19:32:24.000000000 +0200
  101.35 +@@ -251,24 +251,24 @@
  101.36 + 	./sysinfo$(EXEEXT_FOR_BUILD) -d <$(srcdir)/sysroff.info >sysroff.h
  101.37 + 
  101.38 + sysinfo$(EXEEXT_FOR_BUILD): sysinfo.o syslex.o
  101.39 +-	$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ sysinfo.o syslex.o
  101.40 ++	LD_LIBRARY_PATH= $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ sysinfo.o syslex.o
  101.41 + 
  101.42 + syslex.o: syslex.c sysinfo.h config.h
  101.43 + 	if [ -r syslex.c ]; then \
  101.44 +-	  $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) syslex.c ; \
  101.45 ++	  LD_LIBRARY_PATH= $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) syslex.c ; \
  101.46 + 	else \
  101.47 +-	  $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/syslex.c ;\
  101.48 ++	  LD_LIBRARY_PATH= $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/syslex.c ;\
  101.49 + 	fi
  101.50 + 
  101.51 + sysinfo.o: sysinfo.c
  101.52 + 	if [ -r sysinfo.c ]; then \
  101.53 +-	  $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) sysinfo.c ; \
  101.54 ++	  LD_LIBRARY_PATH= $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) sysinfo.c ; \
  101.55 + 	else \
  101.56 +-	  $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/sysinfo.c ; \
  101.57 ++	  LD_LIBRARY_PATH= $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/sysinfo.c ; \
  101.58 + 	fi
  101.59 + 
  101.60 + bin2c$(EXEEXT_FOR_BUILD):
  101.61 +-	$(CC_FOR_BUILD) -o $@ $(AM_CPPFLAGS) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(srcdir)/bin2c.c $(srcdir)/version.c
  101.62 ++	LD_LIBRARY_PATH= $(CC_FOR_BUILD) -o $@ $(AM_CPPFLAGS) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(srcdir)/bin2c.c $(srcdir)/version.c
  101.63 + 
  101.64 + embedspu: embedspu.sh
  101.65 + 	sed "s@^program_transform_name=@program_transform_name=$(program_transform_name)@" < $< > $@
  101.66 +diff -durN binutils-2.20.1.orig/binutils/Makefile.in binutils-2.20.1/binutils/Makefile.in
  101.67 +--- binutils-2.20.1.orig/binutils/Makefile.in	2010-03-03 14:59:46.000000000 +0100
  101.68 ++++ binutils-2.20.1/binutils/Makefile.in	2010-08-17 19:32:24.000000000 +0200
  101.69 +@@ -1193,24 +1193,24 @@
  101.70 + 	./sysinfo$(EXEEXT_FOR_BUILD) -d <$(srcdir)/sysroff.info >sysroff.h
  101.71 + 
  101.72 + sysinfo$(EXEEXT_FOR_BUILD): sysinfo.o syslex.o
  101.73 +-	$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ sysinfo.o syslex.o
  101.74 ++	LD_LIBRARY_PATH= $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ sysinfo.o syslex.o
  101.75 + 
  101.76 + syslex.o: syslex.c sysinfo.h config.h
  101.77 + 	if [ -r syslex.c ]; then \
  101.78 +-	  $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) syslex.c ; \
  101.79 ++	  LD_LIBRARY_PATH= $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) syslex.c ; \
  101.80 + 	else \
  101.81 +-	  $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/syslex.c ;\
  101.82 ++	  LD_LIBRARY_PATH= $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/syslex.c ;\
  101.83 + 	fi
  101.84 + 
  101.85 + sysinfo.o: sysinfo.c
  101.86 + 	if [ -r sysinfo.c ]; then \
  101.87 +-	  $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) sysinfo.c ; \
  101.88 ++	  LD_LIBRARY_PATH= $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) sysinfo.c ; \
  101.89 + 	else \
  101.90 +-	  $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/sysinfo.c ; \
  101.91 ++	  LD_LIBRARY_PATH= $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/sysinfo.c ; \
  101.92 + 	fi
  101.93 + 
  101.94 + bin2c$(EXEEXT_FOR_BUILD):
  101.95 +-	$(CC_FOR_BUILD) -o $@ $(AM_CPPFLAGS) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(srcdir)/bin2c.c $(srcdir)/version.c
  101.96 ++	LD_LIBRARY_PATH= $(CC_FOR_BUILD) -o $@ $(AM_CPPFLAGS) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(srcdir)/bin2c.c $(srcdir)/version.c
  101.97 + 
  101.98 + embedspu: embedspu.sh
  101.99 + 	sed "s@^program_transform_name=@program_transform_name=$(program_transform_name)@" < $< > $@
   102.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   102.2 +++ b/patches/binutils/2.20.1a/290-ld-stub-crash.patch	Sun Sep 11 18:18:53 2011 +0200
   102.3 @@ -0,0 +1,24 @@
   102.4 +diff -p -c -u -r1.196 elf32-arm.c
   102.5 +
   102.6 +diff -durN binutils-2.20.1.orig/bfd/elf32-arm.c binutils-2.20.1/bfd/elf32-arm.c
   102.7 +--- binutils-2.20.1.orig/bfd/elf32-arm.c	2010-02-22 09:06:48.000000000 +0100
   102.8 ++++ binutils-2.20.1/bfd/elf32-arm.c	2010-08-17 19:32:25.000000000 +0200
   102.9 +@@ -3194,11 +3194,15 @@
  102.10 + 
  102.11 + 	  /* We have an extra 2-bytes reach because of
  102.12 + 	     the mode change (bit 24 (H) of BLX encoding).  */
  102.13 ++	  /* A stub is needed only if this call is not throught a PLT
  102.14 ++	     entry, because PLT stubs handle mode switching
  102.15 ++	     already.  */
  102.16 + 	  if (branch_offset > (ARM_MAX_FWD_BRANCH_OFFSET + 2)
  102.17 + 	      || (branch_offset < ARM_MAX_BWD_BRANCH_OFFSET)
  102.18 +-	      || ((r_type == R_ARM_CALL) && !globals->use_blx)
  102.19 +-	      || (r_type == R_ARM_JUMP24)
  102.20 +-	      || (r_type == R_ARM_PLT32))
  102.21 ++	      || ( (((r_type == R_ARM_CALL) && !globals->use_blx)
  102.22 ++		    || (r_type == R_ARM_JUMP24)
  102.23 ++		    || (r_type == R_ARM_PLT32))
  102.24 ++		   && !use_plt))
  102.25 + 	    {
  102.26 + 	      stub_type = (info->shared | globals->pic_veneer)
  102.27 + 		/* PIC stubs.  */
   103.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   103.2 +++ b/patches/binutils/2.20.1a/300-mips64-defaultemul.patch	Sun Sep 11 18:18:53 2011 +0200
   103.3 @@ -0,0 +1,21 @@
   103.4 +
   103.5 +
   103.6 +diff -durN binutils-2.20.1.orig/ld/configure.tgt binutils-2.20.1/ld/configure.tgt
   103.7 +--- binutils-2.20.1.orig/ld/configure.tgt	2009-08-06 19:38:03.000000000 +0200
   103.8 ++++ binutils-2.20.1/ld/configure.tgt	2010-08-17 19:32:26.000000000 +0200
   103.9 +@@ -400,11 +400,11 @@
  103.10 + mips*-*-vxworks*)	targ_emul=elf32ebmipvxworks
  103.11 + 		        targ_extra_emuls="elf32elmipvxworks" ;;
  103.12 + mips*-*-windiss)	targ_emul=elf32mipswindiss ;;
  103.13 +-mips64*el-*-linux-*)	targ_emul=elf32ltsmipn32
  103.14 +-			targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip"
  103.15 ++mips64*el-*-linux-*)	targ_emul=elf64ltsmip
  103.16 ++			targ_extra_emuls="elf32ltsmipn32 elf32btsmipn32 elf32ltsmip elf32btsmip elf64btsmip"
  103.17 + 			targ_extra_libpath=$targ_extra_emuls ;;
  103.18 +-mips64*-*-linux-*)	targ_emul=elf32btsmipn32
  103.19 +-			targ_extra_emuls="elf32ltsmipn32 elf32btsmip elf32ltsmip elf64btsmip elf64ltsmip"
  103.20 ++mips64*-*-linux-*)	targ_emul=elf64btsmip
  103.21 ++			targ_extra_emuls="elf32btsmipn32 elf32ltsmipn32 elf32btsmip elf32ltsmip elf64ltsmip"
  103.22 + 			targ_extra_libpath=$targ_extra_emuls ;;
  103.23 + mips*el-*-linux-*)	targ_emul=elf32ltsmip
  103.24 + 			targ_extra_emuls="elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip"